1. Rework wordwrap procedure

2. RxDBGrid - in tools menu hide not used items

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2570 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2012-10-18 14:11:00 +00:00
parent 38e19b287d
commit 9a87777833
3 changed files with 75 additions and 235 deletions

View File

@ -71,9 +71,10 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="RxDBGridMainUnit"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="240"/>
<TopLine Value="233"/>
<CursorPos X="24" Y="262"/>
<UsageCount Value="88"/>
<Loaded Value="True"/>
@ -497,8 +498,6 @@
<Unit58>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<UnitName Value="rxdbgrid"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="836"/>
<CursorPos X="7" Y="858"/>
@ -508,27 +507,22 @@
<Item1 X="1" Y="1838" ID="4"/>
<Item2 X="1" Y="2672" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit58>
<Unit59>
<Filename Value="/usr/local/share/lazarus/lcl/dbgrids.pas"/>
<UnitName Value="DBGrids"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="443"/>
<CursorPos X="14" Y="463"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit59>
<Unit60>
<Filename Value="/usr/local/share/lazarus/lcl/grids.pas"/>
<UnitName Value="Grids"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="2558"/>
<CursorPos X="1" Y="2580"/>
<UsageCount Value="21"/>
<Loaded Value="True"/>
</Unit60>
<Unit61>
<Filename Value="../../../../../../install/fpcsrc/rtl/objpas/classes/classesh.inc"/>
@ -780,127 +774,39 @@
<UsageCount Value="10"/>
</Unit92>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<JumpHistory Count="8" HistoryIndex="7">
<Position1>
<Filename Value="/usr/local/share/lazarus/lcl/grids.pas"/>
<Caret Line="2574" Column="1" TopLine="2565"/>
</Position1>
<Position2>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2366" Column="1" TopLine="2339"/>
</Position2>
<Position3>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2359" Column="1" TopLine="2312"/>
</Position3>
<Position4>
<Filename Value="/usr/local/share/lazarus/lcl/grids.pas"/>
<Caret Line="3853" Column="3" TopLine="3834"/>
</Position4>
<Position5>
<Filename Value="/usr/local/share/lazarus/lcl/grids.pas"/>
<Caret Line="3849" Column="25" TopLine="3824"/>
</Position5>
<Position6>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2361" Column="19" TopLine="2321"/>
</Position6>
<Position7>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2367" Column="1" TopLine="2346"/>
</Position7>
<Position8>
<Filename Value="/usr/local/share/lazarus/lcl/grids.pas"/>
<Caret Line="2574" Column="1" TopLine="2553"/>
</Position8>
<Position9>
<Filename Value="/usr/local/share/lazarus/lcl/grids.pas"/>
<Caret Line="5471" Column="49" TopLine="5448"/>
</Position9>
<Position10>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2305" Column="17" TopLine="2288"/>
</Position10>
<Position11>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2355" Column="1" TopLine="2331"/>
</Position11>
<Position12>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="396" Column="77" TopLine="406"/>
</Position12>
<Position13>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2671" Column="1" TopLine="2617"/>
</Position13>
<Position14>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="73" Column="1" TopLine="53"/>
</Position14>
<Position15>
</Position1>
<Position2>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="75" Column="1" TopLine="54"/>
</Position15>
<Position16>
</Position2>
<Position3>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="260" Column="38" TopLine="241"/>
</Position16>
<Position17>
</Position3>
<Position4>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="262" Column="43" TopLine="239"/>
</Position17>
<Position18>
</Position4>
<Position5>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="260" Column="43" TopLine="240"/>
</Position18>
<Position19>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="718" Column="14" TopLine="699"/>
</Position19>
<Position20>
</Position5>
<Position6>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="260" Column="43" TopLine="240"/>
</Position20>
<Position21>
</Position6>
<Position7>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="262" Column="24" TopLine="240"/>
</Position21>
<Position22>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="674" Column="14" TopLine="653"/>
</Position22>
<Position23>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="549" Column="31" TopLine="530"/>
</Position23>
<Position24>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2304" Column="37" TopLine="2269"/>
</Position24>
<Position25>
</Position7>
<Position8>
<Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="262" Column="24" TopLine="240"/>
</Position25>
<Position26>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="674" Column="14" TopLine="654"/>
</Position26>
<Position27>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="550" Column="15" TopLine="534"/>
</Position27>
<Position28>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2371" Column="10" TopLine="2342"/>
</Position28>
<Position29>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="2332" Column="1" TopLine="2312"/>
</Position29>
<Position30>
<Filename Value="/usr/local/share/lazarus/components/rxnew/rxdbgrid.pas"/>
<Caret Line="1210" Column="17" TopLine="1200"/>
</Position30>
</Position8>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

