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.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 02:41
ScrollBox ist leider nicht möglich, da ich die nichtvisuellen Komponenten noch nicht umpositionieren kann und da diese sowieso immer auf der Form und nicht in meiner Komponente liegen würden.

Ist also nur ein "billiger" Workaround, welcher als "Panel" einen Bereich unten und/oder rechts belegt, wo du deine Dinger drüberlegen kannst
und der dann automatisch aus der Form entfernt wird, wenn das Programm läuft.
(vor XE2 sollte man die Namespaces von den Units entfernen)
Ist sehr nett und wäre evtl. eine brauchbare Lösung. Der NonVisual-Bereich sollte aber UNTER dem Formular eingefügt werden und nicht IM Formular. Und derzeit sieht man den Bereich noch, wenn das Programm läuft.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 08:07
So meinte ich das. Ein andockbarer und ausblendbarer Bereich unter dem Form-Designer. Im Grunde so ähnlich wie der VisualDataBinding-Designer.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 09:18
Ein Variante war noch eine TDataModul-Komponente, welche selber eine Unit erstellt und bei Änderung Dieser diese Unit sofort kompilieren lässt. (also via OTA und so)
Wenn das DataModul direkt in der Form liegt und die Erstellungsreihenfolge dieses Containers etsprechend angepaßt wurde (so als wäre es nur eine Komponente und kein eigenständiges Modul), dann wäre es halbwegs nutzbar, ohne die genannten Probleme.

Das Problem ist ja, daß hierfür die Komponenten darin ja physisch mit der Form verknupplt sein müssen, damit sie mit den Eingabecontrols via OI verknüpft werden können.
Oder weiß jemand, wie man eine Form erstellt, welche sich "zur Laufzeit" so editieren läßt, wie in der IDE?

@PeterPanino:
Ups, vergessen zu speichern vom zippen.
Ich glaub das war alles.
Delphi-Quellcode:
procedure TNonVisualArea.Loaded;
begin
  ...
  if Visible and not (csDesigning in ComponentState) then begin // <<<<<<<
    Visible := False;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Okt 2012 um 09:21 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

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

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
43.202 Beiträge
 
Delphi 12 Athens
 
#5

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
PeterPanino

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

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.451 Beiträge
 
Delphi 10.4 Sydney
 
#7

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
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 17:10 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