![]() |
Performante Lösung gesucht (Labels füllen)!
Hi,
folgender Code soll mit ca. 25 Labels ausgeführt werden:
Delphi-Quellcode:
Gibts dafür eine performantere Lösung? Ich wüsste im Moment nicht wie.
var
s1, s2 ...... : string; begin s1 := Form1.Label1.Caption; Label51.Caption := ' 1 - ' + StringReplace(s1,':','',[rfReplaceAll]); s2 := Form1.Label2.Caption; Label52.Caption := ' 2 - ' + StringReplace(s2,':','',[rfReplaceAll]); ................. end; Viele Grüße... |
Re: Performante Lösung gesucht (Labels füllen)!
Die Antwort heißt wieder mal .FindComponent/.FindControl.
|
Re: Performante Lösung gesucht (Labels füllen)!
oder du fügst die labels in eine liste oder einen array ein und lässt dann die elemente durchlaufen
Gruß tn249 |
Re: Performante Lösung gesucht (Labels füllen)!
Wenn ich Dich richtig verstanden habe, ginge es so.
Dazu mußt Du jedem Label den Tag als ID setzen. Label1.Tag=1 ... Label51.Tag=51 Oder die Funktion umschreiben und die Zahl des Labelnamens als ID verwenden.
Delphi-Quellcode:
...
var i:Integer; lbl:TLabel; begin For i:=0 to ComponentCount-1 do if Components[i] is TLabel then if TLabel(Components[i]).Tag<=25 then begin lbl:=FindLabelPerTag(TLabel(Components[i]).Tag+50); If lbl<>nil then TLabel(Components[i]).Caption:=IntToStr(lbl.Tag)+'...'; end; ... function TForm1.FindLabelPerTag(const Tag:Integer):TLabel; var i:Integer; begin Result:=nil; For i:=0 to ComponentCount-1 do if Components[i] is TLabel then if TLabel(Components[i]).Tag=Tag then begin Result:=TLabel(Components[i]); Exit; end; end; |
Re: Performante Lösung gesucht (Labels füllen)!
Es ist nur sehr schwer zu erkennen, was du vor hast. Also frag ich mal, ob ich es so richtig verstanden habe :?:
Delphi-Quellcode:
var
I: Integer; aString: String; begin for I := 0 to ComponentCount -1 do begin if Components[I] is TLabel then begin aString := IntToStr(I + 1) + ' - ' + StringReplace((Components[I] as TLabel).Caption,':','',[rfReplaceAll]); (Components[I] as TLabel).Caption := aString; end; end; end; |
Re: Performante Lösung gesucht (Labels füllen)!
Hi,
ich versuchs nochmal. Bin gerade mit FindComponent am basteln, aber ich bekomms irgendwie nicht hin: Ich will die Label1-14.Caption von Form1 einlesen. In Form2 soll dann damit die Label51-64.Caption eingefügt werden. Außerdem sollen auf den Labels der Form2 ein Zähler hinzugefügt werden und der Doppelpunkt ersetzt werden:
Delphi-Quellcode:
// Edit: das ganze dann nochmal mit Form1.Label17-24 ...
Form2.Label51.Caption := ' 1 - ' + StringReplace(Form1.Label1.Caption,':','',[rfReplaceAll]);
Form2.Label52.Caption := ' 2 - ' + StringReplace(Form1.Label2.Caption,':','',[rfReplaceAll]); Form2.Label53.Caption := ' 3 - ' + StringReplace(Form1.Label3.Caption,':','',[rfReplaceAll]); ........ Form2.Label64.Caption := '14 - ' + StringReplace(Form1.Label14.Caption,':','',[rfReplaceAll]); Viele Grüße... |
Re: Performante Lösung gesucht (Labels füllen)!
Delphi-Quellcode:
Nachteil: Wenn Jemand die Komponente umbenennt, klappt das nicht mehr.
Var
lb,lb10 : TLabel; s : String; i : Integer; Begin For i:=1 to 14 do begin lb := FindComponent (Format('Label%d',[i])) as TLabel; lb10 := FindComponent (Format('Label%d',[50+i])) as TLabel; s := StringReplace(lb.Caption,':','',[rfReplaceAll]); lb10.caption := Format('%d - %s',[i,s]); End; End; |
Re: Performante Lösung gesucht (Labels füllen)!
Hallo Stefan,
alles, was ich aus diesem thread über dein Problem weiß, deutet auf ein suboptimales Design hin. S läuft auch alles darauf hinaus eine "schlechte" Idee möglichst "gut" umzusetzen. Kannst du nicht ein wenig mehr über die Hintergründe deiner Design-Idee mitteilen? Wir alle könnten dann vielleicht nach einem ganz anderen Ansatz suchen, der vielleicht noch eleganter umgesetzt werden kann. Freundliche Grüße vom marabu |
Re: Performante Lösung gesucht (Labels füllen)!
Hallo Marabu,
also ich möchte folgendes erreichen: Meine Anwendung ist mehrsprachig(prof. Adressverwaltung). Der Anwender hat die Möglichkeit die Felder, die er exportieren (csv, xml, xls....) möchte selber zu wählen. Dazu muss er in einem Editfeld in den Einstellungen (Form2) bestimmte Zahlen angeben [1,2,3,4,5,6........24]. Diese bezeichnen dann die zu exportierenden Felder der Datenbank. Zur Hilfe sind darunter Labels mit der Bedeutung der einzelnen Ziffern. Je nach Sprache soll dann folgendes dort stehen: 1 - Firma 2 - Name 3 - Vorname ...... oder (je nach Sprache) 1 - Company 2 - Last Name 3 - First Name ...... Wenn es noch nicht klar ist, poste ich noch nen Screenshot. Viele Grüße.... |
Re: Performante Lösung gesucht (Labels füllen)!
ja, screenshot wär nich schlecht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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 by Thomas Breitkreuz