Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi D7 FindComponent über .tag und Caption (https://www.delphipraxis.net/189354-d7-findcomponent-ueber-tag-und-caption.html)

beanbear6 3. Jun 2016 16:16

Delphi-Version: 7

D7 FindComponent über .tag und Caption
 
Hallo Profis,
ich finde leider keine Lösung - auch nicht in den mir bekannten foren. Ich habe 10 Panels mit den Tags 1 bis 10. Nun möchte ich über einen Zähler (1-10) die Compos (über den tag) finden und dann aber die Caption ändern... Ich krieg das nicht hin.. Wer kann mir helfen? Vielen Dank gleich mal an alle unterstützer.
Beanbear

Helmi 3. Jun 2016 16:42

AW: D7 FindComponent über .tag und Caption
 
Hallo,

du kannst über ComponentCount die einzelnen TPanels suchen und dann dementsprechend darauf zugreifen.

Z. B.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  MyPanel: TPanel;

begin
  for i := 0 to Pred(ComponentCount) do
    If Components[i].ClassName = 'TPanel' then
      begin
        MyPanel := TPanel(Components[i]);

        ShowMessage(Format('Panelname: %s, Tag: %d', [MyPanel.Name, MyPanel.Tag]));
      end;
end;

nahpets 3. Jun 2016 16:46

AW: D7 FindComponent über .tag und Caption
 
Oder alternativ sowas?
(nur hingedaddelt und nicht getestet)
Delphi-Quellcode:
for i := 0 to ComponentCount - 1 do begin
  if Components[i] is TPanel then begin
    case TPanel(Components[i]).Tag of
      1 : TPanel(Components[i]).Caption := '1';
      2 : TPanel(Components[i]).Caption := '2';
...
    end;
  end;
end;
oder
Delphi-Quellcode:
for i := 0 to ComponentCount - 1 do begin
  if Components[i] is TPanel then begin
    with Components[i] as TPanel do begin
      case Tag of
        1 : Caption := '1';
        2 : Caption := '2';
...
      end;
    end;
  end;
end;

beanbear6 3. Jun 2016 16:46

AW: D7 FindComponent über .tag und Caption
 
Hi,
äh also i glaub da ist meine Frage nicht ganz rüber gekommen :-( also ich suche mit einem Zähler x von 1 bis 10 die Komponente TPanel über die Eigenschaft .tag. Wenn z.B. Panel mit tag 3 gefunden wurde, dann möchte ich diese Caption ändern...
Gruß Reiner

Helmi 3. Jun 2016 16:49

AW: D7 FindComponent über .tag und Caption
 
Zitat:

Zitat von beanbear6 (Beitrag 1339489)
Hi,
äh also i glaub da ist meine Frage nicht ganz rüber gekommen :-( also ich suche mit einem Zähler x von 1 bis 10 die Komponente TPanel über die Eigenschaft .tag. Wenn z.B. Panel mit tag 3 gefunden wurde, dann möchte ich diese Caption ändern...

Dann zeig doch mal deinen Code, wenn wir dich falsch verstanden haben

beanbear6 3. Jun 2016 16:53

AW: D7 FindComponent über .tag und Caption
 
Hallo,
ich versuche das mal so darzustellen:

Delphi-Quellcode:
  for x := 1 to 10 do begin
   // If TPanel(Findcomponent('Panel'+IntToStr(x))).Tag = x then
   // TPanel[x].Caption = 'bla bla';
    end;
  end;
Ich weiß, dass das so nicht geht, es soll nur son Anhaltspunkt sein, wie ich das lösen möchte. Das Problem ist dabei noch, dass sich die Anzahl der Panels eventuell auf 100 erhöhen kann. Wenn ich das mit Case mache muss ich ja 100 cases abfragen oder?
Gruß Reiner

Helmi 3. Jun 2016 17:00

AW: D7 FindComponent über .tag und Caption
 
So etwa?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  Component: TComponent;

begin
  for i := 1 to 10 do
    begin
      Component := Findcomponent('Panel'+ IntToStr(i));

      If Assigned(Component) then
        If Component.ClassType = TPanel then
          If TPanel(Component).Tag = i then
            TPanel(Component).Caption := Format('Ich bin Panel-Nr. %d', [i]);
    end;
end;
oder:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  Component: TComponent;
  TempPanel: TPanel;

begin
  for i := 1 to 10 do
    begin
      Component := Findcomponent('Panel'+ IntToStr(i));

      If Assigned(Component) then
        If Component.ClassType = TPanel then
          begin
            TempPanel := TPanel(Component);

            If TempPanel.Tag = i then
              TempPanel.Caption := Format('Ich bin Panel-Nr. %d', [i]);
          end;
    end;
end;

beanbear6 3. Jun 2016 17:24

AW: D7 FindComponent über .tag und Caption
 
Hi Helmi,

im prinzip gehts, nur macht er das nur beim ersten Panel... (habs mit erstem Beispiel versucht)
Gruß Reiner

Helmi 3. Jun 2016 17:28

AW: D7 FindComponent über .tag und Caption
 
wie heissen die Panels?

Sind das spezielle Panels die du da finden willst, oder alle Panels die auf der Form liegen?

Ansonsten zeig nochmal deinen jetzigen Code

beanbear6 3. Jun 2016 17:30

AW: D7 FindComponent über .tag und Caption
 
Hi,
es liegen alle 10 Panels auf einer form. Die Namen sind einfach panel1 panel2 usw. Hab den Eindruck, dass der nicht weiterzählt...
Gruß Reiner


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.
Seite 1 von 4  1 23     Letzte »    

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