| Autor |
Beitrag |
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 18.11.02 10:21
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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 18.11.02 10: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 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 18.11.02 12: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!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 18.11.02 12: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 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 18.11.02 12: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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 18.11.02 13: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
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mo 18.11.02 13: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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 18.11.02 13:45
Mist genau das habe ich gesucht, als ich die Prozedur für alle Edit schreiben wollte. Aber mir ist es einfach nicht gelungen. 
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mo 18.11.02 13: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.  |
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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 18.11.02 14:02
Eben. Und da mir mein Buch nicht weiterhelfen konnte und mir der Code nicht mehr eingefallen ist... 
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 18.11.02 19: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
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mo 18.11.02 20: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 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
|
|