![]() |
Test: Erweitertes Drag & Dock für TBX
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich habe einige Routinen geschrieben, um die Drag & Drop Fähigkeiten der Toolbar2000 bzw. TBX Bibliothek etwas auszubauen, besonders mit Hinblick auf die typische Nutzung mit mehreren Tabs pro Dock Panel (TTBXDockablePanel). Dabei kann man die einzelnen Tabs so auf die Dock Panele verschieben, wie man es beispielsweise von Delphi gewohnt ist (also in das Panel, drüber oder drunter). Zudem kann man einzelne Tabs nun auch ganz leere Seiten ziehen. Mit TBX und Toolbar2000 war das meinen Recherchen und Tests zufolge von Haus aus nicht möglich, daher habe ich mich selbst mal rangesetzt. Für die Umsetzung habe ich dabei die modifizierte Version des speziellen DragDock Codes der Toolbar 2000 Bibliothek mit eigenen Erweiterungen verwendet. Nun würde ich das daraus entstandene Test-Programm euch gerne zum Testen zur Verfügung stellen. Falls alle (oder die meisten) Fehler raus sind werde ich den Quellcode schöner kapseln und wenn der Code dann einen weiteren praktischen Test (der dürfte beim Titel des Testprogramms offensichtlich sein ;) ) "besteht", würde ich ggf. den Quellcode dann gerne zur allgemeinen Verwendung zur Verfügung stellen. :) Noch ein Hinweis: Im Testprogramm ist es bewusst nicht möglich die Panele an die obere Seite zu verschieben, falls das auffallen sollte :mrgreen: Viel Spaß beim Testen, David P.S.: Ich habe das mal unter "sonstige Fragen zu Delphi" gepackt, weil das Programm ja keine "richtige" Freeware ist und derzeit noch nicht Open-Source. |
Re: Test: Erweitertes Drag & Dock für TBX
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
sieht erst mal gut aus. Mir ist aber aufgefallen, dass sich Deine Ziel-Rechtecke manchmal überlappen (siehe Screenshot). Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Moin,
Thx... Ließ sich das Verhalten irgendwie reproduzieren oder trat das nur sporadisch auf? Viele Grüße |
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
ich finde nach einem Kurztest die Arbeit sehr ordendlich. Wird auch das Feature automatischen aus- und einklappen mit Festpinnen wie z.b. bei BDS2006 noch eingebaut? mfg DerDan |
Re: Test: Erweitertes Drag & Dock für TBX
Zitat:
Zitat:
Viele Grüße |
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
Zitat:
Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Zitat:
Danke nochmal fürs Testen.... |
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
scheint wohl ein Problem des DWM zu sein. Mit deaktiviertem Aero kommt der Fehler nicht. Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Habe mal den Dock-Code einer neuen Toolbar2000 Version angeschaut und einige Differenzen zwischen meiner Umsetzung der grauen Umrandung und der aus TB2k entdeckt. Ich habs mal in die neue Version eingebaut und sie in den ersten Beitrag hochgeladen. Vielleicht gehts ja nun...
Viele Grüße |
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
geht leider immer noch nicht, sorry. Wie sieht denn die Zeichenroutine aus? Ich weiß, dass es mit Vista einige Änderungen bezüglich des Zeichnens auf den Desktop gab. Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Hey,
Ich habe das an die Zeichenroutine an TB2k angelehnt:
Delphi-Quellcode:
Das ganze ist zudem angelehnt an die BeginMoving-Methode aus der TB2Dock.pas.
Size.cx := GetSystemMetrics(SM_CXDLGFRAME);
Size.cy := Size.cx; // Outline zeichnen DC := GetDCEx(GetDesktopWindow, 0, DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); TB2Common.DrawHalftoneInvertRect(DC, @OutlineRect, nil, Size, Size); ReleaseDC(GetDesktopWindow, DC); // ... // Outline löschen DC := GetDCEx(GetDesktopWindow, 0, DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); SetRectEmpty(R); TB2Common.DrawHalftoneInvertRect(DC, @R, @FLastOutlineRect, Size, Size); ReleaseDC(GetDesktopWindow, DC); // TB2Common.pas procedure DrawHalftoneInvertRect(const DC: HDC; const NewRect, OldRect: PRect; const NewSize, OldSize: TSize); var Brush: HBRUSH; begin Brush := CreateHalftoneBrush; try DrawInvertRect(DC, NewRect, OldRect, NewSize, OldSize, Brush, Brush); finally DeleteObject(Brush); end; end; Viele Grüße |
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
das Problem wird sein, dass seit Vista das Zeichnen auf den Desktop vermieden werden sollte. Durch den DWM ist das erstens langsamer, und zweitens kann es eben zu solchen Effekten kommen, dass ein Xor nicht mehr funktioniert. Eine Lösung weiß ich aber leider auch nicht (da wäre ich selbst dran interessiert). Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Zitat:
|
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
Zitat:
Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Hm, also ich habe jetzt nochmal was geändert. Undzwar wird während des gesamten Drag-Vorgangs nur ein DC benutzt, um zu zeichnen (vorher wurde immer ein neues DC angefordert). Vielleicht liegt da ja der Hund begraben.
|
Re: Test: Erweitertes Drag & Dock für TBX
Hallo,
Zitat:
Gruß xaromz |
Re: Test: Erweitertes Drag & Dock für TBX
Na gut, dann werde ich mir mal den VCL Code zum Docken anschauen, dort geht das ja offensichtlich mit den Rahmen ...
Viele Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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