![]() |
TCategoryPanel einklappen/ausklappen Align-Ausrichtung
Hallo zusammen,
ich habe eine TCategoryPanelGroup welches 3 CategoryPanels enthält. Das Align ist auf alClient gestellt. Jetzt würde ich gerne, wenn man in der Anwendung das erste CategoryPanel einklappt, dass sich entweder die beiden übrigen die neu zur Verfügung stehende Height im Formular teilen oder zumindest das letzte CategoryPanel die volle Höhe bekommt. Leider bleiben die CategoryPanels in der Größe, wie sie im Objektinspektor erstellt wurden. Das drauflegen eines TSplitter bringt leider auch kein Erfolg (->habe versucht dann damit die Height des CategoryPanels anzupassen). Habt ihr eine Idee? Bei Windows 7 im Ressourcenmonitor ist das Verhalten ähnlich... Dort ist es mit einem Splitter gelöst, denke ich :-) Gruß Alex |
AW: TCategoryPanel einklappen/ausklappen Align-Ausrichtung
Delphi-Quellcode:
procedure TForm5.ReMeasureCat;
var coll,SplitHeight, I:Integer; begin coll := 0; for I := 0 to CategoryPanelGroup1.ControlCount-1 do if CategoryPanelGroup1.Controls[i] is TCategoryPanel then if TCategoryPanel(CategoryPanelGroup1.Controls[i]).Collapsed then inc(coll); if coll<CategoryPanelGroup1.ControlCount then begin SplitHeight := (CategoryPanelGroup1.Height - coll*30) div (CategoryPanelGroup1.ControlCount-coll); for I := 0 to CategoryPanelGroup1.ControlCount-1 do if CategoryPanelGroup1.Controls[i] is TCategoryPanel then if not TCategoryPanel(CategoryPanelGroup1.Controls[i]).Collapsed then TCategoryPanel(CategoryPanelGroup1.Controls[i]).Height := SplitHeight; end; end; procedure TForm5.CategoryPanel3Collapse(Sender: TObject); begin ReMeasureCat; end; procedure TForm5.CategoryPanel3Expand(Sender: TObject); begin ReMeasureCat; end; |
AW: TCategoryPanel einklappen/ausklappen Align-Ausrichtung
Hallo Bummi,
das geht schonmal ganz gut. Leider hat es ein kleinen Nachteil. Angenommen ich habe folgende Height in meinen CategoryPanels: Height CategoryPanel1 = 298 Height CategoryPanel2 = 238 Height CategoryPanel3 = 198 Wenn ich jetzt einen zuklappe und wieder aufklappe (sodass alle ausgeklappt sind), wird ein Mittelwert in der Height erzeugt und alle CategoryPanels bekommen die gleiche Height. Dies führt dazu, dass natürlich Sachen abgeschnitten werden z.B. im ersten CategoryPanel. Mir wäre es glaube ich lieber, wenn immer nur das letzte ausgeklappt CategoryPanel die "restliche" Height bekommt. Gruß Alex |
AW: TCategoryPanel einklappen/ausklappen Align-Ausrichtung
Tu' Dir keinen Zwang an, schreib es so um wie Du es brauchst ...
|
AW: TCategoryPanel einklappen/ausklappen Align-Ausrichtung
Deine Denkanstöße bzgl. der Events und der Abfragen helfen mir definitiv weiter und ich werde es mir entsprechend umbauen. Vielleicht braucht den oben genannten Source jemand in dieser Variante.
Viele Grüße Alex |
AW: TCategoryPanel einklappen/ausklappen Align-Ausrichtung
Zitat:
Delphi-Quellcode:
Ich habe auf einer CategoryPanelGroup Komponente 2 CategoryPanel Kompos, getrennt durch einen horizontalen Splitter.
procedure TForm2.ReMeasureCat;
var coll,SplitHeight,I: Integer; {neu eingeführte Variablen, am 7.10.2019 um 21:11} h1,h2,h: Integer; {Ende der neuen Variablen} begin for I := 0 to CategoriesLft.ControlCount-1 do begin (CategoriesLft.Controls[I] as TCategoryPanel).Height := CategoriesLft.Height; if I < CategoriesLft.ControlCount-1 then begin (CategoriesLft.Controls[I] as TCategoryPanel).Height := (CategoriesLft.Controls[I] as TCategoryPanel).Height - (CategoriesLft.Controls[I+1] as TCategoryPanel).Top; if I=1 then begin (CategoriesLft.Controls[I+1] as TCategoryPanel).Height := CategoriesLft.Height - (CategoriesLft.Controls[I+1] as TCategoryPanel).Top; end; end; end; end; Ich will nun, dass sich die beiden Panele ihrer Höhe nach alClient ausrichten, also den gesamten freien Platz bis zum Ende der CategoryPanelGroup bzw. bis zum Beginn (Eigenschaft Top) des darauffolgenden CategoryPanels ausfüllen. Ich habe auf meiner CategoryPanelGroup zwei solche Category Panele übereinander, wobei in der Standardeinstellung beide CategoryPanele gleich hoch sind, also hale Höhe der CategorypanelGroup. Wenn ich nun meinen Splitter bewege, passt sich die Höhe des oberen Panels korrekt an, die Höhe des unteren CategoryPanel jedoch nicht. Wenn ich den Spltter zu hoch bewege, schaut die Fläche der CategoryPanelGroup hervor. Ich will aber, dass sich die die Eigenschaft Bottom des unteren Panels auf Bottom der CatogoryPanelgroup setzt. Leider tut das der obige Code nur für das obere TCategoryPanel, nicht aber für das untere. Was muss ich da anders machen? [OT] Sorry für Doppelaccount. Bin User Schöni, konnte mich lange Zeit nicht einloggen, Kennwort vergessen, wollte meinen Account nun wiederherstellen aber DP hat mir auf das vergessene Kennwort den Usernamen cpux86 gegeben, statt schöni. War bisher als DualCoreCpu hier. Muss mich noch entscheiden, mit welchem Account ich zukünftig aktiv sein will. [/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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