Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Nicht-visuelle Komponenten dauerhaft ausblenden? (https://www.delphipraxis.net/171248-nicht-visuelle-komponenten-dauerhaft-ausblenden.html)

PeterPanino 30. Okt 2012 15:45

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe folgende Verbesserungen in TNonVisualArea eingefügt:

1. Damit der "nutzbare" Bereich der Form gleichbleibt, habe ich folgenden Code im constructor eingefügt:
Delphi-Quellcode:
if Owner is TForm then
  TForm(Owner).Height := TForm(Owner).Height + Height;
Damit wird die Höhe der Form automatisch angepasst, wenn die TNonVisualArea-Komponente eingefügt wird.

2. Sollte sich der Nutzer entschließen, die TNonVisualArea-Komponente wieder zu entfernen (nicht empfohlen), wird die Höhe der Form automatisch zurückgesetzt:
Delphi-Quellcode:
destructor TNonVisualArea.Destroy;
begin
  if csDesigning in ComponentState then
  begin
    if Assigned(Parent) then
    begin
      if FRight then
        Self.Parent.Width := Self.Parent.Width - Self.Width
      else
        Self.Parent.Height := Self.Parent.Height - Self.Height;
    end;
  end;

  inherited;
end;
Bitte um konstruktive Kritik!

himitsu 30. Okt 2012 15:56

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
1. darf nur gemacht werden, wenn sich die Form im Designmodus und nicht im Ladevorgang befindet.

PeterPanino 30. Okt 2012 16:11

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1189108)
1. darf nur gemacht werden, wenn sich die Form im Designmodus und nicht im Ladevorgang befindet.


Gut, hab ich nun gemacht:
Delphi-Quellcode:
constructor TNonVisualArea.Create(Owner: TComponent);
begin
  inherited;
  Align := alBottom;
  Height := 100;

  if csDesigning in ComponentState then
  begin
    if Owner is TForm then
      TForm(Owner).Height := TForm(Owner).Height + Height;
  end;
end;
Ich habe jetzt auch Code hinzugefügt, damit die "nutzbare" Fläche der Form gleich bleibt, wenn der Nutzer von Unten nach Rechts oder zurück umschaltet:
Delphi-Quellcode:
procedure TNonVisualArea.SetRight(Value: Boolean);
begin
  FRight := Value;
  if FRight then
  begin
    Self.Parent.Height := Self.Parent.Height - Self.Height;
    Align := alRight;
    Self.Parent.Width := Self.Parent.Width + Self.Width;
  end
  else
  begin
    Self.Parent.Width := Self.Parent.Width - Self.Width;
    Align := alBottom;
    Self.Parent.Height := Self.Parent.Height + Self.Height;
  end;
end;

uligerhardt 30. Okt 2012 16:41

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von PeterPanino (Beitrag 1189105)
2. Sollte sich der Nutzer entschließen, die TNonVisualArea-Komponente wieder zu entfernen (nicht empfohlen), wird die Höhe der Form automatisch zurückgesetzt:

Hier wäre es vielleicht günstig, wenn alle "auf" der TNonVisualArea-Komponente liegenden nichtvisuellen Komponenten um deren Höhe nach oben verschoben würden - sonst "verschwinden" sie ja.

BTW: Im Zip aus Posting 23 hast du
Delphi-Quellcode:
procedure register;
geschrieben. Mein D2007 installiert dann die Kompo nicht. Mit
Delphi-Quellcode:
procedure Register;
(großes R!) geht's.

PeterPanino 30. Okt 2012 16:51

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von uligerhardt (Beitrag 1189117)
Zitat:

Zitat von PeterPanino (Beitrag 1189105)
2. Sollte sich der Nutzer entschließen, die TNonVisualArea-Komponente wieder zu entfernen (nicht empfohlen), wird die Höhe der Form automatisch zurückgesetzt:

Hier wäre es vielleicht günstig, wenn alle "auf" der TNonVisualArea-Komponente liegenden nichtvisuellen Komponenten um deren Höhe nach oben verschoben würden - sonst "verschwinden" sie ja.

Werde ich versuchen.

Zitat:

Zitat von uligerhardt (Beitrag 1189117)
BTW: Im Zip aus Posting 23 hast du
Delphi-Quellcode:
procedure register;
geschrieben. Mein D2007 installiert dann die Kompo nicht. Mit
Delphi-Quellcode:
procedure Register;
(großes R!) geht's.

Seltsam! Aber gut, habe ich geändert. Aber die Original-Komponente stammt von himitsu. Ich habe lediglich Änderungen hinzugefügt.

himitsu 30. Okt 2012 17:08

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Das mit dem Verschieben ist eben noch ein Problem. Hab jetzt in dem "Hinweis" noch nicht nachgesehn, aber die Stelle, wo ich weiß, daß dort die Position der Komponente gespeichert wird, die kann man zwar setzen, aber der FormEditor bekommt das nicht mit.

So, fertig mit Arbeit ... nun erstmal heimfahren.

uligerhardt 30. Okt 2012 17:18

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1189121)
Das mit dem Verschieben ist eben noch ein Problem. Hab jetzt in dem "Hinweis" noch nicht nachgesehn, aber die Stelle, wo ich weiß, daß dort die Position der Komponente gespeichert wird, die kann man zwar setzen, aber der FormEditor bekommt das nicht mit.

Soweit hab ich wieder gar nicht gedacht. :mrgreen:
Ich hab selber vor Jahren mal versucht, einen GExperten zu schreiben, der NV-Kompos per Menü versteckt. Da ist aber nie was Fertiges draus geworden. Mal sehen, ob ich den noch finde.

Edit: Hier isser: Anhang 37958
Sicher nur mit einer uralten GExperts-Version zu kompilieren. Ich schau mal, was geht.

Zitat:

Zitat von himitsu (Beitrag 1189121)
So, fertig mit Arbeit ... nun erstmal heimfahren.

Schönen Feierabend! :-)

PeterPanino 30. Okt 2012 17:44

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von himitsu (Beitrag 1189121)
Das mit dem Verschieben ist eben noch ein Problem.

Was meinst du mit Verschieben? Das Umschalten von Unten nach Rechts und zurück funktioniert bei mir ohne Probleme.

Edit: Habe jetzt erst gemerkt, dass du das Verschieben der Komponenten meintest.

PeterPanino 30. Okt 2012 18:24

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, nun kann man auch die Größe der NonVisualArea verändern (im Inspektor sowie durch Ziehen am oberen bzw. linken Anfassfeld), wobei die Größe der Form ohne Änderung der Nutzfläche geändert wird!

Jetzt fehlt nur noch das automatische Verschieben der NV-Komponenten.

himitsu 30. Okt 2012 18:57

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

NonVisExperts_Again.zip
Damit läßt sich was anfangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.
Seite 3 von 6     123 45     Letzte »    

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