View File

@ -5,7 +5,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
Width = 1187
ActiveControl = Panel1
Caption = 'RxDBGrid Demo'
ClientHeight = 698
ClientHeight = 702
ClientWidth = 1187
Menu = MainMenu1
OnCreate = FormCreate
@ -13,8 +13,8 @@ object RxDBGridMainForm: TRxDBGridMainForm
LCLVersion = '1.1'
object RxDBGrid1: TRxDBGrid
Left = 0
Height = 634
Top = 64
Height = 648
Top = 54
Width = 1187
TitleButtons = True
AutoSort = True
@ -81,7 +81,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
Title.Orientation = toHorizontal
Title.Hint = 'Product name'
Title.ShowHint = True
Width = 136
Width = 110
FieldName = 'NAME'
Filter.Font.Style = [fsItalic]
Filter.DropDownRows = 0
@ -268,22 +268,22 @@ object RxDBGridMainForm: TRxDBGridMainForm
end
object Panel1: TPanel
Left = 0
Height = 64
Height = 54
Top = 0
Width = 1187
Align = alTop
AutoSize = True
ClientHeight = 64
ClientHeight = 54
ClientWidth = 1187
TabOrder = 1
object Label1: TLabel
AnchorSideLeft.Control = Button2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
Left = 245
Height = 15
Left = 240
Height = 13
Top = 7
Width = 34
Width = 26
BorderSpacing.Around = 6
Caption = 'Mode'
ParentColor = False
@ -292,9 +292,9 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
Left = 7
Height = 27
Height = 23
Top = 7
Width = 77
Width = 83
Action = actCalcTotal
AutoSize = True
BorderSpacing.Around = 6
@ -304,10 +304,10 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Control = Button1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
Left = 90
Height = 27
Left = 96
Height = 23
Top = 7
Width = 149
Width = 138
Action = actOptimizeColumnsWidthAll
AutoSize = True
BorderSpacing.Around = 6
@ -318,11 +318,11 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CheckBox2
AnchorSideTop.Side = asrBottom
Left = 474
Height = 22
Left = 469
Height = 17
Hint = 'Use filter line'
Top = 35
Width = 78
Top = 30
Width = 63
BorderSpacing.Left = 6
Caption = 'Use filter'
OnChange = CheckBox1Change
@ -332,12 +332,12 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Control = Label1
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
Left = 251
Height = 25
Top = 28
Left = 246
Height = 21
Top = 26
Width = 217
BorderSpacing.Around = 6
ItemHeight = 0
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'Edit mode'
@ -352,11 +352,11 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Control = ComboBox1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
Left = 474
Height = 22
Left = 469
Height = 17
Hint = 'Auto fill column width'
Top = 7
Width = 122
Width = 97
BorderSpacing.Around = 6
Caption = 'Auto fill columns'
OnChange = CheckBox2Change
@ -366,10 +366,10 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Control = CheckBox2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
Left = 602
Height = 22
Left = 572
Height = 17
Top = 7
Width = 113
Width = 90
BorderSpacing.Around = 6
Caption = 'Show indicator'
Checked = True
@ -382,10 +382,10 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CheckBox3
AnchorSideTop.Side = asrBottom
Left = 602
Height = 22
Top = 35
Width = 111
Left = 572
Height = 17
Top = 30
Width = 88
BorderSpacing.Around = 6
Caption = 'Show headers'
Checked = True
@ -397,10 +397,10 @@ object RxDBGridMainForm: TRxDBGridMainForm
AnchorSideLeft.Control = CheckBox3
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
Left = 721
Height = 22
Left = 668
Height = 17
Top = 7
Width = 90
Width = 73
BorderSpacing.Around = 6
Caption = 'Word wrap'
OnChange = CheckBox5Change

View File

@ -2086,13 +2086,14 @@ end;
procedure TRxDBGrid.UpdateJMenuStates;
begin
F_PopupMenu.Items[0].Enabled := rdgAllowDialogFind in FOptionsRx;
F_PopupMenu.Items[1].Enabled := rdgAllowFilterForm in FOptionsRx;
F_PopupMenu.Items[2].Enabled := rdgAllowQuickFilter in FOptionsRx;
F_PopupMenu.Items[3].Enabled :=
F_PopupMenu.Items[0].Visible := rdgAllowDialogFind in FOptionsRx;
F_PopupMenu.Items[1].Visible := rdgAllowFilterForm in FOptionsRx;
F_PopupMenu.Items[2].Visible := rdgAllowQuickFilter in FOptionsRx;
F_PopupMenu.Items[3].Visible :=
(rdgFilter in FOptionsRx) or (rdgAllowFilterForm in FOptionsRx);
F_PopupMenu.Items[5].Enabled := rdgAllowSortForm in FOptionsRx;
F_PopupMenu.Items[6].Enabled := rdgAllowColumnsForm in FOptionsRx;
F_PopupMenu.Items[5].Visible := rdgAllowSortForm in FOptionsRx;
F_PopupMenu.Items[6].Visible := rdgAllowColumnsForm in FOptionsRx;
F_PopupMenu.Items[7].Visible := dgMultiselect in Options;
end;
procedure TRxDBGrid.UpdateJMenuKeys;
@ -3139,7 +3140,7 @@ begin
else
MPT.Y := Rct.Bottom;
MPT := ClientToScreen(MPT);
// DrawCell(0,0,F_TopRect,[gdFixed]);
UpdateJMenuStates;
F_PopupMenu.Popup(MPT.X, MPT.Y);
end;
@ -3260,14 +3261,18 @@ begin
exit;
end;
VK_DOWN: if not (aoAppend in FAllowedOperations) then
VK_DOWN:
if not (aoAppend in FAllowedOperations) then
begin
FTmpReadOnly := ReadOnly;
ReadOnly := True;
inherited KeyDown(Key, Shift);
ReadOnly := FTmpReadOnly;
exit;
end;
end
{ else
UpdateRowsHeight;
VK_UP:UpdateRowsHeight};
end;
inherited KeyDown(Key, Shift);
if Key <> 0 then
@ -3356,6 +3361,9 @@ end;
procedure TRxDBGrid.Paint;
begin
if rdgWordWrap in FOptionsRx then
UpdateRowsHeight;
inherited Paint;
if FFooterOptions.Active and (FFooterOptions.RowCount > 0) then
DrawFooterRows;
@ -3374,7 +3382,8 @@ begin
else
if FFooterOptions.Active and (FFooterOptions.RowCount > 0) then
UpdateFooterRowOnUpdateActive;
// CalcStatTotals;
// UpdateRowsHeight;
end;
procedure TRxDBGrid.UpdateData;
@ -3387,84 +3396,9 @@ begin
inherited MoveSelection;
if Assigned(FFooterOptions) and FFooterOptions.Active and (FFooterOptions.RowCount > 0) then
DrawFooterRows;
// UpdateRowsHeight;
end;
(*
function TRxDBGrid.GetBufferCount: integer;
var
i, J, W, H, H1, HW, k:integer;
B:boolean;
F:TField;
S:string;
CurActiveRecord: Integer;
begin
b:=false;
for i:=0 to Columns.Count-1 do
begin
if TRxColumn(Columns[i]).WordWrap then
begin
B:=true;
Break;
end;
end;
if not B then
Result:=inherited GetBufferCount
else
begin
CurActiveRecord:=DataLink.ActiveRecord;
Result:=0;
HW:=0;
K:=1;
for i:=GCache.VisibleGrid.Top to GCache.VisibleGrid.Bottom do
begin
DataLink.ActiveRecord:=i - FixedRows;
H:=1; //DefaultRowHeight;
for j:=0 to Columns.Count-1 do
begin
W:=Columns[i].Width;
if TRxColumn(Columns[i]).WordWrap then
begin
F:=Columns[i].Field;
if Assigned(F) then
S:=F.DisplayText
else
S:='';
H1 := Max((Canvas.TextWidth(S) + 2) div W + 1, H);
if H1 > WordCount(S, [' ']) then
H1 := WordCount(S, [' ']);
end;
H:=Max(H, H1);
end;
HW:=HW + H * DefaultRowHeight;
if HW>Height then
break;
RowHeights[K] := DefaultRowHeight * H;
inc(K);
inc(Result);
end;
DataLink.ActiveRecord:=CurActiveRecord;
{
if (ARow>=FixedRows) and FDataLink.Active then
begin
FDataLink.ActiveRecord:=ARow-FixedRows;
FDrawingActiveRecord := ARow = Row;
FDrawingMultiSelRecord := (dgMultiSelect in Options) and
SelectedRows.CurrentRowSelected
end else begin
FDrawingActiveRecord := False;
FDrawingMultiSelRecord := False;
end;
}
end;
end;
*)
procedure TRxDBGrid.CMHintShow(var Message: TLMessage);
var
Cell: TGridCoord;
@ -3580,8 +3514,8 @@ begin
inherited VisualChange;
CalcTitle;
if rdgWordWrap in FOptionsRx then
UpdateRowsHeight;
{ if rdgWordWrap in FOptionsRx then
UpdateRowsHeight;}
end;
function TRxDBGrid.EditorByStyle(Style: TColumnButtonStyle): TWinControl;