From: <ah...@us...> - 2008-08-06 16:16:43
|
Revision: 11849 http://jvcl.svn.sourceforge.net/jvcl/?rev=11849&view=rev Author: ahuser Date: 2008-08-06 16:16:38 +0000 (Wed, 06 Aug 2008) Log Message: ----------- Prevent access violation Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-08-05 20:12:12 UTC (rev 11848) +++ trunk/jvcl/run/JvDBGrid.pas 2008-08-06 16:16:38 UTC (rev 11849) @@ -2174,7 +2174,7 @@ if FDisableCount <> 0 then begin Dec(FDisableCount); - if FDisableCount = 0 then + if (FDisableCount = 0) and DataLink.Active then {$IFDEF CLR} InvokeNonPublicMethod(DataLink, 'DataSetScrolled', [0]); {$ELSE} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2008-08-12 08:27:23
|
Revision: 11858 http://jvcl.svn.sourceforge.net/jvcl/?rev=11858&view=rev Author: obones Date: 2008-08-12 08:27:19 +0000 (Tue, 12 Aug 2008) Log Message: ----------- Mantis 4361: Call to BeginUpdate/EndUpdate were useless and a bit dangerous as the InternalLayout code sets the value of FixedCols that changes Col. Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-08-11 13:00:09 UTC (rev 11857) +++ trunk/jvcl/run/JvDBGrid.pas 2008-08-12 08:27:19 UTC (rev 11858) @@ -1452,48 +1452,43 @@ AddAfter: Boolean; begin AddAfter := False; - BeginUpdate; - try - if MultiSelect and DataLink.Active then - if Select and (Shift * KeyboardShiftStates = [ssShift]) then + if MultiSelect and DataLink.Active then + if Select and (Shift * KeyboardShiftStates = [ssShift]) then + begin + if not FSelecting then begin - if not FSelecting then - begin - {$IFDEF CLR} - FSelectionAnchor := GetNonPublicProperty(SelectedRows, 'CurrentRow') as TBookmarkStr; - {$ELSE} - FSelectionAnchor := TBookmarks(SelectedRows).CurrentRow; - {$ENDIF CLR} - SelectedRows.CurrentRowSelected := True; - FSelecting := True; - AddAfter := True; - end - else - begin - {$IFDEF CLR} - AddAfter := DataSource.DataSet.CompareBookmarkStr(GetNonPublicProperty(SelectedRows, 'CurrentRow') as TBookmarkStr, - FSelectionAnchor) <> -Direction; - if AddAfter then - SelectedRows.CurrentRowSelected := False; - {$ELSE} - with TBookmarks(SelectedRows) do - begin - AddAfter := Compare(CurrentRow, FSelectionAnchor) <> -Direction; - if not AddAfter then - CurrentRowSelected := False; - end; - {$ENDIF CLR} - end; + {$IFDEF CLR} + FSelectionAnchor := GetNonPublicProperty(SelectedRows, 'CurrentRow') as TBookmarkStr; + {$ELSE} + FSelectionAnchor := TBookmarks(SelectedRows).CurrentRow; + {$ENDIF CLR} + SelectedRows.CurrentRowSelected := True; + FSelecting := True; + AddAfter := True; end else - ClearSelections; - if Direction <> 0 then - DataLink.DataSet.MoveBy(Direction); - if AddAfter then - SelectedRows.CurrentRowSelected := True; - finally - EndUpdate; - end; + begin + {$IFDEF CLR} + AddAfter := DataSource.DataSet.CompareBookmarkStr(GetNonPublicProperty(SelectedRows, 'CurrentRow') as TBookmarkStr, + FSelectionAnchor) <> -Direction; + if AddAfter then + SelectedRows.CurrentRowSelected := False; + {$ELSE} + with TBookmarks(SelectedRows) do + begin + AddAfter := Compare(CurrentRow, FSelectionAnchor) <> -Direction; + if not AddAfter then + CurrentRowSelected := False; + end; + {$ENDIF CLR} + end; + end + else + ClearSelections; + if Direction <> 0 then + DataLink.DataSet.MoveBy(Direction); + if AddAfter then + SelectedRows.CurrentRowSelected := True; end; procedure NextRow(Select: Boolean); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2008-10-05 22:09:14
|
Revision: 11940 http://jvcl.svn.sourceforge.net/jvcl/?rev=11940&view=rev Author: jfudickar Date: 2008-10-05 22:09:12 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Mantis 0004421: JvDBGrid and TitlePopup (Mantis #0004421) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-10-05 22:02:41 UTC (rev 11939) +++ trunk/jvcl/run/JvDBGrid.pas 2008-10-05 22:09:12 UTC (rev 11940) @@ -2352,7 +2352,7 @@ if (Button = mbRight) and (dgTitles in Options) and (dgIndicator in Options) and - (Cell.X = 0) and (Cell.Y = 0) then + (Cell.Y = 0) then begin if (FTitleArrow and Assigned(FOnTitleArrowMenuEvent)) then FOnTitleArrowMenuEvent(Self); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2008-10-05 22:29:45
|
Revision: 11942 http://jvcl.svn.sourceforge.net/jvcl/?rev=11942&view=rev Author: jfudickar Date: 2008-10-05 22:29:29 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Mantis 0004468: TjvDBGrid, and BooleanEditor fixed (Mantis #0004468) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-10-05 22:20:50 UTC (rev 11941) +++ trunk/jvcl/run/JvDBGrid.pas 2008-10-05 22:29:29 UTC (rev 11942) @@ -3704,7 +3704,11 @@ FBooleanFieldToEdit.Value := FStringForFalse; end; else - FBooleanFieldToEdit.Value := FieldValueChange + 1; + //FBooleanFieldToEdit.Value := FieldValueChange + 1; + if FieldValueChange <> JvGridBool_INVERT then + FBooleanFieldToEdit.Value := FieldValueChange + 1 + else + FBooleanFieldToEdit.Value := 1; end; end else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2008-10-25 16:47:13
|
Revision: 11987 http://jvcl.svn.sourceforge.net/jvcl/?rev=11987&view=rev Author: ahuser Date: 2008-10-25 16:47:03 +0000 (Sat, 25 Oct 2008) Log Message: ----------- Mantis #4422: JvFBGrid Column Titles (column titles aren't painted in UseXPThemes + no active DataLink) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-10-25 15:34:10 UTC (rev 11986) +++ trunk/jvcl/run/JvDBGrid.pas 2008-10-25 16:47:03 UTC (rev 11987) @@ -390,6 +390,7 @@ function SortMarkerAssigned(const AFieldName: string): Boolean; dynamic; function ChangeSortMarker(const Value: TSortMarker): Boolean; procedure CallDrawCellEvent(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); + procedure DrawTitleCaption(Canvas: TCanvas; const TextRect: TRect; DrawColumn: TColumn); procedure DoDrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); virtual; procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override; procedure DrawDataCell(const Rect: TRect; Field: TField; @@ -3004,6 +3005,10 @@ Details := ThemeServices.GetElementDetails(thHeaderItemNormal); end; ThemeServices.DrawElement(Canvas.Handle, Details, lCellRect); + { The column title isn't painted by DrawCell if the DataLink is not active. } + if (DataLink = nil) or not DataLink.Active then + if (ACol - ColumnOffset >= 0) and (ACol - ColumnOffset < Columns.Count) then + DrawTitleCaption(Canvas, lCaptionRect, Columns[ACol - ColumnOffset]); end else if (ACol = 0) and (dgIndicator in Options) and ThemeServices.ThemesEnabled then begin @@ -3037,6 +3042,47 @@ CallDrawCellEvent(ACol, ARow, ARect, AState); end; +procedure TJvDBGrid.DrawTitleCaption(Canvas: TCanvas; const TextRect: TRect; DrawColumn: TColumn); +const + MinOffs = 1; +var + CalcRect: TRect; + TitleSpace, + TitleOptions: Integer; +begin + with DrawColumn.Title do + begin + TitleOptions := DT_END_ELLIPSIS; + if WordWrap then + begin + CalcRect := TextRect; + Dec(CalcRect.Right, MinOffs + 1); + {$IFDEF CLR} + Windows.DrawText(Canvas.Handle, Caption, -1, CalcRect, + DT_CALCRECT or DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_WORDBREAK); + {$ELSE} + Windows.DrawText(Canvas.Handle, PChar(Caption), -1, CalcRect, + DT_CALCRECT or DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_WORDBREAK); + {$ENDIF CLR} + if CalcRect.Bottom > TextRect.Bottom then + begin + TitleOptions := DT_END_ELLIPSIS or DT_SINGLELINE; + TitleSpace := TextRect.Bottom - TextRect.Top - Canvas.TextHeight('^g'); + end + else + begin + if (CalcRect.Bottom - CalcRect.Top) > Canvas.TextHeight('^g') then + TitleOptions := 0; + TitleSpace := TextRect.Bottom - CalcRect.Bottom; + end; + end + else + TitleSpace := TextRect.Bottom - TextRect.Top - Canvas.TextHeight('^g'); + WriteCellText(TextRect, MinOffs, Max(MinOffs, TitleSpace div 2), Caption, Alignment, + IsRightToLeft, True, TitleOptions); + end; +end; + procedure TJvDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); const EdgeFlag: array [Boolean] of UINT = (BDR_RAISEDINNER, BDR_SUNKENINNER); @@ -3060,7 +3106,7 @@ DefaultDrawText, DefaultDrawSortMarker: Boolean; function CalcTitleRect(Col: TColumn; ARow: Integer; var MasterCol: TColumn): TRect; - { copied from Inprise's DbGrids.pas } + { copied from CodeGear's DbGrids.pas } var I, J: Integer; InBiDiMode: Boolean; @@ -3118,7 +3164,7 @@ end; procedure DrawExpandBtn(var TitleRect, TextRect: TRect; InBiDiMode: Boolean; - Expanded: Boolean); { copied from Inprise's DbGrids.pas } + Expanded: Boolean); { copied from CodeGear's DbGrids.pas } const ScrollArrows: array [Boolean, Boolean] of Integer = ((DFCS_SCROLLRIGHT, DFCS_SCROLLLEFT), (DFCS_SCROLLLEFT, DFCS_SCROLLRIGHT)); @@ -3152,45 +3198,6 @@ end; end; - procedure DrawTitleCaption; - var - CalcRect: TRect; - TitleSpace, - TitleOptions: Integer; - begin - with DrawColumn.Title do - begin - TitleOptions := DT_END_ELLIPSIS; - if WordWrap then - begin - CalcRect := TextRect; - Dec(CalcRect.Right, MinOffs + 1); - {$IFDEF CLR} - Windows.DrawText(Canvas.Handle, Caption, -1, CalcRect, - DT_CALCRECT or DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_WORDBREAK); - {$ELSE} - Windows.DrawText(Canvas.Handle, PChar(Caption), -1, CalcRect, - DT_CALCRECT or DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_WORDBREAK); - {$ENDIF CLR} - if CalcRect.Bottom > TextRect.Bottom then - begin - TitleOptions := DT_END_ELLIPSIS or DT_SINGLELINE; - TitleSpace := TextRect.Bottom - TextRect.Top - Canvas.TextHeight('^g'); - end - else - begin - if (CalcRect.Bottom - CalcRect.Top) > Canvas.TextHeight('^g') then - TitleOptions := 0; - TitleSpace := TextRect.Bottom - CalcRect.Bottom; - end; - end - else - TitleSpace := TextRect.Bottom - TextRect.Top - Canvas.TextHeight('^g'); - WriteCellText(TextRect, MinOffs, Max(MinOffs, TitleSpace div 2), Caption, Alignment, - IsRightToLeft, True, TitleOptions); - end; - end; - begin FCurrentDrawRow := ARow; Canvas.Font := Self.Font; @@ -3361,7 +3368,7 @@ begin if DrawColumn.Expandable then DrawExpandBtn(TitleRect, TextRect, InBiDiMode, DrawColumn.Expanded); - DrawTitleCaption; + DrawTitleCaption(Canvas, TextRect, DrawColumn); end; if DefaultDrawSortMarker then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2008-11-26 16:43:59
|
Revision: 12061 http://jvcl.svn.sourceforge.net/jvcl/?rev=12061&view=rev Author: ahuser Date: 2008-11-26 16:43:51 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Mantis #4605: JvDBGrid [ and JvDBUltimGrid?] cannot be created in Korean. Access violation occurs Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-11-26 16:32:58 UTC (rev 12060) +++ trunk/jvcl/run/JvDBGrid.pas 2008-11-26 16:43:51 UTC (rev 12061) @@ -1022,8 +1022,6 @@ Bmp: TBitmap; begin inherited Create(AOwner); - inherited DefaultDrawing := False; - inherited Options := inherited Options - [dgAlwaysShowEditor]; // (obones): issue 3026: need to create FChangeLinks at the beginning // so that any change can access the object. It seems that on some @@ -1033,7 +1031,6 @@ FAutoSort := True; FBeepOnError := True; - Options := DefJvGridOptions; Bmp := TBitmap.Create; try Bmp.Handle := LoadBitmap(HInstance, bmMultiDot); @@ -1085,6 +1082,11 @@ FPaintInfo.ColSizing := False; FCell.X := -1; FCell.Y := -1; + + { properties with setters } + inherited DefaultDrawing := False; + inherited Options := inherited Options - [dgAlwaysShowEditor]; + Options := DefJvGridOptions; end; destructor TJvDBGrid.Destroy; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2008-12-23 09:04:01
|
Revision: 12101 http://jvcl.svn.sourceforge.net/jvcl/?rev=12101&view=rev Author: obones Date: 2008-12-23 09:03:57 +0000 (Tue, 23 Dec 2008) Log Message: ----------- Mantis 4626: Use CompareBookmarks under D2009 as TBookmark is a pointer Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2008-12-22 21:44:11 UTC (rev 12100) +++ trunk/jvcl/run/JvDBGrid.pas 2008-12-23 09:03:57 UTC (rev 12101) @@ -2482,7 +2482,7 @@ GotoBookmark(Pointer(lLastSelected)); {$ENDIF CLR} Next; - while not (CurrentRowSelected and (Bookmark = lNewSelected)) do + while not (CurrentRowSelected and ({$IFDEF RTL200_UP}CompareBookmarks(Bookmark, lNewSelected) = 0{$ELSE}Bookmark = lNewSelected{$ENDIF RTL200_UP})) do begin CurrentRowSelected := True; Next; @@ -2497,7 +2497,7 @@ GotoBookmark(Pointer(lLastSelected)); {$ENDIF CLR} Prior; - while not (CurrentRowSelected and (Bookmark = lNewSelected)) do + while not (CurrentRowSelected and ({$IFDEF RTL200_UP}CompareBookmarks(Bookmark, lNewSelected) = 0{$ELSE}Bookmark = lNewSelected{$ENDIF RTL200_UP})) do begin CurrentRowSelected := True; Prior; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-01-08 20:59:22
|
Revision: 12136 http://jvcl.svn.sourceforge.net/jvcl/?rev=12136&view=rev Author: ahuser Date: 2009-01-08 20:59:06 +0000 (Thu, 08 Jan 2009) Log Message: ----------- Some bidiRightToLeft BiDiMode fixes Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2009-01-08 18:47:52 UTC (rev 12135) +++ trunk/jvcl/run/JvDBGrid.pas 2009-01-08 20:59:06 UTC (rev 12136) @@ -304,6 +304,9 @@ FOnBeforePaint: TNotifyEvent; FOnAfterPaint: TNotifyEvent; + {$IFDEF COMPILER10_UP} + procedure WMPaint(var Message: TWMPaint); message WM_PAINT; + {$ENDIF COMPILER10_UP} procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; @@ -1798,7 +1801,10 @@ { Fill the area between the two scroll bars. } Size.cx := GetSystemMetrics(SM_CXVSCROLL); Size.cy := GetSystemMetrics(SM_CYHSCROLL); - R := Bounds(Width - Size.cx, Height - Size.cy, Size.cx, Size.cy); + if UseRightToLeftAlignment then + R := Bounds(0, Height - Size.cy, Size.cx, Size.cy) + else + R := Bounds(Width - Size.cx, Height - Size.cy, Size.cx, Size.cy); Canvas.Brush.Color := Color; Canvas.FillRect(R); @@ -2969,8 +2975,6 @@ procedure TJvDBGrid.DoDrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); {$IFDEF JVCLThemesEnabled} -const - ArrowDirection: array [TCanvasOrientation] of TScrollDirection = (sdRight, sdLeft); var Details: TThemedElementDetails; lCaptionRect: TRect; @@ -3028,9 +3032,10 @@ PenRecall := TPenRecall.Create(Canvas.Pen); try Canvas.Pen.Color := clWhite; - DrawArrow(Canvas, ArrowDirection[Canvas.CanvasOrientation], Point(lCellRect.Left + 4, lCellRect.Top + 3), 5); + { BiDiMode <> bidiLeftToRight is handled by the CanvasOrientation } + DrawArrow(Canvas, sdRight, Point(lCellRect.Left + 4, lCellRect.Top + 3), 5); Canvas.Pen.Color := clBlack; - DrawArrow(Canvas, ArrowDirection[Canvas.CanvasOrientation], Point(lCellRect.Left + 3, lCellRect.Top + 3), 5); + DrawArrow(Canvas, sdRight, Point(lCellRect.Left + 3, lCellRect.Top + 3), 5); finally PenRecall.Free; end; @@ -4715,6 +4720,23 @@ FPaintInfo.ColMoving := Result; end; +{$IFDEF COMPILER10_UP} +procedure TJvDBGrid.WMPaint(var Message: TWMPaint); +var + R: TRect; +begin + if UseRightToLeftAlignment then + begin + { Workaround for a RightToLeft painting bug (QC #70075) + Side effect: The grid needs more time to paint } + R.TopLeft := ClientRect.TopLeft; + R.BottomRight := ClientRect.BottomRight; + Windows.InvalidateRect(Handle, @R, False); + end; + inherited; +end; +{$ENDIF COMPILER10_UP} + procedure TJvDBGrid.CMMouseEnter(var Message: TMessage); {$IFDEF JVCLThemesEnabled} var This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-10-02 07:36:57
|
Revision: 12529 http://jvcl.svn.sourceforge.net/jvcl/?rev=12529&view=rev Author: ahuser Date: 2009-10-02 07:36:09 +0000 (Fri, 02 Oct 2009) Log Message: ----------- 4943: JvDBUltimGrid v.3.38 - Delphi 2010 Event OnTitleClick Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2009-10-01 09:02:50 UTC (rev 12528) +++ trunk/jvcl/run/JvDBGrid.pas 2009-10-02 07:36:09 UTC (rev 12529) @@ -72,7 +72,10 @@ const DefJvGridOptions = [dgEditing, dgTitles, dgIndicator, dgColumnResize, - dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit]; + dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit + {$IFDEF COMPILER14_UP} + , dgTitleClick, dgTitleHotTrack + {$ENDIF COMPILER14_UP}]; {$IFDEF BCB} {$NODEFINE DefJvGridOptions} @@ -4700,4 +4703,4 @@ UnregisterUnitVersion(HInstance); {$ENDIF UNITVERSIONING} -end. \ No newline at end of file +end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-10-25 18:20:10
|
Revision: 12577 http://jvcl.svn.sourceforge.net/jvcl/?rev=12577&view=rev Author: ahuser Date: 2009-10-25 18:20:01 +0000 (Sun, 25 Oct 2009) Log Message: ----------- Mantis #4655: JvDBGrid Auto Append Issue Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2009-10-25 17:49:40 UTC (rev 12576) +++ trunk/jvcl/run/JvDBGrid.pas 2009-10-25 18:20:01 UTC (rev 12577) @@ -1461,7 +1461,7 @@ with DataLink.DataSet do begin DoSelection(Select, 1); - if AutoAppend and Eof and CanModify and (not ReadOnly) and (dgEditing in Options) then + if AutoAppend and Eof and CanModify and not ReadOnly and (dgEditing in Options) then Append; end; end; @@ -1477,7 +1477,8 @@ begin ACol := Col; Original := ACol; - if MultiSelect and DataLink.Active then + BeginUpdate; + try while True do begin if GoForward then @@ -1486,20 +1487,30 @@ Dec(ACol); if ACol >= ColCount then begin - ClearSelections; + if MultiSelect then + ClearSelections; + NextRow(False); ACol := IndicatorOffset; end - else - if ACol < IndicatorOffset then + else if ACol < IndicatorOffset then begin - ClearSelections; - ACol := ColCount; + if MultiSelect then + ClearSelections; + PriorRow(False); + ACol := ColCount - IndicatorOffset; end; if ACol = Original then Exit; if TabStops[ACol] then + begin + //MoveCol(ACol, 0); + SelectedIndex := ACol - IndicatorOffset; Exit; + end; end; + finally + EndUpdate; + end; end; function DeletePrompt: Boolean; @@ -1588,7 +1599,10 @@ ClearSelections else if (Key = VK_TAB) and not (ssAlt in Shift) then + begin CheckTab(not (ssShift in Shift)); + Exit; + end; end; OnKeyDown := nil; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-12-04 15:03:44
|
Revision: 12613 http://jvcl.svn.sourceforge.net/jvcl/?rev=12613&view=rev Author: obones Date: 2009-12-04 15:03:35 +0000 (Fri, 04 Dec 2009) Log Message: ----------- Mantis 4727: TJvDBGrid was losing its value when clicking in its empty area and an editing control is showing. Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2009-12-04 14:21:07 UTC (rev 12612) +++ trunk/jvcl/run/JvDBGrid.pas 2009-12-04 15:03:35 UTC (rev 12613) @@ -2364,41 +2364,44 @@ Exit; end; end; - if (Cell.X < FixedCols + IndicatorOffset) and DataLink.Active then + if Cell.Y >= 0 then begin - if dgIndicator in Options then - inherited MouseDown(Button, Shift, 1, Y) - else - if Cell.Y >= TitleOffset then - if Cell.Y - Row <> 0 then - DataLink.DataSet.MoveBy(Cell.Y - Row); - end - else - begin - { Do not show the editor if the user right clicks on the cell. Otherwise - the grid's popup menu will never show. } - WasAlwaysShowEditor := dgAlwaysShowEditor in Options; - if WasAlwaysShowEditor and (Button = mbRight) {and (PopupMenu <> nil)} then - Options := Options - [dgAlwaysShowEditor]; - try - //------------------------------------------------------------------------------- - // Prevents the grid from going back to the first column when dgRowSelect is True - // Does not work if there's no indicator column - //------------------------------------------------------------------------------- - if (dgRowSelect in Options) and (Cell.Y >= TitleOffset) then + if (Cell.X < FixedCols + IndicatorOffset) and DataLink.Active then + begin + if dgIndicator in Options then inherited MouseDown(Button, Shift, 1, Y) else - inherited MouseDown(Button, Shift, X, Y); - if (Col = LastCell.X) and (Row <> LastCell.Y) then - begin - { ColEnter is not invoked when switching between rows staying in the - same column. } - if FAlwaysShowEditor and not EditorMode then - ShowEditor; + if Cell.Y >= TitleOffset then + if Cell.Y - Row <> 0 then + DataLink.DataSet.MoveBy(Cell.Y - Row); + end + else + begin + { Do not show the editor if the user right clicks on the cell. Otherwise + the grid's popup menu will never show. } + WasAlwaysShowEditor := dgAlwaysShowEditor in Options; + if WasAlwaysShowEditor and (Button = mbRight) {and (PopupMenu <> nil)} then + Options := Options - [dgAlwaysShowEditor]; + try + //------------------------------------------------------------------------------- + // Prevents the grid from going back to the first column when dgRowSelect is True + // Does not work if there's no indicator column + //------------------------------------------------------------------------------- + if (dgRowSelect in Options) and (Cell.Y >= TitleOffset) then + inherited MouseDown(Button, Shift, 1, Y) + else + inherited MouseDown(Button, Shift, X, Y); + if (Col = LastCell.X) and (Row <> LastCell.Y) then + begin + { ColEnter is not invoked when switching between rows staying in the + same column. } + if FAlwaysShowEditor and not EditorMode then + ShowEditor; + end; + finally + if WasAlwaysShowEditor and (Button = mbRight) {and (PopupMenu <> nil)} then + Options := Options + [dgAlwaysShowEditor]; end; - finally - if WasAlwaysShowEditor and (Button = mbRight) {and (PopupMenu <> nil)} then - Options := Options + [dgAlwaysShowEditor]; end; end; MouseDownEvent := OnMouseDown; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-06-07 17:58:34
|
Revision: 12801 http://jvcl.svn.sourceforge.net/jvcl/?rev=12801&view=rev Author: ahuser Date: 2010-06-07 17:58:26 +0000 (Mon, 07 Jun 2010) Log Message: ----------- Mantis #5210: TJvDBGrid/TJvDBUltimGrid tab key doesn't work if FixedCols > 0 Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-06-07 17:29:08 UTC (rev 12800) +++ trunk/jvcl/run/JvDBGrid.pas 2010-06-07 17:58:26 UTC (rev 12801) @@ -1500,7 +1500,8 @@ begin ACol := Col; Original := ACol; - BeginUpdate; + //BeginUpdate; + inherited BeginUpdate; try while True do begin @@ -1528,11 +1529,12 @@ begin //MoveCol(ACol, 0); SelectedIndex := ACol - IndicatorOffset; - Exit; + Break; end; end; finally - EndUpdate; + inherited EndUpdate; + //EndUpdate; // => EndLayout => ... => Initialize => Col := FixedCols + 1 end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-06-07 18:32:34
|
Revision: 12802 http://jvcl.svn.sourceforge.net/jvcl/?rev=12802&view=rev Author: ahuser Date: 2010-06-07 18:32:28 +0000 (Mon, 07 Jun 2010) Log Message: ----------- Mantis #5245: TJvDBGrid - DrawingStyle (gdsGradient) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-06-07 17:58:26 UTC (rev 12801) +++ trunk/jvcl/run/JvDBGrid.pas 2010-06-07 18:32:28 UTC (rev 12802) @@ -2856,11 +2856,14 @@ {$IFDEF JVCLThemesEnabled} if not FixCell or not (UseXPThemes and ThemeServices.ThemesEnabled) then {$ENDIF JVCLThemesEnabled} - begin - if Brush.Style <> bsSolid then - Brush.Style := bsSolid; - FillRect(B); - end; + {$IFDEF COMPILER14_UP} + if not FixCell or (DrawingStyle = gdsClassic) then + {$ENDIF COMPILER14_UP} + begin + if Brush.Style <> bsSolid then + Brush.Style := bsSolid; + FillRect(B); + end; SetBkMode(Handle, TRANSPARENT); DrawBiDiText(Handle, Text, R, DrawOptions, Alignment, ARightToLeft, Canvas.CanvasOrientation); end; @@ -3298,11 +3301,25 @@ {$IFDEF JVCLThemesEnabled} if not (UseXPThemes and ThemeServices.ThemesEnabled) then {$ENDIF JVCLThemesEnabled} + begin + {$IFDEF COMPILER14_UP} + DrawCellBackground(TitleRect, FixedColor, AState, ACol, ARow - TitleOffset); + {$ELSE} Canvas.FillRect(TitleRect); + {$ENDIF COMPILER14_UP} + end; end else if DrawColumn <> nil then begin + {$IFDEF JVCLThemesEnabled} + if not (UseXPThemes and ThemeServices.ThemesEnabled) then + {$ENDIF JVCLThemesEnabled} + begin + {$IFDEF COMPILER14_UP} + DrawCellBackground(TitleRect, FixedColor, AState, ACol, ARow - TitleOffset); + {$ENDIF COMPILER14_UP} + end; case ASortMarker of smDown: Bmp := GetGridBitmap(gpMarkDown); @@ -3338,7 +3355,11 @@ {$IFDEF JVCLThemesEnabled} if not (UseXPThemes and ThemeServices.ThemesEnabled) then {$ENDIF JVCLThemesEnabled} + {$IFDEF COMPILER14_UP} + DrawCellBackground(Rect(TextRect.Right, TitleRect.Top, TitleRect.Right, TitleRect.Bottom), FixedColor, AState, ACol, ARow - TitleOffset); + {$ELSE} Canvas.FillRect(Rect(TextRect.Right, TitleRect.Top, TitleRect.Right, TitleRect.Bottom)); + {$ENDIF COMPILER14_UP} if (ALeft > TitleRect.Left) and (ALeft + Bmp.Width < TitleRect.Right) then DrawBitmapTransparent(Canvas, ALeft, (TitleRect.Bottom + TitleRect.Top - Bmp.Height) div 2, Bmp, clFuchsia); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-06-08 08:30:50
|
Revision: 12803 http://jvcl.svn.sourceforge.net/jvcl/?rev=12803&view=rev Author: ahuser Date: 2010-06-08 08:30:44 +0000 (Tue, 08 Jun 2010) Log Message: ----------- JvDBGrid now migrates Delphi 2010's new Options flags if they are missing (Gird created with older Delphi version and modified Options set, loaded with Delphi 2010) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-06-07 18:32:28 UTC (rev 12802) +++ trunk/jvcl/run/JvDBGrid.pas 2010-06-08 08:30:44 UTC (rev 12803) @@ -300,6 +300,10 @@ FOnBeforePaint: TNotifyEvent; FOnAfterPaint: TNotifyEvent; + FDelphi2010OptionsMigrated: Boolean; + procedure ReadDelphi2010OptionsMigrated(Reader: TReader); + procedure WriteDelphi2010OptionsMigrated(Writer: TWriter); + {$IFDEF COMPILER10_UP} procedure WMPaint(var Message: TWMPaint); message WM_PAINT; {$ENDIF COMPILER10_UP} @@ -3778,12 +3782,31 @@ end; end; +procedure TJvDBGrid.ReadDelphi2010OptionsMigrated(Reader: TReader); +begin + FDelphi2010OptionsMigrated := Reader.ReadBoolean; +end; + +procedure TJvDBGrid.WriteDelphi2010OptionsMigrated(Writer: TWriter); +begin + Writer.WriteBoolean(True); +end; + procedure TJvDBGrid.DefineProperties(Filer: TFiler); begin inherited DefineProperties(Filer); Filer.DefineProperty('AlternRowColor', ReadAlternateRowColor, nil, False); Filer.DefineProperty('AlternRowFontColor', ReadAlternateRowFontColor, nil, False); Filer.DefineProperty('PostOnEnter', ReadPostOnEnter, nil, False); + + // We need to migrate the Options set for Delphi 2010 due to the added flags + Filer.DefineProperty('Delphi2010OptionsMigrated', ReadDelphi2010OptionsMigrated, WriteDelphi2010OptionsMigrated, + {$IFDEF COMPILER14_UP} + [dgTitleClick, dgTitleHotTrack] * Options = [] // if one of them is set we already know that we are migrated + {$ELSE} + False + {$ENDIF COMPILER14_UP} + ); end; procedure TJvDBGrid.ReadPostOnEnter(Reader: TReader); @@ -4066,6 +4089,14 @@ WinControl: TWinControl; begin inherited Loaded; + {$IFDEF COMPILER14_UP} + // Fix the bug that Embarcadero has introduced when they added new flags to the Options set + if not FDelphi2010OptionsMigrated and ([dgTitleClick, dgTitleHotTrack] * Options = []) then + begin + FDelphi2010OptionsMigrated := True; + Options := Options + [dgTitleClick, dgTitleHotTrack]; + end; + {$ENDIF COMPILER14_UP} // Edit controls are hidden for Ctrl_Idx := 0 to FControls.Count - 1 do This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-27 14:28:45
|
Revision: 12909 http://jvcl.svn.sourceforge.net/jvcl/?rev=12909&view=rev Author: ahuser Date: 2010-11-27 14:28:39 +0000 (Sat, 27 Nov 2010) Log Message: ----------- Mantis #5419: TJvDBGrid: Fields with editmask defined do not show formatted Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-27 14:09:30 UTC (rev 12908) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-27 14:28:39 UTC (rev 12909) @@ -3397,7 +3397,6 @@ Highlight: Boolean; Bmp: TBitmap; Field, ReadOnlyTestField: TField; - MemoText: string; begin Field := Column.Field; if Assigned(DataSource) and Assigned(DataSource.DataSet) and DataSource.DataSet.Active and @@ -3443,11 +3442,7 @@ if (Field is TStringField) or (FShowMemos and ((Field is TMemoField) {$IFDEF COMPILER10_UP} or (Field is TWideMemoField) {$ENDIF})) then begin - if Assigned(Field.OnGetText) then - MemoText := Field.DisplayText - else - MemoText := Field.AsString; - WriteCellText(Rect, 2, 2, MemoText, Column.Alignment, + WriteCellText(Rect, 2, 2, Field.DisplayText, Column.Alignment, UseRightToLeftAlignmentForField(Field, Column.Alignment), False); end else @@ -4275,7 +4270,7 @@ begin if (Field is TStringField) or (Field is TMemoField) then begin - HintStr := Field.AsString; + HintStr := Field.DisplayText; if WordWrap then CalcOptions := CalcOptions or DT_WORDBREAK; end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-27 16:26:51
|
Revision: 12911 http://jvcl.svn.sourceforge.net/jvcl/?rev=12911&view=rev Author: ahuser Date: 2010-11-27 16:26:44 +0000 (Sat, 27 Nov 2010) Log Message: ----------- Mantis #5360: JvDBGrid title colors are wrong when using Windows Classic theme on Windows XP/2003 (use Delphi XE theming mode instead of our own) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-27 15:17:11 UTC (rev 12910) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-27 16:26:44 UTC (rev 12911) @@ -289,7 +289,9 @@ FCanDelete: Boolean; // XP Theming + {$IFNDEF COMPILER14_UP} FUseXPThemes: Boolean; + {$ENDIF ~COMPILER14_UP} FPaintInfo: TJvGridPaintInfo; FCell: TGridCoord; // currently selected cell @@ -373,11 +375,14 @@ procedure NotifyLayoutChange(const Kind: TJvDBGridLayoutChangeKind); // XP Theming + function GetUseXPThemes: Boolean; procedure SetUseXPThemes(Value: Boolean); + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} function ColumnOffset: Integer; // col offset used for calculations. Is 1 if indicator is being displayed function ValidCell(ACell: TGridCoord): Boolean; {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} protected FCurrentDrawRow: Integer; procedure MouseLeave(Control: TControl); override; @@ -580,7 +585,7 @@ { BooleanEditor: if true, a checkbox is used to edit boolean fields } property BooleanEditor: Boolean read FBooleanEditor write SetBooleanEditor default True; { UseXPThemes: if true, the grid is painted in the active XP theme style } - property UseXPThemes: Boolean read FUseXPThemes write SetUseXPThemes default True; + property UseXPThemes: Boolean read GetUseXPThemes write SetUseXPThemes {$IFDEF COMPILER14_UP} stored False{$ENDIF} default True; { OnCheckIfBooleanField: event used to treat integer fields and string fields as boolean fields } property OnCheckIfBooleanField: TJvDBCheckIfBooleanFieldEvent read FOnCheckIfBooleanField write FOnCheckIfBooleanField; { OnColumnResized: event triggered each time a column is resized with the mouse } @@ -1074,7 +1079,9 @@ FReadOnlyCellColor := clDefault; // XP Theming + {$IFNDEF COMPILER14_UP} FUseXPThemes := True; + {$ENDIF ~COMPILER14_UP} FPaintInfo.ColPressed := False; FPaintInfo.MouseInCol := -1; FPaintInfo.ColPressedIdx := -1; @@ -1804,6 +1811,7 @@ begin if Assigned(FOnBeforePaint) then FOnBeforePaint(Self); + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then begin @@ -1812,6 +1820,7 @@ TStringGrid(Self).Options := TStringGrid(Self).Options - [goFixedVertLine, goFixedHorzLine]; end; {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} inherited Paint; if not (csDesigning in ComponentState) and (dgRowSelect in Options) and DefaultDrawing and Focused then @@ -2295,6 +2304,7 @@ FAcquireFocus := False; try { XP Theming } + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if not (csDesigning in ComponentState) and UseXPThemes and ThemeServices.ThemesEnabled then begin @@ -2318,6 +2328,7 @@ end; end; {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} if Sizing(X, Y) then inherited MouseDown(Button, Shift, X, Y) @@ -2490,13 +2501,16 @@ end; procedure TJvDBGrid.MouseMove(Shift: TShiftState; X, Y: Integer); +{$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} var Cell: TGridCoord; MouseInCol: Integer; {$ENDIF JVCLThemesEnabled} +{$ENDIF ~COMPILER14_UP} begin { XP Theming } + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if not (csDesigning in ComponentState) and UseXPThemes and ThemeServices.ThemesEnabled then begin @@ -2522,6 +2536,7 @@ end; end; {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} if FTracking and not FSwapButtons then TrackButton(X, Y); @@ -2589,6 +2604,7 @@ DoAutoSizeColumns; { XP Theming } + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then begin @@ -2598,6 +2614,7 @@ Invalidate; end; {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} end; procedure TJvDBGrid.WMRButtonUp(var Msg: TWMMouse); @@ -2845,8 +2862,9 @@ RTL: array [Boolean] of Integer = (0, DT_RTLREADING); var DrawBitmap: TBitmap; + Hold: Integer; B, R: TRect; - Hold, DrawOptions: Integer; + DrawOptions: Integer; procedure DrawAText(CellCanvas: TCanvas); begin @@ -2861,7 +2879,7 @@ if not FixCell or not (UseXPThemes and ThemeServices.ThemesEnabled) then {$ENDIF JVCLThemesEnabled} {$IFDEF COMPILER14_UP} - if not FixCell or (DrawingStyle = gdsClassic) then + if not FixCell or (DrawingStyle in [gdsClassic, gdsThemed]) then {$ENDIF COMPILER14_UP} begin if Brush.Style <> bsSolid then @@ -2874,7 +2892,9 @@ end; begin - if ReduceFlicker {$IFDEF JVCLThemesEnabled} and not (UseXPThemes and ThemeServices.ThemesEnabled) {$ENDIF} then + if ReduceFlicker + {$IFDEF COMPILER14_UP} and not FixCell {$ENDIF} + {$IFDEF JVCLThemesEnabled} and not (UseXPThemes and ThemeServices.ThemesEnabled) {$ENDIF} then begin // Use offscreen bitmap to eliminate flicker and // brush origin tics in painting / scrolling. @@ -2930,6 +2950,7 @@ end; procedure TJvDBGrid.DoDrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); +{$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} var Details: TThemedElementDetails; @@ -2937,7 +2958,9 @@ lCellRect: TRect; PenRecall: TPenRecall; {$ENDIF JVCLThemesEnabled} +{$ENDIF ~COMPILER14_UP} begin + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then begin @@ -3002,6 +3025,7 @@ end else {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} CallDrawCellEvent(ACol, ARow, ARect, AState); end; @@ -3302,28 +3326,26 @@ ARect := TitleRect; if (DataLink = nil) or not DataLink.Active then begin - {$IFDEF JVCLThemesEnabled} + {$IFDEF COMPILER14_UP} + DrawCellBackground(TitleRect, FixedColor, AState, ACol, ARow - TitleOffset); + {$ELSE} + {$IFDEF JVCLThemesEnabled} if not (UseXPThemes and ThemeServices.ThemesEnabled) then - {$ENDIF JVCLThemesEnabled} - begin - {$IFDEF COMPILER14_UP} - DrawCellBackground(TitleRect, FixedColor, AState, ACol, ARow - TitleOffset); - {$ELSE} + {$ENDIF JVCLThemesEnabled} Canvas.FillRect(TitleRect); - {$ENDIF COMPILER14_UP} - end; + {$ENDIF COMPILER14_UP} end else if DrawColumn <> nil then begin - {$IFDEF JVCLThemesEnabled} - if not (UseXPThemes and ThemeServices.ThemesEnabled) then - {$ENDIF JVCLThemesEnabled} - begin - {$IFDEF COMPILER14_UP} - DrawCellBackground(TitleRect, FixedColor, AState, ACol, ARow - TitleOffset); - {$ENDIF COMPILER14_UP} - end; + {$IFDEF COMPILER14_UP} + DrawCellBackground(TitleRect, FixedColor, AState, ACol, ARow - TitleOffset); + {$ELSE} +// {$IFDEF JVCLThemesEnabled} +// if not (UseXPThemes and ThemeServices.ThemesEnabled) then +// {$ENDIF JVCLThemesEnabled} +// Canvas.FillRect(TitleRect); + {$ENDIF COMPILER14_UP} case ASortMarker of smDown: Bmp := GetGridBitmap(gpMarkDown); @@ -3356,14 +3378,14 @@ ALeft := TitleRect.Right - Indicator + 3; if IsRightToLeft then ALeft := TitleRect.Left + 3; - {$IFDEF JVCLThemesEnabled} + {$IFDEF COMPILER14_UP} + DrawCellBackground(Rect(TextRect.Right, TitleRect.Top, TitleRect.Right, TitleRect.Bottom), FixedColor, AState, ACol, ARow - TitleOffset); + {$ELSE} + {$IFDEF JVCLThemesEnabled} if not (UseXPThemes and ThemeServices.ThemesEnabled) then - {$ENDIF JVCLThemesEnabled} - {$IFDEF COMPILER14_UP} - DrawCellBackground(Rect(TextRect.Right, TitleRect.Top, TitleRect.Right, TitleRect.Bottom), FixedColor, AState, ACol, ARow - TitleOffset); - {$ELSE} + {$ENDIF JVCLThemesEnabled} Canvas.FillRect(Rect(TextRect.Right, TitleRect.Top, TitleRect.Right, TitleRect.Bottom)); - {$ENDIF COMPILER14_UP} + {$ENDIF COMPILER14_UP} if (ALeft > TitleRect.Left) and (ALeft + Bmp.Width < TitleRect.Right) then DrawBitmapTransparent(Canvas, ALeft, (TitleRect.Bottom + TitleRect.Top - Bmp.Height) div 2, Bmp, clFuchsia); @@ -3372,6 +3394,16 @@ end else WriteCellText(ARect, MinOffs, MinOffs, '', taLeftJustify, False, IsRightToLeft); + {$IFDEF COMPILER14_UP} + if ([dgRowLines, dgColLines] * Options = [dgRowLines, dgColLines]) and + ((DrawingStyle = gdsClassic) or ((DrawingStyle = gdsThemed) and not ThemeServices.ThemesEnabled)) and + not (gdPressed in AState) then + begin + InflateRect(TitleRect, 1, 1); + DrawEdge(Canvas.Handle, TitleRect, BDR_RAISEDINNER, BF_BOTTOMRIGHT); + DrawEdge(Canvas.Handle, TitleRect, BDR_RAISEDINNER, BF_TOPLEFT); + end; + {$ENDIF COMPILER14_UP} finally Canvas.Pen.Color := SavePen; end; @@ -4158,11 +4190,13 @@ begin FPaintInfo.ColPressed := False; FPaintInfo.ColPressedIdx := -1; + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then if ValidCell(FCell) then InvalidateCell(FCell.X, FCell.Y); {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} end; end; @@ -4653,15 +4687,32 @@ end; end; +function TJvDBGrid.GetUseXPThemes: Boolean; +begin + {$IFDEF COMPILER14_UP} + Result := DrawingStyle = gdsThemed; + {$ELSE} + Result := FUseXPThemes; + {$ENDIF COMPILER14_UP} +end; + procedure TJvDBGrid.SetUseXPThemes(Value: Boolean); begin - if Value <> FUseXPThemes then + if Value <> UseXPThemes then begin + {$IFDEF COMPILER14_UP} + if Value then + DrawingStyle := gdsClassic + else + DrawingStyle := gdsThemed; + {$ELSE} FUseXPThemes := Value; Invalidate; + {$ENDIF COMPILER14_UP} end; end; +{$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} function TJvDBGrid.ColumnOffset: Integer; begin @@ -4676,6 +4727,7 @@ Result := (ACell.X <> -1) and (ACell.Y <> -1); end; {$ENDIF JVCLThemesEnabled} +{$ENDIF ~COMPILER14_UP} function TJvDBGrid.BeginColumnDrag(var Origin: Integer; var Destination: Integer; const MousePt: TPoint): Boolean; begin @@ -4701,12 +4753,16 @@ {$ENDIF COMPILER10_UP} procedure TJvDBGrid.CMMouseEnter(var Message: TMessage); +{$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} var Cell: TGridCoord; lPt: TPoint; {$ENDIF JVCLThemesEnabled} +{$ENDIF ~COMPILER14_UP} begin + inherited; + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} lPt := Point(Mouse.CursorPos.X, Mouse.CursorPos.Y); Cell := MouseCoord(lPt.X, lPt.Y); @@ -4714,15 +4770,19 @@ if (dgTitles in Options) and (Cell.Y = 0) then InvalidateCell(Cell.X, Cell.Y); {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} end; procedure TJvDBGrid.CMMouseLeave(var Message: TMessage); begin + inherited; + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then if ValidCell(FCell) then InvalidateCell(FCell.X, FCell.Y); {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} FCell.X := -1; FCell.Y := -1; FPaintInfo.MouseInCol := -1; @@ -4733,11 +4793,13 @@ begin inherited ColExit; FPaintInfo.MouseInCol := -1; + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then if ValidCell(FCell) then InvalidateCell(FCell.X, FCell.Y); {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} end; function TJvDBGrid.AllowTitleClick: Boolean; @@ -4749,10 +4811,12 @@ begin inherited ColumnMoved(FromIndex, ToIndex); FPaintInfo.ColMoving := False; + {$IFNDEF COMPILER14_UP} {$IFDEF JVCLThemesEnabled} if UseXPThemes and ThemeServices.ThemesEnabled then Invalidate; {$ENDIF JVCLThemesEnabled} + {$ENDIF ~COMPILER14_UP} end; procedure TJvDBGrid.MouseWheelHandler(var Message: TMessage); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-27 23:53:04
|
Revision: 12920 http://jvcl.svn.sourceforge.net/jvcl/?rev=12920&view=rev Author: ahuser Date: 2010-11-27 23:52:57 +0000 (Sat, 27 Nov 2010) Log Message: ----------- Mantis #5324: Wrong hint text on TAdtField in JvDbGrid when ShowCellHint = True Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-27 23:25:41 UTC (rev 12919) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-27 23:52:57 UTC (rev 12920) @@ -338,7 +338,7 @@ function GetOptions: TDBGridOptions; procedure SetOptions(Value: TDBGridOptions); function GetMasterColumn(ACol, ARow: Longint): TColumn; - function GetTitleOffset: Byte; + function GetTitleOffset: Integer; procedure SetFixedCols(Value: Integer); function GetFixedCols: Integer; function CalcLeftColumn: Integer; @@ -506,7 +506,7 @@ property VisibleRowCount; property VisibleColCount; property IndicatorOffset; - property TitleOffset: Byte read GetTitleOffset; + property TitleOffset: Integer read GetTitleOffset; property CharList: TCharList read FCharList write FCharList; property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars; published @@ -1384,7 +1384,7 @@ TInternalInplaceEdit(Result).OnChange := EditChanged; end; -function TJvDBGrid.GetTitleOffset: Byte; +function TJvDBGrid.GetTitleOffset: Integer; var I, J: Integer; begin @@ -1392,8 +1392,7 @@ if dgTitles in Options then begin Result := 1; - if (DataLink <> nil) and (DataLink.DataSet <> nil) and - DataLink.DataSet.ObjectView then + if (DataLink <> nil) and (DataLink.DataSet <> nil) and DataLink.DataSet.ObjectView then for I := 0 to Columns.Count - 1 do begin if Columns[I].Showing then @@ -2562,7 +2561,7 @@ begin ACol := Cell.X; if dgIndicator in Options then - Dec(ACol); + Dec(ACol, IndicatorOffset); if (DataLink <> nil) and DataLink.Active and (ACol >= 0) and (ACol < Columns.Count) then DoTitleClick(FPressedCol.Index, FPressedCol.Field); @@ -4242,7 +4241,7 @@ // ARow = -1 if 'outside' a valid cell; // Adjust CursorRect //------------------------------------------------------------------------- - if (FShowTitleHint or FShowCellHint) then + if FShowTitleHint or FShowCellHint then begin if (ARow = -1) or ((ARow >= 1) and not FShowCellHint) then begin @@ -4262,9 +4261,9 @@ end; if dgIndicator in Options then - Dec(ACol); + Dec(ACol, IndicatorOffset); if dgTitles in Options then - Dec(ARow); + Dec(ARow, TitleOffset); if FShowTitleHint and (ACol >= 0) and (ARow = -1) then begin @@ -4717,7 +4716,7 @@ function TJvDBGrid.ColumnOffset: Integer; begin if dgIndicator in Options then - Result := 1 + Result := IndicatorOffset else Result := 0; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 11:03:28
|
Revision: 12927 http://jvcl.svn.sourceforge.net/jvcl/?rev=12927&view=rev Author: ahuser Date: 2010-11-28 11:03:21 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5233: TJvDBGrid wordwrap Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 11:00:15 UTC (rev 12926) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 11:03:21 UTC (rev 12927) @@ -268,6 +268,7 @@ FCharList: TCharList; FScrollBars: TScrollStyle; FWordWrap: Boolean; + FWordWrapAllFields: Boolean; FChangeLinks: TObjectList; FShowMemos: Boolean; FOnShowEditor: TJvDBEditShowEvent; @@ -372,6 +373,7 @@ function EditWithBoolBox(Field: TField): Boolean; {$IFDEF DELPHI9} inline; {$ENDIF DELPHI9} function DoKeyPress(var Msg: TWMChar): Boolean; procedure SetWordWrap(Value: Boolean); + procedure SetWordWrapAllFields(Value: Boolean); procedure NotifyLayoutChange(const Kind: TJvDBGridLayoutChangeKind); // XP Theming @@ -580,6 +582,8 @@ property TitleRowHeight: Integer read FTitleRowHeight write SetTitleRowHeight; { WordWrap: if true, titles, memo and string fields are displayed on several lines } property WordWrap: Boolean read FWordWrap write SetWordWrap default False; + { WordWrapAllFields: if true and WordWrap is true, not only memo and string fields are displayed on several lines } + property WordWrapAllFields: Boolean read FWordWrapAllFields write SetWordWrapAllFields default False; { ShowMemos: if true, memo fields are shown as text } property ShowMemos: Boolean read FShowMemos write SetShowMemos default True; { BooleanEditor: if true, a checkbox is used to edit boolean fields } @@ -721,6 +725,11 @@ {$ENDIF JVCLThemesEnabled} {$ENDIF ~COMPILER7_UP} +function IsMemoField(AField: TField): Boolean; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + Result := AField.DataType in [ftMemo {$IFDEF COMPILER10_UP}, ftWideMemo {$ENDIF}]; +end; + //=== { TInternalInplaceEdit } =============================================== type @@ -3428,6 +3437,7 @@ Highlight: Boolean; Bmp: TBitmap; Field, ReadOnlyTestField: TField; + MemoText: string; begin Field := Column.Field; if Assigned(DataSource) and Assigned(DataSource.DataSet) and DataSource.DataSet.Active and @@ -3470,10 +3480,16 @@ end else begin - if (Field is TStringField) or (FShowMemos and ((Field is TMemoField) - {$IFDEF COMPILER10_UP} or (Field is TWideMemoField) {$ENDIF})) then + if WordWrapAllFields or (Field is TStringField) or (FShowMemos and IsMemoField(Field)) then begin - WriteCellText(Rect, 2, 2, Field.DisplayText, Column.Alignment, + MemoText := Field.DisplayText; + if FShowMemos and IsMemoField(Field) then + begin + // The MemoField's default DisplayText is '(Memo)' but we want the content + if not Assigned(Field.OnGetText) then + MemoText := Field.AsString; + end; + WriteCellText(Rect, 2, 2, MemoText, Column.Alignment, UseRightToLeftAlignmentForField(Field, Column.Alignment), False); end else @@ -4297,22 +4313,17 @@ DataLink.ActiveRecord := ARow; if Field <> nil then begin - if Assigned(Field.OnGetText) then - HintStr := Field.DisplayText + if WordWrap and + (WordWrapAllFields or (Field is TStringField) or (FShowMemos and IsMemoField(Field))) then + CalcOptions := CalcOptions or DT_WORDBREAK; + + HintStr := Field.DisplayText; + // MemoField's DisplayText is '(Memo)' + if not Assigned(Field.OnGetText) and IsMemoField(Field) then + HintStr := Field.AsString else - begin - if (Field is TStringField) or (Field is TMemoField) then - begin - HintStr := Field.DisplayText; - if WordWrap then - CalcOptions := CalcOptions or DT_WORDBREAK; - end - else - if (Field is TBlobField) or EditWithBoolBox(Field) then - HintStr := '' - else - HintStr := Field.DisplayText; - end; + if (Field is TBlobField) or EditWithBoolBox(Field) then + HintStr := ''; end; end; @@ -4336,9 +4347,7 @@ end; if not AtCursorPosition and HintWindowClass.ClassNameIs('THintWindow') then - begin HintPos := ClientToScreen(CursorRect.TopLeft); - end; end; inherited; end; @@ -4347,7 +4356,7 @@ var ALeftCol: Integer; begin - if (dgRowSelect in Options) then + if dgRowSelect in Options then begin ALeftCol := LeftCol; inherited; @@ -4359,13 +4368,23 @@ procedure TJvDBGrid.SetWordWrap(Value: Boolean); begin - if FWordWrap <> Value then + if Value <> FWordWrap then begin FWordWrap := Value; Invalidate; end; end; +procedure TJvDBGrid.SetWordWrapAllFields(Value: Boolean); +begin + if Value <> FWordWrapAllFields then + begin + FWordWrapAllFields := Value; + if WordWrap then + Invalidate; + end; +end; + procedure TJvDBGrid.PlaceControl(Control: TWinControl; ACol, ARow: Integer); var R: TRect; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 12:59:01
|
Revision: 12929 http://jvcl.svn.sourceforge.net/jvcl/?rev=12929&view=rev Author: ahuser Date: 2010-11-28 12:58:55 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5411: The option dgAlwaysShowEditor of JvDBGrid does not work as the standard DBGrid one Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 11:39:12 UTC (rev 12928) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 12:58:55 UTC (rev 12929) @@ -424,6 +424,8 @@ function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override; function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override; procedure Scroll(Distance: Integer); override; + procedure LinkActive(Value: Boolean); override; + procedure UpdateScrollBar; override; // the only virtual method that is called from TDBGrid.DataChanged procedure LayoutChanged; override; procedure TopLeftChanged; override; procedure GridInvalidateRow(Row: Longint); @@ -1996,8 +1998,9 @@ end else begin - if not (Assigned(InplaceEditor) and InplaceEditor.Visible) then - HideEditor; + if not FAlwaysShowEditor or ([dgRowSelect, dgEditing] * Options <> [dgEditing]) then + if HandleAllocated and not (Assigned(InplaceEditor) and InplaceEditor.Visible) then + HideEditor; end; end; @@ -2187,6 +2190,13 @@ if ((AlternateRowColor <> clNone) and (AlternateRowColor <> Color)) or ((AlternateRowFontColor <> clNone) and (AlternateRowFontColor <> Font.Color)) then Invalidate; + + if FAlwaysShowEditor and HandleAllocated and ([dgRowSelect, dgEditing] * Options = [dgEditing]) and + Focused then + begin + ShowEditor; + InvalidateCol(Col); + end; end; end; @@ -2250,6 +2260,24 @@ InvalidateCell(I, Row); end; +procedure TJvDBGrid.LinkActive(Value: Boolean); +begin + inherited LinkActive(Value); + if Value and FAlwaysShowEditor then + ShowEditor; +end; + +procedure TJvDBGrid.UpdateScrollBar; +begin + inherited UpdateScrollBar; + if FAlwaysShowEditor and HandleAllocated and ([dgRowSelect, dgEditing] * Options = [dgEditing]) and + Focused then + begin + ShowEditor; + InvalidateCol(Col); + end; +end; + procedure TJvDBGrid.TopLeftChanged; begin if (dgRowSelect in Options) and DefaultDrawing then @@ -4720,9 +4748,9 @@ begin {$IFDEF COMPILER14_UP} if Value then - DrawingStyle := gdsClassic + DrawingStyle := gdsThemed else - DrawingStyle := gdsThemed; + DrawingStyle := gdsClassic; {$ELSE} FUseXPThemes := Value; Invalidate; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 13:21:04
|
Revision: 12930 http://jvcl.svn.sourceforge.net/jvcl/?rev=12930&view=rev Author: ahuser Date: 2010-11-28 13:20:58 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5181: JvDBGrid. JvDBUltimGrid: beam and star indicators aren't painted in XPTheme mode Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 12:58:55 UTC (rev 12929) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 13:20:58 UTC (rev 12930) @@ -693,40 +693,6 @@ AlignFlags[Alignment] or RTL[RightToLeft] or Flags); end; -{$IFNDEF COMPILER7_UP} - {$IFDEF JVCLThemesEnabled} -procedure DrawArrow(ACanvas: TCanvas; Direction: TScrollDirection; - Location: TPoint; Size: Integer); -const - ArrowPts: array[TScrollDirection, 0..2] of TPoint = - (((X:1; Y:0), (X:0; Y:1), (X:1; Y:2)), - ((X:0; Y:0), (X:1; Y:1), (X:0; Y:2)), - ((X:0; Y:1), (X:1; Y:0), (X:2; Y:1)), - ((X:0; Y:0), (X:1; Y:1), (X:2; Y:0))); -var - I: Integer; - Pts: array[0..2] of TPoint; - OldWidth: Integer; - OldColor: TColor; -begin - if ACanvas = nil then exit; - OldColor := ACanvas.Brush.Color; - ACanvas.Brush.Color := ACanvas.Pen.Color; - Move(ArrowPts[Direction], Pts, SizeOf(Pts)); - for I := 0 to 2 do - Pts[I] := Point(Pts[I].x * Size + Location.X, Pts[I].y * Size + Location.Y); - with ACanvas do - begin - OldWidth := Pen.Width; - Pen.Width := 1; - Polygon(Pts); - Pen.Width := OldWidth; - Brush.Color := OldColor; - end; -end; - {$ENDIF JVCLThemesEnabled} -{$ENDIF ~COMPILER7_UP} - function IsMemoField(AField: TField): Boolean; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin Result := AField.DataType in [ftMemo {$IFDEF COMPILER10_UP}, ftWideMemo {$ENDIF}]; @@ -2992,7 +2958,8 @@ Details: TThemedElementDetails; lCaptionRect: TRect; lCellRect: TRect; - PenRecall: TPenRecall; + Bmp: TBitmap; + DC: HDC; {$ENDIF JVCLThemesEnabled} {$ENDIF ~COMPILER14_UP} begin @@ -3044,15 +3011,27 @@ // draw the indicator if (Datalink.Active) and (ARow - TitleOffset = Datalink.ActiveRecord) then begin - PenRecall := TPenRecall.Create(Canvas.Pen); + // Unfortunatelly the TDBGrid.FIndicators: TImageList is a private field so we have to + // call the original painter for the indicator and draw it into a transparent bitmap + // without the 3D border. + Bmp := TBitmap.Create; try - Canvas.Pen.Color := clWhite; - { BiDiMode <> bidiLeftToRight is handled by the CanvasOrientation } - DrawArrow(Canvas, sdRight, Point(lCellRect.Left + 4, lCellRect.Top + 3), 5); - Canvas.Pen.Color := clBlack; - DrawArrow(Canvas, sdRight, Point(lCellRect.Left + 3, lCellRect.Top + 3), 5); + Bmp.Canvas.Brush.Color := FixedColor; + Bmp.Width := lCellRect.Right - lCellRect.Left; + Bmp.Height := lCellRect.Bottom - lCellRect.Top; + DC := Canvas.Handle; + try + Canvas.Handle := Bmp.Canvas.Handle; + IntersectClipRect(Canvas.Handle, 2, 2, Bmp.Width - 2, Bmp.Height - 2); + CallDrawCellEvent(ACol, ARow, Rect(0, 0, Bmp.Width - 1, Bmp.Height - 1), [gdFixed]); + finally + Canvas.Handle := DC; + end; + Bmp.TransparentColor := FixedColor; + Bmp.Transparent := True; + Canvas.Draw(lCellRect.Left, lCellRect.Top, Bmp); finally - PenRecall.Free; + Bmp.Free; end; end; end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 14:20:28
|
Revision: 12933 http://jvcl.svn.sourceforge.net/jvcl/?rev=12933&view=rev Author: ahuser Date: 2010-11-28 14:20:21 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5422: TJvDBGrid RowResize Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 13:48:17 UTC (rev 12932) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 14:20:21 UTC (rev 12933) @@ -642,6 +642,8 @@ TScrollDirection = (sdLeft, sdRight, sdUp, sdDown); {$ENDIF ~COMPILER7_UP} + TCustomGridAccess = class(TCustomGrid); + const GridBmpNames: array [TGridPicture] of PChar = ('JvDBGridBLOB', 'JvDBGridMEMO', 'JvDBGridPICT', 'JvDBGridOLE', 'JvDBGridOBJECT', @@ -2295,6 +2297,7 @@ lLastSelected, lNewSelected: {$IFDEF RTL200_UP}TBookmark{$ELSE}TBookmarkStr{$ENDIF RTL200_UP}; lCompare: Integer; WasAlwaysShowEditor: Boolean; + WasRowResizing: Boolean; begin if not AcquireFocus then Exit; @@ -2418,7 +2421,20 @@ // Does not work if there's no indicator column //------------------------------------------------------------------------------- if (dgRowSelect in Options) and (Cell.Y >= TitleOffset) then - inherited MouseDown(Button, Shift, 1, Y) + begin + // Why do we always have to work around the VCL. If we use the original X the + // Grid will scroll back to the first column. But if we don't use the original X + // and goRowSizing is enabled, the user can start resizing rows in the wild. + WasRowResizing := goRowSizing in TCustomGridAccess(Self).Options; + try + // Disable goRowSizing without all the code that SetOptions executes. + TGridOptions(Pointer(@TCustomGridAccess(Self).Options)^) := TCustomGridAccess(Self).Options - [goRowSizing]; + inherited MouseDown(Button, Shift, 1, Y); + finally + if WasRowResizing then + TGridOptions(Pointer(@TCustomGridAccess(Self).Options)^) := TCustomGridAccess(Self).Options + [goRowSizing]; + end; + end else inherited MouseDown(Button, Shift, X, Y); if (Col = LastCell.X) and (Row <> LastCell.Y) then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 16:34:12
|
Revision: 12938 http://jvcl.svn.sourceforge.net/jvcl/?rev=12938&view=rev Author: ahuser Date: 2010-11-28 16:34:06 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5289: TJvDBGrid and ScrollBars Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 15:18:59 UTC (rev 12937) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 16:34:06 UTC (rev 12938) @@ -363,7 +363,7 @@ procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL; procedure SetShowMemos(const Value: Boolean); procedure SetBooleanEditor(const Value: Boolean); - procedure SetScrollBars(const Value: TScrollStyle); + procedure SetScrollBars(Value: TScrollStyle); procedure ReadPostOnEnter(Reader: TReader); procedure SetControls(Value: TJvDBGridControls); @@ -425,7 +425,7 @@ function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override; procedure Scroll(Distance: Integer); override; procedure LinkActive(Value: Boolean); override; - procedure UpdateScrollBar; override; // the only virtual method that is called from TDBGrid.DataChanged + procedure UpdateScrollBar; override; procedure LayoutChanged; override; procedure TopLeftChanged; override; procedure GridInvalidateRow(Row: Longint); @@ -465,6 +465,8 @@ procedure RowHeightsChanged; override; function GetDataLink: TDataLink; virtual; procedure Notification(AComponent: TComponent; Operation: TOperation); override; + + procedure CreateParams(var Params: TCreateParams); override; public {$IFDEF SUPPORTS_CLASS_CTORDTORS} class destructor Destroy; @@ -512,7 +514,6 @@ property IndicatorOffset; property TitleOffset: Integer read GetTitleOffset; property CharList: TCharList read FCharList write FCharList; - property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars; published property AutoAppend: Boolean read FAutoAppend write FAutoAppend default True; property SortMarker: TSortMarker read FSortMarker write SetSortMarker default smNone; @@ -551,6 +552,7 @@ property AlternateRowColor: TColor read FAlternateRowColor write SetAlternateRowColor default clNone; property AlternateRowFontColor: TColor read FAlternateRowFontColor write SetAlternateRowFontColor default clNone; property PostOnEnterKey: Boolean read FPostOnEnterKey write FPostOnEnterKey default False; + property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars default ssBoth; property SelectColumn: TSelectColumn read FSelectColumn write FSelectColumn default scDataBase; property SortedField: string read FSortedField write SetSortedField; property ShowTitleHint: Boolean read FShowTitleHint write FShowTitleHint default False; @@ -1006,6 +1008,7 @@ Bmp: TBitmap; begin inherited Create(AOwner); + FScrollBars := ssBoth; // (obones): issue 3026: need to create FChangeLinks at the beginning // so that any change can access the object. It seems that on some @@ -2237,12 +2240,21 @@ procedure TJvDBGrid.UpdateScrollBar; begin - inherited UpdateScrollBar; - if FAlwaysShowEditor and HandleAllocated and ([dgRowSelect, dgEditing] * Options = [dgEditing]) and - Focused then + if HandleAllocated then begin - ShowEditor; - InvalidateCol(Col); + // The grid can only handle ssNone and ssHorizontal. We have to emulate the other modes. + if not (FScrollBars in [ssNone, ssHorizontal]) then + inherited UpdateScrollBar; + if FScrollBars = ssVertical then + ShowScrollBar(Handle, SB_HORZ, False); + + // UpdateScrollBar is the only virtual method that is called from TDBGrid.DataChanged + if FAlwaysShowEditor and ([dgRowSelect, dgEditing] * Options = [dgEditing]) and + Focused then + begin + ShowEditor; + InvalidateCol(Col); + end; end; end; @@ -4650,6 +4662,33 @@ ShowColumnsDialog; end; +procedure TJvDBGrid.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + // The grid can only handle ssNone and ssHorizontal. We have to emulate the other modes. + if FScrollBars = ssVertical then + Params.Style := Params.Style and not WS_HSCROLL; +end; + +procedure TJvDBGrid.SetScrollBars(Value: TScrollStyle); +begin + if Value <> FScrollBars then + begin + FScrollBars := Value; + // The grid can only handle ssNone and ssHorizontal. We have to emulate the other modes. + if Value in [ssVertical, ssBoth] then + Value := ssHorizontal; + + if Value = inherited ScrollBars then + RecreateWnd + else + inherited ScrollBars := Value; + + if (FScrollBars = ssVertical) and HandleAllocated then + ShowScrollBar(Handle, SB_HORZ, False); + end; +end; + procedure TJvDBGrid.SetSelectColumnsDialogStrings(const Value: TJvSelectDialogColumnStrings); begin // do nothing @@ -4705,20 +4744,6 @@ end; end; -procedure TJvDBGrid.SetScrollBars(const Value: TScrollStyle); -var - Style: Integer; -const - ScrollStyles: array [TScrollStyle] of Integer = (0, WS_HSCROLL, WS_VSCROLL, WS_HSCROLL or WS_VSCROLL); -begin - if FScrollBars <> Value then - begin - FScrollBars := Value; - Style := GetWindowLong(Handle, GWL_STYLE); - SetWindowLong(Handle, GWL_STYLE, Style or ScrollStyles[Value]); - end; -end; - procedure TJvDBGrid.SetShowMemos(const Value: Boolean); begin if FShowMemos <> Value then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 16:51:00
|
Revision: 12939 http://jvcl.svn.sourceforge.net/jvcl/?rev=12939&view=rev Author: ahuser Date: 2010-11-28 16:50:53 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5285: TJvDBGrid - Columns can't be moved Mantis #4421: JvDBGrid and TitlePopup (reopened) Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 16:34:06 UTC (rev 12938) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 16:50:53 UTC (rev 12939) @@ -2359,8 +2359,11 @@ (dgTitles in Options) and (dgIndicator in Options) and (Cell.Y = 0) then begin - if (FTitleArrow and Assigned(FOnTitleArrowMenuEvent)) then + if (Cell.X = 0) and FTitleArrow and Assigned(FOnTitleArrowMenuEvent) then + begin FOnTitleArrowMenuEvent(Self); + Exit; + end; // Display TitlePopup if it exists if Assigned(FTitlePopup) then @@ -2368,8 +2371,8 @@ GetCursorPos(CursorPos); FTitlePopup.PopupComponent := Self; FTitlePopup.Popup(CursorPos.X, CursorPos.Y); + Exit; end; - Exit; end; if (DragKind = dkDock) and (Cell.X < IndicatorOffset) and This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 17:23:45
|
Revision: 12940 http://jvcl.svn.sourceforge.net/jvcl/?rev=12940&view=rev Author: ahuser Date: 2010-11-28 17:23:39 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Mantis #5008: JvDBGrid AlternativeRowColor and Column.Color priority Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 16:50:53 UTC (rev 12939) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 17:23:39 UTC (rev 12940) @@ -411,7 +411,7 @@ function AllowTitleClick: Boolean; virtual; procedure EditChanged(Sender: TObject); dynamic; - procedure GetCellProps(Field: TField; AFont: TFont; var Background: TColor; + procedure GetCellProps(Column: TColumn; AFont: TFont; var Background: TColor; Highlight: Boolean); dynamic; function HighlightCell(DataCol, DataRow: Integer; const Value: string; AState: TGridDrawState): Boolean; override; @@ -1982,20 +1982,12 @@ FOnCanEditCell(Self, AField, Result); end; -procedure TJvDBGrid.GetCellProps(Field: TField; AFont: TFont; +procedure TJvDBGrid.GetCellProps(Column: TColumn; AFont: TFont; var Background: TColor; Highlight: Boolean); function IsAfterFixedCols: Boolean; - var - I: Integer; begin - Result := True; - for I := 0 to FixedCols - 1 do - if Assigned(Field) and Assigned(Columns.Items[I]) and (Columns.Items[I].FieldName = Field.FieldName) then - begin - Result := False; - Break; - end; + Result := Column.Index >= FixedCols; end; begin @@ -2004,9 +1996,17 @@ if Odd(FCurrentDrawRow + FixedRows) then begin if (FAlternateRowColor <> clNone) and (FAlternateRowColor <> Color) then - Background := AlternateRowColor; + begin + // Prefer the column's color + if not ((cvColor in Column.AssignedValues) and (Column.Color <> Column.DefaultColor)) then + Background := AlternateRowColor; + end; if FAlternateRowFontColor <> clNone then - AFont.Color := AlternateRowFontColor; + begin + // Prefer the column's font.color if it has a prefered color + if not ((cvColor in Column.AssignedValues) and (Column.Color <> Column.DefaultColor)) then + AFont.Color := AlternateRowFontColor; + end; end; end else @@ -2018,10 +2018,10 @@ Background := clHighlight; end; if Assigned(FOnGetCellParams) then - FOnGetCellParams(Self, Field, AFont, Background, Highlight) + FOnGetCellParams(Self, Column.Field, AFont, Background, Highlight) else if Assigned(FOnGetCellProps) then - FOnGetCellProps(Self, Field, AFont, Background); + FOnGetCellProps(Self, Column.Field, AFont, Background); end; procedure TJvDBGrid.DoTitleClick(ACol: Longint; AField: TField); @@ -2041,7 +2041,6 @@ var I: Integer; IsDescending: Boolean; - begin Result := False; for I := 0 to IndexDefs.Count - 1 do @@ -2702,20 +2701,20 @@ if not DoKeyPress(Msg) then case Char(Msg.CharCode) of #32: - begin - ShowEditor; - ChangeBoolean(JvGridBool_INVERT); - end; + begin + ShowEditor; + ChangeBoolean(JvGridBool_INVERT); + end; Backspace, '0', '-': - begin - ShowEditor; - ChangeBoolean(JvGridBool_UNCHECK); - end; + begin + ShowEditor; + ChangeBoolean(JvGridBool_UNCHECK); + end; '1', '+': - begin - ShowEditor; - ChangeBoolean(JvGridBool_CHECK); - end; + begin + ShowEditor; + ChangeBoolean(JvGridBool_CHECK); + end; end; end else @@ -3483,7 +3482,7 @@ Include(State, gdSelected); NewBackgrnd := Canvas.Brush.Color; Highlight := (gdSelected in State) and ((dgAlwaysShowSelection in Options) or Focused); - GetCellProps(Field, Canvas.Font, NewBackgrnd, Highlight or ActiveRowSelected); + GetCellProps(Column, Canvas.Font, NewBackgrnd, Highlight or ActiveRowSelected); if not Highlight and (ReadOnlyCellColor <> clDefault) and (not Field.CanModify or not CanEditCell(Field)) then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2010-11-28 21:43:59
|
Revision: 12941 http://jvcl.svn.sourceforge.net/jvcl/?rev=12941&view=rev Author: ahuser Date: 2010-11-28 21:43:53 +0000 (Sun, 28 Nov 2010) Log Message: ----------- Delphi 7 compatibility => no JvDBGrid.ScrollBars property and no editor after setfocus when AlwaysShowEditor=True Modified Paths: -------------- trunk/jvcl/run/JvDBGrid.pas Modified: trunk/jvcl/run/JvDBGrid.pas =================================================================== --- trunk/jvcl/run/JvDBGrid.pas 2010-11-28 17:23:39 UTC (rev 12940) +++ trunk/jvcl/run/JvDBGrid.pas 2010-11-28 21:43:53 UTC (rev 12941) @@ -266,7 +266,9 @@ FShowCellHint: Boolean; FOnShowCellHint: TJvCellHintEvent; FCharList: TCharList; + {$IFDEF COMPILER9_UP} FScrollBars: TScrollStyle; + {$ENDIF COMPILER9_UP} FWordWrap: Boolean; FWordWrapAllFields: Boolean; FChangeLinks: TObjectList; @@ -363,7 +365,9 @@ procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL; procedure SetShowMemos(const Value: Boolean); procedure SetBooleanEditor(const Value: Boolean); + {$IFDEF COMPILER9_UP} procedure SetScrollBars(Value: TScrollStyle); + {$ENDIF COMPILER9_UP} procedure ReadPostOnEnter(Reader: TReader); procedure SetControls(Value: TJvDBGridControls); @@ -425,7 +429,9 @@ function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override; procedure Scroll(Distance: Integer); override; procedure LinkActive(Value: Boolean); override; + {$IFDEF COMPILER9_UP} procedure UpdateScrollBar; override; + {$ENDIF COMPILER9_UP} procedure LayoutChanged; override; procedure TopLeftChanged; override; procedure GridInvalidateRow(Row: Longint); @@ -552,7 +558,9 @@ property AlternateRowColor: TColor read FAlternateRowColor write SetAlternateRowColor default clNone; property AlternateRowFontColor: TColor read FAlternateRowFontColor write SetAlternateRowFontColor default clNone; property PostOnEnterKey: Boolean read FPostOnEnterKey write FPostOnEnterKey default False; + {$IFDEF COMPILER9_UP} property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars default ssBoth; + {$ENDIF COMPILER9_UP} property SelectColumn: TSelectColumn read FSelectColumn write FSelectColumn default scDataBase; property SortedField: string read FSortedField write SetSortedField; property ShowTitleHint: Boolean read FShowTitleHint write FShowTitleHint default False; @@ -1008,7 +1016,9 @@ Bmp: TBitmap; begin inherited Create(AOwner); + {$IFDEF COMPILER9_UP} FScrollBars := ssBoth; + {$ENDIF COMPILER9_UP} // (obones): issue 3026: need to create FChangeLinks at the beginning // so that any change can access the object. It seems that on some @@ -2237,6 +2247,7 @@ ShowEditor; end; +{$IFDEF COMPILER9_UP} procedure TJvDBGrid.UpdateScrollBar; begin if HandleAllocated then @@ -2256,6 +2267,7 @@ end; end; end; +{$ENDIF COMPILER9_UP} procedure TJvDBGrid.TopLeftChanged; begin @@ -4667,11 +4679,14 @@ procedure TJvDBGrid.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); + {$IFDEF COMPILER9_UP} // The grid can only handle ssNone and ssHorizontal. We have to emulate the other modes. if FScrollBars = ssVertical then Params.Style := Params.Style and not WS_HSCROLL; + {$ENDIF COMPILER9_UP} end; +{$IFDEF COMPILER9_UP} procedure TJvDBGrid.SetScrollBars(Value: TScrollStyle); begin if Value <> FScrollBars then @@ -4690,6 +4705,7 @@ ShowScrollBar(Handle, SB_HORZ, False); end; end; +{$ENDIF COMPILER9_UP} procedure TJvDBGrid.SetSelectColumnsDialogStrings(const Value: TJvSelectDialogColumnStrings); begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |