Delphi-PRAXiS
Seite 1 von 2  1 2      

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 28. Okt 2012 08:58

Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Hallo!

Gibt es eine Methode, die nicht-visuellen Komponenten in der Design-Ansicht (Delphi XE2 IDE) DAUERHAFT auszublenden?

Es gibt zwar in GExpert und in CNWizard den Befehl Hide non visual components, aber beim Anklicken einer anderen Komponente werden die nicht-visuellen Komponenten dann sofort wieder sichtbar. Es wäre also nützlich, wenn es eine Möglichkeit gäbe, die nicht-visuellen Komponenten bis zum expliziten Wiedereinblenden auszublenden.

Bernhard Geyer 28. Okt 2012 09:04

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Ich denke hier müsste der Emba als IDE-Hersteller eine IDE-Anpassung vornehmen um es ähnlich wie in VS.Net zu handhaben.

PeterPanino 28. Okt 2012 09:29

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Ich verstehe nicht, wieso eine moderne IDE wie XE3 immer noch diese Altlast mit sich herumschleppt, die nicht-visuellen Komponenten auf dem Hauptformular abzulegen. Das ist doch IDE-Steinzeit! Für die nicht-visuellen Komponenten sollte es doch ein eigenes Register geben!

BTW, auch das "Ankleben" des Formulars in der linken oberen Ecke der Design-Ansicht ist so ein Überbleibsel aus der Dinosaurierzeit! Viel schöner und praktischer wäre es doch, wenn das Formular in der MITTE des Design-Bereiches angezeigt würde!

himitsu 28. Okt 2012 09:42

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Wieso soll die IDE Steinzeit sein?

DU kannst doch viele dieser Componenten ganz einfach auf ein TDataModul legen und schon sind'se weg. :stupid:




Wie unterscheitet man denn am Einfachten, ob eine Komponente eine nichtvisuelle Komponente ist?

bernerbaer 28. Okt 2012 09:59

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
cnpack ist in der Lage, die Komponenten auszublenden und ich glaube GExpert ebenfalls

Bernhard Geyer 28. Okt 2012 10:06

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von himitsu (Beitrag 1188721)
Wie unterscheitet man denn am Einfachten, ob eine Komponente eine nichtvisuelle Komponente ist?

Wenn sie nicht von TControl abgeleitet ist.

Zitat:

TControl is the base class for all components that are visible at runtime.

himitsu 28. Okt 2012 10:10

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Jupp, TControl hatte ich inzwischen auch genommen.

Das Problem ist jetzt nur noch, daß ich zwar weiß wie man die aktuelle Position soeiner Komponente auslesen kann, aber nicht wie man sie zur Designtime setze/verändert (indirekt schon), also so, daß auch der Formdesigner das mitbekommt und die komponente entsprechend umpositioniert.

PeterPanino 28. Okt 2012 10:11

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von himitsu (Beitrag 1188721)
Wieso soll die IDE Steinzeit sein?

DU kannst doch viele dieser Componenten ganz einfach auf ein TDataModul legen und schon sind'se weg. :stupid:

Damit werden die nicht-visuellen Komponenten zusammen mit dem DataModul - also zu einem anderen Zeitpunkt - erzeugt als das Formular, in dem sie verwendet werden, was manchmal Probleme ergibt. Komm bitte nicht mit diesen Workarounds - richtige Lösungen sind besser! :stupid: :stupid:

himitsu 28. Okt 2012 10:17

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Nja, theoretisch hätte ich eine Idee, wie man die Komponenten ganz leicht "ausblendet", aber bei der Umsetzung hapert es noch.

Was immer geht, mach die Form etwas größer, schieb alle Komponenten nach rechts und/oder unten, und mach die Form wieder kleiner.
Im Prinzip hab ich das versucht "automatisch" umzusetzen, inkl. rückgängig.


Es wäre ja praktisch, wenn man solche nichtvisuellen Dinger nicht nur der Form zuordnen, sondern daß man auch ausblendbare Container-Komponenten dafür nehmen könnte.

PeterPanino 28. Okt 2012 10:27

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von himitsu (Beitrag 1188729)
Was immer geht, mach die Form etwas größer, schieb alle Komponenten nach rechts und/oder unten, und mach die Form wieder kleiner.

Schon wieder so ein Workaround! :(

Zitat:

Zitat von himitsu (Beitrag 1188729)
Es wäre ja praktisch, wenn man solche nichtvisuellen Dinger nicht nur der Form zuordnen, sondern daß man auch ausblendbare Container-Komponenten dafür nehmen könnte.

Dieser Vorschlag gefällt mir schon besser! 8-)

stahli 28. Okt 2012 11:30

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Stimmt, vor allem wenn man das Visual Databinding nutzt stören die BindingControls doch schon gewaltig.

