AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Performante Lösung gesucht (Labels füllen)!
Thema durchsuchen
Ansicht
Themen-Optionen

Performante Lösung gesucht (Labels füllen)!

Ein Thema von Grolle · begonnen am 24. Sep 2006 · letzter Beitrag vom 26. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

Performante Lösung gesucht (Labels füllen)!

  Alt 24. Sep 2006, 22:35
Hi,
folgender Code soll mit ca. 25 Labels ausgeführt werden:
Delphi-Quellcode:
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;
Gibts dafür eine performantere Lösung? Ich wüsste im Moment nicht wie.
Viele Grüße...

  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 24. Sep 2006, 22:43
Die Antwort heißt wieder mal .FindComponent/.FindControl.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von tn249
tn249

Registriert seit: 18. Jan 2004
Ort: München
164 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 24. Sep 2006, 22:51
oder du fügst die labels in eine liste oder einen array ein und lässt dann die elemente durchlaufen

Gruß
tn249
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 24. Sep 2006, 22:57
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;
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#5

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 24. Sep 2006, 23:23
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;
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 24. Sep 2006, 23:50
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:
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]);
// Edit: das ganze dann nochmal mit Form1.Label17-24 ...
Viele Grüße...

  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 25. Sep 2006, 08:04
Delphi-Quellcode:
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;
Nachteil: Wenn Jemand die Komponente umbenennt, klappt das nicht mehr.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 25. Sep 2006, 08:31
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
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 25. Sep 2006, 20:08
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....

  Mit Zitat antworten Zitat
Green

Registriert seit: 11. Jun 2006
156 Beiträge
 
#10

Re: Performante Lösung gesucht (Labels füllen)!

  Alt 25. Sep 2006, 20:10
ja, screenshot wär nich schlecht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz