Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Buttongröße der Scrollbalken verändern (https://www.delphipraxis.net/185475-buttongroesse-der-scrollbalken-veraendern.html)

LokutusvB 15. Jun 2015 10:06

Buttongröße der Scrollbalken verändern
 
Moinsen,

wie ich die Scrollbalkenbreite von Komponenten in einer Delphi-Anwendung ändern kann, konnte ich bereits herausfinden. Das lässt sich mittels SystemParametersInfo lösen. Aber wie kann ich nun zusätzlich die Höhe der vertikalen und die Breite der horizontalen Buttons der Scrollbalken vergrößern? Das müßte dann ja auch mit SystemParametersInfo gehen, oder?

Welche der hier gelisteten Parameter müßte ich nutzen? https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

SPI_GETNONCLIENTMETRICS und SPI_SETNONCLIENTMETRICS sind es schon mal nicht. Zumindest konnte ich darunter keine entsprechende Variable finden.

himitsu 15. Jun 2015 10:35

AW: Buttongröße der Scrollbalken verändern
 
PageSize in der ScrollBar Komponente?

Bei 0 ist das quadratisch und sonst versucht Windows den Balken über PageSize und die Gesamtgröße anzupassen.
Der Balken ist praktisch verhältnismäßig so groß, wie der angezeigt Bereich.

Min=0, Max=99, also Gesamt=100 und PageSize=10, dann ist der Balken 10% so lang, wie der Bereich zwischen den beiden äußeren Knöpfen.

Dalai 15. Jun 2015 11:38

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von LokutusvB (Beitrag 1305106)
wie ich die Scrollbalkenbreite von Komponenten in einer Delphi-Anwendung ändern kann, konnte ich bereits herausfinden. Das lässt sich mittels SystemParametersInfo lösen.

Zitat:

Retrieves or sets the value of one of the system-wide parameters.
Mmmh... Overkill? Schlechtes Design?

MfG Dalai

LokutusvB 15. Jun 2015 12:04

AW: Buttongröße der Scrollbalken verändern
 
Dann habe ich mich falsch ausgedrückt. Ich schreibe nicht von der ScrollBar-Komponente, sondern von den Scrollbars in ListViews, Listboxen usw. . Schon hier habe ich eine Zeit lang im Netz gesucht, um eine Möglichkeit zu finden, die Breite ändern zu können. Denn das ist laut der Infos, die man finden kann, nicht trivial, da diese Komponenten die Systemkomponenten von Windows nutzen. Deswegen denke ich mir, kann ich nun die Buttonhöhe bzw. -Breite ebenfalls SystemParameterSInfo ändern. Oder geht das anders und besser?

Luckie 15. Jun 2015 12:24

AW: Buttongröße der Scrollbalken verändern
 
Du löst ein lokales Problem mit einer globalen Lösung? Sehe ich das richtig? Ich weiß nicht, ob das so im Sinne des Anwenders ist, wenn auf einmal alle seine Scrollbars deinen Wünschen entsprechen. Bedenke auch, dass eventuell behinderte Anwender das Aussehen und die Bedienbarkeit von Windows ihren Bedürfnissen angepasst haben.

Der schöne Günther 15. Jun 2015 12:50

AW: Buttongröße der Scrollbalken verändern
 
Es gibt dafür keine Lösung. Die Scrollbalken sind Windows-Komponenten und die kannst du nur global anpassen. Außerdem dauert das, je nach offenen Fenstern, auch eine ganze Weile.

Bernhard Geyer 15. Jun 2015 13:30

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1305134)
Es gibt dafür keine Lösung. Die Scrollbalken sind Windows-Komponenten und die kannst du nur global anpassen. Außerdem dauert das, je nach offenen Fenstern, auch eine ganze Weile.

Das mag für antike Delphi-Versionen gelten.
Mit neueren Versionen und den (eingebauten) Skinning/Theming ist sowas über das Skin/Theme relativ einfach für alle Controls der eigenen Anwendung anpassbar.

EWeiss 15. Jun 2015 13:37

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1305134)
Es gibt dafür keine Lösung. Die Scrollbalken sind Windows-Komponenten und die kannst du nur global anpassen.

Wie Bernhard schon sagt klar geht das.

gruss

LokutusvB 15. Jun 2015 13:38

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1305134)
Es gibt dafür keine Lösung. Die Scrollbalken sind Windows-Komponenten und die kannst du nur global anpassen. Außerdem dauert das, je nach offenen Fenstern, auch eine ganze Weile.

Genau das macht SystemParameterSInfo und genau das ist bei dieser Anwendung auch in meinem Sinne, da das Betriebssystem während der Anwendungsausführung nicht "angerührt" wird und man anders die Breite der Scrollbalken nicht ändern kann.

Und ja Luckie, das ist im Sinne das Anwenders. Kennt jemand den GET/SET Parameter, den man verwenden muß?

Der schöne Günther 15. Jun 2015 13:58

AW: Buttongröße der Scrollbalken verändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich stehe auf dem Schlauch. Ich mache das immer so:

Delphi-Quellcode:
var
   nonClientMetrics: TNonClientMetrics;
begin
   nonClientMetrics.cbSize := SizeOf(TNonClientMetrics);
   SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nonClientMetrics, 0);

   nonClientMetrics.iScrollWidth := 99;
   nonClientMetrics.iScrollHeight := 99;


   SystemParametersInfo(
      SPI_SETNONCLIENTMETRICS,
      SizeOf(nonClientMetrics),
      @nonClientMetrics,
      0   // This parameter can be zero if you do not want to
         // update the user profile or broadcast the
         // WM_SETTINGCHANGE message
   );
end;
Heraus kommt dann so etwas: Anhang 43364

EWeiss 15. Jun 2015 14:03

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1305138)
Ich stehe auf dem Schlauch. Ich mache das immer so:

Delphi-Quellcode:
var
   nonClientMetrics: TNonClientMetrics;
begin
   nonClientMetrics.cbSize := SizeOf(TNonClientMetrics);
   SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nonClientMetrics, 0);

   nonClientMetrics.iScrollWidth := 99;
   nonClientMetrics.iScrollHeight := 99;


   SystemParametersInfo(
      SPI_SETNONCLIENTMETRICS,
      SizeOf(nonClientMetrics),
      @nonClientMetrics,
      0   // This parameter can be zero if you do not want to
         // update the user profile or broadcast the
         // WM_SETTINGCHANGE message
   );
end;
Heraus kommt dann so etwas: Anhang 43364

Und ist auch richtig so.. ;)
Frage mich nun warum du vorher geschrieben hast das es nicht geht. :)

Aber Achtung! Das verändert alle Scrollbars Systemweit..
Solange bis du es zurücksetzt.
Schlechte Lösung denk ich mal.

gruss

LokutusvB 15. Jun 2015 14:07

AW: Buttongröße der Scrollbalken verändern
 
So mache ich das ja auch. Aber das allein ändert nicht die Breite bzw. Höhe der Steuerungsbuttons für Hoch und Runter bzw. Rechts und Links. Und diese Buttons möchte ich von der Größe her an die Breite der Balken anpassen.

Dalai 15. Jun 2015 14:18

AW: Buttongröße der Scrollbalken verändern
 
Das Problem an SystemParametersInfo ist doch, dass die Änderungen alle Programme betreffen, und zwar selbst dann, wenn man sie nicht broadcasten lässt, denn spätestens, wenn ein anderes Programm einen Broadcast loslässt, werden sie für alle übernommen.

Ein solches Programm würde keine 3 Minuten auf meinem System leben. Daher würde ich gar nicht weiter versuchen, mit dieser Funktion ein Problem zu lösen, das nur für die eigene Anwendung gelten soll.

MfG Dalai

Der schöne Günther 15. Jun 2015 14:21

AW: Buttongröße der Scrollbalken verändern
 
Ja. Deswegen sagte ich doch, dass es nicht geht, das nur für eine Anwendung und nicht systemweit zu machen.

LokutusvB 15. Jun 2015 14:27

AW: Buttongröße der Scrollbalken verändern
 
Ich habe doch schon geschrieben, daß das in diesem Fall total egal ist. Ich hätte nur gern mal die Parameter gewußt. Auf was das Änderungen hat, ist mir klar.

Luckie 15. Jun 2015 19:44

AW: Buttongröße der Scrollbalken verändern
 
Eine Lösung wurde dir doch genannt: Skins. Du musst ja nicht das Hello Kitty Glitzer Skin nehmen.

LokutusvB 16. Jun 2015 07:12

AW: Buttongröße der Scrollbalken verändern
 
Dieses neue (eingebaute) Skinning/Theming ist doch aber für die Firemonkey-Anwendungsentwicklung. Bei VCL wäre mir das neu und ich wüßte auch gar nicht, wo ich in Delphi danach suchen sollte, das Theming der VCL-Komponenten zu ändern.

