Einzelnen Beitrag anzeigen

tkoenig

Registriert seit: 16. Mär 2010
Ort: Dresden
19 Beiträge
 
Delphi XE7 Professional
 
#1

Zur Laufzeit erstellte Buttons - OnClick weigert sich

  Alt 4. Jul 2011, 11:10
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
  Mit Zitat antworten Zitat