object pascal -> c++
-
hi,
void __fastcall TForm1::PopupMenu1Popup(TObject *Sender) { if ((Sender as TButton)->Tag == 0) {über das "as" meckert der cbuilder .. wie macht man das ganze in ordentlichem c++ syntax? ich habe eine gruppe von button die alle bei der eigenschaft Tag 1 oder 2 oder .. haben und diesen gruppen immer eingenschaften zuweisen.
kann einer helfen?
-
Dazu musst du casten. Siehe FAQ unter "Komponenten benutzen".
-
if ((dynamic_cast <TButton*> (Sender))->Tag == 0)
-
Vielen Dank!
-
sorry irgendwie bringt mich das casten nicht weiter .. peil das nicht ganz? könntest mir bitte helfen?
ich habe 6 Buttons, welche eine eigenschaft DropDownMenu besitzen, wo ich überall das PopupMenu1 eingetragen habe.
(mit linksklick auf den button wird das Popup angezeigt)nun möchte ich in *void __fastcall TForm1::PopupMenu1Popup(TObject Sender)
herrausfinden welcher dieser 6 button das PopupMenu1 aufgerufen hat, um manche einträge in diesem Popup unsichtbar zu machen etc.TExplorerButton *button = dynamic_cast<TExplorerButton*>(PopupMenu1->PopupComponent);
aber zugriff auf button kommt bei mir speicherfehler

-
ups, hätte mal aktualisieren sollen ^^
ich teste mal
-
TExplorerButton *button = dynamic_cast<TExplorerButton*>(PopupMenu1->PopupComponent); if (button) // Cast war erfolgreich button->MachWas();
-
was ist denn daran falsch?
TExplorerButton *button = dynamic_cast<TExplorerButton*>(PopupMenu1->PopupComponent);
if (button->Tag==0)wenn ich zur if komme, hauts mich sofort mit speicherfehler raus

-
Bevor du auf die Eigenschaften zugreifst musst bzw. solltest du prüfen, ob der Cast erfolgreich war. Wenn nicht, dann ist button hier NULL und hat logischerweise keine Tag-Property.
Offensichtlich ist die PopupComponent in deinem Fall nicht vom Typ TExplorerButton.
-
also der cast war nicht erfolgrein

*heul* also werd ich wohl in dem onClick Ereignis des Buttons das Popup öffnen müssen.
schade, schade,
aber vielen dank für eure hilfe .. werd mir das casten mal im hinterkopf behalten ^^
-
warum nimmst du nicht Sender beim casten?