AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Nicht-visuelle Komponenten dauerhaft ausblenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht-visuelle Komponenten dauerhaft ausblenden?

Ein Thema von PeterPanino · begonnen am 28. Okt 2012 · letzter Beitrag vom 5. Nov 2012
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 10:42
Die Panel-Lösung ist zwar nicht sehr elegant, würde aber ihre Funktion erfüllen. Sie würde aber an Eleganz gewinnen, wenn:

1. TNonVisualArea beim Einfügen der Komponente selbständig automatisch die Form vergrößern würde

2. Bei jeder Änderung von NonVisualArea.Height im Inspektor die Höhe der Form (und auch die vertikale Position der nichtvisuellen Komponenten) angepasst würde, damit die "nutzbare" Höhe der Form gleich bleibt.

3. Beim Entfernen der TNonVisualArea-Komponente die Höhe der Form (und auch die vertikale Position der nichtvisuellen Komponenten) automatisch so angepasst würde, dass die "nutzbare" Höhe der Form gleichbleibt.

TNonVisualArea sollte also für den Benutzer vollkommen transparent funktionieren, ohne dass er (außer dem Einfügen der TNonVisualArea-Komponente) selbst Hand anlegen muss.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.826 Beiträge
 
Delphi 12 Athens
 
#2

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 11:02
Sowas hätte ich beinah eingabaut, aber dann erstmal gelassen.

Denn ich müßte da noch prüfen, ob eventuell die obere oder linke Seite grade gezogen wird, bei der Größenänderung, denn dann darf die Form nicht verändert werden, sonst gibt es ein Chaos.
Und beim hinzufügen kommt es drauf an, ob die Komponente grade mit der Form geladen oder nachträglich erstellt wird, aber ich glaub das ließ sich erkennen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 13:57
Der Open Source CnPack Wizard enthält ein Tool "Arrangiere nicht sichtbare Komponenten". Hier könnte man sich also abschauen, wie man "nicht sichtbare Komponenten" unterscheidet sowie verschiebt.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 15:45
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!
Angehängte Dateien
Dateityp: zip HideComps.zip (1,7 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.826 Beiträge
 
Delphi 12 Athens
 
#5

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 15:56
1. darf nur gemacht werden, wenn sich die Form im Designmodus und nicht im Ladevorgang befindet.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 16:11
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;
Angehängte Dateien
Dateityp: zip HideComps.zip (1,7 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 16:41
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 procedure register; geschrieben. Mein D2007 installiert dann die Kompo nicht. Mit procedure Register; (großes R!) geht's.
Uli Gerhardt
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 16:51
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.

BTW: Im Zip aus Posting 23 hast du procedure register; geschrieben. Mein D2007 installiert dann die Kompo nicht. Mit 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.826 Beiträge
 
Delphi 12 Athens
 
#9

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 17:08
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.
Ein Therapeut entspricht 1024 Gigapeut.
  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 05:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz