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 Scrollbar umpositionieren (https://www.delphipraxis.net/24090-scrollbar-umpositionieren.html)

Stevie 15. Jun 2004 09:51


Scrollbar umpositionieren
 
Hi Leute,

ich habe vor in meinemr von TDBGrid abgeleiteten Komponente einen Navigator in die linke untere Ecke zu bringen.
Wie kann ich die Scrollbar vom Grid schmaler machen, so dass sie erst rechts vom Navigator anfängt?

shmia 15. Jun 2004 10:49

Re: Scrollbar umpositionieren
 
Das geht so nicht !
Steuerelemente (= Controls) beanspruchen für sich immer ein Rechteck (gesteuert von Left, Top, Width, Height) und füllen dieses mit ihrem Inhalt komplett aus.
Die Scrollbars sind fest im TDBGrid integriert. Man müsste den hor. Scrollbar als eigenes Control
isolieren, damit man Grid, hor. Scrollbar & Navigator entsprechend anordnen kann.
Und da dies in der VCL nicht vorgesehen ist, musst du halt mit einem 08/15 Design auskommen.

Stevie 15. Jun 2004 11:19

Re: Scrollbar umpositionieren
 
Wie kann ich das denn sonst machen?
Ich möchte eine Grid, wo unten links der Navigator ist und rechts daneben die Scrollleiste.
Muss ich dann diese drei Elemente auf ein Panel packen?
Wie bekomme ich denn dann die Scrollleiste aus dem Grid?
Wie verbinde ich die neue Scrollbar mit dem Grid?

Ok, viele Fragen, aber ich hoffe, jemand hat eine Anregung für mich.

Jens Schumann 15. Jun 2004 11:38

Re: Scrollbar umpositionieren
 
Diese einzige Anregung die mir einfällt ist das Studium der VCL-Sourcen.

neolithos 15. Jun 2004 11:42

Re: Scrollbar umpositionieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du ein bißchen Ahnung von der Windows API hast.


Leichter:

Verstecke die untere Scrollleiste -> WM_NCCALCSIZE
Setze eine neue ScrollBar, und leite deren Scrollnachrichten an das DBGrid weiter.
Leite alle Scrollnachrichen vom DBGrid zur Scrollbar weiter



Schwer:

Klemme jegliche Nachricht zum Scrollbar zeichen ab und ersetze sie durch deine eigenen Routinen.
Du musst dabei jede Berechnung und Zeichenroutine selbst schreiben. Hast aber völlige Freiheit in der Gestaltung des Non-Client-Bereiches. (Genauso wird es übrigens bei den FlatScrollBars gemacht).


Gleich im vorraus! Ich kann kein Bsp Posten, ich habe diesen speziellen Fall noch nicht programmiert und außerdem währe dieser Quelltext viel zu lang und kompliziert.

Woher weiß ich das dann, ich habe mal die rechte Scrollbar durch zwei Schalter ersetzt. Einer oben im Control und einer unten (siehe Anhang).

Viel Spaß beim tüfteln.

Stevie 15. Jun 2004 13:00

Re: Scrollbar umpositionieren
 
Kannst du mir ungefähr sagen, wo ich dann einhaken muss. Ich hab jetzt die VCL durchgewühlt aber nicht wirklich die Routine gefunden, wo die Scrollbar gezeichnet wird, bzw. wo die Zeichenkoordinate gesetzt wird.

neolithos 15. Jun 2004 15:57

Re: Scrollbar umpositionieren
 
Die Scrollbar wird ja auch nicht von der VCL gezeichnet, sondern von Windows.

Deshalb musst du die geeigneten Nachrichten manipulieren.

WM_MCCALCSIZE, WM_NCPAINT, WM_VSCROL, WM_HSCROLL, WM_NCLBUTTONDOWN, usw.

Stevie 17. Jun 2004 08:01

Re: Scrollbar umpositionieren
 
Ok, ich hab mir mal die dementsprechenden Routinen aus TWinControl angeguckt, und dabei ist mir aufgefallen, dass ja eigentlich nur der Clientbereich berechnet wird und der Rest somit quasi Scrollbar ist, oder? Dann wäre es doch garnicht möglich, auf diesem Weg die Scrollbar weiter rechts anfangen zu lassen, weil sie ja am linken Rand des Clientbereichs anfängt, oder irre ich mich da?

neolithos 17. Jun 2004 17:55

Re: Scrollbar umpositionieren
 
Deswegen muss du ja die von Windows gezeichnete Scrollbar mit deiner eigenen Überzeichnen -> WM_NCPAINT

Stevie 18. Jun 2004 10:52

Re: Scrollbar umpositionieren
 
Das ist mir irgendwie alles zu kompliziert im Moment und ich hab auch nicht die Zeit mich einzuarbeiten (vielleicht demnächst mal), deshalb hab ich jetzt einfach ein Panel genommen und da die Grid und die Navigator draufgepackt. Ok, das Schönheitsproblem mit der Scrollbar, die jetzt über dem Navigator sitzt ist noch da, aber das ganze erfüllt schonmal seinen Zweck. Auf jeden Fall vielen Dank für die Hilfe, wenn ich mich nochmal damit eingehender auseinandersetze, komm ich gerne auf dich zurück.


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