![]() |
dynamisch auf Componenten zugreifen
Hallo,
möchte um nicht alle Label_1 bis Label_99 einzeln initialisieren zu müssen, dies über eine Schleife machen. Wie kann ich die Objekte Label_1 bis Label_99 dynamisch ansprechen?
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
for i:=1 to 99
label + '_' + IntToStr(i).Text = 'blabla'; ??? |
Re: dynamisch auf Componenten zugreifen
|
Re: dynamisch auf Componenten zugreifen
Bevor wieder jemand mit FindComponent kommt: pack Dir die Labels in ein Array oder eine TObjectList und arbeite das/die dann ab. Wenn Du eine TObjectList verwendest, denke aber daran, OwnsObjects auf false zu setzen.
[edit] Zu spät :? [/edit] |
Re: dynamisch auf Componenten zugreifen
danke!
jangub |
Re: dynamisch auf Componenten zugreifen
Falls die Labels alle auf der selben Komponente liegen (Form, Panel, etc.) gehts auch so:
Delphi-Quellcode:
var
i: Integer; begin for i := 0 to ComponentCount -1 do begin if Components[i] is TLabel then (components[i] as TLabel).Text := 'blubb'; end; end; |
Re: dynamisch auf Componenten zugreifen
Stehen für den Benutzer wichtige Informationen in den Labels?
Falls ja, dann nimm TEdit mit ReadOnly=True anstelle der Labels. Vorteil für den Benutzer: er kann Texte markieren und kopieren. Es gibt leider so viele ungeschickte Programme, die z.B. Hypherlinks, Seriennummern, usw anzeigen und der arme Benutzer muss alles abschreiben. :wall: Bestes Beispiel ist das Infofenster des Internet Explorer. |
Re: dynamisch auf Componenten zugreifen
Zitat:
|
Re: dynamisch auf Componenten zugreifen
Zitat:
|
Re: dynamisch auf Componenten zugreifen
Ich will nicht die Hand dafür ins Feuer legen, aber m.W.n. prüft as erneut mit is den Typ ab und wirft im Fehlerfall eine Exception. Ein harter Typecast ist daher vermutlich etwas schneller.
|
Re: dynamisch auf Componenten zugreifen
Zitat:
|
Re: dynamisch auf Componenten zugreifen
Zitat:
|
Re: dynamisch auf Componenten zugreifen
Natürlich geht es nicht um Stunden. Wenn ich zwingend ein Objekt eines bestimmten Typs erwarte, benutze ich auch as, gehe ich aber alle Objekte durch und benutze is zur "Filterung", mache ich anschließend einen harten Typecast. Damit bin ich bislang immer gut gefahren, aber das ist sicherlich zu einem gewissen Grad Geschmackssache.
|
Re: dynamisch auf Componenten zugreifen
Zitat:
Wie DeddyH schon schrieb, wenn man wirklich einen bestimmten Typ erwartet und zu diesem casten möchte, dann sollte man "as" nehmen, in diesem Fall ist jedoch der Ansatz mit "is" und dem harten Typecast vorzuziehen. |
Re: dynamisch auf Componenten zugreifen
Vergleichbar mit
Delphi-Quellcode:
(Das hab ich früher auch so gemacht :oops: )
if Assigned(Obj) then
Obj.Free; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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