AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Panels alle gleichfarbig machen

Ein Thema von Christian18 · begonnen am 7. Jan 2007 · letzter Beitrag vom 7. Jan 2007
Antwort Antwort
Seite 1 von 3  1 23      
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:25
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:
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;
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

Vielen Dank im vorraus

MFG Christian18
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:33
Hi,
Delphi-Quellcode:
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;
ich bin mir jetzt nur nicht ganz sicher, ob du nicht in ScrollBox.Components suchen mußt.

Gruß oki
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:34
Hast Du evtl. XP-Theming für deine Anwendung aktiv. Dort gelten andere Spielregeln.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:35
Abgesehen davon, stimmt die obere Grenze wieder nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:37
Das sollte funktionieren:

Delphi-Quellcode:
for j:=0 to 19 do // das -1 bitte nicht vergessen
  with TPanel(FindComponent(P + IntToStr(i+1))) do
        p.Color:=clBtnFace;
Gruß
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:38
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
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:44
Zitat von mkinzler:
Abgesehen davon, stimmt die obere Grenze wieder nicht.
Sorry,
  for j:=0 to ScrollBox1.ComponentCount - do begin @MrKnogge: dann aber so
Delphi-Quellcode:
with TPanel(FindComponent(P + IntToStr(i+1))) do
        Color:=clBtnFace;

Zitat von Hawkeye219:
Hallo,

du mußt die Methode FindComponent des Owners deiner Panels aufrufen. Ist dies wirklich das Formular?
Ich denke das auf jeden Fall!

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 von Hawkeye219:
HNoch 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.
Und genau das ist die Eigenschaft Components.

Gruß
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:45
Er meint, das du einen eigenen Array anlegen sollst.
Markus Kinzler
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 18:50
Zitat von oki:
@MrKnogge: dann aber so
Delphi-Quellcode:
with TPanel(FindComponent(P + IntToStr(i+1))) do
        Color:=clBtnFace;
Da hat mich wohl einer bei copy & paste erwischt.

Was das array angeht, er meint wenn du deine Panels so deklarieren würdest:

P[1..20]: array pf TPanel: Könntest du sie geütlich in einer Schlaife durchlaufen um die Farbe zu ändern.

Delphi-Quellcode:
for i := 0 to 19 do
  P[i+1].Color := ...
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#10

Re: Panels alle gleichfarbig machen

  Alt 7. Jan 2007, 19:09
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???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:01 Uhr.
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