Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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/)
-   -   Was für ne scharfe Auswahlleiste (https://www.delphipraxis.net/95822-fuer-ne-scharfe-auswahlleiste.html)

Jelly 13. Jul 2007 17:36


Was für ne scharfe Auswahlleiste
 
Liste der Anhänge anzeigen (Anzahl: 1)
In einem ganz anderem Thread, nämlich in diesem, ging es um Backupprogramme. Und genau das biete eine wirklich hübsche Navigationsleiste an, wie sie im Anhang zu sehen ist.

Was mir daran so besonders gefällt, ist das beim Drüberbewegen der Maus, die Transparenz der Markierung nach rechts hin zunimmt, so dass am Rand sogar der Hintergrund komplett durchleuchtet.

Kennt jemand eine solche Komponente für Delphi. Ich hab die TMS Component Pack. Dort sind paar hundert Komponenten drin, aber nichts in der Richtung, es sei ich wär blind.

SirThornberry 13. Jul 2007 17:38

Re: Was für ne scharfe Auswahlleiste
 
eigentlich sollte das selbst programmieren kein Problem weiter sein. Die Markierung wird einfach nur ein Bild mit Alphamaske sein. Und nach Rechts hinn ist die Alphamaske eben transparenter.

Prototypjack 13. Jul 2007 17:45

Re: Was für ne scharfe Auswahlleiste
 
Moin,

Stimmt, das Ding sieht tatsächlich nicht schlecht aus ;)

Wenn ich gezwungen wäre sowas zu bauen, würde ich (weil ich es für sehr unwahrscheinlich halte, dass es sowas bereits gibt), wohl auf das gute alte Virtual Treeview von Mike zurückgreifen. Damit sollte das ganz leicht gehen.
  • Hintergrundbild reinstecken
  • NodeHeight einstellen
  • Node-Drawing abfangen (geht ganz leicht, habe ich schon oft gemacht. Die Komponente liefert eigens dafür gesonderte Events) und ab geht's.
Wie gesagt, das würde ich am ehesten versuchen. Eine fertige Komponente die dir die Funktion vom Screenshot bietet kenne ich leider nicht.

Ich hoffe ich konnte ein bisschen weiterhelfen!

Grüße,
Max

(Natürlich kannst du das ganze auch leicht selbst basteln, aber dann ist es nicht mehr so allgemein, wobei man die Lösung per Virtual Treeview ohne, bzw. mit wenigen Änderungen, wiederverwenden könnte!)

SirThornberry 13. Jul 2007 18:07

Re: Was für ne scharfe Auswahlleiste
 
so kompliziert würde ich es mir gar nicht machen. Um es richtig flexibel zu halten braucht man nur die Markierung als Komponenten programmieren. Sobald sich dann die Maus über der Komponente befindet braucht man einfach nur ein zuvor zugewiesenes Bild (mit Alphakanal) einblenden, ansonsten einfach gar nix zeichnen.

blawen 13. Jul 2007 18:46

Re: Was für ne scharfe Auswahlleiste
 
Der Linke Teil wurde mit JVCL-Komponenten erstellt - ev. auch der Rechte Menüteil?

Jelly 13. Jul 2007 18:48

Re: Was für ne scharfe Auswahlleiste
 
Alphamasken ist ja schön und gut. Nur hab ich keinen blassen Schimmer wie ich sowas angehen könnte.

(Das linke Menü ist kein Problem, dafür hätte ich eine Komponente.)

SirThornberry 13. Jul 2007 18:59

Re: Was für ne scharfe Auswahlleiste
 
mit der Funktion AlphaBlend aus der Unit Windows geht es eigentlich.

Khabarakh 13. Jul 2007 19:11

Re: Was für ne scharfe Auswahlleiste
 
