AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit zusätzlicher Panel-Komponente

Ein Thema von Strahlex · begonnen am 27. Sep 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Strahlex

Registriert seit: 30. Jun 2007
87 Beiträge
 
Delphi 2005 Personal
 
#1

Problem mit zusätzlicher Panel-Komponente

  Alt 27. Sep 2007, 19:43
Ich habe in meinem Projekt 50 Panels die ich gleichzeitig umfärbe. Das mache ich mittels dieser GetObjectByName:
Delphi-Quellcode:
function tform1.GetObjectByName(ctrlName: string): TObject;
  var
      i: Integer;
  begin
      Result := nil;
      for i := 0 to form1.ComponentCount -1 do
      begin
          if frmEditor.Components[i].Name = ctrlName then
          begin
              Result := frmEditor.Components[i];
              break;
          end;
      end;
      for i := 0 to form1.ControlCount -1 do
      begin
          if form1.Controls[i].Name = ctrlName then
          begin
              Result := form1.Controls[i];
              break;
          end;
      end;
  end;
Mein Problem ist das ich die Panels durch die Komponente TIASemiPanel ersetzen will, das ist eine von TPanel abgeleitete Komponete. Wenn ich GetObjectByName für diese Komponente ausführe erhalte ich eine Zugriffsverletzung.

Desahlb meine Frage:
Kann man zum Beispiel für alle Komponeten eines Typs gleichzeitig eine Eigenschaft einstellen? Oder gibt es andere Lösung?
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

Re: Problem mit zusätzlicher Panel-Komponente

  Alt 27. Sep 2007, 19:49
hi, ich mach das immer so (im OnCreate)
Delphi-Quellcode:
for i:=0 to ComponentsCount do
  if (Components[i] is TIASemiPanel) then Components[i].color:=MyFarbe;
Sorry, war noch ein Fehler drin. Hier mal ein Beispiel-Code, wie ich ihn verwende:
Delphi-Quellcode:
  for i:=0 to Self.ComponentCount-1 do
   if (Components[i] is TXiButton) then begin
     (Components[i] as TXiButton).ColorScheme:=bColorScheme;
     (Components[i] as TXiButton).Cursor:=myDefault;
   end;
Karl-Heinz
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: Problem mit zusätzlicher Panel-Komponente

  Alt 27. Sep 2007, 19:52
Du kannst alle Komponenten, die sich auf einer Form befinden markieren und die Eigenschaft über den OI editieren.

Da ich aber nicht glaube, dass Du 50 Panels auf einer Form hast, könntest Du auch direkt in den DFMs Search&Replace mit regulären Ausdrücken machen.

Den Zusammenhang, dass Du eine Schutzverletzung bei GetObjectByName bekommst und Deinem Vorhaben, die Eigenschaft aller Panels gleichzeitig zu ändern, verstehe ich allerdings nicht.

=======

nachdem ich Progmans Beitrag gelesen habe, habe auch ich gemerkt, was Du eigentlich willst.... Vergiss die drei Absätze oben einfach
  Mit Zitat antworten Zitat
Strahlex

Registriert seit: 30. Jun 2007
87 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Problem mit zusätzlicher Panel-Komponente

  Alt 27. Sep 2007, 20:13
THX an alle, ich habe jetzt die Lösung gefunden!
Delphi-Quellcode:
for i:=0 to Self.ComponentCount-1 do
   if (Components[i] is TIASemiPanel) then
      if (Components[i] as TIASemiPanel).Name = 'semiPanel1then begin
        (Components[i] as TIASemiPanel).Color:=color1;
        (Components[i] as TIASemiPanel).Color1:=color1;
      end;
achja ich habe wirklich 50 Panels in meiner Anwendung
  Mit Zitat antworten Zitat
oki

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

Re: Problem mit zusätzlicher Panel-Komponente

  Alt 27. Sep 2007, 20:23
Hi,

das klappt so aber nur, wenn der Owner das Formular ist. Erstellt man zur Laufzeit Componenten und gibt ein anderes Control als Owner an, so muß man auch die Components jeder enthaltenen Componente durchsuchen. Am besten Recursiv.

Gruß oki
42
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:46 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