Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Scrollbar breiter


Bronstein - Mo 11.10.10 11:51
Titel: Scrollbar breiter
Hallo,
ich habe eine Anwendung gemacht, die mit einem Touch Screen bedient werden soll.

Jetzt habe ich das Problem, dass man nur sehr schlecht scrollen kann. Deshalb möchte ich diese breiter machen.

Habe jetzt schon unter Windows->Anzeige die größe der Scrollbar geändert, jedoch hat das keinen Einfluss auf meine Anwendung (StringGrid, WebBrowser).
hat jemand eine Idee?


chrisw - Mo 11.10.10 14:54

Viellecht mal mit TScrollbox versuchen !


Bronstein - Mo 11.10.10 15:53

bei der TSrollbox ist es auch nicht anderst


FinnO - Mo 11.10.10 16:42

Welches Delphi verwendest du denn? Delphi 2010 z.B. unterstützt für soetwas auch multitouch und Gestures...

LG


chrisw - Di 12.10.10 07:26

Ich weiss ja nicht, wie es bei dir ist, aber bei mir kann ich in einer Scrollbox (TScrollBox) mit Buttonsize die Höhe bzw. Breite der Scrollbar verändern !!


Bronstein - Di 12.10.10 14:16

Hallo,
ich verwende Delphi 2006.

Ich habe mal folgendes versucht, dass die Balkengröße immer verdoppeln sollte:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.ScrollBox2.VertScrollBar.ButtonSize := Form1.ScrollBox2.VertScrollBar.ButtonSize + Form1.ScrollBox2.VertScrollBar.ButtonSize;
  Form1.ScrollBox2.HorzScrollBar.ButtonSize := Form1.ScrollBox2.HorzScrollBar.ButtonSize + Form1.ScrollBox2.HorzScrollBar.ButtonSize;
  Form1.VertScrollBar.ButtonSize := Form1.VertScrollBar.ButtonSize + Form1.VertScrollBar.ButtonSize;
  Form1.HorzScrollBar.ButtonSize := Form1.HorzScrollBar.ButtonSize + Form1.HorzScrollBar.ButtonSize;
  Form1.Refresh;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.ScrollBox2.VertScrollBar.ButtonSize := 20;
  Form1.ScrollBox2.HorzScrollBar.ButtonSize := 20;
  Form1.VertScrollBar.ButtonSize := 20;
  Form1.HorzScrollBar.ButtonSize := 20;
end;

Es funktioniert aber nicht, sprich die größe ändert sich nicht!


Bronstein - Do 21.10.10 15:45

Hat jemand noch eine Idee wie man das Problem lösen könnte?


FinnO - Do 21.10.10 16:14

Moin,

vielleicht geht o.g. Variante nur bei deaktivierten Laufzeit-Themes.?!

LG


Tropby - Do 21.10.10 16:17

Hallo,

es gibt noch die Möglichkeit hiermit was zu machen.

Dies Funktioniert jedoch nicht im TWebBrowser und ändert auch Systemweit die Einstellung. Also alle Scrollbalken auch in anderen Programmen werden dadurch größer:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  ncm: TNonClientMetrics;
  ....
  ncm.cbSize := SizeOf(TNonClientMetrics);
  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @ncm, 0);

  Label1.Caption := IntToStr(ncm.iScrollWidth);
  ncm.iScrollWidth := ncm.iScrollWidth + 5;
  SystemParametersInfo(SPI_SETNONCLIENTMETRICS, SizeOf(ncm), @ncm, SPIF_SENDCHANGE);


Wenn das auch nicht geht, dann kann ich nur Sagen, dass da wohl ein eigenes Control her muss


jaenicke - Do 21.10.10 16:47

Hier habe ich mal eine eigene Komponente veröffentlicht, da kannst du alles anpassen:
http://www.delphi-forum.de/viewtopic.php?t=64090