AGB  ·  Datenschutz  ·  Impressum  







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

Alle Child-Komponenten deaktivieren

Ein Thema von barnti · begonnen am 5. Jul 2004 · letzter Beitrag vom 5. Jul 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:02
Hallo,
wie kann ich alle enthaltenen Komponenten einer GroupBox deaktivieren? So in der Art:
GroupBox.ChildControls.enable:= false; oder so ähnlich!?

Danke!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:05
Das geht leider nicht:
Groupbox1.Enabled := False; Also entweder einzeln oder über Hier im Forum suchenFindComponent.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:06
Hallo Luckie,
das hatte ich vermutet. Schade! Dann einzeln. Danke dir!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:07
Imho sind die automatisch mit der Groupbox deaktiviert, nur leider stellen die sich nicht als deaktiviert dar

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:15
Zitat von sakura:
Imho sind die automatisch mit der Groupbox deaktiviert, nur leider stellen die sich nicht als deaktiviert dar

......
Das habe ich jetzt nicht ausprobiert.

...

Jetzt habe ich es und es stimmt. Das ganze auf ein Panel legen bringt auch nichts.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:18
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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:25
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:
SetEnabledRecursivly(GroupBox1, False); EDIT: Ups, etwas zu langsam
gruß, choose
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 11:06
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!
Gruß,

Barnti
  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 16:35 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