Um ein PNG zu laden, kannst du PngDelphi benutzen. Die genannte Funktion AlphaBlend würde in diesem Falle ausreichen, sobald es aber um ein bisschen mehr als simples Aufeinanderkopieren zweier Bitmaps geht, solltest du zu GDI+ oder GR32 greifen, denn da Delphi noch GDI benutzt, hat es keine Ahnung von deinem Alphakanal, was ungut enden könnte.

PS: Normalerweise halte ich mich mit solchen Kommentaren zurück, da sie meist nicht so wirklich weiterhelfen, aber da ich weiß, dass du mit C# programmierst (programmiert hast?), muss ich es einfach erwähnen: Mit WPF könnte man so ein Ding in 5 Minuten from scratch entwickeln, ohne eine Zeile Code geschrieben oder irgendein Bildbearbeitungsprogramm geöffnet zu haben.

Jelly 14. Jul 2007 10:41

Re: Was für ne scharfe Auswahlleiste
 
Zitat:

Zitat von Khabarakh
Um ein PNG zu laden, kannst du PngDelphi benutzen. Die genannte Funktion AlphaBlend würde in diesem Falle ausreichen, sobald es aber um ein bisschen mehr als simples Aufeinanderkopieren zweier Bitmaps geht, solltest du zu GDI+ oder GR32 greifen, denn da Delphi noch GDI benutzt, hat es keine Ahnung von deinem Alphakanal, was ungut enden könnte.

Mit GR32 meinst du wohl Graphics32... Damit könnte es gehen, hab ich gar nicht dran gedacht.

Zitat:

Zitat von Khabarakh
Mit WPF könnte man so ein Ding in 5 Minuten from scratch entwickeln, ohne eine Zeile Code geschrieben oder irgendein Bildbearbeitungsprogramm geöffnet zu haben.

Also die .NET Lösung würd mich auch interessieren, weil ich auf der Arbeit ausschliesslich mit .NET arbeite und den Chef beeindrucken will :mrgreen:

Khabarakh 15. Jul 2007 11:36

Re: Was für ne scharfe Auswahlleiste
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Jelly
Also die .NET Lösung würd mich auch interessieren, weil ich auf der Arbeit ausschliesslich mit .NET arbeite und den Chef beeindrucken will :mrgreen:

Sodele, ich hab da mal was vorbereitet... :mrgreen: .

Die einzelnen Schritte in Kurzfassung:
  1. Wie gewohnt (bzw. erfrischend ungewohnt im Vergleich zur Win32-GUI) das Layout erstellen und eine ListBox inkl. einiger Items hinzufügen. Schon werden die Vorteile von WPFs Lookless Controls ersichtlich: zum Einen können wir in eine stinknormale Listbox einfach ein Image oder formatierten Text werfen...
  2. ... zum Anderen können wir nun das Standard-Aussehen (Template) der ListBoxItems beliebig verändern, ohne die Logik der ListBox neu schreiben zu müssen. Es bleibt dabei: null Zeilen Code.
    In Blend gelangt man zum Template durch einen Rechtsklick auf das Item -> Edit Control Parts (Template)
  3. Zur Realisierung des Rahmens habe ich den ContentPresenter (also das Ding, in dem nachher der eigentliche Item-Inhalt landet) in ein Grid verpackt, um ein (abgerundetes) Rectangle darunter schieben zu können. Dem Rectangle geben wir mit zwei Klicks noch den richtigen AlphaMask-Gradienten und verkoppeln über einen Trigger seine Visible-Eigenschaft mit der IsMouseOver-Eigenschaft des Items. Fertig.
Man könnte natürlich noch ein wenig/ewig am Layout herumtweaken, Animationen einfügen (langsames Einblenden des Rahmens usw.) oder beispielsweise die linke Leiste noch ans Original anpassen, aber in erster Linie ging es ja darum, so einfach wie möglich den transparenten Rahmen zu realisieren.

Zu näheren Erklärungen stehe ich gerne bereit, WPF ist nicht gerade ein auf den ersten Blick erfassbares Gebiet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 Uhr.
Seite 1 von 4  1 23     Letzte »    

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