Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fehler bei TSplitter (https://www.delphipraxis.net/151774-fehler-bei-tsplitter.html)

himitsu 1. Jun 2010 10:12


Fehler bei TSplitter
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

mach ich nur ständig etwas falsch oder schafft es BorCodeRo es einfach nicht diese richtig zu behandeln?

In meinem Manifestcreator hab ich mehrer TSplitter verbaut,
dazu wurde über die Constraints auch ein paar Minimalwerte festgelegt.

Nun beobachte ich schon länger, daß es Probleme gibt, wenn zwei oder mehrere Bereiche aufeinander treffen, wo sich die Min-Werte "behindern" und es eine nette Auswirkung ergibt.

siehe mein Manifest-Creator > der Splitter zwischen dem TabControl und dem Memo rechts

In diesem Fall z.B. MinWidth des TreeViews + MinWidth des TabControls.
Wenn man da den Splitter zwischen TabControl und Memo nach Links schiebt, bis es nicht mehr weitergeht, dann vergrößert sich rechts das Memo und schiebt sich aus dem Bild, so als würde die linke Seite des Memos versuchen weiterhin nach links zu gehn und wimit die Breite sich ändert, aber aufgrund des MinWidths dennoch am Platz verbleibt. :shock:

Da nun auch ein großer Teil des Memos die Form verlassen hat und MinWidth bei diesem natürlich über seine gesamte Breite gerechnet wird, kann man nach Rachst quasi ohne Beschränkung den Splitter verschieben.

[edit]
Wir ist auch grade wieder eingefallen, dann dieses Problem auftritt.

Beispiel:
- 3 Komponenten mit MinWidth nebeneinander
- und jeweils ein TSplitter dazwischen (also zwei davon)
- linke Komonente ist noch größer als sein MinWidth
- rechter Splitter wird nach links bewegt
- Splitter hält an, sobald MinWidth der mitterlen Komponente erreicht ist
- inter ruscht der Splitter aber um das Stück weiter, welches bei der linken Komponente möglich wäre
- allerdings verschiebt sich der linke Splitter nicht dementsprechend mit,
aber die rechte Komponente reagiert so, als wenn sich der linkte Splitter verschieben würde
und rutscht dabei aus'm Bild, da sie ja nicht verschoben wird

Stevie 1. Jun 2010 11:37

Re: Fehler bei TSplitter
 
Was hat dein Memo für ein Aligment bzw welche Anchors?

himitsu 1. Jun 2010 11:57

Re: Fehler bei TSplitter
 
Nachdem ich alles Unwichtige rausgelöscht hab, bleibt dieses zurück:
Code:
object Panel5: TPanel
  Align = alTop
  object Panel6: TPanel
    Align = alLeft
    Constraints.MinWidth = 100
  end
  object Splitter2: TSplitter
    AutoSnap = False
    MinSize = 150
    ResizeStyle = rsUpdate
  end
  object PageControl1: TPageControl
    Align = alClient
    Constraints.MinWidth = 325
  end
  object Splitter3: TSplitter
    Align = alRight
    AutoSnap = False
    MinSize = 150
    ResizeStyle = rsUpdate
  end
  object Memo5: TMemo
    Align = alRight
    Constraints.MinWidth = 100
  end
end
Panel5 ist ein Trägerpanel
Panel6 enthielt den TreeView


[edit]
Links und rechts die Constraints (Panel6 und Memo5) sind egal
nur wenn ich das Constraints des PageControls entferne, passiert sowas nicht, allerdings möchte ich ja für dieses eine größere Breite und bei den TSplittern kann man nur für Links/Rechts, sowie Oben/Unten eine gemeinsame Breite/Höhe festegen, weswegen ich ja die Constraints gesetzt hab.

Stevie 1. Jun 2010 15:39

Re: Fehler bei TSplitter
 
Das ist nen Problem, mit dem ich mich auch schon ewigst rumgeärgert habe. Schreib dir am besten nen OnResize Event für die Splitter. Damit handelst du dir weniger bis garkeinen Ärger ein, als mit den Constraints.

shmia 1. Jun 2010 17:37

Re: Fehler bei TSplitter
 
Splitter funktionieren nur dann richtig, wenn nur ZWEI Controls auf einem Parent-Control vorhanden sind.
Control A hat Align = left, top, right oder bottom während Control B Align=client hat.
Dazwischen liegt der Splitter.

Hat man drei Controls, dann muss man zwei benachbarte Controls auf ein Panel, Bevel, Groupbox oder anderen Container packen.
Das Blöde ist nur, dass ein Panel oder Groupbox immer einen Rahmen hat den man in diesem Fall eigentlich nicht sehen möchte.
Man bräuchte ein "Frameless Panel" nur um die daraufliegenden Controls zusammenzufassen und zu organisieren.

himitsu 1. Jun 2010 18:17

Re: Fehler bei TSplitter
 
Is blöde.

Och, kein paar Bevel-lose Panels hab ich im Programm schon verbaut.
(auch wenn man sie auf dem Screenshot nicht sieht :stupid: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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