diff --git a/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi b/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi index 9af1e4d2c..8f2b20cd1 100644 --- a/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi +++ b/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi @@ -54,7 +54,7 @@ - + @@ -71,6 +71,7 @@ + @@ -102,15 +103,14 @@ - - - + + - - + + @@ -200,9 +200,12 @@ - - - + + + + + + @@ -500,7 +503,7 @@ - + @@ -510,7 +513,7 @@ - + @@ -797,123 +800,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + @@ -943,6 +982,29 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm b/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm index 583a58852..3193ef291 100644 --- a/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm +++ b/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm @@ -1,20 +1,20 @@ object RxDBGridMainForm: TRxDBGridMainForm - Left = 306 + Left = 59 Height = 721 - Top = 142 + Top = 36 Width = 1187 ActiveControl = Panel1 Caption = 'RxDBGrid Demo' - ClientHeight = 698 + ClientHeight = 696 ClientWidth = 1187 Menu = MainMenu1 OnCreate = FormCreate ShowHint = True - LCLVersion = '1.1' + LCLVersion = '1.3' object RxDBGrid1: TRxDBGrid Left = 0 - Height = 634 - Top = 64 + Height = 630 + Top = 66 Width = 1187 TitleButtons = True AutoSort = True @@ -241,6 +241,11 @@ object RxDBGridMainForm: TRxDBGridMainForm Command = rxgcHideQuickFilter ShortCut = 16456 Enabled = True + end + item + Command = rxgcCopyCellValue + ShortCut = 16451 + Enabled = True end> FooterOptions.Active = True FooterOptions.Color = clYellow @@ -268,22 +273,22 @@ object RxDBGridMainForm: TRxDBGridMainForm end object Panel1: TPanel Left = 0 - Height = 64 + Height = 66 Top = 0 Width = 1187 Align = alTop AutoSize = True - ClientHeight = 64 + ClientHeight = 66 ClientWidth = 1187 TabOrder = 1 object Label1: TLabel AnchorSideLeft.Control = Button2 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 - Left = 270 - Height = 15 + Left = 260 + Height = 19 Top = 7 - Width = 35 + Width = 33 BorderSpacing.Around = 6 Caption = 'Mode' ParentColor = False @@ -292,9 +297,9 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Panel1 Left = 7 - Height = 27 + Height = 31 Top = 7 - Width = 86 + Width = 85 Action = actCalcTotal AutoSize = True BorderSpacing.Around = 6 @@ -304,10 +309,10 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Control = Button1 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 - Left = 99 - Height = 27 + Left = 98 + Height = 31 Top = 7 - Width = 165 + Width = 156 Action = actOptimizeColumnsWidthAll AutoSize = True BorderSpacing.Around = 6 @@ -318,11 +323,11 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CheckBox2 AnchorSideTop.Side = asrBottom - Left = 499 - Height = 22 + Left = 489 + Height = 23 Hint = 'Use filter line' - Top = 35 - Width = 83 + Top = 36 + Width = 79 BorderSpacing.Left = 6 Caption = 'Use filter' OnChange = CheckBox1Change @@ -332,9 +337,9 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Control = Label1 AnchorSideTop.Control = Label1 AnchorSideTop.Side = asrBottom - Left = 276 - Height = 25 - Top = 28 + Left = 266 + Height = 27 + Top = 32 Width = 217 BorderSpacing.Around = 6 ItemHeight = 0 @@ -352,11 +357,11 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Control = ComboBox1 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 - Left = 499 - Height = 22 + Left = 489 + Height = 23 Hint = 'Auto fill column width' Top = 7 - Width = 133 + Width = 125 BorderSpacing.Around = 6 Caption = 'Auto fill columns' OnChange = CheckBox2Change @@ -366,10 +371,10 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Control = CheckBox2 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 - Left = 638 - Height = 22 + Left = 620 + Height = 23 Top = 7 - Width = 120 + Width = 115 BorderSpacing.Around = 6 Caption = 'Show indicator' Checked = True @@ -382,10 +387,10 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CheckBox3 AnchorSideTop.Side = asrBottom - Left = 638 - Height = 22 - Top = 35 - Width = 115 + Left = 620 + Height = 23 + Top = 36 + Width = 110 BorderSpacing.Around = 6 Caption = 'Show headers' Checked = True @@ -397,8 +402,8 @@ object RxDBGridMainForm: TRxDBGridMainForm AnchorSideLeft.Control = CheckBox3 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Panel1 - Left = 764 - Height = 22 + Left = 741 + Height = 23 Top = 7 Width = 93 BorderSpacing.Around = 6 @@ -543,7 +548,7 @@ object RxDBGridMainForm: TRxDBGridMainForm Size = 15 end end - object Datasource1: TDatasource + object Datasource1: TDataSource DataSet = RxMemoryData1 left = 120 top = 264 @@ -607,7 +612,7 @@ object RxDBGridMainForm: TRxDBGridMainForm OnExecute = hlpAboutExecute end end - object Datasource2: TDatasource + object Datasource2: TDataSource DataSet = RxMemoryData2 left = 288 top = 368 diff --git a/components/rx/trunk/languages/rxdconst.es.po b/components/rx/trunk/languages/rxdconst.es.po index 79d876c54..8ae023568 100644 --- a/components/rx/trunk/languages/rxdconst.es.po +++ b/components/rx/trunk/languages/rxdconst.es.po @@ -225,6 +225,10 @@ msgstr "Tomar estructura..." msgid "Copy only metadata" msgstr "Copiar solo metadata" +#: rxdconst.srxdbgridcopycellvalue +msgid "Copy cell value" +msgstr "" + #: rxdconst.srxdbgridemptifilter msgid "(Empty)" msgstr "(Todos)" diff --git a/components/rx/trunk/languages/rxdconst.po b/components/rx/trunk/languages/rxdconst.po index 92b6a84a6..1869b9b83 100644 --- a/components/rx/trunk/languages/rxdconst.po +++ b/components/rx/trunk/languages/rxdconst.po @@ -225,6 +225,10 @@ msgstr "" msgid "Copy only metadata" msgstr "" +#: rxdconst.srxdbgridcopycellvalue +msgid "Copy cell value" +msgstr "" + #: rxdconst.srxdbgridemptifilter msgid "(Empty)" msgstr "" diff --git a/components/rx/trunk/languages/rxdconst.ru.po b/components/rx/trunk/languages/rxdconst.ru.po index e2c1a8d14..c08cd5aba 100644 --- a/components/rx/trunk/languages/rxdconst.ru.po +++ b/components/rx/trunk/languages/rxdconst.ru.po @@ -225,6 +225,10 @@ msgstr "Обзор структуры..." msgid "Copy only metadata" msgstr "Копировать только метаданные..." +#: rxdconst.srxdbgridcopycellvalue +msgid "Copy cell value" +msgstr "" + #: rxdconst.srxdbgridemptifilter msgid "(Empty)" msgstr "(Нет)" diff --git a/components/rx/trunk/languages/rxdconst.uk.po b/components/rx/trunk/languages/rxdconst.uk.po index 0a5926a19..65685dbaa 100644 --- a/components/rx/trunk/languages/rxdconst.uk.po +++ b/components/rx/trunk/languages/rxdconst.uk.po @@ -234,6 +234,10 @@ msgstr "Огляд структури ..." msgid "Copy only metadata" msgstr "Копіювати тільки метадані ..." +#: rxdconst.srxdbgridcopycellvalue +msgid "Copy cell value" +msgstr "" + #: rxdconst.srxdbgridemptifilter msgid "(Empty)" msgstr "(Немає)" diff --git a/components/rx/trunk/rxdbgrid.pas b/components/rx/trunk/rxdbgrid.pas index 5cfc2bdc8..5c8ec0047 100644 --- a/components/rx/trunk/rxdbgrid.pas +++ b/components/rx/trunk/rxdbgrid.pas @@ -107,7 +107,7 @@ type TRxDBGridCommand = (rxgcNone, rxgcShowFindDlg, rxgcShowColumnsDlg, rxgcShowFilterDlg, rxgcShowSortDlg, rxgcShowQuickFilter, rxgcHideQuickFilter, rxgcSelectAll, rxgcDeSelectAll, rxgcInvertSelection, - rxgcOptimizeColumnsWidth + rxgcOptimizeColumnsWidth, rxgcCopyCellValue ); @@ -649,6 +649,7 @@ type procedure OnSortBy(Sender: TObject); procedure OnChooseVisibleFields(Sender: TObject); procedure OnSelectAllRows(Sender: TObject); + procedure OnCopyCellValue(Sender: TObject); procedure Loaded; override; procedure UpdateFooterRowOnUpdateActive; @@ -820,10 +821,10 @@ procedure RegisterRxDBGridSortEngine(RxDBGridSortEngineClass: TRxDBGridSortEngin implementation uses Math, rxdconst, rxstrutils, rxdbgrid_findunit, rxdbgrid_columsunit, - rxlookup, tooledit, LCLProc, rxfilterby, rxsortby, variants; + rxlookup, tooledit, LCLProc, Clipbrd, rxfilterby, rxsortby, variants; const - EditorCommandStrs: array[0..10] of TIdentMapEntry = + EditorCommandStrs: array[rxgcNone .. High(TRxDBGridCommand)] of TIdentMapEntry = ( (Value: Ord(rxgcNone); Name: 'rxcgNone'), (Value: Ord(rxgcShowFindDlg); Name: 'rxgcShowFindDlg'), @@ -835,7 +836,8 @@ const (Value: Ord(rxgcSelectAll); Name: 'rxgcSelectAll'), (Value: Ord(rxgcDeSelectAll); Name: 'rxgcDeSelectAll'), (Value: Ord(rxgcInvertSelection); Name: 'rxgcInvertSelection'), - (Value: Ord(rxgcOptimizeColumnsWidth); Name: 'rxgcOptimizeColumnsWidth') + (Value: Ord(rxgcOptimizeColumnsWidth); Name: 'rxgcOptimizeColumnsWidth'), + (Value: Ord(rxgcCopyCellValue); Name: 'rxgcCopyCellValue') ); var @@ -1700,6 +1702,7 @@ begin CreateMenuItem('C', sRxDBGridSortByColumns, @OnSortBy); CreateMenuItem('W', sRxDBGridSelectColumns, @OnChooseVisibleFields); CreateMenuItem('A', sRxDBGridSelectAllRows, @OnSelectAllRows); + CreateMenuItem(#0, sRxDBGridCopyCellValue, @OnCopyCellValue); end; {$IFDEF RxDBGridDepricatedProps} @@ -3560,6 +3563,7 @@ begin rxgcDeSelectAll: DeSelectAllRows; rxgcInvertSelection:InvertSelection; rxgcOptimizeColumnsWidth:OptimizeColumnsWidthAll; + rxgcCopyCellValue:OnCopyCellValue(Self); else exit; end; @@ -4297,6 +4301,19 @@ begin SelectAllRows; end; +procedure TRxDBGrid.OnCopyCellValue(Sender: TObject); +begin + if DatalinkActive and Assigned(SelectedField) then + begin + try + Clipboard.Open; + Clipboard.AsText:=SelectedField.DisplayText; + finally + Clipboard.Close; + end; + end; +end; + procedure TRxDBGrid.Loaded; begin inherited Loaded; @@ -5350,23 +5367,16 @@ begin inherited SetItem(Index, AValue); end; -{function TRxDBGridKeyStrokes.GetOwner: TPersistent; -begin - Result:=FOwn; -end; -} procedure TRxDBGridKeyStrokes.Update(Item: TCollectionItem); begin inherited Update(Item); - if (UpdateCount = 0) and Assigned(Owner) and - Assigned(TRxDBGrid(Owner).FKeyStrokes) then + if (UpdateCount = 0) and Assigned(Owner) and Assigned(TRxDBGrid(Owner).FKeyStrokes) then TRxDBGrid(Owner).UpdateJMenuKeys; end; constructor TRxDBGridKeyStrokes.Create(AOwner: TPersistent); begin - //FOwn := AOwner; inherited Create(AOwner, TRxDBGridKeyStroke); end; @@ -5414,6 +5424,7 @@ begin AddE(rxgcDeSelectAll, Menus.ShortCut(Ord('-'), [ssCtrl])); AddE(rxgcInvertSelection, Menus.ShortCut(Ord('*'), [ssCtrl])); AddE(rxgcOptimizeColumnsWidth, Menus.ShortCut(Ord('+'), [ssCtrl])); + AddE(rxgcCopyCellValue, Menus.ShortCut(Ord('C'), [ssCtrl])); end; function TRxDBGridKeyStrokes.FindRxCommand(AKey: word; diff --git a/components/rx/trunk/rxdconst.pas b/components/rx/trunk/rxdconst.pas index c21184218..4ac06102f 100644 --- a/components/rx/trunk/rxdconst.pas +++ b/components/rx/trunk/rxdconst.pas @@ -111,6 +111,7 @@ resourcestring sRxDBGridSelectColumns = 'Select visible collumns';// Ctrl+W';'Seleccionar Columnas Ctrl+W'; sRxDBGridEmptiFilter = '(Empty)'; sRxDBGridSelectAllRows = 'Select all rows';// Ctrl+W';'Seleccionar Columnas Ctrl+W'; + sRxDBGridCopyCellValue = 'Copy cell value';// Ctrl+W';'Seleccionar Columnas Ctrl+W'; //RxDBGrid filter form sRxFilterFormSelectExp = 'Enter filter expression for data in table:';