Einzelnen Beitrag anzeigen

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