Buttons zur Laufzeit - Sender und Handler
-
Hallo
ich fülle in einer Schleife ein stringGrid. Darin sollen in einer Spalte Buttons erzeugt werden. Wie geht man mit dem Click Event um? Sind ja mehrere Buttons.
int i = 0; while (!ADOQueryGrid->Eof) { i = i + 1; // Def. Rechteck TRect R; R = stringGrid->CellRect(11,i); // Def. Button TButton *butDet = new TButton(this); butDet->Name = "butDet" + IntToStr(i); butDet->Caption = "Details"; butDet->Left = stringGrid->Left + R.Left + 2; butDet->Top = stringGrid->Top + R.Top + 2; butDet->Width = R.Width(); butDet->Height = R.Height(); butDet->OnClick = butDetClick; // Button Event butDet->Parent = MainForm; ADOQueryGrid->Next(); }
Das funkt auch wunderbar und soll beim Click das hier aufrufen. Je nach Sender
dann eine andere Aktion.void __fastcall TMainForm::butDetClick(TObject *Sender) { ShowMessage(Sender); // soll Namen des Buttons ausgeben, geht so nicht // Fehler: Konvertierung von 'TObject *' nach 'AnsiString' nicht möglich // hier die Aktion. z.B Id aus Grid Spalte an andere Funktion weitergeben. }
Wie komme ich an den Sender ran? Muß ich den schon im Funktionsaufruf übergeben?
Gruß und Danke
-
-
Hallo
steht auch in der FAQ unter Komponenten benutzen.
bis bald
akari