Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Stringgrid: Spaltenbreiten exakt anpassen


goldensurfer - Mo 21.03.05 08:27
Titel: Stringgrid: Spaltenbreiten exakt anpassen
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:


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 - 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