Mahlzeit zusammen,
ich weiß, dass dieses Thema hier regelmäßig hoch kommt und habe die Suche bemüht, leider hat mir keine der Lösungen dort weitergeholfen.
Ich habe mir eine Klasse geschrieben, die das TStringGrid um Buttons erweitert und diese in die entsprechenden Zellen einfügt. Funktioniert alles einwandfrei, nur leider bringt meine Zuweisung der OnClick-Routine gar nichts. Kann mir vielleicht jemand einen Schubs in die richtige Richtung geben?
Delphi-Quellcode:
TButtonGrid = class
private
{...}
Procedure ClickAction(Sender: TObject);
published
{...}
Procedure AssignButtons(Captions: Array Of String);
{...}
end;
implementation
procedure TButtonGrid.AssignButtons(Captions: array of String);
var i,j: integer;
begin
SetLength(Buttons,high(Captions)+1);
for i := 0 to high(Buttons) do
begin
SetLength(Buttons[i],StringGrid.RowCount-StringGrid.FixedRows);
for j := 0 to high(Buttons[i]) do
begin
Buttons[i,j] := TButton.Create(StringGrid);
Buttons[i,j].Parent := StringGrid;
Buttons[i,j].Caption := Captions[i];
Buttons[i,j].Name := 'TBGButton_'+inttostr(i)+'_'+inttostr(j);
Buttons[i,j].Tag := strtoint(inttostr(i) + inttostr(j));
SetButtonPosition(Buttons[i,j]);
SetButtonSize(Buttons[i,j]);
Buttons[i,j].OnClick := ClickAction; // <-----------
end;
end;
end;
{...}
procedure TButtonGrid.ClickAction(Sender: TObject);
begin
showmessage('hallo');
end;
Ich bekomme keine Fehlermeldung, leider sagt mir aber auch keiner der Buttons hallo...
Grüße
tkoenig