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 Gibt es eine Breadcrumb-Komponente für VirtualTreeView? (https://www.delphipraxis.net/184603-gibt-es-eine-breadcrumb-komponente-fuer-virtualtreeview.html)

Codehunter 9. Apr 2015 07:22

Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Hallo!

Ist euch etwas bekannt ob es irgendwo eine Breadcrumb-Komponente für den VirtualTreeview gibt? Wer mit dem Begriff nichts anfangen kann, siehe hier.

Grüße
Cody

DeddyH 9. Apr 2015 07:56

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
rkSmartPath evtl.? Ich hab allerdings nicht in den Source geschaut und weiß daher nicht, wie man das mit dem VST verbindet.

Codehunter 9. Apr 2015 08:09

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Leider nein. Kannte ich zwar nicht, ist aber rein Dateisystem-basiert. Da will ich aber nicht hin, sonst könnte ich ja auch die ShellBrowser Components von JAM einsetzen :-)

DeddyH 9. Apr 2015 08:11

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Naja, immerhin könnte man die Darstellung abkupfern ;). Eine ähnliche Komponente, die nicht ans Dateisystem gebunden ist, ist mir auch nicht bekannt.

mkinzler 9. Apr 2015 08:11

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Grundsätzlich sollte das aber nicht schwer zu implementieren sein, da man dank der Baumstruktur einfach rekursiv zur Wurzel navigieren kann.

uligerhardt 9. Apr 2015 08:38

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Codehunter (Beitrag 1296844)
Leider nein. Kannte ich zwar nicht, ist aber rein Dateisystem-basiert. Da will ich aber nicht hin, sonst könnte ich ja auch die ShellBrowser Components von JAM einsetzen :-)

Derselbe Programmierer hat auch rkPathViewer - siehe http://rmklever.com/?p=212
Zitat:

The rkPathViewer is for viewing the path and can be used without rkShellPath for other path viewing needs.
Ich hab bei dem seinen Sachen aber irgendwie immer vor lauter duplizierter Funktionalität nicht gewusst, was eigentlich was ist. :mrgreen:

uligerhardt 9. Apr 2015 08:44

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Ach ja: DevEx hat natürlich auch was - TdxBreadcrumbEdit.

Stevie 9. Apr 2015 09:34

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Das hier dürfte für dich interessant sein

Codehunter 9. Apr 2015 15:21

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die von Roy Klever basieren alle auf PIDLs und mithin auf der Windows Shell. Ich habe derweil ein wenig gebastelt und das ist dabei heraus gekommen (siehe Anhang). Ist noch nicht perfekt (vorallem die Platzierung der Dropdowns etc.) aber ich hab in 5 Minuten Feierabend ;-)

Codehunter 10. Apr 2015 08:57

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Liste der Anhänge anzeigen (Anzahl: 2)
So... Verbesserte Version im Anhang. Handling entspricht jetzt weitestgehend dem vom Windows-Explorer. Mit einer Ausnahme und dazu folgende Frage:

Wenn man im Windows-Explorer einen längeren Pfad geöffnet hat und dann in der Breadcrumb-Leiste auf einen kleinen Dropdown-Pfeil klickt, dann öffnet sich das Dropdown-Menü. So weit noch mit meinem Ansatz identisch. Der Unterschied ist: Im Windows-Explorer werden anscheinend MouseMove-Ereignisse weiterhin an die Breadcrumb-Leiste weitergegeben, bei mir nicht. Im Ergebnis kann man bei geöffnetem Dropdown im Explorer in der Breadcrumb hin und her "mausen" und der Focus wechselt mit der Mausposition mit.

Ich verwende für meine Dropdown-Menüs ein simples TPopupMenu. Wenn sich das öffnet, scheint es sich Modal über das Programmfenster zu legen und fängt alle MouseMove, -Enter und -Leave-Ereignisse ab. Dadurch verliert die Breadcrumb-Leiste den Focus und reagiert nicht mehr interaktiv, wenn ein Dropdown geöffnet ist.

Auch scheint der Windows-Explorer kein "richtiges" Popup-Menü dafür zu verwenden, denn er kann in so einem Menü am rechten Rand Scrollleisten einblenden wenn sie zu lang sind. Bei Delphi-Menüs habe ich sowas noch nie gesehen.

Meine Breadcrumb ist übrigens als Komponente konstruiert. Ich werde das dann wahrscheinlich unter der MPL veröffentlichen wenn Interesse besteht und die gröbsten Bugs beseitigt sind..

