Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2019, 15:25   #1
Romanza123
 
Регистрация: 21.09.2019
Сообщений: 4
По умолчанию Проблема с кодом таблицы умножения

ПРОГРАММА LAZARUS!
Всем привет!) прошу у вас помощи! Написал программу, таблицу умножения. Нужно чтобы Внизу в StatusBar показывалась сумма выделенных ячеек. Еще нужно чтобы при зажатой кнопке Ctrl можно было не выделять, а перемещать ячейки таблицы. Код полностью написал, но он не работает(( Подскажите, пожалуйста, в чем может быть проблема? Исходник во вложении.

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, ComCtrls,
  ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    StringGrid1: TStringGrid;
    TrackBar1: TTrackBar;
    TrackBar2: TTrackBar;
    procedure FormCreate(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure TrackBar2Change(Sender: TObject);
    procedure StringGrid1Selection(Sender: TObject);
    procedure StringGrid1MouseDown(Sender: TObject);
    procedure StringGrid1MouseUp(Sender: TObject);
    procedure StringGrid1MouseMove(Sender: TObject);

  private

  public

  end;

var
  Form1: TForm1;
  tmpC, tmpR: integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure fillTable();
var r, c: integer;
begin
 with Form1.StringGrid1 do
 for r:=1 to RowCount-1 do
 for c:=1 to ColCount-1 do
 Cells[c, r] := IntToStr(c*r);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 fillTable();
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  StringGrid1.ColCount:=TrackBar1.Position+1;
 fillTable();
end;

procedure TForm1.TrackBar2Change(Sender: TObject);
begin
  StringGrid1.RowCount:=TrackBar2.Position+1;
  fillTable();
end;


procedure TForm1.StringGrid1Selection(Sender: TObject;
aCol, aRow: Integer);
var summa, numRow, numCol: integer;
begin
 summa:=0;
 with StringGrid1, Selection do
 for numRow:=Top to Bottom do
 for numCol:=Left to Right do
 summa:=summa+StrToInt(Cells[numCol,numRow]);
 StatusBar1.Panels[0].Text:=summa.ToString();
end;


procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 StringGrid1.MouseToCell(X,Y,tmpC,tmpR);
 // переводит координаты X Y в столбцы и колонки
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
 if ssCtrl in Shift
 then StringGrid1.Options:=
 StringGrid1.Options-[goRangeSelect];
end;

procedure TForm1.StringGrid1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var tmpValue: string;
begin
 if ssCtrl in Shift then
 with StringGrid1 do
 begin
 tmpValue:=Cells[tmpC,tmpR];
 Cells[tmpC,tmpR]:=Cells[Col,Row];
 Cells[Col,Row]:=tmpValue;
 end;
 StringGrid1.Options:=
 StringGrid1.Options+[goRangeSelect];
end;



end.
Вложения
Тип файла: rar Umnoj.rar (368.6 Кб, 20 просмотров)

Последний раз редактировалось Romanza123; 21.09.2019 в 15:51.
Romanza123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратный порядок для таблицы умножения serge-first Lazarus, Free Pascal, CodeTyphon 2 30.03.2016 14:16
Вывол таблицы умножения. Семафоры [Delphi] StudeHt Помощь студентам 0 27.12.2011 20:15
програма для умножения и сложения таблицы NoVeto Общие вопросы C/C++ 6 09.02.2010 12:52
Многоразовый вывод таблицы умножения Golovastik Общие вопросы C/C++ 7 23.08.2009 00:30
вывод таблицы умножения Soule Паскаль, Turbo Pascal, PascalABC.NET 3 12.10.2007 11:26