AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ScrollBar bei DBGrid immer anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

ScrollBar bei DBGrid immer anzeigen

Ein Thema von me2u · begonnen am 17. Apr 2007 · letzter Beitrag vom 25. Sep 2008
Antwort Antwort
me2u
(Gast)

n/a Beiträge
 
#1

ScrollBar bei DBGrid immer anzeigen

  Alt 17. Apr 2007, 18:28
Datenbank: MS Jet 4.0 OLE • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#2

ScrollBar bei DBGrid immer anzeigen

  Alt 19. Apr 2007, 19:15
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

hier

kann damit vlt. jemand was anfangen und das ins gegenteil umwandeln???

mfg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ScrollBar bei DBGrid immer anzeigen

  Alt 19. Apr 2007, 19:18
Hast du schon
 SetWindowLong(Handle, GWL_STYLE, Style and Scrollstyles); versucht?
Markus Kinzler
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#4

Re: ScrollBar bei DBGrid immer anzeigen

  Alt 19. Apr 2007, 21:07
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
  Mit Zitat antworten Zitat
daddy

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

Re: ScrollBar bei DBGrid immer anzeigen

  Alt 20. Apr 2007, 09: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
me2u
(Gast)

n/a Beiträge
 
#6

Re: ScrollBar bei DBGrid immer anzeigen

  Alt 20. Apr 2007, 14:20
es geht =))

danke euch allen für die Mühe...

mfg
  Mit Zitat antworten Zitat
entwickler-tbdevelop.com

Registriert seit: 25. Sep 2008
1 Beiträge
 
#7

Re: ScrollBar bei DBGrid immer anzeigen

  Alt 25. Sep 2008, 14:47
Hi, this is similar & works well:

Delphi-Quellcode:
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.
Best regards.

(jope)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 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