var
b:array[1..10] of TButton;
tmp : TNotifyEvent;
procedure CreateBut(Caption:TCaption;t:TNotifyEvent);
begin
b[n] := TButton.Create(Application);
b[n].Parent := Form1;
b[n].Caption:=Caption;
b[n].Name:='B'+inttostr(n);
b[n].OnClick := t;
r:=r+40;
b[n].Top:=r;
b[n].Left:=0;
CurBut:=n;
inc(n);
end;
procedure TForm1.FormClick(Sender: TObject);
begin
@tmp := @Clickonbutton;
CreateBut('sdf',tmp);
end;
procedure Clickonbutton(Sender: TObject);
begin
//-----------------тут ступор!
end;
Обработка динамически-создаваемых кнопок
Код:
число кнопок неизвесно, на все кнопки 1 процедура обработки. Как их обработать? подскажите пожалуйста...
Задача, насколько я понимаю, стоит в том, чтобы в процедуре можно было как-то эти кнопки различать. Тогда все просто. Есть много способов. Прежде всего приведите Sender к соотвествующему типу, а потом уже можете отличать эти кнопки одной от другой по, скажем, свойству Tag или Name или Caption и т.п.
Цитата: nikitozz
Задача, насколько я понимаю, стоит в том, чтобы в процедуре можно было как-то эти кнопки различать. Тогда все просто. Есть много способов. Прежде всего приведите Sender к соотвествующему типу, а потом уже можете отличать эти кнопки одной от другой по, скажем, свойству Tag или Name или Caption и т.п.
procedure Clickonbutton(Sender: TObject);
begin
if (Sender as TButton).Name = 'B1' then
begin
ShowMessage('0');
end;
if (Sender as TButton).Name = 'B2' then
begin
ShowMessage('1');
end;
end;
Вылетает с ошибкой
Цитата: arphey
procedure Clickonbutton(Sender: TObject);
begin
if (Sender as TButton).Name = 'B1' then
begin
ShowMessage('0');
end;
if (Sender as TButton).Name = 'B2' then
begin
ShowMessage('1');
end;
end;
Вылетает с ошибкой
begin
if (Sender as TButton).Name = 'B1' then
begin
ShowMessage('0');
end;
if (Sender as TButton).Name = 'B2' then
begin
ShowMessage('1');
end;
end;
Вылетает с ошибкой
Давайте полный код. Пока непонятно.
[highlight=delphi]
var
b: array[1..10] of TButton;
tmp: TNotifyEvent;
n: integer;
procedure CreateBut(Caption:TCaption; t:TNotifyEvent; var n, r:integer);
begin
b[n] := TButton.Create(Application);
with b[n] do
Name:='B'+inttostr(n);
Caption:=Caption;
r:=r+40;
Top:=r;
Left:=0;
OnClick := t;
Parent := Form1;
end;
CurBut:=n;
inc(n);
end;
[/highlight]
[QUOTE=nikitozz;267138]Давайте полный код. Пока непонятно.[/Q полностью прога
Сделайте вашу процедуру Clickonbutton членом класса.
Цитата: nikitozz
Сделайте вашу процедуру Clickonbutton членом класса.
Большое спасибо! Все работает!