Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Panel seitlich ohne Splitter "herausziehen" (https://www.delphipraxis.net/188185-panel-seitlich-ohne-splitter-herausziehen.html)

Opa Knack 8. Feb 2016 01:33

Panel seitlich ohne Splitter "herausziehen"
 
Hallo,

ich bin mir sicher, dass ich hierzu schon mal etwas im Forum gefunden habe, aber die Suche hat mir nicht weitergeholfen. Wahrscheinlich habe ich die falschen Suchbegriffe genommen, aber mehr als "flying", "slide" und ähnliches ist mir nicht eingefallen.

Auf einem Form möchte ich ein Panel "herausziehbar" machen. Es soll sich an einer Fensterseite über einen Button sichtbar machen lassen bzw. wieder verschwinden. Das Ganze soll ähnlich den Menüs in Office 2013 funktionieren, die man ja auch ausklappen kann, ohne dass die restlichen Objekte davon beeinträchtigt werden.

Die Lösungen, die ich bisher gefunden habe, verwenden einen Splitter, was jedoch nur annähernd an das herankommt, was ich suche. Bei einem Splitter werden die restlichen Objekte verschoben, was ich verhindern möchte. Das eingeblendete Panel soll sich quasi "über" die anderen Komponenten legen (und diese idealerweise bis zum Wegblenden deaktivieren). Das Endergebnis soll mehr oder weniger wie ein modales Fenster wirken, mit dem Unterschied, dass es nicht als Fenster eingeblendet wird und dass es am Fensterrand angedockt werden soll.

Hat jemand von euch einen Tipp, wie ich das bewerkstelligen kann?

Danke und Gruß
Opa

jaenicke 8. Feb 2016 06:04

AW: Panel seitlich ohne Splitter "herausziehen"
 
Meinst du vielleicht so etwas?
http://www.tmssoftware.com/site/toolpanels.asp
Oder auch hier gibt es die Möglichkeit:
http://www.lmdinnovative.com/products/vcl/lmddockpack/

Opa Knack 9. Feb 2016 01:33

AW: Panel seitlich ohne Splitter "herausziehen"
 
Hallo,

ja, das geht in die richtige Richtung. Wobei ich die Hoffnung hege, dass ich etwas ähnliches auch noch finden kann, ohne dafür gleich ein neues Package kaufen zu müssen. Für entsprechende Tipps bin ich dankbar.

Danke und Gruß
Opa

EarlyBird 9. Feb 2016 06:56

AW: Panel seitlich ohne Splitter "herausziehen"
 
Mit AnimateWindow kannst Du eventuell selber den Effekt erzeugen den du brauchst
Delphi-Quellcode:
procedure TForm11.btn1Click(Sender: TObject);
begin
  AnimateWindow(panel1.Handle, 600, AW_HOR_POSITIVE or AW_SLIDE or AW_ACTIVATE)
end;

procedure TForm11.btn2Click(Sender: TObject);
begin
  AnimateWindow(panel1.Handle, 600, AW_HOR_NEGATIVE or AW_SLIDE or AW_HIDE)
end;

procedure TForm11.FormShow(Sender: TObject);
begin
 panel1.Hide;
end;

Geda 9. Feb 2016 07:05

AW: Panel seitlich ohne Splitter "herausziehen"
 
Wenn ich das richtig verstehe, willst Du nicht "ziehen", sondern auf eine fixe Breite/Höhe "ein- und ausklappen".

Ginge z.B. einfach mit Standardeigenschaften/-ereignissen über "Visible", das über eine Aktion (z.B. Schalterdruck) getriggert wird.

Das Überdecken der anderen Controls erreichst Du, indem das Panel
- den gleichen (oder einen übergeordneten) Parent wie die zu überdeckenden Controls hat
- die Eigenschaft "Align" des Panels auf alNone steht
- die Position des Panels bei "OnResize" des übergeordneten Controls an die jeweilige Größe angepasst wird

So das Panel vorher minimiert dargestellt werden soll, kann man statt "Visible" "Height" (beim Einblenden von oben) bzw. "Width" (beim Einblenden von der Seite) bemühen.

"Aktivieren/Deaktivieren" der anderen Controls könntest Du dann in der gleichen Aktion abarbeiten, die auch das Ein-/Ausklappen regelt.

jaenicke 17. Feb 2016 12:29

AW: Panel seitlich ohne Splitter "herausziehen"
 
In Delphi 10 Seattle gibt es dafür TSplitView wie ich gerade festgestellt habe:
http://docwiki.embarcadero.com/Libra...rls.TSplitView


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