From 7ea09c82933883c36be1a85b5055ca261f3e9f43 Mon Sep 17 00:00:00 2001 From: alexs75 Date: Tue, 19 Feb 2008 15:55:07 +0000 Subject: [PATCH] + new procedure in module dbutils - FillValueForField + editor for property TRxColumnFooter.FieldName git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@354 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/dbutils.pas | 38 ++++++++++++++++++++--------- components/rx/docs/WhatsNew.eng.txt | 3 +++ components/rx/docs/WhatsNew.rus.txt | 2 ++ components/rx/registerrx.pas | 34 ++++++++++++++++++++++++-- components/rx/rxdbgrid.pas | 1 + 5 files changed, 65 insertions(+), 13 deletions(-) diff --git a/components/rx/dbutils.pas b/components/rx/dbutils.pas index c7108e4df..6f335d9e0 100644 --- a/components/rx/dbutils.pas +++ b/components/rx/dbutils.pas @@ -88,6 +88,7 @@ procedure ConfirmDataSetCancel(DataSet: TDataSet); procedure CheckRequiredField(Field: TField); procedure CheckRequiredFields(const Fields: array of TField); function ExtractFieldName(const Fields: string; var Pos: Integer): string; +procedure FillValueForField(const Field: TField; Value:Variant); { SQL expressions } @@ -565,7 +566,7 @@ var FieldArray: PFieldArray; begin { with DataSet do begin - FieldArray := AllocMemo(FieldCount * SizeOf(TFieldInfo)); + FieldArray := AllocMem(FieldCount * SizeOf(TFieldInfo)); try for I := 0 to FieldCount - 1 do begin S := IniReadString(IniFile, CheckSection(DataSet, Section), @@ -823,18 +824,10 @@ end; procedure CheckRequiredField(Field: TField); begin with Field do - if not ReadOnly and not Calculated and IsNull then begin + if not ReadOnly and not Calculated and IsNull then + begin FocusControl; DatabaseErrorFmt(SFieldRequired, [DisplayName]); -(*{$IFDEF WIN32} - {$IFNDEF RX_D3} - DBErrorFmt(SFieldRequired, [DisplayName]); - {$ELSE} - DatabaseErrorFmt(SFieldRequired, [DisplayName]); - {$ENDIF} -{$ELSE} - DBErrorFmt(SFieldRequired, [DisplayName^]); -{$ENDIF WIN32}*) end; end; @@ -887,4 +880,27 @@ begin Pos := I; end; +procedure FillValueForField(const Field: TField; Value: Variant); +var + DS:TDataSet; + P:TBookmarkStr; +begin + DS:=Field.DataSet; + DS.DisableControls; + P:=DS.Bookmark; + try + DS.First; + while not DS.EOF do + begin + DS.Edit; + Field.Value:=Value; + DS.Post; + DS.Next; + end; + finally + DS.Bookmark:=P; + DS.EnableControls; + end; +end; + end. diff --git a/components/rx/docs/WhatsNew.eng.txt b/components/rx/docs/WhatsNew.eng.txt index 0f4e6f1a4..83c588d83 100644 --- a/components/rx/docs/WhatsNew.eng.txt +++ b/components/rx/docs/WhatsNew.eng.txt @@ -28,6 +28,9 @@ (see Demos/RxDBGrid) - minor fix in filter combobox in RxDBGrid for GTK and GTK2 + TRxSpeedButton and TRxClock + + new procedure in module dbutils - FillValueForField + + editor for property TRxColumnFooter.FieldName + 29.08.2007 - ўҐабЁп 1.1.5.98 (svn revision 39) + In RxDBgrid - after close dataset list of SelectedRows is cleared + fix resaizing find form for RxDbGrd diff --git a/components/rx/docs/WhatsNew.rus.txt b/components/rx/docs/WhatsNew.rus.txt index a7eb27fa5..a3a336ee8 100644 --- a/components/rx/docs/WhatsNew.rus.txt +++ b/components/rx/docs/WhatsNew.rus.txt @@ -33,6 +33,8 @@ (см. Demos/RxDBGrid) + Доработки фильтрации в RxDBGrid для GTK и GTK2 + Перенесены компоненты TRxSpeedButton и TRxClock + + новая функция в модуле dbutils - FillValueForField + + Реализован редактор для RxColumnFooter.FieldName 29.08.2007 - версия 1.1.5.98 (svn revision 39) + В RxDBGrid После закрытия набора данных список помеченных строк (SelectedRows) очищается diff --git a/components/rx/registerrx.pas b/components/rx/registerrx.pas index 25b53bc27..e75cf4c40 100644 --- a/components/rx/registerrx.pas +++ b/components/rx/registerrx.pas @@ -14,7 +14,7 @@ uses PropEdits, dbdateedit, rxlookup, folderlister, rxdbgrid, rxmemds, duallist, curredit, rxswitch, rxdice, rxdbcomb, rxtoolbar, rxxpman, PageMngr, RxAppIcon, Dialogs, ComponentEditors, seldsfrm, DBPropEdits, DB, rxctrls, RxLogin, - RxCustomChartPanel, AutoPanel, pickdate, rxconst, tooledit, + RxCustomChartPanel, AutoPanel, pickdate, rxconst, tooledit, rxclock, rxceEditLookupFields; type @@ -54,6 +54,28 @@ begin DataSource.DataSet.GetFieldNames(Values); end; +type +{ TRxDBGridFooterFieldProperty } + TRxDBGridFooterFieldProperty = class(TFieldProperty) + public + procedure FillValues(const Values: TStringList); override; + end; + +{ TRxDBGridFieldProperty } + +procedure TRxDBGridFooterFieldProperty.FillValues(const Values: TStringList); +var + Footer: TRxColumnFooter; + Grid: TRxDBGrid; + DataSource: TDataSource; +begin + Footer:=TRxColumnFooter(GetComponent(0)); + Grid:=TRxDBGrid(Footer.Owner.Grid); + if not (Grid is TRxDBGrid) then exit; + DataSource := Grid.DataSource; + if Assigned(DataSource) and Assigned(DataSource.DataSet) then + DataSource.DataSet.GetFieldNames(Values); +end; { TRxAppIcon } @@ -195,7 +217,7 @@ end; procedure RegisterRxCtrls; begin - RegisterComponents('RX',[TRxLabel, TSecretPanel]); + RegisterComponents('RX',[TRxLabel, TSecretPanel, TRxSpeedButton]); end; procedure RegisterRxLogin; @@ -223,6 +245,11 @@ begin RegisterComponents('RX',[TRxDateEdit]); end; +procedure RegisterRxClock; +begin + RegisterComponents('RX',[TRxClock]); +end; + procedure Register; begin //RX @@ -241,6 +268,7 @@ begin RegisterUnit('AutoPanel', @RegisterAutoPanel); RegisterUnit('pickdate', @RegisterPickDate); RegisterUnit('tooledit', @RegisterToolEdit); + RegisterUnit('rxclock', @RegisterRxClock); //RX DBAware RegisterUnit('dbdateedit', @RegisterUnitDBDateEdit); @@ -255,6 +283,8 @@ begin RegisterComponentEditor(TRxMemoryData, TMemDataSetEditor); // RegisterPropertyEditor(TypeInfo(string), TRxColumn, 'FieldName', TRxDBGridFieldProperty); + RegisterPropertyEditor(TypeInfo(string), TRxColumnFooter, 'FieldName', TRxDBGridFooterFieldProperty); + RegisterCEEditLookupFields; end; diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index 2a3a395e9..e43eecd5c 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -99,6 +99,7 @@ type procedure UpdateTestValue; public constructor Create(Owner:TRxColumn); + property Owner:TRxColumn read FOwner; published property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; property Layout:TTextLayout read FLayout write SetLayout default tlCenter;