Mehrere Eigenschaften (Properties) ändern
-
Hallo,
kurze Frage.Ich habe gerade herausgefunden, dass folgendes:
TEdit->Visible= true; TEdit->Enabled= true; TEdit->Text= "";ja auch so geschrieben werden kann:
TEdit->Visible= true, Enabled= true, Text= "";Folgendes geht aber nicht:
SendBtn->Enabled= true, Default= true;anstelle von:
SendBtn->Enabled= true; SendBtn->Default= true;(1) Welchen Grund hat das / gibt es da eine Regel, die ich mir merken sollte?
Hab nirgendwo was gefunden bisher dazu...
MfG
Edit: Noch die Fehlermeldung dazu:
[C++ Fehler] Unit1E_UNIGATEClient.cpp(101): E2451 Undefiniertes Symbol 'Default'
-
Dass man das so schreiben kann, heißt aber nicht, dass der Code dasselbe tut. Das ist nämlich nicht der Fall.
-
Hallo,
Informiere dich bitte mal über den Komma-Operator. Statt
TEdit->Visible= true, Enabled= true, Text= "";nimm besser
TEdit->Visible= true; Enabled= true; Text= "";
-
Hallo
Das Verketten von Anweisung per Komma ist möglich und wird zum Beispiel in for-Schleifen gebraucht, wo ja das Semikolon bereits Anfang, Abbruchbedingung und Änderung trennt. Sollen als Änderung zwei verschiedene Anweisungen ausgeführt werden müßen diese per Komma getrennt werden.
Über den Einsatz des Kommas außerhalb von for-Schleifen habe ich keine Erfahrung, außer das es wohl sehr unüblich ist. Denn zum Beispiel dich verleitet es zu der Annahme das dein Codeauszug 1 gleich zu Codeauszug 2 sei. Das stimmt nicht den der Compiler sieht Codeauszug 2 nämlich so
TEdit->Visible= true, this->Enabled= true, this->Text= "";Während also Visible für das Edit aufgerufen wird werden Enabled und Text für das Form selber aufgerufen. Der Text zum Beispiel wird als nicht in das Edit eingetragen sondern als Titel des Forms verwendet.
Damit ergibt sich auch der Grund für den Fehler im 3. Codeauszug : TForm hat keine Eigenschaft Default, was der Compiler dir auch klar und deutlich sagt.
Da nun durch das Komma also keine zusätzliche "Magie" ermöglicht wird solltest du also immer das Semikolon verwenden.
/Edit : Ach bin ich langsam...
bis bald
akari
-
Okay,
ich seh's ein. Vielleicht sollte ich nächstes Mal ausführlicher testen, bevor ich so'n Quatsch schreib...

Zumindest würde ich das als Verbesserung sehen:
Button1->Visible= true; Enabled= true; Text= "Klick";gegenüber dem:
Button1->Visible= true; Button1->Enabled= true; Button1->Text= "Klick";Wenn es denn funktionieren würde! Ist aber nicht der Fall... Der Button lässt sich nicht drücken und Klick steht auch nicht drauf!

Ich fasse zusammen: (2) Mehrere Properties auf einmal in verkürzter Schreibweise ändern, geht nich?
MfG
-
Hallo
Nein, und das "Klick" nicht auf dem Button steht ist doch klar weil es statt desen in dem Fenstertitel eingetragen wird!
Es gibt keine Möglichkeit das weiter zu verkürzen, außer von TEdit abzuleiten, dem eine neue Methode verpassen wo alle drei Eigenschaften direkt aufgerufen werden können und dann von außen nur die neue Methode aufzurufen.
Erst bei mehrfachem Refrenzieren pro Anweisung kann mit Pointern gespart werden
// schlecht Form2->ComboBox1->Items->Add("1"); Form2->ComboBox1->Items->Add("2"); Form2->ComboBox1->Items->Add("3"); // besser TStrings* Items = Form2->ComboBox1->Items; Items->Add("1"); Items->Add("2"); Items->Add("3");bis bald
akari
-
Ups, da habe ich nicht richtig hingeschaut.

Ja du hast recht, das geht nicht.
-
Danke für Eure Mühen.
Schade das nicht so wirklich kürzer geht, wie ich mir das dachte.

MfG