View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006069 | JEDI VCL | 00 JVCL Components | public | 2013-01-20 14:32 | 2015-09-14 13:20 |
Reporter | stevegr | Assigned To | AHUser | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | Daily / GIT | ||||
Target Version | Fixed in Version | 3.48 | |||
Summary | 0006069: TJvDBGrid.CalcSizingState -> Mantis 5818 issue NOT resolved. | ||||
Description | Earlier fix of Mantis 5818 issue produced a new bug when trying to resize partially displayed rightmost column. Latest fix (JVCL3-2013-01-20) reproduced the first bug. I upload the final fix for TJvDBGrid.CalcSizingState. Regards, Steve Argonet Development Group www.argonet.gr | ||||
Tags | No tags attached. | ||||
2013-01-20 14:33
|
ADG.txt (1,615 bytes)
procedure TJvDBGrid.CalcSizingState(X, Y: Integer; var State: TGridState; var Index: Longint; var SizingPos, SizingOfs: Integer; var FixedInfo: TGridDrawInfo); var Coord: TGridCoord; DrawInfo: TGridDrawInfo; { My code } begin inherited CalcSizingState(X, Y, State, Index, SizingPos, SizingOfs, FixedInfo); // do nothing if not authorized to size columns if not (dgColumnResize in Options) and not (csDesigning in ComponentState) then Exit; FCanResizeColumn := State = gsColSizing; // If true, mouse double clicking can resize column. (* // Mantis 5818: the inherited code sometimes gives an invalid index for the column if Index > LeftCol + VisibleColCount then Index := LeftCol + VisibleColCount; *) { Mantis 5818: fixed } { My code } CalcDrawInfo(DrawInfo); if (DrawInfo.Horz.FullVisBoundary = DrawInfo.Horz.FixedBoundary) then begin Index := Index - 1; end; FResizeColumnIndex := Index - 1; // Store the column index to resize. if (State = gsNormal) and (Y <= RowHeights[0]) then begin Coord := MouseCoord(X, Y); CalcDrawInfo(FixedInfo); if CellRect(Coord.X, 0).Right - 5 < X then begin State := gsColSizing; Index := Coord.X; SizingPos := X; SizingOfs := X - CellRect(Coord.X, 0).Right; end; if CellRect(Coord.X, 0).Left + 5 > X then begin State := gsColSizing; Index := Coord.X - 1; SizingPos := X; SizingOfs := X - CellRect(Coord.X, 0).Left; end; if Index <= Byte(dgIndicator in Options) - 1 then State := gsNormal; end; FSizingIndex := Index; FSizingOfs := SizingOfs; end; |
|
Upload fix for Mantis 6061 issue. (Filename ADG2.txt) (The fix is contributed by Argonet Development Group that implemented the column resizing feature. Any future remarks whould be much appreciated to improve this feature further). Related issues: 6061, 6082. |
2013-02-15 19:59
|
ADG2.txt (1,626 bytes)
procedure TJvDBGrid.CalcSizingState(X, Y: Integer; var State: TGridState; var Index: Longint; var SizingPos, SizingOfs: Integer; var FixedInfo: TGridDrawInfo); var Coord: TGridCoord; DrawInfo: TGridDrawInfo; begin inherited CalcSizingState(X, Y, State, Index, SizingPos, SizingOfs, FixedInfo); // do nothing if not authorized to size columns if not (dgColumnResize in Options) and not (csDesigning in ComponentState) then Exit; FCanResizeColumn := State = gsColSizing; // If true, mouse double clicking can resize column. { Mantis 5818: Index-out-of-range error when there is only one visible column partially displayed } CalcDrawInfo(DrawInfo); if (DrawInfo.Horz.FullVisBoundary = DrawInfo.Horz.FixedBoundary) then begin Index := Index - 1; // Index from inherited code has the value of 2. end; { Store the column index to resize } if dgIndicator in Options then FResizeColumnIndex := Index - 1 else FResizeColumnIndex := Index; // Mantis 6061 if (State = gsNormal) and (Y <= RowHeights[0]) then begin Coord := MouseCoord(X, Y); CalcDrawInfo(FixedInfo); if CellRect(Coord.X, 0).Right - 5 < X then begin State := gsColSizing; Index := Coord.X; SizingPos := X; SizingOfs := X - CellRect(Coord.X, 0).Right; end; if CellRect(Coord.X, 0).Left + 5 > X then begin State := gsColSizing; Index := Coord.X - 1; SizingPos := X; SizingOfs := X - CellRect(Coord.X, 0).Left; end; if Index <= Byte(dgIndicator in Options) - 1 then State := gsNormal; end; FSizingIndex := Index; FSizingOfs := SizingOfs; end; |
|
Hi, in my review in 6082 it handled all cases. This should be used for JVCL. Regards Frank |
|
That's excellent, A new set of improvements regarding TJvDBGrid will be uploaded soon. By the way, do you use LibreOffice or PostgreSQL? |
|
No I am working with BetterADODataset on MS-SQL in a JvDBUltimGrid with Ex-/Import to MS-Excel. What Improvements? |
|
Fixed in svn revision 13517. |
Date Modified | Username | Field | Change |
---|---|---|---|
2013-01-20 14:32 | stevegr | New Issue | |
2013-01-20 14:33 | stevegr | File Added: ADG.txt | |
2013-02-15 19:59 | stevegr | Note Added: 0020429 | |
2013-02-15 19:59 | stevegr | File Added: ADG2.txt | |
2013-02-19 08:14 | frank_jepsen | Note Added: 0020438 | |
2013-02-19 12:59 | stevegr | Note Added: 0020440 | |
2013-02-19 13:05 | frank_jepsen | Note Added: 0020441 | |
2013-05-25 14:26 | AHUser | Note Added: 0020502 | |
2013-05-25 14:26 | AHUser | Status | new => resolved |
2013-05-25 14:26 | AHUser | Fixed in Version | => Daily / SVN |
2013-05-25 14:26 | AHUser | Resolution | open => fixed |
2013-05-25 14:26 | AHUser | Assigned To | => AHUser |
2015-09-14 13:20 | obones | Fixed in Version | Daily / GIT => 3.48 |