Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Über Strings auf Edit-Felder o.ä. zugreifen - wie???


Killi - Fr 03.01.03 13:39
Titel: Über Strings auf Edit-Felder o.ä. zugreifen - wie???
Hi!

Also - ich hab zum Beispiel nen String time:= '730' - jetzt will ich ÜBER diesen STRING auf ein Edit-Feld zugreifen, wie mache ich das? Hab gedacht mit sowas ähnlichem wie 'E' + time + '_1'.Text:= 'blabla' (Also heißt mein Edit-Feld "E730_1") - aber das geht nat. nicht! Wie mache ich das am besten???


Luncustaf - Fr 03.01.03 13:44


Quelltext
1:
2:
3:
4:
with Edit1 do
begin
   name := 'E'+ time +'_1';
end;


so sollte es eigentlich funktionieren -> dann haste dem editfeld den namen E730_1 zugewiesen.

wenn du mehrere hast und jeweils auf den wert aus time zurückgreifen willst um dann auf die eigenschaft text zuzugreifen musste erst den namen vergeben und dann das verwenden um darauf zugreifen zu können


Quelltext
1:
TEdit('E'+ time +'_1').Text := 'xxxx'                    


korrigiert mich wenn ich falsch liege


gr€€tz


Killi - Fr 03.01.03 13:59

Danke für die schnelle Hilfe!
OK, die Objekte gibt es schon, ich muss ihnen nicht extra den Namen geben! Jetzt wollte ich grade bei nem Label die Farbe ändern:

Quelltext
1:
2:
3:
4:
  
DecodeTime(Now, Hour, Min, Sec, MSec);
Labeltest.Caption:= IntToStr(Hour) + ' - ' + IntToStr(Min);
TLabel('L'+ IntToStr(Hour) + IntToStr(Min) +'_1').Color:= clYellow;

Aber er hat mir n Fehler bei der EAccessViolation gegeben - Zugriffsverletzung! Wieso? Das Label heißt L130_1 - genau das hat mir das DecodeTime auch gegeben 13 und 0!?!?


maxk - Fr 03.01.03 14:28


Quelltext
1:
(FindComponent('E' + time + '_1') as TEdit).Text:='Test';                    

Sollte gehen!

maxk


Killi - Fr 03.01.03 14:34

Danke! Hat geklappt!!!!
Ist total wichtig für meinen neuen Terminkalender, damit ich die jetzige Zeit hervorheben kann!
DANKE!!!


maxk - Fr 03.01.03 14:52

Pass auf!

Du solltest lieber vorher mit:

Quelltext
1:
if not (FindComponent('E' + time + '_1') is TEdit) then exit;                    

ob es sich wirklich um ein Edit handelt! Sonst kriegst du ne Exception

maxk


Killi - Fr 03.01.03 17:44

Basst scho! Hab 10.000 Labels bzw. Edits in 15 Minuten-schritten so benannt, also weiß ich auch dass es Labels bzw. Edits sind, und diejenigen, die es nicht gibt, habe ich eh mit ner Schleife ausgeschlossen!


Killi - Fr 10.01.03 16:07

Hi!

Nochmal Frage: Wie kann ich das ganze RÜCKWÄRTS machen? Also wenn ich auf n Label, das EPatient700_1 heißt klicke - will ich das 700 rausholen - wie mach ich das? Gibts da auch n Befehl???


tommie-lie - Fr 10.01.03 17:48

nimmst den Name als String, suchst dir die Position von 700 und kopierst's raus. Oder schneidest das EPatient und _1 raus, dann hast du auch die 700.