![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SpeedButton [XP]
ArtemESC © (2006-08-06 23:01:00)Работаю с динамическим массивом из SpeedButton'ov:
1) Почему ни удается откомпилировать следующее
SaveArray[i].OnClick := OnClick_;
OnClick_ описан так: procedure OnClick_(Sender: TObject);
2) Как определить в обработчике какая из кнопок массива нажата:
пробовал так:
SaveArray[i].Tag := i;
затем в обработчике:
Index := TSpeedButton(Sender).Tag
но это не работает...
ArtemESC (2006-08-07 12:30:00) [1]>>Что именно не так?
Это должно быть методом класса, а не простой процедурой.
C учетом этого все так...
Desdechado (2006-08-07 11:43:00) [2]> procedure OnClick_(Sender: TObject);
Это должно быть методом класса, а не простой процедурой.
Об этом в справке написано.
> но это не работает
Что именно не так?
ArtemESC (2006-08-07 00:05:00) [3]easy © (06.08.06 23:47) [1]
Огромнейшее спасибо...
easy (2006-08-06 23:47:00) [4]
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.