Moin moin,
Zitat von
Christian18:
wie kann ich in eine Procedure die ich geschrieben habe ein on click ereignis übergeben???
Eine Möglichkeit:
Delphi-Quellcode:
type
TMyMenu = packed record
Caption: String;
OnClick: Pointer;
end;
TMenuArray = Array of TMyMenu;
procedure MyOnClick(Sender: TObject);
begin
if Sender is TButton then
ShowMessage(TButton(Sender).Caption);
end;
// Procedure
procedure create_menu(a : TMenuArray);
var b : TButton;
i : Integer; // Schleifenvariable
TmpMethod: TMethod;
begin
for i:=0 to Length(a) - 1 do
begin
b:=TButton.Create(Form1);
b.Caption:=a[i].Caption;
TmpMethod.Code := a[i].OnClick;
TmpMethod.Data := b;
b.OnClick:= TNotifyEvent(TmpMethod);
b.Top:=30 * i;
b.Left:=10;
b.Parent:=Form1;
end;
end;
// Aufruf
procedure TForm1.Button2Click(Sender: TObject);
var a : TMenuArray;
begin
SetLength(a, 5);
a[0].Caption := 'Menu1';
a[0].OnClick := @MyOnClick;
a[1].Caption := 'Menu2';
a[1].OnClick := @MyOnClick;
// ..
create_menu(a);
end;
Mich haben allerdings die Beiträge von himitsu irritiert, evtl. habe ich auch was falsch verstanden?!
Wenn dem so sein sollte, ignoriert meinen Beitrag...