AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Komponente suchen und Caption ändern ?

Komponente suchen und Caption ändern ?

Ein Thema von Gandimann · begonnen am 1. Jan 2021 · letzter Beitrag vom 4. Jan 2021
Antwort Antwort
Delfiano

Registriert seit: 13. Jul 2020
61 Beiträge
 
#1

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 08:21
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;
  Mit Zitat antworten Zitat
TKanne

Registriert seit: 6. Aug 2007
Ort: Berlin
24 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 14:10
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;
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#3

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 16:15
Delphi-Quellcode:
if (FindComponent(CNAME+intToStr(i)) as TPanel).caption = 'then
   (FindComponent(CNAME+intToStr(i)) as TPanel).caption := CAP;
Das funktioniert zwar, allerdings ist der zweimalige Aufruf von FindComponent unnötig, nicht sonderlich elegant und wenig effektiv.
  Mit Zitat antworten Zitat
Delfiano

Registriert seit: 13. Jul 2020
61 Beiträge
 
#4

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 16:19
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;

Geändert von Delfiano ( 1. Jan 2021 um 16:47 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#5

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 17:03
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;
Man sollte aber noch prüfen, ob es das Panel überhaupt gibt und nicht gleich das Caption zuweisen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Delfiano

Registriert seit: 13. Jul 2020
61 Beiträge
 
#6

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 17:19
Zitat:
Man sollte aber noch prüfen, ob es das Panel überhaupt gibt und nicht gleich das Caption zuweisen.
Prinzipiell korrekt. Aber selbst wenn es nicht existiert, also statt z.B 4 ein höherer Wert benutzt wird, kommt es zu keinem Fehler.

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.
  Mit Zitat antworten Zitat
Gandimann

Registriert seit: 10. Dez 2008
105 Beiträge
 
#7

AW: Komponente suchen und Caption ändern ?

  Alt 1. Jan 2021, 22:39
Thanks Friends for your kind help
Was ist die mehrzahl von Mopp ? !
genau !... Möpse........oder ?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.431 Beiträge
 
Delphi 12 Athens
 
#8

AW: Komponente suchen und Caption ändern ?

  Alt 2. Jan 2021, 06:28
Moin...
Zitat:
FindComponent
...was ich daran nicht mag...das "Find". Obwohl es wahrscheinlich zeittechnisch unerheblich ist, das "Find" suggeriert mir eine Suche über die gesamte Menge der Controls. Ich suche aber ungern. Ich stehe eher auf Listen wo nur die "Einträge" drin sind über die gesucht wird.

In diesem Falle wäre das eine TObjectList<TPanel> (dynamisch erzeugte Panels). Diese Liste kannst du immer durchiterieren.
Delphi-Quellcode:
for Panel in PanelList
begin
  // Caption ändern etc.
end;
Wenn du auf ein bestimmtes Panel zugreifen willst würde sich dann auch ein TObjectDicionary<(Key = Integer oder string etc.), TPanel> anbieten.

PS1:
Zitat:
ich mochte gern auf ein Form platzierte mehrere Panels(mehr als 50)
Bei dieser Variante, die scalierbar ist, müssen die Panels dynamisch erzeugt werden und nicht auf die Form geklatscht.

PS2:
Ich würde die Dictionary Variante bevorzugen. Da kann man auch das Panel in eine Klasse packen die dann zusätzliche Informationen hat. Position im Panel "Array"...oder so. So nach dem Motto: Gib mir das Panel von Reihe 2, Spalte 4.


Geändert von haentschman ( 2. Jan 2021 um 06:30 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:16 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