Delphi-PRAXiS

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 Erkennen ob Scrollbar in Listview sichtbar ist (https://www.delphipraxis.net/66631-erkennen-ob-scrollbar-listview-sichtbar-ist.html)

backdraft 1. Apr 2006 17:54


Erkennen ob Scrollbar in Listview sichtbar ist
 
Hallo,

gibt es eine Funktion die ich aufrufen kann, um zu erkennen, ob die Scrollbar sichtbar ist, oder nicht?

marabu 1. Apr 2006 18:53

Re: Erkennen ob Scrollbar in Listview sichtbar ist
 
Hallo Oliver,

jetzt schon:

Delphi-Quellcode:
function HasScrollBar(hwnd: HWND): Boolean;
begin
  Result := not (GetWindowLong(hwnd, GWL_STYLE) and (WS_HSCROLL or WS_VSCROLL) = 0);
end;
Grüße vom marabu

backdraft 1. Apr 2006 19:22

Re: Erkennen ob Scrollbar in Listview sichtbar ist
 
Hey cool, funktioniert. Bekomm ich jetzt auch noch irgendwie die breite der Scrollbar?

toms 1. Apr 2006 19:30

Re: Erkennen ob Scrollbar in Listview sichtbar ist
 
Hi,

Solltest du mittels der GetSystemMetrics API herausfinden koennen.

MrKnogge 1. Apr 2006 19:38

Re: Erkennen ob Scrollbar in Listview sichtbar ist
 
Hi,

falls du nur die Spaltenbreite beim anzeigen der vertikalen Scrollbar anpassen möchtst, um zu verhindern, dass die horizontale ebenfalls sichtbar wird, so hilft folgendes:
Delphi-Quellcode:
Listview1.Columns[X].width := ColumnHeaderWidth; // Columns[X] ist die Spalte welche Autosize auf true hat.
gruss

Jens Schumann 3. Apr 2006 19:47

Re: Erkennen ob Scrollbar in Listview sichtbar ist
 
Hallo,
ich habe in den Tifen meines Archives noch eine Lösung gefunden

Delphi-Quellcode:
function HasScrollBarEx(hwnd: HWND; ScrollBarOrientation : Integer): Boolean;
var
  ScrollBarInfo : TSCROLLBARINFO;
begin
  FillChar(ScrollBarInfo,SizeOf(TScrollBarInfo),0);
  ScrollBarInfo.cbSize:=SizeOf(TSCROLLBARINFO);
  If GetScrollBarInfo(hwnd,ScrollBarOrientation,ScrollBarInfo) then
    Result:=Not ScrollBarInfo.rgstate[0] AND STATE_SYSTEM_INVISIBLE=STATE_SYSTEM_INVISIBLE
      else
        Result:=False;
end;
Wird aufgerufen mit HasScrollBarEx(Hanlde,OBJID_HSCROLL) oder HasScrollBarEx(Hanlde,OBJID_VSCROLL)


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