Der schöne Günther 10. Apr 2015 09:03

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Alter Schwede, jetzt schon nicht übel :thumb:

Wird das auch mit anderen (größeren) Schriftgrößen zurechtkommen oder bestehen da keine Pläne?

himitsu 10. Apr 2015 09:18

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Wenn das Brot zu lang/breit wird, für's Fenster, dann links genügend Buttons weglassen und stattdessen und ein kurzer "Pfeil/Doppelpfeil nach links", auf das Popup der obersten Ebene. :stupid:

Codehunter 10. Apr 2015 09:59

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Erst einmal die Basics richtig machen, dann kommen die Luxus-Features. Variable Textgröße ist jetzt schon realisiert, nur das kleine Dreieck beim Dropdown-Button passt sich noch nicht der Schriftgröße an. Wobei ich das nicht unbedingt als Bug ansehen würde.

Das Hauptproblem ist wie gesagt, dass das PopupMenu verhindert dass man die Leiste interaktiv bedienen kann.

himitsu 10. Apr 2015 10:28

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Codehunter (Beitrag 1297007)
Das Hauptproblem ist wie gesagt, dass das PopupMenu verhindert dass man die Leiste interaktiv bedienen kann.

:gruebel:

Codehunter 10. Apr 2015 10:50

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von himitsu (Beitrag 1297016)
Zitat:

Zitat von Codehunter (Beitrag 1297007)
Das Hauptproblem ist wie gesagt, dass das PopupMenu verhindert dass man die Leiste interaktiv bedienen kann.

:gruebel:

Siehe letztes Post von mir auf der vorigen Seite.

BadenPower 10. Apr 2015 10:52

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von himitsu (Beitrag 1297016)
Zitat:

Zitat von Codehunter (Beitrag 1297007)
Das Hauptproblem ist wie gesagt, dass das PopupMenu verhindert dass man die Leiste interaktiv bedienen kann.

:gruebel:

Solange das Popup-Fenster geöffnet ist empfangen die anderen Steuerelemente keine Mouse-Botschaften wie z.B. MouseOver.

himitsu 10. Apr 2015 11:23

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Übersehn. :oops:

Zitat:

Auch scheint der Windows-Explorer kein "richtiges" Popup-Menü dafür zu verwenden
Das im Popup ist eine SysListView32 (TListView)

Codehunter 10. Apr 2015 12:10

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von himitsu (Beitrag 1297027)
Zitat:

Auch scheint der Windows-Explorer kein "richtiges" Popup-Menü dafür zu verwenden
Das im Popup ist eine SysListView32 (TListView)

Na dolle Wurst. Noch mehr Schreibarbeit :?

Ich bin jetzt in Sachen UxTheme nicht so bewandert... Kann man Listeneinträge darüber im MenuItem-Stil malen lassen?

Aviator 10. Apr 2015 12:21

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Benutz doch als Dropdown Komponente einfach auch einen VirtualTreeView. Da hast du alle Freiheiten bzgl. Paint auf dem Canvas, Schriftgrößenänderungen, die Höhe der Items kann manipuliert werden, und und und. Und was die Icons vor den Einträgen angeht, das sollte das Einfachste der Welt sein. :-D

Und beim VST solltest du auch keine Probleme bzgl. Fokus usw. bekommen.

Codehunter 10. Apr 2015 12:38

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Das ist nicht das Problem. Das Dropdown soll ja auf jedem System unabhängig von der Windows-Version aussehen wie ein Menü. Also muss man es mit der Theming-Engine zeichnen.

uligerhardt 10. Apr 2015 12:45

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Codehunter (Beitrag 1297053)
Also muss man es mit der Theming-Engine zeichnen.

... welche nichtexistent (<= XP) oder abgeschaltet (Windows Classic) sein kann. Da ärgere ich jedesmal, dass MS in seine Theme-API keinen Fallback auf DrawFrameControl & Co eingebaut hat. Das muss man alles immer doppelt programmieren. :wall:

Codehunter 10. Apr 2015 14:55

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, neue Demo zum Wochenende. Neue Funktionen:
  1. "Schrumpel"-Feature: Wenn man das Fenster verkleinert wird ein Root-Button eingeblendet
  2. Icon-Darstellung umschaltbar (entweder alle Icons oder nur das vom aktuellen Node)
  3. Bugfix: Kein Freeze mehr wenn man auf einen Crumb doppelklickt

Ist natürlich x64-fähig, darum diesmal auch eine 64-Bit-Demo mit dabei.

Dropdowns sind noch als PopupMenu realisiert. Für eine OwnerDraw-Liste fehlt mir einfach die Zeit.

