Entwickler-Ecke
Sonstiges (Delphi) - delphi-äquivalent zu _this.color := ...
kiwicht - Mo 18.11.02 11:21
Titel: delphi-äquivalent zu _this.color := ...
hallöchen...
beim actionscript von mm flash gibts den befehl "_this" mit dem ich dem object, welches jenen befehl enthält, eine neue eigenschaft oder sonst was zuweisen kann.
frage: gibts sowas auch für delphi? so wie z.b.
procedure ....
begin
self.color := white;
end;
thx
kiwicht
Delete - Mo 18.11.02 11:58
Gib doch das Objekt an:
Quelltext
1:
| Label1.Color := clred; |
Unf mit self wäre in diesem Fall:
Quelltext
1: 2: 3: 4:
| procedure TForm1.FormCreate(Sender: TObject); begin self.Caption := 'Bla'; end; |
das Formular gemeint.
kiwicht - Mo 18.11.02 13:00
hm. klappt nich so wie ich das will:
ich erklär noch ma mein ziel:
ich hab n edit-feld, das ist blau unterlegt. jetzt will ich das das feld seine farbe auf weiß ändert, sobald ich da drin etwas ändere. gebe ich aber self.color := clwhite bei "EditChange" an, ist aufeinmal das ganze formular von anfang an weiß... ???
seltsam,vor allem deswegen, weil ich die farbänderung ja bei "OnChange" befehle, das Formular aber von anfang weiß ist, ohne jeder user-interaktion!
Delete - Mo 18.11.02 13:04
Ich dachte das wäre bei meinem zweiten Beispeil deutlich geworden? self bezeichnet immer das übergeordente Objekt.
Bennenn im OnChange-Ereignis das Edit mit seinem richtigen Namen und es passiert genau das was du willst mit dem richtigen Objekt.
kiwicht - Mo 18.11.02 13:53
hm. das ergibt ja gerade genau das, was ich nicht will.
nochmal:
ich will einen befehl, der die eigenschaft des aufrufenden objectes ändert. in der praxis: ich hab 5 eingabe-felder. bei OnEnter von Edit1 will ich folgendes veranlassen:
WENN CURSOR KOMMT - DANN SEI SELBER WEISS
WENN CURSOR GEHT - DANN SEI SELBER BLAU
und diesen Code will ich jetzt auch an die Felder Edit2-5 übergeben.
....
oder bin ich etwa schon so fertig, daß ich die lösung nicht sehe, die du mir anbietest? man möge mir verzeihen. ...
kiwicht
Delete - Mo 18.11.02 14:21
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.Color := clWhite; end;
procedure TForm1.Edit1Exit(Sender: TObject); begin Edit1.Color := clBlue; end; |
So???
Klabautermann - Mo 18.11.02 14:40
Hallo,
| kiwicht hat folgendes geschrieben: |
| sobald ich da drin etwas ändere. gebe ich aber self.color := clwhite bei "EditChange" an, ist aufeinmal das ganze formular von anfang an weiß... ??? |
das ist auch richtig so, da die OnCahne procedure zu dem Form gehört, wie man an dieser Zeile sehen kann:
Quelltext
1:
| procedure TForm1.Edit1Enter(Sender: TObject); |
mit
self ist in diesem Fall also TForm1 gemeint.
Die Lösung des ganzen ist aber auch in dieser Zeile enthalten, nämlich der Parameter
Sender. Dieser enthällt immer einen Zeiger auf das auslösende Objekt also dein tEdit Feld.
Da er vom Typ tObjekt ist musst du erst überprüfen ob es sich tatsächlich um ein tEdit Feld handelt und wenn ja, kannst mittels TypeCast die Farbe ändern.
Konkret sieht das so aus:
Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Edit1Enter(Sender: TObject); begin IF (sender IS tEdit) THEN tEdit(sender).Color := clWhite; end; |
Das selbe gild natürlich auch für die Exit Procedure sowie fast alle anderen ereignisse auch.
Gruß
Klabautermann
Delete - Mo 18.11.02 14:45
Mist genau das habe ich gesucht, als ich die Prozedur für alle Edit schreiben wollte. Aber mir ist es einfach nicht gelungen. :cry:
Klabautermann - Mo 18.11.02 14:57
Hallo,
| Luckie hat folgendes geschrieben: |
| Mist genau das habe ich gesucht, als ich die Prozedur für alle Edit schreiben wollte. Aber mir ist es einfach nicht gelungen. :cry: |
echt? Wann war denn das? Habe ich da ein posting übersehen?
Generell finde ich es traurig, das in Delphi-Büchern meist nur soetwas zu sehen ist wie von dir vorgestellt
(
Quelltext
1: 2: 3: 4:
| procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.Color := clWhite; end; |
).
denn im grunde ist das ziemlich unsaubere Programmierung, weil unflexibel. Du kannst z.B. ein Steuerelement nicht umbenennen ohne änderungen im Code machen zu müssen. Und eben auch nicht ein und die selbe Ereignisbehandlungsrutine für meherer Objekte verwenden.
Die bessere Methode ist es sicherlich mit sender zu arbeiten. Das ist aber immerhin eine Zeile mehr Tipparbeit (es sei denn man ist wagemutig genug um die Sicherheitsabfrage weg zu lassen) und das kann sich auf die Dauer ziemlich läppern. Ich schätze das ist der Grund warum der (von Natur aus tippfaule) Programmierer es gerne weg lässt (und ich nehme mich da nicht aus). Das gild natürlich insbesondere wenn man mal eben schnell 'ne Antwort in ein Forum stellt um etwas ganz anderes zu erklähren.
Gruß
Klabautermann
Delete - Mo 18.11.02 15:02
Eben. Und da mir mein Buch nicht weiterhelfen konnte und mir der Code nicht mehr eingefallen ist... :x
kiwicht - Mo 18.11.02 20:18
mennometer.. wenn ich euch nit hätte. auf die lösung wär ich wohl in jahren nit gekommen. vielen dank.
zum thema bücher: ganz meine meinung: hab jetzt schon 2 bücher zum thema delphi gelesen: delphi for kids und eins aus der nitty-gritty reihe.... und ich hab NICHTS dazugelernt. beim ersteren sind nur billige beispiele vom typus "Hello-World" aufgeführt, und beim zweiten sind die scripts teilweise falsch abgedruckt.... ma davon abgesehen, das das auch nur anfänger-scripts sind. da hab ich mit action-script büchern bessere erfahrungen gemacht... aber nun ja... dafür gibts ja das delphi-forum
kiwicht
Klabautermann - Mo 18.11.02 21:20
Hallo,
| kiwicht hat folgendes geschrieben: |
| zum thema bücher: ganz meine meinung: hab jetzt schon 2 bücher zum thema delphi gelesen: delphi for kids und eins aus der nitty-gritty reihe.... und ich hab NICHTS dazugelernt. beim ersteren sind nur billige beispiele vom typus "Hello-World" aufgeführt, und beim zweiten sind die scripts teilweise falsch abgedruckt.... ma davon abgesehen, das das auch nur anfänger-scripts sind. |
solche Erfahrungen macht man leider häufiger. Wobei ich zur verteididung der Gedruckten Literatur sagen muss, das ich das glaube ich aus einem Buch habe. Nämlich aus "
Proffesionelle Programmierung - Delphi [
http://www.amazon.de/exec/obidos/ASIN/3827317738/oitmann] 4" von Elmar Warken. Dieses Buch gefällt mir ziemlich gut, ist aber absolut nicht für anfänger geeignet. Hier wird ein komplexes (Grafik)-Programm entwickelt (Tree-Designer) und dabei verschiedenen Techniken demonstriet. Dabei geht das Buch aber sehr zügig vor und häufig findet man auch hinweiser ala "um den Umfang dieses Buches nciht zu sprengen gucken Sie in die Quelltexte...".
Aber genug der Werbung.
Gruß
Klabautermann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!