Davon abgesehen möchte ich für dieses Problem nicht an verschiedenen Stellen "schrauben". Es wird doch ganz bestimmt ein passendes Attribut für die SystemParametersInfo geben.

himitsu 16. Jun 2015 08:50

AW: Buttongröße der Scrollbalken verändern
 
Nein, gibt es nicht. Du stlellst mit einer globalen Option immer alles global um.

Und nein, auch die VCL hat Styles, bzw. gab's das dort auch schon vor'm FMX, über Fremdkomponenten.

LokutusvB 16. Jun 2015 09:09

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von himitsu (Beitrag 1305227)
Nein, gibt es nicht. Du stlellst mit einer globalen Option immer alles global um.

Das verstehe ich noch nicht so ganz. Wenn ich global die Breite der Scrollbalken ändern kann, kann ich dann nicht auch global die Größe der Bottons der Scrollbalken ändern? Oder ist es das, was du mir sagen möchtest, das genau das nicht geht?

Dalai 16. Jun 2015 12:27

AW: Buttongröße der Scrollbalken verändern
 
Ich verstehe das Problem nicht. Die von Günther gezeigte Lösung ändert auch die Buttongröße, wie man unschwer auf dem Screenshot erkennen kann. Diese Variante arbeitet global, was dir laut eigener Aussage egal ist. Trotzdem benutzt du sie nicht. Der Hinweis mit den Skins/Styles geht in eine andere Richtung, um das Dilemma der globalen Lösung für ein lokales Problem zu vermeiden/umgehen.

MfG Dalai

Der schöne Günther 16. Jun 2015 12:41

AW: Buttongröße der Scrollbalken verändern
 
Vielleicht mein er die Buttongrafiken ("Glyphs", "Symbole")? Denn diese werden dadurch nur etwas größer. Wahrscheinlich weil sie in Windows schlichtweg nicht größer vorliegen.

himitsu 16. Jun 2015 12:46

AW: Buttongröße der Scrollbalken verändern
 
Die Buttongrafiken: Bei Google suchenMarlett

BadenPower 16. Jun 2015 13:05

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von Dalai (Beitrag 1305265)
Ich verstehe das Problem nicht. Die von Günther gezeigte Lösung ändert auch die Buttongröße, wie man unschwer auf dem Screenshot erkennen kann.

Er möchte aber auch noch die Buttongröße selbst bestimmen und nicht anhand der Scrollbarbreite vom System automatisch angepasst.

Wenn zum Beispiel die Scrollbar 19 Pixel breit ist, dann sind die Buttons für hoch/runter bzw links/rechts zum Beispiel 15x15 Pixel. Er möchte aber, dass die Buttons 15x40 Pixel bzw. 40x15 Pixel groß sind.

Dalai 16. Jun 2015 13:11

AW: Buttongröße der Scrollbalken verändern
 
Zitat:

Zitat von BadenPower (Beitrag 1305271)
Wenn zum Beispiel die Scrollbar 19 Pixel breit ist, dann sind die Buttons für hoch/runter bzw links/rechts zum Beispiel 15x15 Pixel. Er möchte aber, dass die Buttons 15x40 Pixel bzw. 40x15 Pixel groß sind.

Das liest du woraus? Ich sehe das Gegenteil:
Zitat:

Zitat von LokutusvB (Beitrag 1305142)
[...] die Breite bzw. Höhe der Steuerungsbuttons für Hoch und Runter bzw. Rechts und Links. Und diese Buttons möchte ich von der Größe her an die Breite der Balken anpassen.

Und das ist der Fall auf Günthers Screenshot.

MfG Dalai

LokutusvB 16. Jun 2015 13:18

AW: Buttongröße der Scrollbalken verändern
 
Tut mir leid wegen der Umstände. :( Natürlich passt diese Methode auch die Bottongröße wie gewünscht an, sofern man sie vollständig nutzt. In meinem Qelltext hatte ich nur iScrollWidth angepasst und die iScrollHeight völlig vergessen. :wall:

Der schöne Günther 16. Jun 2015 13:19

AW: Buttongröße der Scrollbalken verändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Toll, jetzt hatte ich extra nochmal einen Screenshot vorbereitet und ihr ward schneller :-(

LokutusvB 16. Jun 2015 13:46

AW: Buttongröße der Scrollbalken verändern
 
Tut mir leid, Günther! :(


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