ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
1639
1639
EMPFEHLEN
-
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.
Code:
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
-
TObject ist die Basisklasse der VCL. D.h., alle Objecte der VCL sind von TObject abgeleitet.
D.h., Du musst auf die entsprechende Klasse casten. D.h., in diesem Fall auf die Klasse TButton
ShowMessage(dynamic_cast<TButton*>(Sender)->Name.c_str())
Gruß
Gerhard
-
02.09.06 00:57 #3
Faszinierend. Das wollte ich schon immer mal können

Hab den Code n bissl an ein normales StringGrid angepasst
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i = 0; while (StringGrid1->RowCount > i) { i++; // Def. Rechteck TRect R; R = StringGrid1->CellRect(0,i-1); // Def. Button TButton *butDet = new TButton(this); butDet->Name = "butDet" + IntToStr(i); butDet->Caption = "Details"; butDet->Left = StringGrid1->Left + R.Left + 2; butDet->Top = StringGrid1->Top + R.Top + 2; butDet->Width = R.Width(); butDet->Height = R.Height(); butDet->OnClick = butDetClick; // Button Event butDet->Parent = Form1; } } void __fastcall TForm1::butDetClick(TObject *Sender) { ShowMessage(dynamic_cast<TButton*>(Sender)->Name.c_str()); } //---------------------------------------------------------------------------
An alle die hier auf dieses Thema stoßen:
Nicht vergessen in der Header unter
Code :1 2 3
class TForm1 : public TForm { __published: // IDE-managed Components
diesen Code einzufügen:
Code :1
void __fastcall butDetClick(TObject *Sender);
Is doch immer schön n paar Codeschnipsel aus diesem Forum auszuprobieren und mal wieder Spielen
C macht es einfach, sich in den Fuß zu schießen; C++ erschwert es, aber wenn man es tut, bläst es einem das ganze Bein weg." —Bjarne Stroustrup .-.-.-.-.-.-.
„Ich habe mir immer gewünscht, dass mein Computer so einfach zu bedienen sein sollte wie mein Telefon. Mein Wunsch wurde wahr. Ich weiß nun nicht mehr, wie mein Telefon funktioniert.“ —Bjarne Stroustrup
Ähnliche Themen
-
Mehrere Buttons zur Laufzeit dynamisch Generieren
Von Lautsprecher im Forum JavaAntworten: 7Letzter Beitrag: 26.06.07, 10:40 -
object sender....
Von d-Stench im Forum .NET Windows FormsAntworten: 6Letzter Beitrag: 23.08.05, 21:40 -
Buttons zur Laufzeit erstellen
Von zonki im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 17.02.05, 09:44 -
Buttons zur Laufzeit erstellen
Von alixander im Forum Borland CBuilder und VCLAntworten: 3Letzter Beitrag: 10.01.05, 16:23 -
sender... wie funktionierts?
Von Delphi-Gangster im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 15.06.04, 09:32





Zitieren
Login






