Einzelnen Beitrag anzeigen

Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#28

Re: Button erstellen und Funktion zuweisen....

  Alt 18. Sep 2003, 09:37
Dein Code ist ein bisschen unpraktisch, da er absolute Offsets verwendet ($120 / $124)... Delphi kann natürlich die absoluten Offsets der Objekt-Felder berechnen, aber ich bezweifle, dass du mir so einfach sagen kannst an welchem Offset das OnMouseDown-Ereignis liegt...

Ich bevorzuge daher etwas in dieser Richtung:
Delphi-Quellcode:
type
  PMethodPointer = ^TMethodPointer;
  TMethodPointer = packed record
    pMethod: Pointer;
    pObject: TObject;
  end;


procedure ProcFormClick(Self: TObject; Sender: TObject);
begin
  ShowMessage('Procedure');
  TForm(Self).OnClick := TForm1(Self).FormClick;
end;

procedure TForm1.FormClick(Sender: TObject);
begin
  ShowMessage('Method');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  aMP: TMethodPointer;
begin
  aMP.pMethod := @ProcFormClick;
  aMP.pObject := Self;
  OnClick := TNotifyEvent(aMP);
end;
Ein Methoden-Zeiger hat immer die Größe 8, daher ist der Record MethodPointer zu jedem Methoden-Zeiger kompatibel. Der strenge Compiler lässt eine einfache Zuweisung von TMethodPointer an zB TNotifyEvent nicht zu, daher muss der Record immer zuerst in den entsprechenden Methoden-Zeiger gecastet werden.
Manuel Pöter
  Mit Zitat antworten Zitat