Einzelnen Beitrag anzeigen

daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: ScrollBar bei DBGrid immer anzeigen

  Alt 20. Apr 2007, 10:39
Das Gegenteil dessen, was Du in Beitrag 2 vorgestellt hast, sähe wie folgt aus:

Delphi-Quellcode:
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
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:

Delphi-Quellcode:
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
MfG
  Mit Zitat antworten Zitat