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 TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar? (https://www.delphipraxis.net/144775-tstringgrid-colwidth%5B1%5D-%3D500-keine-horizscrollbar.html)

r29d43 16. Dez 2009 10:39


TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar?
 
Hallo,

eigentlich ist mein Problem im Betreff schon ausreichend genug beschrieben: Aktuell arbeite ich mit einem StringGrid bei welchem die ColWidth[1] je nach Datensatz unterschiedlich dick ausfallen kann. Dabei übersteigt die Summe aller ColWidths oft die Gesamt-Width des Controls (StringGrid.Width). Trotzdem aber taucht in diesem Fällen nie eine horizontale ScrollBar auf!!! ...Was allerdings doch so sein müsste, oder etwa nicht?

Die "ScrollBars"-Property habe ich hierfür jedenfalls schon auf "ssBoth" gesetzt. Aber, wie gesagt, leider ohne Erfolg.

Gibt es da etwa noch irgendeine andere Property o.ä. mit der das Ganze da zuerst einzuschalten ist?

Thx für alle sachdienlichen Hinweise :-) jedenfalls schonmal im Voraus.
rXdY

hoika 16. Dez 2009 14:13

Re: TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar
 
Hallo,

die Scrollbar sollte eigentlich kommen.
Mache doch mal eine klitzekleines Minimal-Beipiel und hänge an den 1. Thread an.

Vorher vielleicht noch ein

Application.ProcessMessages

nach dem ColWidth machen.
Das sollte aber nicht die Lösung sein.

Bsp.
Neue Anwendung
Grid auf Form (mit Grid.Align alClient sieht schöner aus)
Und im FormCreatewie unten.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    Grid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Grid1.Align:= alClient;
  Grid1.ColWidths[1]:= Grid1.Width*2;
end;

end.

Die Ursache bei dir könnte sein, dass du nicht mit Alignment arbeitest
und das Grid viel breiter ist als du denkst.


Heiko

r29d43 16. Dez 2009 17:54

Re: TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo (& thx fürs antworten),

ich habe exakt dein Micro-Beispiel mal selbst ausprobiert: Leider ohne dass bei mir da eine horizontale ScrollBar aufgetaucht wäre :(. (Habe das Micro-Prog aber sicherheitshalber trotzdem noch als Zip-Datei angehängt).

Bliebe als Erklärung ansonsten wohl nur noch mehr übrig, dass es unter Turbo-Delphi gar nicht geht? Oder vielleicht auch nur nicht in Verbindung mit dem Vista? Wie kriegt man denn eigentlich raus, ob da diesbezüglich irgend etwas bekannt ist?

rXdY

hoika 16. Dez 2009 19:02

Re: TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar
 
Hallo,

setze mal ColCount auf >=3, dann geht es.
Warum, k.A.

Wird das FixedCol auf 0 gesetzt, geht es auch mit ColCount=2.


Man kann also sagen,
das es bei einer einzigen Nicht-FixedCol nicht geht.


Heiko

r29d43 16. Dez 2009 21:32

Re: TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar
 
Zitat:

Zitat von hoika
Wird das FixedCol auf 0 gesetzt, geht es auch mit ColCount=2.

In der Tat :-D , thx!



Zitat:

Zitat von hoika
Man kann also sagen,
das es bei einer einzigen Nicht-FixedCol nicht geht.

Das hat sicher auch was damit zu tun, dass das TStringGrid leider kein Smooth-Scrollen kennt, und deswegen eine jeweils nächste Col pro Scroll-Akt sowieso immer nur an den Punkt weiterscrollen kann, an dem vorher noch die erste Nicht-Fixed Col gestanden hat. D.h.: Ist bis zur letzten Col durchgescrollt oder eben nur eine einzige Col da, dann gibt es ohne ein smooth-scroll da einfach gar nichts mehr zu scrollen.

Sowas hat allerdings auch einen gewissen Nachteil, denn wenn die letzte Col (oder irgendeine Col) länger ist als das StringGrid.Width selbst, dann hat man keine Chance mehr, den dortigen Text überhaupt noch auslesen zu können. Echt unbefriedigend irgendwie :? . Wird wirklich Zeit, dass diese TStringGrid-Controls endlich auch mal das Smooth-Scrollen lernen! :mrgreen: :mrgreen: :mrgreen:

rXdY

hoika 18. Dez 2009 09:45

Re: TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar
 
Hallo,

ich habe mir angewöhnt,
unterhalb des Grids noch ein Label zu packen,
das den Wert der aktuellen Zelle anzeigt.

Da meine Grids noch frei definierbare Spaltenbreiten haben,
ist oft auch nicht der ganze Inhalt sichtbar.


Heiko


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