AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TStringGrid: ColWidth[1]:=500 -> keine horizScrollBar?

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

Ein Thema von r29d43 · begonnen am 16. Dez 2009 · letzter Beitrag vom 18. Dez 2009
Antwort Antwort
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#1

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

  Alt 16. Dez 2009, 11:39
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 16. Dez 2009, 15:13
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
Heiko
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 16. Dez 2009, 18:54
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
Angehängte Dateien
Dateityp: zip tstringgridproblem_109.zip (244,4 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 16. Dez 2009, 20:02
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
Heiko
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#5

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

  Alt 16. Dez 2009, 22:32
Zitat von hoika:
Wird das FixedCol auf 0 gesetzt, geht es auch mit ColCount=2.
In der Tat , thx!



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!

rXdY
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 18. Dez 2009, 10:45
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
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:34 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