RxDBGrid.Columns[].EditButtons[].Style=ebsPlusRx - show UpDown buttorn for edit current numeric field

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2894 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2014-02-02 11:14:10 +00:00
parent acb193861d
commit 4b7b914d2a
4 changed files with 203 additions and 101 deletions

View File

@ -1,4 +1,4 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
@ -60,28 +60,26 @@
<PackageName Value="LCL"/>
</Item4>
</RequiredPackages>
<Units Count="11">
<Units Count="12">
<Unit0>
<Filename Value="PhoneBookDemo.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="PhoneBookDemo"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="3" Y="12"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="pbmainunit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="pbMainForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="pbMainUnit"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="59"/>
<TopLine Value="23"/>
<CursorPos X="52" Y="23"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
@ -108,12 +106,14 @@
<Filename Value="pbeditdataunit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="pbEditDataForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="pbEditDataUnit"/>
<EditorIndex Value="2"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="15"/>
<CursorPos X="3" Y="15"/>
<TopLine Value="11"/>
<CursorPos X="3" Y="42"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -122,8 +122,8 @@
<Filename Value="../../rxcloseformvalidator.pas"/>
<UnitName Value="RxCloseFormValidator"/>
<WindowIndex Value="0"/>
<TopLine Value="130"/>
<CursorPos X="3" Y="159"/>
<TopLine Value="195"/>
<CursorPos X="1" Y="211"/>
<UsageCount Value="10"/>
</Unit5>
<Unit6>
@ -165,116 +165,111 @@
<CursorPos X="3" Y="113"/>
<UsageCount Value="10"/>
</Unit10>
<Unit11>
<Filename Value="/home/alexs/install/source/fpcsrc/rtl/objpas/classes/classesh.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="471"/>
<CursorPos X="1" Y="503"/>
<UsageCount Value="10"/>
</Unit11>
</Units>
<JumpHistory Count="27" HistoryIndex="26">
<JumpHistory Count="24" HistoryIndex="23">
<Position1>
<Filename Value="pbmainunit.pas"/>
<Caret Line="81" Column="9" TopLine="49"/>
<Caret Line="82" Column="5" TopLine="55"/>
</Position1>
<Position2>
<Filename Value="pbmainunit.pas"/>
<Caret Line="82" Column="9" TopLine="50"/>
<Caret Line="83" Column="26" TopLine="56"/>
</Position2>
<Position3>
<Filename Value="pbmainunit.pas"/>
<Caret Line="83" Column="9" TopLine="51"/>
<Caret Line="84" Column="26" TopLine="57"/>
</Position3>
<Position4>
<Filename Value="pbmainunit.pas"/>
<Caret Line="82" Column="9" TopLine="50"/>
<Caret Line="91" Column="26" TopLine="58"/>
</Position4>
<Position5>
<Filename Value="pbmainunit.pas"/>
<Caret Line="81" Column="9" TopLine="49"/>
<Caret Line="95" Column="23" TopLine="65"/>
</Position5>
<Position6>
<Filename Value="pbmainunit.pas"/>
<Caret Line="80" Column="9" TopLine="48"/>
<Caret Line="101" Column="13" TopLine="80"/>
</Position6>
<Position7>
<Filename Value="pbmainunit.pas"/>
<Caret Line="87" Column="9" TopLine="51"/>
<Caret Line="101" Column="78" TopLine="80"/>
</Position7>
<Position8>
<Filename Value="pbmainunit.pas"/>
<Caret Line="82" Column="5" TopLine="55"/>
<Caret Line="91" Column="29" TopLine="79"/>
</Position8>
<Position9>
<Filename Value="pbmainunit.pas"/>
<Caret Line="83" Column="26" TopLine="56"/>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="15" Column="3" TopLine="3"/>
</Position9>
<Position10>
<Filename Value="pbmainunit.pas"/>
<Caret Line="84" Column="26" TopLine="57"/>
<Caret Line="101" Column="74" TopLine="79"/>
</Position10>
<Position11>
<Filename Value="pbmainunit.pas"/>
<Caret Line="91" Column="26" TopLine="58"/>
<Caret Line="75" Column="15" TopLine="41"/>
</Position11>
<Position12>
<Filename Value="pbmainunit.pas"/>
<Caret Line="95" Column="23" TopLine="65"/>
<Caret Line="74" Column="39" TopLine="40"/>
</Position12>
<Position13>
<Filename Value="pbmainunit.pas"/>
<Caret Line="101" Column="13" TopLine="80"/>
<Caret Line="101" Column="72" TopLine="81"/>
</Position13>
<Position14>
<Filename Value="pbmainunit.pas"/>
<Caret Line="101" Column="78" TopLine="80"/>
<Caret Line="106" Column="1" TopLine="81"/>
</Position14>
<Position15>
<Filename Value="pbmainunit.pas"/>
<Caret Line="91" Column="29" TopLine="79"/>
<Caret Line="102" Column="1" TopLine="80"/>
</Position15>
<Position16>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="15" Column="3" TopLine="3"/>
<Filename Value="pbmainunit.pas"/>
<Caret Line="101" Column="1" TopLine="79"/>
</Position16>
<Position17>
<Filename Value="pbmainunit.pas"/>
<Caret Line="101" Column="74" TopLine="79"/>
<Caret Line="103" Column="1" TopLine="81"/>
</Position17>
<Position18>
<Filename Value="pbmainunit.pas"/>
<Caret Line="75" Column="15" TopLine="41"/>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="15" Column="3" TopLine="3"/>
</Position18>
<Position19>
<Filename Value="pbmainunit.pas"/>
<Caret Line="74" Column="39" TopLine="40"/>
<Caret Line="108" Column="13" TopLine="86"/>
</Position19>
<Position20>
<Filename Value="pbmainunit.pas"/>
<Caret Line="101" Column="72" TopLine="81"/>
<Caret Line="36" Column="28" TopLine="18"/>
</Position20>
<Position21>
<Filename Value="pbmainunit.pas"/>
<Caret Line="106" Column="1" TopLine="81"/>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="15" Column="3" TopLine="11"/>
</Position21>
<Position22>
<Filename Value="pbmainunit.pas"/>
<Caret Line="102" Column="1" TopLine="80"/>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="54" Column="3" TopLine="23"/>
</Position22>
<Position23>
<Filename Value="pbmainunit.pas"/>
<Caret Line="101" Column="1" TopLine="79"/>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="52" Column="58" TopLine="1"/>
</Position23>
<Position24>
<Filename Value="pbmainunit.pas"/>
<Caret Line="103" Column="1" TopLine="81"/>
</Position24>
<Position25>
<Filename Value="pbeditdataunit.pas"/>
<Caret Line="15" Column="3" TopLine="3"/>
</Position25>
<Position26>
<Filename Value="pbmainunit.pas"/>
<Caret Line="108" Column="13" TopLine="86"/>
</Position26>
<Position27>
<Filename Value="pbmainunit.pas"/>
<Caret Line="36" Column="28" TopLine="18"/>
</Position27>
<Caret Line="55" Column="58" TopLine="23"/>
</Position24>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
@ -307,4 +302,5 @@
</Item1>
</Watches>
</Debugging>
<EditorMacros Count="0"/>
</CONFIG>

