Autor Beitrag
goldensurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mo 21.03.05 08:27 
Ich habe ein TStringgrid und möchte die Darstellung so haben, dass sich zwar bei Bedarf ein vertikaler Scrollbalken am rechten Rand befindet, jedoch kein horizontaler am unteren Rand - d.h.: ich versuche, alle Spalten (es sind nur zwei) im Resize-Ereignis des übergeordneten Fensters so anzupassen, dass die Spalten genau in den Clientbereich passen.
Eine Berechnungsvorschrift, anhand der ich erkennen kann, wann ein vertikaler Scrollbalken angezeigt wird, habe ich schon:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TfrmWP.Splitter1Moved(Sender: TObject);
var ScrollbarWidth: Integer;
begin
  with sgWP do
  begin
    //Testen, ob ein vertikaler Scrollbar angezeigt wird
    if RowCount * (GridLineWidth + DefaultRowHeight) + 3 > sgWP.Height
    then ScrollbarWidth := 19  //19 = Breite des Scrollbars???
    else ScrollbarWidth := 0;
    ColWidths[1] := sgWP.Width - 62 - ScrollbarWidth;
  end;
end;


Wie stelle ich aber fest, wie breit der Scrollbalken eigentlich ist? Auf einem System hat ein Wert von 16 genau gepasst; auf einem anderen System muss ich schon 19 abziehen.
Gibt es eine Möglichkeit, den Wert je nach System zu ermitteln?

Gruss,
Ralf
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mo 21.03.05 08:40 
Hallo,

mit der API-Funktion GetSystemMetrics.

Beispiele dazu dürften im Forum genügend vorhanden sein: Suche in: Delphi-Forum, Delphi-Library GETSYSTEMMETRICS

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)