![]() |
Auf mehrere Labels zugreifen
1. Sorry, aber ein anderer Titel ist mir nicht eingefallen.
2.Mein Problem: Es handelt sich um Galgenraten. Es wird aus verschiedenen Strings einer ausgesucht(über Random). Soviele Buchstaben, wie das Wort hat, soviele Labels werden erstellt und bekommen als Caption einen Unterstrich. Der Hint wird mit dem an der Stelle stehenden Buchstaben versehen.(Ich mache das ganze über eine Schleifenvariable I: Integer) Der Name der Labels heißt dann 'L'+IntToStr(I) Wenn nun eine Buchstabentaste gedrückt wird, sollen alle Labels mit dem Hint, der dem Buchstaben entspricht ihre Captions mit dem Hint eintauschen(wenn der Buchstabe im Wort ist, werden alle gleichen Buchstaben "aufgedeckt"). Ich habe das so programmiert:
Delphi-Quellcode:
Aber da kommt immer eine Fehlermeldung:
TLabel('L'+IntToStr(I)).Caption := TLabel('L'+IntToStr(I)).Hint;
"Format %p ungültig oder nicht kompatibel mit Argument" Wie kann ich das anders machen? Danke schon mal! |
Re: Auf mehrere Labels zugreifen
Moin F.W.,
schau Dir dazu am Besten mal FindComponent an. Zum einen in der Hilfe, zum anderen auch hier ( ![]() |
Re: Auf mehrere Labels zugreifen
Hallo!
Was Du brauchst ist die Funktion FindComponent. Die wird dann so benutzt:
Delphi-Quellcode:
Das myObject brauchst Du nicht unbedingt, aber ich wollte nicht dreimal FindComponent aufrufen.
VAR myObject : TObject;
begin myObject:=FindComponent('L'+IntToStr(i)); if myObject is TLabel then TLabel(myObject).Caption := TLabel(myObject).Hint; end; MfG Peter //edit: :cry: zu langsam! |
Re: Auf mehrere Labels zugreifen
Liste der Anhänge anzeigen (Anzahl: 1)
Hier findet du ein Demo zu FindComponent:
![]() Und als Dreingabe der Anhang. (Ohne Hint und schon alt.) |
Re: Auf mehrere Labels zugreifen
Ich habs ausprobiert und es geht, aber nicht bei meinen Labels, die ich im laufenden Betrieb erzeugt habe, da passiert nichts.
Delphi-Quellcode:
So erzeuge ich die Labels, beim Klick auf START. Kann es sein, dass da was mit dem Namen nicht stimmt, z.B. das der nicht in die "Liste" der Objekte, die FindComponent durchsucht reingenommen wird?
var
PosI, I: Integer; L: TLabel; begin PosI := 20; for I := 1 to Length(RateS) do begin L := TLabel.Create(Panel1); L.Name := 'L'+IntToStr(I); L.Caption := '_'; L.Hint := UpCase(Char(RateS[I])); L.Parent := Panel1; L.ShowHint := True; L.Top := 20; L.Left := PosI; L.Font := Label3.Font; PosI := PosI+30; end; end; |
Re: Auf mehrere Labels zugreifen
Hallo!
Da die Labels zum Panel1 gehören, musst Du auch das zum Panel1 gehörige FindComponent aufrufen, also Panel1.FindComponent. MfG Peter |
Re: Auf mehrere Labels zugreifen
Danke! Hat super geklappt!
Eine neue Frage hätte ich noch: Kann man bei Random() auch einen Bereich VON bis eingeben, also das nicht mit 0 sondern mit 123 angefangen wird? Danke! |
Re: Auf mehrere Labels zugreifen
Klar geht das:
Delphi-Quellcode:
gibt z.B. die Zahlen von 50-150 aus.
random(100)+50;
oder:
Delphi-Quellcode:
gibt die Zahlen von 123-423 aus.
random(300)+123;
|
Re: Auf mehrere Labels zugreifen
Garnicht mal so leicht, danke!!
Danke! Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz