![]() |
Scrollbar mit modernem Anfasser
Hallo,
nun wollte ich mal probieren, das horizontale Scrolling in einer Listbox völlig selbst zu übernehmen und bekam einen Schreck. Wenn ich in meinem Delphi 7 eine TScrollbar nehme, so wird der Anfasser im "old style" als festes Quadrat angezeigt. Ich möchte aber gerne so eine Scrollbar, wie sie unter Win 7 plus üblich ist, also ein in der Breite veränderlicher Thumb (Anfasser) mit den 3 "Strichen" drauf und auch "oberflächenmäßig" entsprechend gestaltet (3D?!). Geht das? Wie? Ich habe nach anderen Scrollbar-Komponenten geschaut, aber zumindest in ihren Demos sehen die nicht so schön aus. Außerdem möchte ich natürlich, dass sich meine eigene horizontale Scrollbar im Aussehen nicht von der vertikalen in der Listbox unterscheidet! Was kann man da machen? Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
Hast du ein Manifest?
|
AW: Scrollbar mit modernem Anfasser
Hallo,
ich hab's ja geahnt, dass es evtl. damit geht, aber... Ich habe leider nur das für XP, dass bei Delphi 7 dabei ist. Es geht aber natürlich weder mit noch ohne. Woher für win7 und höher eins nehmen und wie einbinden? Oder geht es auch direkt, ohne Manifest? Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
Wenn das Manifest bei dir nicht das Ergebnis zeigt, dann ist es auch nicht richtig drin. ;-)
Das ist schon das richtige, auch das von Delphi 7. |
AW: Scrollbar mit modernem Anfasser
XP oder Win7 ist egal, da die Option gleich heißt, bzw nicht umbenannt wurde.
PS: ![]() |
AW: Scrollbar mit modernem Anfasser
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo jaenicke,
OK, was mache ich falsch:
Delphi-Quellcode:
Im Anhang das Bild für diese Unit.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls; type TForm1 = class(TForm) ScrollBar1: TScrollBar; XPManifest1: TXPManifest; ListBox1: TListBox; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Listbox1.ScrollWidth:=1000; end; end. Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
|
AW: Scrollbar mit modernem Anfasser
Diese nutzlose Komponente macht aber nichts Anderes, als die Unit XPMan einzubinden, über welche die dort enthaltende Resource (mit dem Manifest) aufgenommen wird.
Hast du vielleicht noch ein weiteres Manifest im Programm? Steht etwas bezüglich irgendwelcher Konflikte im Compilerlog? |
AW: Scrollbar mit modernem Anfasser
Hallo himitsu,
neeee! Ich habe mir eben ein "win7.res" mit Deinem Manifest-Creator zusammengebastelt. WindosXP.res natürlich rausgenommen. Und dieses als Ressource in die Unit eingebunden. Keine Änderung. Auch, ob ich nun dieses WindowsXP.res drin habe oder nicht. Ich habe D7 pro und mal die Quelle der Listbox durchstöbert. Soweit ich das verstanden habe, habe ich nichts verstanden! <ggg> Ich sehe einfach keinen Unterschied bei der Definition der (horiz.) Scrollbars und doch werden sie verschieden dargestellt. Das kann höchstens Windows-intern sein! Ich werde mal den Scrollbar aus der API nehmen und gucken... Gefällt mir gar nicht! Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
Ich kann mich Täuschen, aber auf dem Bild sehe ich den neuen Style.
Ein Button sähe doch auch "neu" aus? (nicht wie in Win98) Die Breite des Schiebers ergibt sich aus den Dimensionen. (Parameter am Beispiel der TScrollBar) > Größe des Scroll-Bereichs (Größe = Max - Min) > Größe des Anzeigebereichs (PageSize) Wenn PageSize 0 oder wenn der Anzeigebereich zu klein ist, womit das Ding zu schmal wäre, dann wird es auf die rechteckige Größe bebrenzt. |
AW: Scrollbar mit modernem Anfasser
Hallo,
stimmt mit der Breite - theoretisch. Darum geht es vor allen Dingen! Habe ich vergessen, zu schreiben. Die Breite des Thumbs bei der Listbox ändert sich auch, bei der Scrollbar nicht! Und die 3 senkrechten Striche auf dem Thumb gibt es bei der Listbox, bei der Scrollbar nicht. Übrigens: Listbox, horiz. Scrollbar, Breite:=1000; horiz. Scrollbar, Breite:=20, Schrittlänge:=10 (im OI gesetzt). Müsste eigentlich im Scrollbar ziemlich breit sein, oder? Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
Hallo,
also eben habe ich mal showscrollbar(listbox1.Handle,sb_horz,true); in FormCreate gemacht. Da kommt derselbe "unfähige", wie mit der Scrollbarkomponente, allerdings unten an der Listboxkomponente. (Alles mit winXP-Manifest.) Warum kommt dann also bei der Listboxkomponente selber (Scrollwidth) der "richtige" Thumb? Mal sehen, was bei Win8.1 passiert... Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
Die Größe des Cursors ergibt sich aus dem Verhältnis von PageSize zu (Max - Min).
|
AW: Scrollbar mit modernem Anfasser
Ich kann das Problem nicht reproduzieren. Wenn ich mit Delphi 7 PageSize z.B. auf 50 setze, ist der Scrollbalken halb so groß wie die Scrollbar und sieht genauso aus wie bei der ListBox.
|
AW: Scrollbar mit modernem Anfasser
Gelöst!!!
Hallo Uwe, vielen Dank! Genau das hat mir gefehlt. Das Setzen von Pagesize erledigt das alles. Gruß Mattze |
AW: Scrollbar mit modernem Anfasser
Wobei das PageSize auf letzter Seite auch schonmal von jemanden erwähnt wurde.
Und nur nochmal erwähnt: Das Ganze hat mit dem Modern-Style absolut garnichts zu tun, denn es ging vorher auch schon. |
AW: Scrollbar mit modernem Anfasser
Hallo himitsu,
das hattest Du geschrieben, aber ich habe wohl wieder mal nicht richtig bis zu Ende gelesen. Nach Deinem ersten Satz musste ich ja unbedingt schon antworten. Also, entschuldige bitte. Ich werde mich bessern - hoffe ich. <ggg> Gruß Mattze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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 by Thomas Breitkreuz