2 Controls haben gemeinsame ID. Ist das ein Problem?
-
Hi all.
Ich habe 2 Dialoge. Im ersten Dialog habe ich nun diverse Controls erstellt. Jedes Controll hat eine von mir benannte ID (z.B. IDC_PIC_OPEN) und eine passende Variable erhalten.
Im Quelltext des entsprechenden Dialoges steht folgender Code (auto generiert);
DDX_Control(pDX, IDC_BT_FILESAVE, m_BtFileSave);
Jetzt: die IDs sind global abgelegt, richtig? Einsehbar unter 'Ansicht|Ressourcensymbole'. So weit so gut.
WENN ich nun die genau gleiche Gruppierung von Controls im 2. Dialog übernehmen möchte, dann kann ich die ja kopieren und in den 2. Dialog einfügen- die IDs sind jedoch immernoch diesselben. Konkret bedeutet jetzt dies, dass ich 2 Controls, die jeweils in einem eigenen Dialog auftreten, sich eine gemeinsame ID teilen. Ist diese Verwendung zulässig oder muss ich mit einem undefinierten Verhalten des Programmes rechnen?
-
Du kannst ja auch z.B. Labels wenn du willst auch 10 Stück mit der gleichen ID haben. Wenn du dise nicht ansprechen möchtest ist das egal. Wenn aber doch würde ich das ändern. ID ist nahezu in allen Programmiersprachen ein Eindeutiges Identifikationsmerkmal.
-
Lazarus schrieb:
Du kannst ja auch z.B. Labels wenn du willst auch 10 Stück mit der gleichen ID haben. Wenn du dise nicht ansprechen möchtest ist das egal. Wenn aber doch würde ich das ändern. ID ist nahezu in allen Programmiersprachen ein Eindeutiges Identifikationsmerkmal.
Hmm, nun die erwähnten Static-Labels haben eben ne spezielle ID (IDC_STATIC). Wenn diese nicht abgeändert wird, dann findet man das Control im Klassenassistenten gar nicht erst.
-
Hi.
Bei mir ist es auch schon vorgekommen, dass das Studio doppelte IDs vergeben hat. Kann dir aber leider nicht sagen, ob dadurch irgendwann ein Fehlverhalten auftaucht. Jedenfalls ist mir bis jetzt nichts aufgefallen. Hab mich aber ehrlich gesagt auch darüber gewundert.
-
Hallo,
ich kenn das auch mit den doppelten IDs. Hat bei mir nie zu Problemen geführt. Nur innerhalb eines Fensters dürfen die IDs nicht doppelt sein. Ich hatte auch mal eine Begründung gehört, warum das keine Probleme macht. Ich muss mal wieder nachdenken oder -fragen.
Gruß vom Kauz01
-
sky21 schrieb:
Hmm, nun die erwähnten Static-Labels haben eben ne spezielle ID (IDC_STATIC).
IDC_STATIC wird normalerweise mit -1 definiert, was soviel bedeutet wie "ID ist uninteressant und deshalb brauch ich auch keine". Ansonsten solltest du schon darauf achten, keine ID's innerhalb eines Fensters/Dialogs doppelt zu vergeben.
-
zulässig
-
Ich hab jetzt nochmal nachgehakt und eine ganz logische Erklärung bekommen:
Der Dialog kümmert sich selbst um alle Controls, die zu ihm gehören. Es genügt also, wenn die ID innerhalb des Dialogs eindeutig ist. Welche IDs andere Dialoge verwenden ist ihm egal.
Bei IDC_STATIC ist das Ganze egal, da diese durch den Dialog nicht abgefragt bzw. geändert werden müssen.Grüße vom Kauz01
-
Kauz01 schrieb:
Ich hab jetzt nochmal nachgehakt und eine ganz logische Erklärung bekommen:
Der Dialog kümmert sich selbst um alle Controls, die zu ihm gehören. Es genügt also, wenn die ID innerhalb des Dialogs eindeutig ist. Welche IDs andere Dialoge verwenden ist ihm egal.
Bei IDC_STATIC ist das Ganze egal, da diese durch den Dialog nicht abgefragt bzw. geändert werden müssen.Grüße vom Kauz01
Danke für die Antwort!