AGB  ·  Datenschutz  ·  Impressum  







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

panel, disabled und controls

Ein Thema von delphia · begonnen am 24. Mär 2011 · letzter Beitrag vom 25. Mär 2011
Antwort Antwort
Seite 1 von 2  1 2      
delphia

Registriert seit: 23. Aug 2010
22 Beiträge
 
Delphi 2010 Professional
 
#1

panel, disabled und controls

  Alt 24. Mär 2011, 11:03
Hallo,

ich habe einige comtrols auf einem panel (TGridPanel). Wenn ich panel.enabled := false setze sind damit auch die controls stillgelegt. So weit, so gut. Wie kann ich es erreichen, dass die controls auch das Aussehen für den disabled Zustand annehmen?

Eigentlich möchte ich nur wissen, ob es möglich ist auf das Ändern der Enabled Eigenschaft des panels zu reagieren? Wenn ja ist der Rest ja kein Problem, in einer Schleife die controls ermitteln und deren enabled Eigenschaft setzen.

Danke.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: panel, disabled und controls

  Alt 24. Mär 2011, 11:14
Wenn du das Panel im Code disabled wird, kannst du doch an der selben Stelle auch die Elemente darauf disabeln.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von vergessen
vergessen

Registriert seit: 29. Jun 2010
85 Beiträge
 
Delphi 5 Professional
 
#3

AW: panel, disabled und controls

  Alt 24. Mär 2011, 11:45
Sinngemäß

Delphi-Quellcode:
panel1.enabled := false;
edit1aufpanel1.enabled := panel1.enabled;
usw.

oder findcomponents-Schleife, wie Du schon schriebst.

Für sowas bin ich oft noch zu faul, daher also panel1.visible := false
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

AW: panel, disabled und controls

  Alt 24. Mär 2011, 12:00
Du kannst die Methode SetEnabled des Panels überschreiben und dir somit ein eigenes Event EnabledChanged für das Panel basteln oder eben wenn gewünscht alle children auf enabled=false setzen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#5

AW: panel, disabled und controls

  Alt 24. Mär 2011, 12:34
Du kannst die Methode SetEnabled des Panels überschreiben...
Ja, dann müßten aber neue Komponenten abgeleitet und installiert werden - jede Menge Arbeit...

Einfacher geht's, wenn die Nachrichtenverarbeitung des betreffenden Panels überschrieben wird:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWindowProc:=Panel1.WindowProc; //alte Methode merken
  Panel1.WindowProc:=NewWindowProc; //auf neue Methode umleiten
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Panel1.WindowProc:=OldWindowProc; //alte Methode wieder herstellen
end;

procedure TForm1.NewWindowProc(var Message: TMessage);
var
  n: Integer;
begin
  case Message.Msg of
    CM_ENABLEDCHANGED:
    begin
      with Panel1 do
        for n:=0 to ControlCount-1 do
          Controls[n].Enabled:=Enabled; //-> Child-Elemente anpassen
    end;
  end;
  OldWindowProc(Message); //alte Methode aufrufen
end;
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: panel, disabled und controls

  Alt 24. Mär 2011, 12:54
Oder so:
Delphi-Quellcode:
type
  TPanel = class(ExtCtrls.TPanel)
  protected
    procedure WndProc(var Msg: TMessage); override;
  end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
  ...

procedure TPanel.WndProc(var Msg: TMessage);
var i: integer;
begin
  if Msg.Msg = CM_ENABLEDCHANGED then
    for i := 0 to ControlCount - 1 do
      Controls[i].Enabled := Enabled;
  inherited;
end;
[edit]Noch spartanischer:
Delphi-Quellcode:
type
  TPanel = class(ExtCtrls.TPanel)
  private
    procedure CMEnabledChanged(var Msg: TMessage); message CM_ENABLEDCHANGED;
  end;

...

procedure TPanel.CMEnabledChanged(var Msg: TMessage);
var i: integer;
begin
  if Msg.Msg = CM_ENABLEDCHANGED then
    for i := 0 to ControlCount - 1 do
      Controls[i].Enabled := Enabled;
  inherited;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (24. Mär 2011 um 12:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von vergessen
vergessen

Registriert seit: 29. Jun 2010
85 Beiträge
 
Delphi 5 Professional
 
#7

AW: panel, disabled und controls

  Alt 24. Mär 2011, 13:09
Dat vom Thom sieht selbst für einen faulen Sack wie mich ganz gut/bequem nachrüstbar aus!

Mal schaun und Dankeschön für die Anregung!

@DeddyH: KISS

Dank an Euch Beide!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: panel, disabled und controls

  Alt 24. Mär 2011, 13:24
Wie, KISS? Nichts gegen Thoms Vorschlag, aber das wird etwas unübersichtlich, wenn man mehr als 1 Panel auf diese Art erweitern will.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#9

AW: panel, disabled und controls

  Alt 24. Mär 2011, 13:42
A propos KISS: Die if-Schleife in CMEnabledChanged kannste dir doch sparen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: panel, disabled und controls

  Alt 24. Mär 2011, 13:44
Richtig, die war beim C&P hängengeblieben, schadet aber auch nicht
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:39 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