Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid: Breite der vertikalen Scrollbar ermitteln (https://www.delphipraxis.net/184064-stringgrid-breite-der-vertikalen-scrollbar-ermitteln.html)

Helmi 23. Feb 2015 12:58

StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Hallo,

gibt es die Möglichkeit die Breite der vertikalen Scrollbar eines StringGrid zu ermitteln?

Ich hatte gehofft, dass sich ClientWidth dadurch ändert, aber leider bleibt der Wert mit/ohne Scrollbar gleich

Was will ich eigentlich tun?
(für manche eine schwierige Frage)

Wenn die vertikale Scrollbar sichtbar ist, dann möchte ich die Breiten der Spalten des StringGrids reduzieren.

Ob eine Scrollbar sichtbar ist, mach ich mit diesem Code:
Delphi-Quellcode:
if (GetWindowlong(Stringgrid1.Handle, GWL_STYLE) and WS_VSCROLL) <> 0 then
   ShowMessage('Vertical scrollbar is visible!');

if (GetWindowlong(Stringgrid1.Handle, GWL_STYLE) and WS_HSCROLL) <> 0 then
   ShowMessage('Horizontal scrollbar is visible!');
(gefunden bei den Schweizern)

ConnorMcLeod 23. Feb 2015 13:04

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Schau Dir mal TGridDrawInfo an; vllt ersparst Du Dir dann das Gefummel mit den Scrollbars.
Besonders TGridDrawInfo.Horz.LastFullVisibleCell u dgl ...

DeddyH 23. Feb 2015 13:06

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Versuch es mal mit GetSystemMetrics:
Zitat:

SM_CXVSCROLL

The width of a vertical scroll bar, in pixels.

Helmi 23. Feb 2015 13:07

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1291101)
Schau Dir mal TGridDrawInfo an; vllt ersparst Du Dir dann das Gefummel mit den Scrollbars.
Besonders TGridDrawInfo.Horz.LastFullVisibleCell u dgl ...

klingt interessant - werd ich mir mal zu Gemüte führen

hab aber bei den Schweizern noch einen Code für die Breite/Höhe gefunden link

ConnorMcLeod 23. Feb 2015 13:22

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Viele Wege führen zum Kompilat.

Was mich bei der Scrollbar-Überlegung stört ist, daß die Scrollbars nicht Teil des Problems sind, sondern nur ein Symptom.

Das Problem ist ein zu breites Grid, das angepaßt werden muß.

Wenn aus diversen Gründen grundsätzlich keine Scrollbars angezeigt würden (Optionen verändert etc.), dann hättest Du keine Scrollbars, aber das Grid wäre immer noch zu breit.
Über die GridDrawInfo und LeftCol weißt Du alles, was Du wissen mußt:
Delphi-Quellcode:
var
  DrawInfo: TGridDrawInfo;
begin
  grdDemo.CalcDrawInfo(DrawInfo);

Helmi 23. Feb 2015 13:29

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1291110)
Viele Wege führen zum Kompilat.

Was mich bei der Scrollbar-Überlegung stört ist, daß die Scrollbars nicht Teil des Problems sind, sondern nur ein Symptom.

Das Problem ist ein zu breites Grid, das angepaßt werden muß.

Wenn aus diversen Gründen grundsätzlich keine Scrollbars angezeigt würden (Optionen verändert etc.), dann hättest Du keine Scrollbars, aber das Grid wäre immer noch zu breit.
Über die GridDrawInfo und LeftCol weißt Du alles, was Du wissen mußt:
Delphi-Quellcode:
var
  DrawInfo: TGridDrawInfo;
begin
  grdDemo.CalcDrawInfo(DrawInfo);

bei mir gibt es CalcDrawInfo nicht

ConnorMcLeod 23. Feb 2015 13:32

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Ich habe D2010, da heißt es in Grids.pas / Zeile 2465:

Delphi-Quellcode:
procedure TCustomGrid.CalcDrawInfo(var DrawInfo: TGridDrawInfo);

Helmi 23. Feb 2015 13:49

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
in XE2 ist CalcDrawInfo protected

DeddyH 23. Feb 2015 13:56

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Naja, da kommt man ja noch drum herum.

Helmi 23. Feb 2015 13:58

AW: StringGrid: Breite der vertikalen Scrollbar ermitteln
 
Zitat:

Zitat von DeddyH (Beitrag 1291116)
Naja, da kommt man ja noch drum herum.

verrätst du mir auch wie?
(habs ned so mit knacken :-) )


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.
Seite 1 von 2  1 2      

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