Gab es bei Visual Studio oder ECO (weiß nicht mehr genau) einen gesonderten Bereich, in der solche Controls angeordnet wurden?
Ich meine damit nicht ein DataModul sondern eine Art Scrollbox unter dem FormDesigner.

PeterPanino 28. Okt 2012 11:40

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
S. auch QC Report #2730: Hier werden auch noch ausführlicher die Argumente angeführt, die gegen die Verwendung von TDataModule sprechen.

PeterPanino 28. Okt 2012 11:45

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von stahli (Beitrag 1188750)
[...] eine Art Scrollbox unter dem FormDesigner.

Das wäre IDEAL! :thumb: Ein mit einem Splitter veränderbarer Bereich!

himitsu 28. Okt 2012 14:11

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
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)

PeterPanino 30. Okt 2012 02:41

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von himitsu (Beitrag 1188765)
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.

stahli 30. Okt 2012 08:07

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
So meinte ich das. Ein andockbarer und ausblendbarer Bereich unter dem Form-Designer. Im Grunde so ähnlich wie der VisualDataBinding-Designer.

himitsu 30. Okt 2012 09:18

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
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:
:oops: Ups, vergessen zu speichern vom zippen.
Ich glaub das war alles. :gruebel:
Delphi-Quellcode:
procedure TNonVisualArea.Loaded;
begin
  ...
  if Visible and not (csDesigning in ComponentState) then begin // <<<<<<<
    Visible := False;

PeterPanino 30. Okt 2012 10:42

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
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.

himitsu 30. Okt 2012 11:02

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
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.

PeterPanino 30. Okt 2012 13:57

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
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.

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.

PeterPanino 30. Okt 2012 19:14

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Inzwischen habe ich herausgefunden, wie man die Positionen der nicht-visuellen Komponenten erhält:
Delphi-Quellcode:
for i := 0 to TForm(Owner).ComponentCount - 1 do
begin
  if not (TForm(Owner).Components[i] is TControl) then
  begin
    CodeSite.Send('Left', TForm(Owner).Components[i].Name + ': ' +
      IntToStr(LongRec(TForm(Owner).Components[i].DesignInfo).Lo));
  end;
end;
Wer weiß, wie man diese Positionen verändern kann?

himitsu 30. Okt 2012 21:10

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Ja, das hätt ich dir auch sagen können. (kann man sich gern in meinen FMX-Hints angucken).

Nur liest der VCL-Designer das nicht aus (nicht wärend er aktiv ist ... nur einmal nach dem Laden der Form), sondern setzt es nur.

Wie ich die Position verschieben kann, hab ich raus, allerdings ist da snur temporär.
Ich kann es verschieben, das Control ist dort anklickbar.
Klickt man es aber nicht an und verschiebt es noch ein Stückchen, dann weiß der Formdesigner davon nix. Heißt also, wenn man die Form speichert und läd, dann ist die alte Position wieder da, außer bei den nachträglich nochmal manuell verschobenen.
(Aber es ist denoch für einwas nutzbar ... zeig mir alles, wa draußen liegt)
Nachteil: es gibt nicht direkt einen Zusammenhang zwischen der sichtbaren "virtuellen" Komponente und der echten Komponente.
Und es gibt je zwei "getrennte" virtuelle Komponenten pro Komponente (einmal das Kästchen und dann noch das Label und die lassen sich witziger Weise unabhängig voneinander verschieben)

Schade ist, daß diese virtuellen Komponenten (PS: es gibt aucg noch je eine dieser "falschen" Komponenten, für jedes dieser Pünktchen an der markierten Komponente).



Ich lad's dann gleich hoch.

PeterPanino 30. Okt 2012 21:37

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Das CnWizard Tool "Arrange the non-visual Components" verschiebt die NV-Komponenten ja auch, und zwar dauerhaft. Leider ist es mir noch nicht gelungen, den Source-Code dafür zu finden.

himitsu 30. Okt 2012 21:49

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Die "sichtbaren" Dinger haben zwar Namen, welche nach Delphi-Klassen klingen, aber es sind leider keine VCL-Klassen.
'nen Windows-Control einer VCL-Klasse kann man, anhand seines HWND, nach dem internen TWinControl fragen, was hier leider nicht funktioniert. :cry:
(ich hatte jetzt aber icht unbedingt Lust dort auf Zwang rauszufinden, wie die untereinander verknubblt sind)


:thumb: Ich hab noch nicht Viele gesehn, welche das CodeSite benutzen.

