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
Seite 4 von 6   « Erste     234 56      
PeterPanino

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 20:14
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 22:10
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.
$2B or not $2B
  Mit Zitat antworten Zitat
PeterPanino

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 22:37
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 22:49
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.
(ich hatte jetzt aber icht unbedingt Lust dort auf Zwang rauszufinden, wie die untereinander verknubblt sind)


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

[edit]
Mist, jetzt stimm wieder irgendwas im laufenden Programm nicht
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)
$2B or not $2B

Geändert von himitsu (31. Okt 2012 um 17:37 Uhr) Grund: Anhang entfernt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 30. Okt 2012, 23:27
@PeterPanino:

Zu deinem OnResize:
Delphi-Quellcode:
protected
  procedure Resize; override
$2B or not $2B
  Mit Zitat antworten Zitat
PeterPanino

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 31. Okt 2012, 00:27
@ 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 31. Okt 2012, 12:09
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 )

[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
- ......
Angehängte Dateien
Dateityp: 7z HideComponents.7z (2,7 KB, 6x aufgerufen)
Dateityp: 7z HideComponents2.7z (3,3 KB, 3x aufgerufen)
$2B or not $2B

Geändert von himitsu (31. Okt 2012 um 23:41 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 1. Nov 2012, 12:34
Wieso sind die im implementation-Teil deklarierten Variablen global?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 1. Nov 2012, 13:27
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.
$2B or not $2B
  Mit Zitat antworten Zitat
PeterPanino

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

AW: Nicht-visuelle Komponenten dauerhaft ausblenden?

  Alt 1. Nov 2012, 14:22
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


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 01:13 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