Codehunter 13. Apr 2015 11:22

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Neue Demo, neues Glück 8-)

Neue Features:
  1. Pfad kann jetzt per Texteingabe geändert werden wenn man auf einen freien Bereich im "Brot" klickt
  2. Ein Pfad-Prefix und das Pfad-Trennzeichen können in der Demo frei vergeben werden
  3. Die Verschachtelungstiefe im Demo-Baum ist jetzt etwas tiefer für einen längeren Breadcrumb
  4. Über einen Eventhandler lassen sich eigene Parser für die Edit-Funktion einbauen (z.B. für Freitext-Suche)

Ich würde das Teil jetzt von den Features her mal als fast fertig betrachten (von dem "PopupMenu-Interaktivitäts-Bug" mal abgesehen). Daher wären mir ein paar Kommentare dazu recht.

Den Source will ich jetzt noch etwas eleganter gestalten und dann wird das Ding unter der MPL/LGPL duallizensiert, genau wie der VirtualTreeView.

sh17 13. Apr 2015 11:33

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Codehunter (Beitrag 1297455)
Neue Demo, neues Glück 8-)
Den Source will ich jetzt noch etwas eleganter gestalten und dann wird das Ding unter der MPL/LGPL duallizensiert, genau wie der VirtualTreeView.

Cool, bitte auf GitHub

himitsu 13. Apr 2015 11:37

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
http://www.delphipraxis.net/182276-d...-projekte.html :stupid:

Aber eigentlich wäre das eine neue Delphi-Feature auch dafür geeignet. :roll:

Codehunter 13. Apr 2015 12:08

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von himitsu (Beitrag 1297468)
Aber eigentlich wäre das eine neue Delphi-Feature auch dafür geeignet.

:?:

mkinzler 13. Apr 2015 12:09

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Er meint wohl GetIT

Codehunter 13. Apr 2015 13:06

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von mkinzler (Beitrag 1297478)
Er meint wohl GetIT

Musste ich jetzt neugierigerweise erst mal recherchieren... XE8 hat jetzt sowas wie einen Appstore. Bin mal gespannt wie das angenommen wird. Da freuen sich jetzt Portale wie Torry bestimmt ein Loch ins Knie :D

Kleines OT:

Ich bin irgendwie kein Freund (mehr) von Online-Code-Repositories für meine Kleinst-Projekte. DelphiWorks hatte ich damals auf SourceForge. Das mag heute keiner mehr so richtig und alle rümpfen die Nase. Also hab ich mal angefangen den Kram zu Google Code umzuziehen. Was passiert? Der Gockel macht den Laden zu.

Unterm Strich macht die Pflege von Repos für solche Kleinstprojekte mehr Arbeit als es nützt, weil man am Ende doch wieder nur alleine dran arbeitet.

sh17 13. Apr 2015 13:10

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
stimmt nur zum Teil, Bei Google Code und SF konnte man nur Issues erstellen. Bei GitHub hat man auf einfache Art die Möglichkeit, Projekte zu forken und Änderungen vorzuschlagen ohne gleich groß Berechtigungen abzufassen. Hab ich schon mehrfach genutzt. Bei den anderen beiden Plattformen habe ich es mir immer verkniffen.

Codehunter 13. Apr 2015 15:31

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
So, Sourcen sind mal fix hier im guten alten Portal abgelegt. Viel Spaß :-D

Aviator 13. Apr 2015 15:37

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Codehunter (Beitrag 1297496)
DelphiWorks hatte ich damals auf SourceForge. Das mag heute keiner mehr so richtig ... Also hab ich mal angefangen den Kram zu Google Code umzuziehen. Was passiert? Der Gockel macht den Laden zu.

Dann solltest du dir mal Gedanken machen, an wem das wohl liegt. :P

Zu deinem Programm: Also ich finde, dass ist richtig gut geworden. Sieht ja dem Windows Explorer von den Funktionen wirklich ziemlich ähnlich. Das Design der Buttons in der Bar gefällt mir persönlich zwar nicht ganz so gut, aber das ist ja jedem selbst überlassen, wie er das interpretiert.

Mir ist noch ein kleiner Bug aufgefallen. Und zwar wenn du den Doppelpfeil anzeigst, der die Root Ebene abbildet wenn der Platz nicht mehr ausreicht, um alle Ebenen in der Leiste anzuzeigen, dann verdeckt dieser Button noch das EditFeld wenn man sich den Pfad anzeigen lassen möchte. Ich denke, dass das nur eine einfache Visible Eigenschaft ist, die du noch setzen müsstest. (Siehe Bild im Anhang)

