Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Alle Child-Komponenten deaktivieren (https://www.delphipraxis.net/25349-alle-child-komponenten-deaktivieren.html)

barnti 5. Jul 2004 10:02


Alle Child-Komponenten deaktivieren
 
Hallo,
wie kann ich alle enthaltenen Komponenten einer GroupBox deaktivieren? So in der Art:
Delphi-Quellcode:
GroupBox.ChildControls.enable:= false;
oder so ähnlich!?

Danke!

Luckie 5. Jul 2004 10:05

Re: Alle Child-Komponenten deaktivieren
 
Das geht leider nicht:
Delphi-Quellcode:
Groupbox1.Enabled := False;
Also entweder einzeln oder über Hier im Forum suchenFindComponent.

barnti 5. Jul 2004 10:06

Re: Alle Child-Komponenten deaktivieren
 
Hallo Luckie,
das hatte ich vermutet. Schade! Dann einzeln. Danke dir!

sakura 5. Jul 2004 10:07

Re: Alle Child-Komponenten deaktivieren
 
Imho sind die automatisch mit der Groupbox deaktiviert, nur leider stellen die sich nicht als deaktiviert dar :?

...:cat:...

Luckie 5. Jul 2004 10:15

Re: Alle Child-Komponenten deaktivieren
 
Zitat:

Zitat von sakura
Imho sind die automatisch mit der Groupbox deaktiviert, nur leider stellen die sich nicht als deaktiviert dar :?

...:cat:...

Das habe ich jetzt nicht ausprobiert.

...

Jetzt habe ich es und es stimmt. Das ganze auf ein Panel legen bringt auch nichts.

sakura 5. Jul 2004 10:18

Re: Alle Child-Komponenten deaktivieren
 
Zitat:

Zitat von Luckie
Das ganze auf ein Panel legen bringt auch nichts.

Stimmt, aber auf D3K habe ich mal eine Lösung daüfr bereit gestellt.

Hier der Code
Delphi-Quellcode:
unit uRealPanel;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TRealPanel = class(TPanel)
  private
  protected
    procedure SetEnabled(Value: Boolean); override;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('gate(n)etwork', [TRealPanel]);
end;

{ TRealPanel } 

procedure TRealPanel.SetEnabled(Value: Boolean);
var
  I: Integer;
begin
  inherited;
  if csDesigning in ComponentState then
    Exit;
  for I := 0 to Pred(ControlCount) do
    if Controls[I] is TWinControl then
      (Controls[I] as TWinControl).Enabled := Value;
end;

end.
Alles weitere auf der Seite: http://www.delphi3000.com/articles/article_2962.asp

...:cat:...

choose 5. Jul 2004 10:25

Re: Alle Child-Komponenten deaktivieren
 
Hallo barnti,

bei der TGroupBox handelt es sich um einen Erben von TWinControl, der über die Eigenschaften Controls und ControlCount die ihm untergeordneten Elemente veröffentlicht.

Du könntest, um Dein Problem zu lösen, über alle untergeordneten Element iterieren und für diese jeweils die Eigenschaften setzen. Solltest Du jedoch mehrere solcher Boxen (zB auch Panels) inneinander verschachteln, könnte ein rekursiver Ansatz weiterhelfen.

Die folgende Prozedure demonstriert, was ich meine (und sollte ggf an Deine Bedürfnisse weiter angepasst werden):
Delphi-Quellcode:
procedure SetEnabledRecursivly(AControl: TControl; AEnabled: Boolean);
var
  iChild: Integer;
begin
  // set state of control
  AControl.Enabled := AEnabled;

  // if control contains further controls...
  if (AControl is TWinControl) then
    with TWinControl(AControl) do
    // ...set state for each child (recursive)
    for iChild := 0 to Pred(ControlCount) do
      SetEnabledRecursivly(Controls[iChild], AEnabled);
end;
mit einem Aufruf der Art:
Delphi-Quellcode:
SetEnabledRecursivly(GroupBox1, False);
EDIT: Ups, etwas zu langsam ;)

barnti 5. Jul 2004 11:06

Re: Alle Child-Komponenten deaktivieren
 
Hallo ihr alle,

ich habe die ganze Box deaktiviert. Wie schon erwähnt stellen sich die beinhalteten Komponenten aber nicht deaktiviert da.
Ich werde mir mal überlegen wie ich das löse oder ob das so ok ist...
Danke an alle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 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