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 mit modernem Anfasser (https://www.delphipraxis.net/181189-scrollbar-mit-modernem-anfasser.html)

Mattze 23. Jul 2014 13:14

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

mkinzler 23. Jul 2014 13:53

AW: Scrollbar mit modernem Anfasser
 
Hast du ein Manifest?

Mattze 23. Jul 2014 14:12

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

jaenicke 23. Jul 2014 15:06

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.

himitsu 23. Jul 2014 15:39

AW: Scrollbar mit modernem Anfasser
 
XP oder Win7 ist egal, da die Option gleich heißt, bzw nicht umbenannt wurde.

PS: Hier im Forum suchenManifest-Creator > siehe Design

Mattze 23. Jul 2014 16:03

AW: Scrollbar mit modernem Anfasser
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo jaenicke,

OK, was mache ich falsch:
Delphi-Quellcode:
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.
Im Anhang das Bild für diese Unit.

Gruß
Mattze

mkinzler 23. Jul 2014 16:06

AW: Scrollbar mit modernem Anfasser
 
Oder Komponente TXPManifest verwenden
http://www.delphi-treff.de/tipps-tri...yle-verwenden/

himitsu 23. Jul 2014 16:14

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?

Mattze 23. Jul 2014 16:34

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

himitsu 23. Jul 2014 16:44

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.

Mattze 23. Jul 2014 17:50

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

Mattze 23. Jul 2014 18:07

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

Uwe Raabe 23. Jul 2014 19:37

AW: Scrollbar mit modernem Anfasser
 
Die Größe des Cursors ergibt sich aus dem Verhältnis von PageSize zu (Max - Min).

jaenicke 23. Jul 2014 22:04

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.

Mattze 24. Jul 2014 05:33

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

himitsu 24. Jul 2014 07:19

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.

Mattze 24. Jul 2014 10:48

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 18:08 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