Größe von Scrollbars

Hallo Leute,

Delphi 2005 Newbee-Frage:
kann ich die Größe der (z.B. vertikalen) Scrollbar irgendwo auslesen und ggf. auch manuell setzen? Ich finde in der Hilfe nichts dazu (stelle mich vielleicht auch einfach zu doof an, kann auch sein).

TIA,

Tim

Hallo Tim,

TScrollbar hat wie alle TControl die Eigenschaften Height und Width. Die werden aber üblicherweise nie gesetzt, da sich z.B. die Höhe einer vertikalen Scrollleiste nach der Höhe des parents richtet (z.B. Listbox) und die Breite nach den allgemeinen Windows-Stil-Angaben.

Ob das Setzen was bewirkt und welche Effekte es sonst gibt (wenn sich z.B. die Zahl der Einträge in der Listbox ändert), musst du probieren - in der Hilfe steht auch nichts davon, dass es NICHT geht.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

hatte mich glaube ich etwas mißverständlich ausgedrückt. Height und Width verändern geht natürlich, sieht aber bekloppt aus. Ich meinte die Größe des Sliders/Schiebers innerhalb der Scrollbar. Die wird ja, z.B. in einem TMemo, automatisch gesetzt. Was ist, wenn ich die manuell verändern möchte?

Der Grund für meine Frage kommt eigentlich aus einer anderen Ecke. Ich schreibe u.a. gerade ein Programm mit einer Sprache namens Clarion. Da bräuchte ich es, wird aber nicht unterstützt. Ich wollte halt mal wissen, ob man das mit Delphi hinkriegt.

Gruß,

Tim

Hallo Tim,

Ich meinte die Größe des Sliders/Schiebers innerhalb der
Scrollbar. Die wird ja, z.B. in einem TMemo, automatisch
gesetzt. Was ist, wenn ich die manuell verändern möchte?

Die Scrollbar-Größe der Standard-Komponenten wird von Windows verwaltet. Du hast zwei Möglichkeiten:

  1. Du schreibst selbst eine Scrollbar, die einzig saubere Lösung

  2. Du änderst die Systemeinstellung temporär über die Windows-API-Funktion SystemParametersInfo. Allerdings werden so andere laufende Programme auch davon beeinflusst (großer Nachteil!), das heißt Du musst _zumindest_ am Programmende die Scrollbars wieder in ihren Ursprungszustand bringen. Vielleicht wäre es auch nicht dumm dies zu tun, sobald deine Applikation den Fokus verliert (Nebeneffekte sind quasi vorprogrammiert, Vorsicht ist geboten)

    procedure TForm1.Button1Click(Sender: TObject);
    var ncm: NonClientMetrics;
    begin
    ncm.iScrollWidth := 6;
    SystemParametersInfo(SPI_SETNONCLIENTMETRICS, SizeOf(ncm), @ncm, SPIF_SENDCHANGE);
    end;

Ich schreibe u.a. gerade ein Programm mit einer Sprache
namens Clarion. Da bräuchte ich es, wird aber nicht
unterstützt.

Clarion höre ich zwar heute zum ersten Mal (da gabs mal Autoradios, nicht? ^^), aber da SystemParametersInfo eine Windows-API-Funktion ist, dürftest Du sie wohl nicht nur in Delphi vorfinden.

Schönen Gruß,
Rudy

… Ich meinte die Größe des Sliders/Schiebers innerhalb der
Scrollbar. Die wird ja, z.B. in einem TMemo, automatisch
gesetzt. Was ist, wenn ich die manuell verändern möchte?

Hallo Tim,

grundsätzlich geht immer alles. Umgekehrt habe ich das schon gemacht, nämlich in alten Anwendungen mit konstanter Thumb-Grösse diese verändert.

Die Methoden und Eigenschaft von TScrollBar reichen wohl nicht dafür aus, man wird nicht darum herumkommen, Windows-Messages (WM_HSCROLL,WM_VSCROLL) abzufangen und mit SetScrollInfo die Parameter zu manipulieren. Dazu ist eine Menge Arbeit erforderlich und gute Kenntnisse des W32-APIs.

Es ist in jedem Fall zweckmässig, dazu ein neues Control zu entwickeln (TSizeableScrollBar oder so).

Gruss Reinhard

Hallo Reinhard und Rudy,

danke für eure Tips, werde sie ausprobieren.

Rudy,

Clarion höre ich zwar heute zum ersten Mal (da gabs mal
Autoradios, nicht? ^^),

Stimmt (das mit den Autoradios). Ist aber auch eine Programmiersprache, die vorwiegend für Datanbank-Apps. verwendet wird. Erstellt dir sehr viel Code quasi-automatisch über sog. Templates. Die Sprache Clarion selbst ist so eine Art BASIC-Pascal-Mischmasch. Das Ganze ist u.a. aus der Firma Jensen & Partners International (JPI) hervorgegangen, die ihrerseits das Compilerteam von Borland darstellten, aber die Firma irgendwann Mitte der 80er im Streit verlassen haben. Produkte waren u.a. TopSpeed Modula-2 (16-bittig, lief unter DOS).

Die heutige Inhaberin von Clarion heißt Soft-Velocity (www.softvelocity.com). Daß du noch nie was von denen gehört hast beruht IMO auf der Tatsache, daß SV nicht nur eine schlechte sondern sozusagen gar keine Marketingabteilung zu haben scheint. Mit anderen Worten, die schreiben sehr gute Software, verraten das aber keinem.

Wenn du dir Clarion einmal anschauen möchtest, der deutsche Distributor, Fenger IT, kann dir eine CD mit einerr Demo-Version der letzten Clarion-Version zuschicken (info *at* fenger-it.de, Ansprechpartner ist Axel Fenger). Wenn du viel mit Datenbanken arbeitest, ist das Ganze durchaus einen Blick wert.

Grüße,

Tim

1 Like

Hallo Tim,

Stimmt (das mit den Autoradios). Ist aber auch eine
Programmiersprache, die vorwiegend für Datanbank-Apps. […]
Die heutige Inhaberin von Clarion heißt Soft-Velocity
(http://www.softvelocity.com). […] Wenn du viel
mit Datenbanken arbeitest, ist das Ganze durchaus einen Blick
wert.

Vielen Dank für die Info, ich werds mir mal ansehen. Ich glaube allerdings, ich werde nur schwer von Delphi loskommen - die wacklige IDE macht mir dort zwar zu schaffen, aber sonst bin ich recht zufrieden.

Schönen Gruß und viel Erfolg,
Rudy