Also im Prinzip hast du es schon richtig aufgebaut. Aber oben in deinen Methodendeklarationen hast du einige Fehler eingebaut die ich dir dooferweise in meinen Beitrag hineingeschrieben habe. Ich hatte mir das wie gesagt aus mehreren Klassen wieder zu einer zusammengeklickt und dadurch nicht gemerkt, dass die Methoden schon deklariert waren. Habe auch kein Testprogramm geschrieben um die von mir gepostete Klasse noch einmal zu testen.
Hier mal der Klassenheader mit den Methodendeklarationen (ich werde den in meinem Beitrag auch ersetzen):
Delphi-Quellcode:
TEditEditLink = class (TInterfacedObject, IVTEditLink)
private
FEdit: TEdit;
FTree : TVirtualStringTree;
FNode : PVirtualNode;
FColumn : Integer;
procedure GetNodeText;
public
destructor Destroy; override;
function BeginEdit: Boolean; virtual; stdcall;
function CancelEdit: Boolean; virtual; stdcall;
function EndEdit: Boolean; virtual; stdcall;
function GetBounds: TRect; virtual; stdcall;
function PrepareEdit(Tree: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex): Boolean; stdcall;
procedure ProcessMessage(var Message: TMessage); virtual; stdcall;
procedure SetBounds(R: TRect); stdcall;
end;
Und das hier muss noch in die PrepareEdit Funktion hinein:
Delphi-Quellcode:
Self.FEdit := TEdit.Create(Self.FTree);
Self.FEdit.Visible := False;
Self.FEdit.Parent := Self.FTree;
Ansonsten bekommst du beim Ausführen eine
AV wegen einer nicht erzeugten Komponente.