dbgrid und horizontale Scrollbar

Rund um die LCL und andere Komponenten
Antworten
JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

dbgrid und horizontale Scrollbar

Beitrag von JosefKoller »

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

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: dbgrid und horizontale Scrollbar

Beitrag von Michl »

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).
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;  

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: dbgrid und horizontale Scrollbar

Beitrag von wp_xyz »

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.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: dbgrid und horizontale Scrollbar

Beitrag von JosefKoller »

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.

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;
 
siehe Anhang.

Keine Ahnung, woran das liegt.

Danke.

Josef
Dateianhänge
testdbgrid.zip
(4 MiB) 84-mal heruntergeladen

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: dbgrid und horizontale Scrollbar

Beitrag von Michl »

JosefKoller hat geschrieben:Das Problem tritt, wie ich schrieb auf, wenn ein Calc-Feld im DBGrid dargestellt wird.
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.

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;  

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: dbgrid und horizontale Scrollbar

Beitrag von JosefKoller »

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

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: dbgrid und horizontale Scrollbar

Beitrag von Michl »

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;  

Antworten