![]() |
Panels alle gleichfarbig machen
Hallo,
ich habe 20 Panels in einer ScrollBox. Die Panels haben alle verschiedene Farben. Jetzt möchte ich die Panels alle in der selben Farbe haben. Damit ich nicht jedes Panel einzeln ansprechen muss, habe ich mir folgendes überlegt.
Delphi-Quellcode:
Leider funktioniert es mal wieder nicht. Was habe ich falsch gemacht??? Die Panels erzeuge ich Dynamisch und gebe den Panels auch bei der erzeugung Namen. Die Panels heißen P1, P2, ..., P20
for j:=0 to Form1.ComponentCount do
begin p:=FindComponent('P' + IntToStr(j + 1)) as TPanel; if p is TPanel then begin p.Color:=clBtnFace; end; end; Vielen Dank im vorraus MFG Christian18 |
Re: Panels alle gleichfarbig machen
Hi,
Delphi-Quellcode:
ich bin mir jetzt nur nicht ganz sicher, ob du nicht in ScrollBox.Components suchen mußt.
begin
for j:=0 to Form1.ComponentCount do begin if Form1.Components[j] is TPanel then begin (Form1.Components[j] as TPanel).Color:=clBtnFace; end; end; end; Gruß oki |
Re: Panels alle gleichfarbig machen
Hast Du evtl. XP-Theming für deine Anwendung aktiv. Dort gelten andere Spielregeln.
|
Re: Panels alle gleichfarbig machen
Abgesehen davon, stimmt die obere Grenze wieder nicht.
|
Re: Panels alle gleichfarbig machen
Das sollte funktionieren:
Delphi-Quellcode:
Gruß
for j:=0 to 19 do // das -1 bitte nicht vergessen
with TPanel(FindComponent(P + IntToStr(i+1))) do p.Color:=clBtnFace; |
Re: Panels alle gleichfarbig machen
Hallo,
du mußt die Methode FindComponent des Owners deiner Panels aufrufen. Ist dies wirklich das Formular? Noch einfacher wäre es, beim Erzeugen der Panels die Referenzen in einer Liste oder einem dynamischen Array abzulegen. Damit ersparst du dir die aufwendige Suche mittels FindComponent. Gruß Hawkeye |
Re: Panels alle gleichfarbig machen
Zitat:
Delphi-Quellcode:
@MrKnogge: dann aber so
for j:=0 to ScrollBox1.ComponentCount - do begin
Delphi-Quellcode:
with TPanel(FindComponent(P + IntToStr(i+1))) do
Color:=clBtnFace; Zitat:
Delphi-Quellcode:
for j:=0 to ScrollBox1.ComponentCount - do begin
if ScrollBox1.Components[j] is TPanel then begin (ScrollBox1.Components[j] as TPanel).Color:=clBtnFace; end; end; Zitat:
Gruß |
Re: Panels alle gleichfarbig machen
Er meint, das du einen eigenen Array anlegen sollst.
|
Re: Panels alle gleichfarbig machen
Zitat:
Was das array angeht, er meint wenn du deine Panels so deklarieren würdest:
Delphi-Quellcode:
Könntest du sie geütlich in einer Schlaife durchlaufen um die Farbe zu ändern.
P[1..20]: array pf TPanel:
Delphi-Quellcode:
for i := 0 to 19 do
P[i+1].Color := ... |
Re: Panels alle gleichfarbig machen
Hi,
ich habe gerade noch eine andere Idee, auf meinen Panels habe ich Images!!! Ist es möglich zu erkennen aus welchen Panel das Image drauf liegt??? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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