Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

SpeedButton   Найти похожие ветки 

 
ArtemESC ©   (2006-08-06 23:01) [0]

Работаю с динамическим массивом из SpeedButton"ov:

1) Почему ни удается откомпилировать следующее  
    SaveArray[i].OnClick   := OnClick_;

   OnClick_ описан так: procedure OnClick_(Sender: TObject);
2) Как определить в обработчике какая из кнопок массива нажата:
         пробовал так:
                    SaveArray[i].Tag := i;
         
             затем  в обработчике:
                    Index := TSpeedButton(Sender).Tag
          но это не работает...


 
easy ©   (2006-08-06 23:47) [1]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Buttons, StdCtrls;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
   procedure OnClick_(Sender: TObject);
   procedure CreateButtons;
   procedure DestroyButtons;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateButtons;
var
 i, j, k: integer;
const
 ButtonWidth = 25;
 ButtonHeight = 25;
begin
 i := 0;
 j := 0;
 k := 1;
 while j * ButtonHeight < Height - ButtonHeight * 2 do begin
   while i * ButtonWidth < Width - ButtonWidth * 2 do begin
     with TSpeedButton.Create(self) do begin
       Top := j * ButtonHeight;
       left := i * ButtonWidth;
       width := ButtonWidth;
       height := ButtonHeight;
       Name := "SpeedButton" + inttostr(k);
       Caption := inttostr(k);
       Parent := Self;
       OnClick := OnClick_;
     end;
     inc(i);
     inc(k);
   end;
   inc(j);
   i := 0;
 end;
end;

procedure TForm1.DestroyButtons;
var
 i: integer;
begin
 for i := ControlCount - 1 downto 0 do begin
   if Controls[i] is TSpeedButton then
     TSpeedButton(Controls[i]).Free;
 end;
end;

procedure TForm1.OnClick_(Sender: TObject);
begin
 showmessage("Вы нажали " + TSpeedButton(Sender).Name);
end;

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

procedure TForm1.FormDestroy(Sender: TObject);
begin
 DestroyButtons;
end;

end.


 
ArtemESC ©   (2006-08-07 00:05) [2]

easy ©   (06.08.06 23:47) [1]
 Огромнейшее спасибо...


 
Desdechado ©   (2006-08-07 11:43) [3]

> procedure OnClick_(Sender: TObject);
Это должно быть методом класса, а не простой процедурой.
Об этом в справке написано.

> но это не работает
Что именно не так?


 
ArtemESC ©   (2006-08-07 12:30) [4]

>>Что именно не так?

Это должно быть методом класса, а не простой процедурой.
   C учетом этого все так...



Страницы: 1 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
15-1154062954
Ega23
2006-07-28 09:02
2006.08.27
С Днём рождения! 28 июля


4-1146600197
DimaDukat
2006-05-03 00:03
2006.08.27
параметры команды ExitWindowsEx


2-1154938598
Yeg
2006-08-07 12:16
2006.08.27
Drag&amp;Drop файлов из программы


2-1154696449
BVV
2006-08-04 17:00
2006.08.27
Как избавиться от представления чисел в виде *...*Е*..*?


4-1147028029
Lik
2006-05-07 22:53
2006.08.27
User logon из сервиса