![]() |
Komponente suchen und Caption ändern ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hello Friends,
zuerst frohes 2021 wünsche ich allen :) Mein Problem : ich mochte gern auf ein Form platzierte mehrere Panels(mehr als 50) per Button-klick suchen und falls auf welche keine Caption vorhanden ist,ein neue caption zuweisen. Ich versuche mit follgende.... aber ohne Erfolg :( Ich bitte um Hilfe !!
Delphi-Quellcode:
Ein TestProjekt habe ich hinzugefügt.
procedure TForm1.btn1Click(Sender: TObject);
var CNAME, CAP: string; i: Integer; begin CNAME := 'pnl'; CAP := 'LAST CHECK' ; for i := 1 to 4 do begin if (FindComponent((CNAME[i])) as TPanel).caption <> '' then (FindComponent((CNAME[i])) as TPanel).caption := CAP ; end; end ; end. |
AW: Komponente suchen und Caption ändern ?
Guten Morgen,
ich vermute, die Panels heißen pnl1...pnl4 , oder? Dann müsste es lauten
Delphi-Quellcode:
Viele Grüße und allen ein gutes Neues Jahr
if (FindComponent(CNAME + i.ToSting) as TPanel).caption <> '' then
... Harald |
AW: Komponente suchen und Caption ändern ?
und nicht <> '' sondern = ''
|
AW: Komponente suchen und Caption ändern ?
Um das überhaupt mit meinem Delphi 7 testen zu können, musste ich entsetzlich viel Müll entfernen.
Hier die Lösung:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var CNAME, CAP: string; i: Integer; begin CNAME := 'pnl'; CAP := 'LAST CHECK' ; for i := 1 to 4 do begin if (FindComponent(CNAME+intToStr(i)) as TPanel).caption = '' then (FindComponent(CNAME+intToStr(i)) as TPanel).caption := CAP; end; end; |
AW: Komponente suchen und Caption ändern ?
Moin,
frohes Neues erst einmal. :) oder, wenn es etwas flexibler sein soll (bei mir z.B. sind die Panels nicht mimmer nur durchnummeriert):
Code:
procedure TForm1.btn1Click(Sender: TObject);
var CAP: string; i: Integer; begin CAP := 'LAST CHECK'; for i := 0 to ComponentCount - 1 do if (Components[i] is TPanel) and ((Components[i] as TPanel).Caption = '') then (Components[i] as TPanel).Caption := CAP; end; |
AW: Komponente suchen und Caption ändern ?
Delphi-Quellcode:
Das funktioniert zwar, allerdings ist der zweimalige Aufruf von FindComponent unnötig, nicht sonderlich elegant und wenig effektiv.
if (FindComponent(CNAME+intToStr(i)) as TPanel).caption = '' then
(FindComponent(CNAME+intToStr(i)) as TPanel).caption := CAP; |
AW: Komponente suchen und Caption ändern ?
Gut gebrüllt, Löwe. Dann mach's doch besser.
Ich hab mich nur an der Vorgabe orientiert und den/die entsprechenden Fehler behoben. Aber ich will mal nicht so sein:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var CNAME, CAP: string; p: TPanel; i: Integer; begin CNAME := 'pnl'; CAP := 'LAST CHECK' ; for i := 1 to 4 do begin p:= (FindComponent(CNAME+intToStr(i)) as TPanel); if p.caption = '' then p.caption := CAP ; end; end; |
AW: Komponente suchen und Caption ändern ?
Zitat:
|
AW: Komponente suchen und Caption ändern ?
Zitat:
Etwas anderes ist viel problematischer. Der Themenersteller möchte ja die Änderungen nicht nur zur Laufzeit, sondern sie sollen dauerhaft übernommen werden. Das aber ginge auf diese Weise so oder so nicht, sondern es müsste extern zugegriffen werden. Zwar dürfte das auch nicht allzu schwierig sein, aber soll das ruhig wer anderes lösen. |
AW: Komponente suchen und Caption ändern ?
Thanks Friends for your kind help :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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