Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: FAQ - C++ Builder (VCL/CLX) ::  Allgemein: Programmiertipps - dynamic_cast vs. standard cast     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
mitch
Unregistrierter




Beitrag 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
Beitrag 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




Beitrag 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




Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
C/C++ Forum :: FAQ - C++ Builder (VCL/CLX) ::  Allgemein: Programmiertipps - dynamic_cast vs. standard cast   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.