[edit]
Mist, jetzt stimm wieder irgendwas im laufenden Programm nicht :cry:
So, läuft wieder.
Es war auch noch ein Bug drin, wenn man die Komponente im Designer ausschnitt (das ging), aber beim Einfügen klappte es nicht mehr, da die Komponente dachte die sie (die Form) würde geladen. Deshalb wurde dabei die Fenstergröße nicht angepaßt. (immer diese blöden Spezialfälle)

himitsu 30. Okt 2012 22:27

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
@PeterPanino:

Zu deinem OnResize:
Delphi-Quellcode:
protected
  procedure Resize; override

PeterPanino 30. Okt 2012 23:27

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
@ himitsu

Sehr nett! Aber das ist ja ein ganz anderer Code!

1. Bei TNonVisualHidden funktioniert die Interface-Synchronisierung noch nicht.

2. Bei der Vergrößerung von NonVisualArea wird die Fenstergröße nicht angepasst. Wäre aber sinnvoll, da der Anwender seine "Nutzfläche" ja nicht verkleinern will, wenn er die NonVisualArea vergrößert.

himitsu 31. Okt 2012 11:09

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Liste der Anhänge anzeigen (Anzahl: 2)
1: Jupp: Das war ein Wiederbeleben es ursprünglichen "Verstecken"-Codes.
Aber was meinst du mit der Synchronisierung?

2: Besser so?
Bei deinem Codes solltest du aber auf globale Variablen achten.
Die 3 Globalen gehören als Felder in die Klasse, vorallem die "old".
Tipp: Leg mal 2 Komponenten auf eine Form (z.B. je Eine rechts und unten) und dann spiel mal mit deren Größen. Ich hab's nicht ausprobiert, aber as selbe Problem dürfte wohl auch auftreten, wenn man mehrere Forms in der IDE offen hat und dort jeweils mindestens eine Komponente drauf liegt.

Hast du eine Idee, mit dem Vergrößern?
Also wenn man rechts oder unten, direkt am Fensterrand die Komponente vergrößern will, dann bekommt man sie nich größer, sondern nur kleiner.
(gut, wenn man es kleiner macht, als es ist, also die Außenseite über sie linke/obere Seite hinwegzieht, dann wird es dann doch irgendwann wieder größer :lol:)

[edit]
In HideComponents2.7z dürfte jetzt auch die Positionsänderung funktionieren.
Allerdings hatte ich mich ein bissl ausgetobt und der Code läuft nun wohl nur noch ab XE2.

XE und davor =
neue Recordmethoden müssen ausgetauscht werden (z.B. TRect.Union zu UnionRect)
und dann sollte man die NameSpaces der VCL-Units entfernen.


Danke für die blöde Idee mit der Größenänderung.
Hast du dir mal überlegt wo man das alles beachten muß?

- Form/DFM im FormDesigner laden (Unit öffnen)
- Form/DFM im laufenden Programm laden
- einfügen neuer Komponenten (also das Ding von der Komponentenpalette auf die Form)
- Form/DFM beim Bearbeiten laden (von DFM-Quellcode zur Formanzeige umschalten)
- Komponente ausschneiden
- ausgeschnittene/kopierte Komponente einfügen
- Unten/Rechts umschalten
- Größe der Kompoente ändern
- ......

PeterPanino 1. Nov 2012 11:34

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Wieso sind die im implementation-Teil deklarierten Variablen global?

himitsu 1. Nov 2012 12:27

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Sie sind Unitglobal.
Aber das Schlimme daran ist, daß alle Instanzen der Klasse diese verwenden. Daß heißt, wenn eine Instanz die Inhalte ändert, dann wirkt sich das auf die anderen Instanzen aus.

PeterPanino 1. Nov 2012 13:22

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?
 
Zitat:

Zitat von himitsu (Beitrag 1189210)
Danke für die blöde Idee mit der Größenänderung.
Hast du dir mal überlegt wo man das alles beachten muß?

- Form/DFM im FormDesigner laden (Unit öffnen)
- Form/DFM im laufenden Programm laden
- einfügen neuer Komponenten (also das Ding von der Komponentenpalette auf die Form)
- Form/DFM beim Bearbeiten laden (von DFM-Quellcode zur Formanzeige umschalten)
- Komponente ausschneiden
- ausgeschnittene/kopierte Komponente einfügen
- Unten/Rechts umschalten
- Größe der Kompoente ändern
- ......

Das ist keine "blöde Idee", sondern hilfreich für den Benutzer.

Ich habe in keinem der oben angeführten Fälle ein Problem gesehen, außer bei "ausgeschnittene/kopierte Komponente einfügen". Aber für diesen in der Praxis unwahrscheinlichen Fall kann man auch eine Lösung finden. Konstruktive Frage: Wie kann man einen Einfügen-Eventhandler schreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.
Seite 1 von 2  1 2      

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