View File

@ -7,14 +7,14 @@ object pbEditDataForm: TpbEditDataForm
ClientHeight = 401
ClientWidth = 530
Position = poScreenCenter
LCLVersion = '0.9.31'
LCLVersion = '1.3'
object Label1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 6
Height = 18
Height = 19
Top = 6
Width = 72
Width = 66
BorderSpacing.Around = 6
Caption = 'Patronymic'
FocusControl = DBEdit1
@ -25,9 +25,9 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Control = DBEdit1
AnchorSideTop.Side = asrBottom
Left = 6
Height = 18
Top = 63
Width = 40
Height = 19
Top = 68
Width = 34
BorderSpacing.Around = 6
Caption = 'Name'
FocusControl = DBEdit2
@ -38,10 +38,10 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DBEdit1
AnchorSideTop.Side = asrBottom
Left = 235
Height = 18
Top = 63
Width = 60
Left = 240
Height = 19
Top = 68
Width = 51
BorderSpacing.Around = 6
Caption = 'Surname'
FocusControl = DBEdit3
@ -52,9 +52,9 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Control = DBEdit2
AnchorSideTop.Side = asrBottom
Left = 6
Height = 18
Top = 120
Width = 41
Height = 19
Top = 130
Width = 37
BorderSpacing.Around = 6
Caption = 'Phone'
FocusControl = DBEdit4
@ -64,10 +64,10 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideLeft.Control = Label3
AnchorSideTop.Control = DBEdit3
AnchorSideTop.Side = asrBottom
Left = 235
Height = 18
Top = 120
Width = 23
Left = 240
Height = 19
Top = 130
Width = 22
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
Caption = 'ICQ'
@ -79,9 +79,9 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Control = DBEdit4
AnchorSideTop.Side = asrBottom
Left = 6
Height = 18
Top = 177
Width = 41
Height = 19
Top = 192
Width = 36
BorderSpacing.Around = 6
Caption = 'Memo'
ParentColor = False
@ -93,8 +93,8 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 12
Height = 27
Top = 30
Height = 31
Top = 31
Width = 512
DataField = 'PATRONYMIC'
DataSource = pbMainForm.Datasource1
@ -110,9 +110,9 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Label3
Left = 12
Height = 27
Top = 87
Width = 217
Height = 31
Top = 93
Width = 222
DataField = 'NAME'
DataSource = pbMainForm.Datasource1
Anchors = [akTop, akLeft, akRight]
@ -127,10 +127,10 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 241
Height = 27
Top = 87
Width = 283
Left = 246
Height = 31
Top = 93
Width = 278
DataField = 'SURNAME'
DataSource = pbMainForm.Datasource1
Anchors = [akTop, akLeft, akRight]
@ -145,9 +145,9 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Label3
Left = 12
Height = 27
Top = 144
Width = 217
Height = 31
Top = 155
Width = 222
DataField = 'PHONE'
DataSource = pbMainForm.Datasource1
Anchors = [akTop, akLeft, akRight]
@ -162,10 +162,10 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 241
Height = 27
Top = 144
Width = 283
Left = 246
Height = 31
Top = 155
Width = 278
DataField = 'ICQ'
DataSource = pbMainForm.Datasource1
Anchors = [akTop, akLeft, akRight]
@ -198,8 +198,8 @@ object pbEditDataForm: TpbEditDataForm
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonPanel1
Left = 12
Height = 146
Top = 201
Height = 130
Top = 217
Width = 512
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
@ -217,10 +217,12 @@ object pbEditDataForm: TpbEditDataForm
item
Control = DBEdit2
FieldCaption = 'Name'
OnValidate = RxCloseFormValidator1Items1Validate
end
item
Control = DBEdit4
FieldCaption = 'Phone'
OnValidate = RxCloseFormValidator1Items2Validate
end>
left = 376
top = 8

