dbgrid und horizontale Scrollbar
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
dbgrid und horizontale Scrollbar
Hallo,
ich habe eine DBGrid. Das zugrundeliegende Dataset hat ein CalcField. Dieses CalcField wird in dem DBGrid angezeigt.
Die Column des CalcFields ist breiter als das DBGrid. Der horizontale Scrollbalken wird zwar angezeigt, er läßt sich aber nicht nach rechts schieben, um den Rest des Inhalts anzuzeigen. Der Scrollbalken springt immer wieder nach links.
Woran könnte das liegen?
Lazarus:1.3
FPC Version: 2.6.2
SVN-Revision: 45478
Danke.
Josef
ich habe eine DBGrid. Das zugrundeliegende Dataset hat ein CalcField. Dieses CalcField wird in dem DBGrid angezeigt.
Die Column des CalcFields ist breiter als das DBGrid. Der horizontale Scrollbalken wird zwar angezeigt, er läßt sich aber nicht nach rechts schieben, um den Rest des Inhalts anzuzeigen. Der Scrollbalken springt immer wieder nach links.
Woran könnte das liegen?
Lazarus:1.3
FPC Version: 2.6.2
SVN-Revision: 45478
Danke.
Josef
Re: dbgrid und horizontale Scrollbar
Kannst du dazu ein Minimalbsp erstellen, was dieses Verhalten zeigt?!
Ich habe mal ein kleines schnell zusammengeklimpertes Beispiel mit TBufDataset angefügt, wo das scrollen (außer beim Editieren) wie gewünscht funktioniert. Zeigt dieses ebenfalls das Problem bei Dir?
Wenn ja, dann ist es evtl. der doch schon betagten Lazarusversion geschuldet (Lazarus Trunk steht bei Rev. 50130 - ein Update wäre mMn generell zu empfehlen).
Ich habe mal ein kleines schnell zusammengeklimpertes Beispiel mit TBufDataset angefügt, wo das scrollen (außer beim Editieren) wie gewünscht funktioniert. Zeigt dieses ebenfalls das Problem bei Dir?
Wenn ja, dann ist es evtl. der doch schon betagten Lazarusversion geschuldet (Lazarus Trunk steht bei Rev. 50130 - ein Update wäre mMn generell zu empfehlen).
- Dateianhänge
-
Bufdataset.zip
- (2.24 KiB) 70-mal heruntergeladen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: dbgrid und horizontale Scrollbar
Wenn ich in den Sourcen von DBGrid die von TCustomGrid geerbte Option goSmoothScroll entferne, erhalte ich sowas wie das vom OP geschilderte Verhalten: Beim Scrollen nach rechts springt das Grid plötzlich in den 2. Spalte. Allerdings wird goSmoothScroll schon seit mindestens 2004, also lange vor Version 1.3, im DBGrid verwendet. Hier ist wahrscheinlich etwas anderes faul als die Lazarusversion.
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: dbgrid und horizontale Scrollbar
Hallo,
so wie michl das gemacht hat, funktioniert ein DGBrid schon. Er hat, soweit ich das sehe, nur zwei "normale" Felder dargestellt. die lassen sich schon nach rechts scrollen.
Das Problem tritt, wie ich schrieb auf, wenn ein Calc-Feld im DBGrid dargestellt wird.
probiers mal mit dem BufDataset und füg ein Calcfield hinzu. DisplayWidth und Size größer als DBGrid Width.
siehe Anhang.
Keine Ahnung, woran das liegt.
Danke.
Josef
so wie michl das gemacht hat, funktioniert ein DGBrid schon. Er hat, soweit ich das sehe, nur zwei "normale" Felder dargestellt. die lassen sich schon nach rechts scrollen.
Das Problem tritt, wie ich schrieb auf, wenn ein Calc-Feld im DBGrid dargestellt wird.
probiers mal mit dem BufDataset und füg ein Calcfield hinzu. DisplayWidth und Size größer als DBGrid Width.
Code: Alles auswählen
var strcalc:string;
begin
// BufDataset1.CreateDataset;
//FillRandomData;
BufDataset1.Active := True;
BufDataset1.Insert;
StrCalc := ' abcdefghijklmnopqrstuvwxyz';
BufDataset1calcFeld1.AsString:= strCalc+strCalc+strCalc+strCalc+strCalc+strCalc;
Keine Ahnung, woran das liegt.
Danke.
Josef
- Dateianhänge
-
testdbgrid.zip
- (4 MiB) 84-mal heruntergeladen
Re: dbgrid und horizontale Scrollbar
Habe bei mir auch ein Calcluated Field hinzugefügt und sehe das Verhalten. Füge ich ein zweites Calcluated Field hinzu, kann ich das erste ganz normal scrollen, das zweite nicht.JosefKoller hat geschrieben:Das Problem tritt, wie ich schrieb auf, wenn ein Calc-Feld im DBGrid dargestellt wird.
Das gleiche Verhalten ist sichtbar, wenn man nur ein Feld hat (muss kein CalcField sein), dieses kann man auch nicht scrollen.
Man kann generell nicht das letzte Feld scrollen

Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: dbgrid und horizontale Scrollbar
Hallo,
Danke für den Tipp. Ich hab jetzt hinter das CaclField noch ein Feld hinzugefügt. DisplayWidth, Width und Size auf 1 gesetzt.
Damit funktiert der hor-Scrollbalken. Unschön allerdings, wenn man auf den Pfeil nach ganz rechts klickt. Damit wird das 2.Feld, also nichts, angezeigt.
Setzt man das 2. Feld auf 0 oder visible:= false, um nur bis zum Ende des 1. Feldes zu springen, kommt es beim Klick auf den Pfeil zu einer Indexüberschreitung der Grid Columns.
Ich laß es jetzt mal beim 2. Feld bei Size, usw:=1. Zumindest beim Bewegen des Scrollbalkens selber kann man durch das 1. Feld scrollen.
Danke.
Josef
Danke für den Tipp. Ich hab jetzt hinter das CaclField noch ein Feld hinzugefügt. DisplayWidth, Width und Size auf 1 gesetzt.
Damit funktiert der hor-Scrollbalken. Unschön allerdings, wenn man auf den Pfeil nach ganz rechts klickt. Damit wird das 2.Feld, also nichts, angezeigt.
Setzt man das 2. Feld auf 0 oder visible:= false, um nur bis zum Ende des 1. Feldes zu springen, kommt es beim Klick auf den Pfeil zu einer Indexüberschreitung der Grid Columns.
Ich laß es jetzt mal beim 2. Feld bei Size, usw:=1. Zumindest beim Bewegen des Scrollbalkens selber kann man durch das 1. Feld scrollen.
Danke.
Josef
Re: dbgrid und horizontale Scrollbar
Ich habe dazu mal einen Bugreport aufgemacht. Mal sehen, was dabei rauskommt: http://bugs.freepascal.org/view.php?id=28889
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;