Einzelnen Beitrag anzeigen

Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Ereignis in ein Array an Procedure übergeben

  Alt 10. Nov 2005, 01:10
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...
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat