Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Scrollbar im stringgrid immer sichtbar machen (https://www.delphipraxis.net/4878-scrollbar-im-stringgrid-immer-sichtbar-machen.html)

dopeline 15. Mai 2003 13:35


Scrollbar im stringgrid immer sichtbar machen
 
die scrollbars in meinem stringgrid werden immer dann sichbar, wenn sie benötigt werden. wie sage ich ihm, dass die vertikale scrollbar immer sichtbar sein soll (am bessten so, dass man die hoch/runterpfeile nicht anklicken kann)

wie mache ich das?

Grüße, dopeline :dancer:

static_cast 4. Mär 2005 21:35

Re: Scrollbar im stringgrid immer sichtbar machen
 
Ahoi,

ich bin mal so frei und kram den Thread wieder raus, da mich gerade die selbe Fragte plagt, ich habe ein StringGrind und will die horizontale ScrollBar immer anzeigen lassen, das es am rechten Rand nicht immer so leer ist. Schaut optisch einfach besser aus.

Hoffe es hat in den vergangen knapp 2 Jahren schonmal einer herrausgefunden wie das geht? ;)

Gruß,
Daniel

slang 6. Mär 2005 15:21

Re: Scrollbar im stringgrid immer sichtbar machen
 
Hi!

War selbst auf der Suche und habe grade die Lösung gefunden.
Im OnDrawCell Ereignis kann man mit folgendem Code die Scrollbar erzwingen:


Delphi-Quellcode:
ShowScrollBar(StringGrid1.Handle, SB_VERT, True);
müsste dann also zusammen so aussehen:

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  ShowScrollBar(StringGrid1.Handle, SB_VERT, True); // Vertikale Scrollbar
  ShowScrollBar(StringGrid1.Handle, SB_HORZ, True); // Horizontale Scrollbar
end;
Allerdings sieht die Scrollbar dann benutzbar aus, obwohl man sie nicht benutzen kann.
Wie man sie auf "disabled" oderso setzen kann, weiß ich leider nicht.

MfG

Slang

[Edit]
Mit dem Befehl
Delphi-Quellcode:
  EnableScrollBar(Stringgrid1.Handle, SB_BOTH, ESB_DISABLE_BOTH);
kann man die Scrollbar doch disablen.
Weiteres dazu gibts hier: MSDN

Diese Funktion kann man aber nicht in das OnDrawCell Ereignis einfügen, da die Scrollbar dann immer disabled ist!
[/Edit]

static_cast 6. Mär 2005 22:13

Re: Scrollbar im stringgrid immer sichtbar machen
 
Hi Slang,

super! Des ist es, es geht, Danke :)

slang 8. Mär 2005 18:39

Re: Scrollbar im stringgrid immer sichtbar machen
 
Hi static_cast!

Schön, dass ich mit meinem ersten Beitrag direkt helfen konnte :-D

Man kann die Funktion EnableScrollbar aber doch ins OnDrawCell Ereignis packen.
Man sollte nur prüfen, ob die Anzahl der Reihen * Höhe der Reihen kleiner ist als die Höhe des Stringgrids. Müsste also dann so aussehen:

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  ShowScrollBar(StringGrid1.Handle, SB_VERT, True);
  if StringGrid1.Height > StringGrid1.DefaultRowHeight * StringGrid1.RowCount then
    EnableScrollBar(StringGrid1.handle,SB_VERT,ESB_DISABLE_BOTH)
  else
    EnableScrollBar(StringGrid1.handle,SB_VERT,ESB_ENABLE_BOTH);
end;
MfG Slang

slang 9. Aug 2005 08:00

Re: Scrollbar im stringgrid immer sichtbar machen
 
Ich habe jetzt auf der Arbeit Delphi 2005 Professional.
Leider funktioniert die Sache mit den Scrollbars im Stringgrid hier nicht mehr.
Die Scrollbars flackern immer nur kurz auf und verschwinden direkt wieder.
Liegt das an Delphi 2005? Mit Delphi 7 ging es problemlos.
Ich hoffe mir kann jemand weiterhelfen.

MfG

slang


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