View File

@ -38,7 +38,7 @@ interface
uses
Classes, SysUtils, LResources, LCLVersion, LCLType, LCLIntf, Forms, Controls, Buttons,
Graphics, Dialogs, Grids, dbutils, DBGrids, DB, PropertyStorage, vclutils,
LMessages, types, StdCtrls, Menus;
LMessages, types, StdCtrls, Menus, rxspin;
{//$if ((lcl_major = 1) and (lcl_minor = 1))}
@ -354,6 +354,8 @@ type
FStyle: TRxColumnEditButtonStyle;
FButton:TSpeedButton;
FVisible: Boolean;
//
FSpinBtn:TRxSpinButton;
function GetGlyph: TBitmap;
function GetHint: String;
function GetNumGlyphs: Integer;
@ -366,6 +368,9 @@ type
procedure SetStyle(AValue: TRxColumnEditButtonStyle);
procedure SetVisible(AValue: Boolean);
procedure SetWidth(AValue: Integer);
procedure DoBottomClick(Sender: TObject);
procedure DoTopClick(Sender: TObject);
protected
function GetDisplayName: string; override;
public
@ -678,6 +683,7 @@ type
procedure DoEditorShow; override;
procedure EraseBackground(DC: HDC); override;
property Editor;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@ -1048,6 +1054,7 @@ end;
procedure TRxColumnEditButton.SetHint(AValue: String);
begin
FButton.Hint:=AValue;
FSpinBtn.Hint:=AValue;
end;
procedure TRxColumnEditButton.SetNumGlyphs(AValue: Integer);
@ -1068,14 +1075,85 @@ end;
procedure TRxColumnEditButton.SetVisible(AValue: Boolean);
begin
if FVisible=AValue then Exit;
// if FVisible=AValue then Exit;
FVisible:=AValue;
FButton.Visible:=AValue;
if AValue then
begin
if Style = ebsUpDownRx then
begin
FSpinBtn.Visible:=AValue;
FButton.Visible:=false;
end
else
begin
FButton.Visible:=AValue;
FSpinBtn.Visible:=false;
end;
end
else
begin
FButton.Visible:=AValue;
FSpinBtn.Visible:=AValue;
end;
end;
procedure TRxColumnEditButton.SetWidth(AValue: Integer);
begin
FButton.Width:=AValue;
FSpinBtn.Width:=AValue;
end;
procedure TRxColumnEditButton.DoBottomClick(Sender: TObject);
var
F:TField;
Col:TRxColumn;
msg: TGridMessage;
begin
Col:=TRxColumnEditButtons(Collection).FOwner as TRxColumn;
F:=Col.Field;
if Assigned(F) and (F.DataType in NumericDataTypes) then
begin
if not (F.DataSet.State in dsEditModes) then
F.DataSet.Edit;
F.Value:=F.Value + 1;
Msg.LclMsg.msg:=GM_SETVALUE;
Msg.Grid:=Col.Grid;
{ Msg.Col:=FCol;
Msg.Row:=FRow;}
Msg.Value:=F.DisplayText;
TRxDBGrid(Col.Grid).Editor.Dispatch(Msg);
end;
end;
procedure TRxColumnEditButton.DoTopClick(Sender: TObject);
var
F:TField;
Col:TRxColumn;
msg: TGridMessage;
begin
Col:=TRxColumnEditButtons(Collection).FOwner as TRxColumn;
F:=Col.Field;
if Assigned(F) and (F.DataType in NumericDataTypes) then
begin
if not (F.DataSet.State in dsEditModes) then
F.DataSet.Edit;
F.Value:=F.Value - 1;
Msg.LclMsg.msg:=GM_SETVALUE;
Msg.Grid:=Col.Grid;
{ Msg.Col:=FCol;
Msg.Row:=FRow;}
Msg.Value:=F.DisplayText;
TRxDBGrid(Col.Grid).Editor.Dispatch(Msg);
end;
end;
function TRxColumnEditButton.GetDisplayName: string;
@ -1091,6 +1169,10 @@ begin
inherited Create(ACollection);
FButton:=TSpeedButton.Create(nil);
FButton.Glyph:=LoadLazResBitmapImage('rx_markerdown');
FSpinBtn:=TRxSpinButton.Create(nil);
FSpinBtn.OnBottomClick:=@DoBottomClick;
FSpinBtn.OnTopClick:=@DoTopClick;
FVisible:=true;
Width:=15;
end;
@ -1098,6 +1180,7 @@ end;
destructor TRxColumnEditButton.Destroy;
begin
FreeAndNil(FButton);
FreeAndNil(FSpinBtn);
inherited Destroy;
end;
@ -2606,6 +2689,7 @@ procedure TRxDBGrid.DoSetColEdtBtn;
var
R:TRxColumn;
i, w:integer;
SB:TGraphicControl;
begin
R:=SelectedColumn as TRxColumn;
@ -2634,13 +2718,27 @@ begin
for i:=0 to R.EditButtons.Count-1 do
if R.EditButtons[i].Visible then
begin
if R.EditButtons[i].Style = ebsUpDownRx then
begin
SB:=R.EditButtons[i].FSpinBtn;
TRxSpinButton(SB).FocusControl:=Editor;
end
else
SB:=R.EditButtons[i].FButton;
SB.Parent:=Self;
SB.Left:=W;
SB.Top:=Editor.Top;
SB.Height:=Editor.Height;
SB.Visible:=true;
{
R.EditButtons[i].FButton.Parent:=Self;
R.EditButtons[i].FButton.Left:=W;
R.EditButtons[i].FButton.Top:=Editor.Top;
R.EditButtons[i].FButton.Height:=Editor.Height;
R.EditButtons[i].FButton.Visible:=true;
W:=W+R.EditButtons[i].FButton.Width;
R.EditButtons[i].Visible:=true;
}
W:=W+R.EditButtons[i].Width;
end;
end;
end;
@ -4412,7 +4510,13 @@ begin
if Assigned(Editor) and Assigned(R) then
for i:=0 to R.EditButtons.Count-1 do
R.EditButtons[i].FButton.Visible:=false;
begin
// R.EditButtons[i].Visible:=false;
if R.EditButtons[i].Style = ebsUpDownRx then
R.EditButtons[i].FSpinBtn.Visible:=false
else
R.EditButtons[i].FButton.Visible:=false;
end;
end;
procedure TRxDBGrid.DoEditorShow;

View File

@ -26,7 +26,7 @@ Copyright (c) 1998 Master-Bank
translate to Lazarus by alexs in 2005 - 2014
"/>
<License Value="LGPL"/>
<Version Major="2" Minor="6" Release="2" Build="136"/>
<Version Major="2" Minor="6" Release="3" Build="139"/>
<Files Count="68">
<Item1>
<Filename Value="autopanel.pas"/>