Über den Source Code freue ich mich auch. Den kann man bestimmt in dem ein oder anderen Programm einbauen. :thumb:

Codehunter 13. Apr 2015 16:25

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Aviator (Beitrag 1297533)
Das Design der Buttons in der Bar gefällt mir persönlich zwar nicht ganz so gut

Über Geschmack lässt sich ja streiten... In dem Fall muss ich sagen, bin ich mir da auch nicht sicher. Ich muss mir die Theming-Engine noch mal genauer anschauen. Die abgerundeten Rahmen passen nicht so gut.
Zitat:

Zitat von Aviator
verdeckt dieser Button noch das EditFeld

Komisch, das machts bei mir nicht. Aber schau ich morgen mal, ist keine große Sache.

Codehunter 15. Apr 2015 15:20

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, heute nochmal eine neue Demo. Ich habe das Problem mit dem "interaktiven Mausen" bei aufgeklapptem Dropdown gelöst. Das Dropdown ist jetzt ein eigenes Window und die Liste ist als OwnerDraw-VirtualTree realisiert. Dadurch bekomme ich auch die vertikalen Scrollbars.

Einziger Bug der mir im Moment bekannt ist: Das Dropdown-Form ist ein FormStyle=fsStayOnTop. Wenn man jetzt außerhalb des Dropdown-Forms klickt (egal ob in der eigenen Anwendung oder einem anderen Programm), dann sollte das Dropdown sich selbst schließen. Tuts aber derzeit noch nicht, weil es aus unerfindlichen Gründen kein OnDeactivate-Ereignis auslöst. In dem Zusammenhang gefragt: Gibt es eine Windows-Message an ein Fenster die ihm mitteilt, dass seine Hostanwendung den Focus verloren hat?

Aviator 16. Sep 2016 12:28

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Hi Codehunter,

ich habe dir in deinem Projekt-Thread ja noch einige Hinweise gegeben die du eventuell noch ausbessern könntest.

Aber an dieser Stelle hätte ich jetzt noch eine Frage zu der Komponente:

Kannst du die Komponente so erweitern, dass man einen Standardbutton vor die eigentlichen Node Buttons setzen kann? Als Beispiel möchte ich folgendes machen:

Startseite --> Node 1 --> Node 2 --> Node 3

Startseite ist aber ein eigener definierter Button der nicht aus dem Tree kommt und der immer davor stehen soll. Es wäre in dem Fall dann auch super, wenn du ein OnButtonClick() Event einbauen könntest damit man beim Klick auf einen Button noch etwas ausführen kann. In meinem Fall will ich beim Klick auf "Startseite" eine spezielle PageControl Seite anzeigen.

Und kann man auch den Editmode deiner Komponente irgendwo abschalten? In meinem Fall sollte es nicht möglich sein, dass ein User hier etwas eingibt.

Codehunter 20. Sep 2016 10:08

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Aviator (Beitrag 1347839)
Kannst du die Komponente so erweitern, dass man einen Standardbutton vor die eigentlichen Node Buttons setzen kann?

Die Funktionsweise ist vom Windows Explorer abgeguckt. Ich würde dir empfehlen, das mit einem separaten Control zu machen. Im Prinzip so ähnlich wie der Settings-Button rechts oben in meinem Projekt FMC. Also durchaus optisch etwas abgesetzt. Alles andere könnte den Anwender verwirren.

Aviator 20. Sep 2016 10:41

AW: Gibt es eine Breadcrumb-Komponente für VirtualTreeView?
 
Zitat:

Zitat von Codehunter (Beitrag 1348148)
Zitat:

Zitat von Aviator (Beitrag 1347839)
Kannst du die Komponente so erweitern, dass man einen Standardbutton vor die eigentlichen Node Buttons setzen kann?

Die Funktionsweise ist vom Windows Explorer abgeguckt. Ich würde dir empfehlen, das mit einem separaten Control zu machen. Im Prinzip so ähnlich wie der Settings-Button rechts oben in meinem Projekt FMC. Also durchaus optisch etwas abgesetzt. Alles andere könnte den Anwender verwirren.

Hallo Codehunter,

danke für die Antwort. Ich bin aber gerade dabei, mir (wie du auch erwähnt hast) eine eigene Komponente zu schreiben die so etwas kann. Wird zwar noch ein wenig dauern bis die fertig ist, aber ich bleibe dran. Mal schauen wie weit ich komme.

Nichts desto trotz: Super Komponente! :thumb:


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