| Autor |
Nachricht |
mitch
Unregistrierter
|
mitch Unregistrierter
17:05:00 05.09.2001 Titel: |
Allgemein: Programmiertipps - dynamic_cast vs. standard cast |
Zitieren |
hi!
in meinem programm gibt es viele TEdits, die das selbe popup menü aufrufen. wie bekomme ich denn heraus, von welchem Tedit das popup menu aufgerufen wurde???
thx, mitch
[ Dieser Beitrag wurde am 02.02.2003 um 17:06 Uhr von Jansen editiert. ] |
|
|
|
 |
Werbeunterbrechung
|
|
 |
Serge
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.04.2000
Beiträge: 244
|
Serge Mitglied
19:24:00 05.09.2001 Titel: |
|
Zitieren |
| C/C++ Code: | if(PopupMenu1->PopupComponent == Edit1)
ShowMessage("Grüsse von Edit1");
else if(PopupMenu1->PopupComponent == Edit2)
ShowMessage("Grüsse von Edit2"); | |
| C/C++ Code: | if(PopupMenu1->PopupComponent == Edit1)
ShowMessage("Grüsse von Edit1");
else if(PopupMenu1->PopupComponent == Edit2)
ShowMessage("Grüsse von Edit2"); | |
| C/C++ Code: | if(PopupMenu1->PopupComponent == Edit1)
ShowMessage("Grüsse von Edit1");
else if(PopupMenu1->PopupComponent == Edit2)
ShowMessage("Grüsse von Edit2"); | |
|
_________________ Regards
Serge
|
|
 |
mitch
Unregistrierter
|
mitch Unregistrierter
23:44:00 05.09.2001 Titel: |
|
Zitieren |
danke für die hilfe!
aber, wie kann ich es machen, dass automatisch ein text dem edit zugeordnet wird?
also so nach dem motto:
PopupMenu1->PopupComponent->Text = "hier steht der text";
(mir ist klar, dass das so nicht funktionieren kann ;-)
aber wie?
thx, mitch |
|
|
|
 |
mitch
Unregistrierter
|
mitch Unregistrierter
23:55:00 05.09.2001 Titel: |
|
Zitieren |
habs schon!
| C/C++ Code: | TEdit *xyz;
xyz = (TEdit *) PopupMenu1->PopupComponent;
xyz->Text = "bla, bla!"; | |
| C/C++ Code: | TEdit *xyz;
xyz = (TEdit *) PopupMenu1->PopupComponent;
xyz->Text = "bla, bla!"; | |
| C/C++ Code: | TEdit *xyz;
xyz = (TEdit *) PopupMenu1->PopupComponent;
xyz->Text = "bla, bla!"; | |
ja,ja
die gute alte suchfunktion ;-) |
|
|
|
 |
Jansen
Moderator
Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 14520
|
Jansen Moderator
00:28:00 06.09.2001 Titel: |
|
Zitieren |
Es heisst ja "C++Builder", also benutz' lieber dynamic_cast anstelle des C-Style Casts (auch wenn das sogar in der BCB-Hilfe "falsch" gemacht wird).
| Code: | TEdit *xyz = dynamic_cast<TEdit*>(PopupMenu1->PopupComponent);
if (xyz)
xyz->Text = "bla, bla!"; | |
| Code: | TEdit *xyz = dynamic_cast<TEdit*>(PopupMenu1->PopupComponent);
if (xyz)
xyz->Text = "bla, bla!"; | |
| Code: | TEdit *xyz = dynamic_cast<TEdit*>(PopupMenu1->PopupComponent);
if (xyz)
xyz->Text = "bla, bla!"; | |
|
_________________ Jansen (Mod nur im BCB-Forum)
|
|
 |
Mikel
Mitglied
Benutzerprofil
Anmeldungsdatum: 01.08.2001
Beiträge: 259
|
Mikel Mitglied
18:04:00 06.09.2001 Titel: |
|
Zitieren |
@Jansen,
| Zitat: |
... also benutz' lieber dynamic_cast anstelle des C-Style Casts ...
|
Hat das einen triftigen Grund oder ist es einfach Ansichtssache ?
Würde mich wirklich interessieren
Gruß Mikel |
|
|
|
 |
Serge
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.04.2000
Beiträge: 244
|
Serge Mitglied
23:04:00 06.09.2001 Titel: |
|
Zitieren |
@mikel
man beachte das Fettgedruckte:
--- Jansen's Code ---
TEdit *xyz = dynamic_cast<TEdit*>(PopupMenu1->PopupComponent);
if (xyz)
xyz->Text = "bla, bla!";
--- cut ---
Castest du zur Laufzeit mit RTTI, hast du die Chance zu checken, ob der Vorgang erfolgreich war. Machst du es mit C-Style Casting, bekommst du mit Sicherheit immer irgendeine Speicheradresse geliefert und der Compiler wird sich zur Compilierzeit nicht beschweren...
Was ist nun besser ? ...Sauber programmierte goto-Anwesungen würden ihre Aufgabe wahrscheinlich auch tun. Gibt es einen "triftigen Grund", sie nicht zu verwenden, oder ist es "Ansichtssache" ? Natürlich ist es Ansichtssache - genauso wie z.B. Verwendung von Variablen mit den Namen k,m,l,i,s,g o.Ä. (möglichst global) auch.
...es sei denn, man legt Wert auf Programmierstil. [img]images/smiles/icon_smile.gif[/img] |
_________________ Regards
Serge
|
|
 |
Mikel
Mitglied
Benutzerprofil
Anmeldungsdatum: 01.08.2001
Beiträge: 259
|
Mikel Mitglied
10:27:00 07.09.2001 Titel: |
|
Zitieren |
@Serge,
ich hab den Code tatsächlich nur überflogen und das if() übersehen.
Aber generell lohnt es sich wohl das immer zu machen.
Deine Erklärung war gut, Danke.
Gruß Mikel |
|
|
|
 |