![]() |
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 |
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; |
AW: D7 FindComponent über .tag und Caption
Oder alternativ sowas?
(nur hingedaddelt und nicht getestet)
Delphi-Quellcode:
oder
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;
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; |
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 |
AW: D7 FindComponent über .tag und Caption
Zitat:
|
AW: D7 FindComponent über .tag und Caption
Hallo,
ich versuche das mal so darzustellen:
Delphi-Quellcode:
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?
for x := 1 to 10 do begin
// If TPanel(Findcomponent('Panel'+IntToStr(x))).Tag = x then // TPanel[x].Caption = 'bla bla'; end; end; Gruß Reiner |
AW: D7 FindComponent über .tag und Caption
So etwa?
Delphi-Quellcode:
oder:
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;
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; |
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 |
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 |
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 08:11 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