![]() |
Datenbank: MS Jet 4.0 OLE • Zugriff über: ADO
ScrollBar bei DBGrid immer anzeigen
hallo,
ich wollte mal fragen ob es möglich ist bei einem DBGrid die vertikale ScrollBar so einzustellen dass sie - unabhängig von der menge der datensätze - diese immer anzeigt.. standartmäßig geht sie ja weg wenn keine benötigt wird.. in so einem fall wäre natürlich optimal diese zu deaktivieren... weil so wie es jetzt ist ist es ziemlich doof.. wenn sie verschwindet bleibt eine lücke... kann mir da jemand helfen?? Mfg und vielen dank |
ScrollBar bei DBGrid immer anzeigen
hmmm.... geht das net oder weis nur keiner wie???
aber eigentlich müsste es doch gehen, weil dauerhaft ausblenden kann man sie ja auch... habe dazu dies gefunden ![]() kann damit vlt. jemand was anfangen und das ins gegenteil umwandeln??? mfg |
Re: ScrollBar bei DBGrid immer anzeigen
Hast du schon
Delphi-Quellcode:
versucht?
SetWindowLong(Handle, GWL_STYLE, Style and Scrollstyles);
|
Re: ScrollBar bei DBGrid immer anzeigen
Quelle: Win32 Developer's References
BOOL ShowScrollBar( HWND hWnd, // handle of window with scroll bar -> DbGrid.Handle int wBar, // scroll bar flag -> SB_BOTH BOOL bShow // scroll bar visibility flag -> True ); - Arno |
Re: ScrollBar bei DBGrid immer anzeigen
Das Gegenteil dessen, was Du in Beitrag 2 vorgestellt hast, sähe wie folgt aus:
Delphi-Quellcode:
Oder du bindest selber eine neue Komponente in die Komponentenpalette ein, bei der Du über die neuen Eigenschaften "AlwaysShowVScroll" und "AlwaysShowHScroll" im Objektinspektor festlegen kannst, welche der beiden Scrollbalken permanent eingeblendet werden sollen:
TVScrollDBGrid = class(TDBGrid)
private procedure WMNCCalcSize(var Msg: TMessage); message WM_NCCALCSIZE; end; procedure TVScrollDBGrid.WMNCCalcSize(var Msg: TMessage); // Grundsätzlich den vertikalen Scrollbalken anzeigen var Style : Integer; begin Style := GetWindowLong(Handle, GWL_STYLE); if (Style and WS_VSCROLL) = 0 then SetWindowLong(Handle, GWL_STYLE, Style or WS_VScroll); inherited; end; // WMNCCalcSize
Delphi-Quellcode:
MfG
TFlexibleScrollDBGrid = class(TDBGrid)
private FAlwaysShowVScroll: Boolean; FAlwaysShowHScroll: Boolean; procedure WMNCCalcSize(var Msg: TMessage); message WM_NCCALCSIZE; published property AlwaysShowVScroll: Boolean read FAlwaysShowVScroll write FAlwaysShowVScroll; property AlwaysShowHScroll: Boolean read FAlwaysShowHScroll write FAlwaysShowHScroll; end; procedure TFlexibleScrollGrid.WMNCCalcSize(var Msg: TMessage); var Style, ScrollStyles : Integer; begin // An ScrollStyles übergeben, welche Scrollbars permanent zu sehen sein sollen ScrollStyles := 0; if FAlwaysShowVScroll then ScrollStyles := WS_VSCROLL; if FAlwaysShowHScroll then ScrollStyles := ScrollStyles or WS_HSCROLL; // Prüfen, ob sie bereits angezeigt werden Style := GetWindowLong(Handle, GWL_STYLE); // Wenn nicht, dann die Anzeige aktivieren if (FAlwaysShowVScroll and ((Style and WS_VSCROLL) = 0)) or (FAlwaysShowHScroll and ((Style and WS_HSCROLL) = 0)) then SetWindowLong(Handle, GWL_STYLE, Style or ScrollStyles); inherited; end; // WMNCCalcSize |
Re: ScrollBar bei DBGrid immer anzeigen
es geht =))
danke euch allen für die Mühe... :thumb: mfg |
Re: ScrollBar bei DBGrid immer anzeigen
Hi, this is similar & works well:
Delphi-Quellcode:
Best regards.
unit ScrollDBGrid;
interface uses Windows, Messages, StdCtrls, DbGrids; type TScrollDBGrid = class(TDbGrid) private FAlwaysScroll: TScrollStyle; procedure SetAlwaysScroll(const Value: TScrollStyle); procedure WMNCCalcSize(var Msg: TMessage); message WM_NCCALCSIZE; published property AlwaysScroll: TScrollStyle read FAlwaysScroll write SetAlwaysScroll default ssNone; end; implementation { TFlexibleScrollDBGrid } procedure TScrollDBGrid.SetAlwaysScroll(const Value: TScrollStyle); begin if not (FAlwaysScroll = Value) then begin FAlwaysScroll := Value; RecreateWnd; end; end; procedure TScrollDBGrid.WMNCCalcSize(var Msg: TMessage); var NewStyle: Integer; begin NewStyle := GetWindowLong(Handle, GWL_STYLE); if ([ScrollBars, FAlwaysScroll] * [ssHorizontal, ssBoth] <> []) then NewStyle := NewStyle or WS_HSCROLL; if ([ScrollBars, FAlwaysScroll] * [ssVertical, ssBoth] <> []) then NewStyle := NewStyle or WS_VSCROLL; SetWindowLong(Handle, GWL_STYLE, NewStyle); inherited; end; end. (jope) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz