You've already forked lazarus-ccr
new code for sorting, filter and etc...
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@926 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -19,7 +19,14 @@
|
|||||||
- fix sort order in TRxMemDataSet
|
- fix sort order in TRxMemDataSet
|
||||||
- fix draw buttons in ToolPanel with use system themes
|
- fix draw buttons in ToolPanel with use system themes
|
||||||
- fix error in TRxDBComboBox
|
- fix error in TRxDBComboBox
|
||||||
+ New mode - Quick search data in grid (code from with minor fix)
|
+ New mode - Quick search data in grid (code from Aleksey Kozlov with minor fix)
|
||||||
|
- fix error in sort data for Postgres (grigoreo)
|
||||||
|
+ � ������ FBDataSet �������� ���� poNotSetDefaultParams - �� ������������� ������� ����� ��� �������� ��
|
||||||
|
- ���������� ������ ������������ ����� RxDateEdit � ������� �� popup
|
||||||
|
+ �������� ��������� ������ ������ � ToolBar
|
||||||
|
+ �������� TCustomRxDateEdit.YearDigits ������ ��������
|
||||||
|
+ Big pathc from Rene Herranz Daniel (rhdaniel74.(at).gmail.com) - add new functions for sorting data,
|
||||||
|
top-left menu, filter for data (with minor fix)
|
||||||
|
|
||||||
22.05.2008 - version 2.0.0.136 (svn revision 100)
|
22.05.2008 - version 2.0.0.136 (svn revision 100)
|
||||||
+ In TRxCustomDBLookupCombo add check for CircularDataLink
|
+ In TRxCustomDBLookupCombo add check for CircularDataLink
|
||||||
|
@ -23,8 +23,15 @@
|
|||||||
+ Реализована возможность объединения ячеек в заголовке таблицы
|
+ Реализована возможность объединения ячеек в заголовке таблицы
|
||||||
(смотрите в демке на RxDBGrid)
|
(смотрите в демке на RxDBGrid)
|
||||||
- Исправлена ошибка установки значения для TRxDBComboBox
|
- Исправлена ошибка установки значения для TRxDBComboBox
|
||||||
+ Реализовн режим быстрого поиска (код от Алексея Козлова с небольшими доработками) - подробнее смотри пункт 6 в файле readmy.txt
|
+ Реализовн режим быстрого поиска (код от Алексея Козлова с небольшими доработками) - подробнее смотри пункт 6 в
|
||||||
|
файле readmy.txt
|
||||||
|
- Исправлена ошибка при работе сортировки с рускими полями под Postgres (grigoreo)
|
||||||
|
+ В опциях FBDataSet добавлен флаг poNotSetDefaultParams - не устанавливать форматы полей при открытии БД
|
||||||
|
- Исправлена ошибка переключения стиля RxDateEdit с диалога на popup
|
||||||
|
+ Улучшена отрисовка текста кнопки в ToolBar
|
||||||
|
+ Свойство TCustomRxDateEdit.YearDigits теперь работает
|
||||||
|
+ Большой патч от Rene Herranz Daniel (rhdaniel74.(at).gmail.com) - доработки по сортировке данных,
|
||||||
|
меню правого верхнего угла, фильтрация данных
|
||||||
22.05.2008 - версия 2.0.0.136 (svn revision 100)
|
22.05.2008 - версия 2.0.0.136 (svn revision 100)
|
||||||
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
|
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
|
||||||
+ У объекта TRxCustomDBLookupCombo ускорена отрисовка данных
|
+ У объекта TRxCustomDBLookupCombo ускорена отрисовка данных
|
||||||
|
@ -1,3 +1,33 @@
|
|||||||
|
{ RxDBGrid sort engine module for FBDataSet
|
||||||
|
|
||||||
|
Copyright (C) 2009 Lagunov Aleksey alexs75@hotbox.ru
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU Library General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version with the following modification:
|
||||||
|
|
||||||
|
As a special exception, the copyright holders of this library give you
|
||||||
|
permission to link this library with independent modules to produce an
|
||||||
|
executable, regardless of the license terms of these independent modules,and
|
||||||
|
to copy and distribute the resulting executable under terms of your choice,
|
||||||
|
provided that you also meet, for each linked independent module, the terms
|
||||||
|
and conditions of the license of that module. An independent module is a
|
||||||
|
module which is not derived from or based on this library. If you modify
|
||||||
|
this library, you may extend this exception to your version of the library,
|
||||||
|
but you are not obligated to do so. If you do not wish to do so, delete this
|
||||||
|
exception statement from your version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
}
|
||||||
|
|
||||||
unit exsortfb;
|
unit exsortfb;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
|
@ -5,13 +5,7 @@ unit exsortzeos;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, DB,
|
Classes, SysUtils, DB, RxDBGrid, ZConnection, ZDataset, ZAbstractRODataset;
|
||||||
{$IFDEF FPC}
|
|
||||||
RxDBGrid
|
|
||||||
{$ELSE}
|
|
||||||
exDBGrid
|
|
||||||
{$ENDIF}
|
|
||||||
,ZConnection, ZDataset, ZAbstractRODataset;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TFBDataSetSortEngine = class(TExDBGridSortEngine)
|
TFBDataSetSortEngine = class(TExDBGridSortEngine)
|
||||||
@ -20,14 +14,16 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
//uses FBCustomDataSet;
|
|
||||||
|
|
||||||
procedure TFBDataSetSortEngine.Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);
|
procedure TFBDataSetSortEngine.Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);
|
||||||
begin
|
begin
|
||||||
if Assigned(ADataSet) then begin
|
if Assigned(ADataSet) then
|
||||||
(ADataSet as TZQuery).SortedFields:=Field.FieldName;
|
begin
|
||||||
if Asc then (ADataSet as TZQuery).SortType:=stAscending
|
(ADataSet as TZQuery).SortedFields:='"' + Field.FieldName + '"';
|
||||||
else (ADataSet as TZQuery).SortType:=stDescending;
|
if Asc then
|
||||||
|
(ADataSet as TZQuery).SortType:=stAscending
|
||||||
|
else
|
||||||
|
(ADataSet as TZQuery).SortType:=stDescending;
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
11
components/rx/languages/register_rxctrl.po
Normal file
11
components/rx/languages/register_rxctrl.po
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: register_rxctrl.sloadicon
|
||||||
|
msgid "Load icon"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: register_rxctrl.stesttrxlogindialog
|
||||||
|
msgid "Test TRxLoginDialog"
|
||||||
|
msgstr ""
|
||||||
|
|
55
components/rx/languages/rxconst.po
Normal file
55
components/rx/languages/rxconst.po
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: rxconst.sbrowse
|
||||||
|
msgid "Browse"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sdatedlgtitle
|
||||||
|
msgid "Select a Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sdefaultfilter
|
||||||
|
msgid "All files (*.*)|*.*"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sdetails
|
||||||
|
msgid "Details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sfilenotexec
|
||||||
|
msgid "File specified is not an executable file, dynamic-link library, or icon file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sloadliberror
|
||||||
|
msgid "Could not load '%s' library"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.snextmonth
|
||||||
|
msgid "Next Month|"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.snextyear
|
||||||
|
msgid "Next Year|"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.snotimplemented
|
||||||
|
msgid "Function not yet implemented"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sprevmonth
|
||||||
|
msgid "Previous Month|"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.sprevyear
|
||||||
|
msgid "Previous Year|"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.stocurdate
|
||||||
|
msgid "Set current date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxconst.swindowsicofiles
|
||||||
|
msgid "Windows Ico files (*.ico)|*.ico|All files (*.*)|*.*"
|
||||||
|
msgstr ""
|
||||||
|
|
395
components/rx/languages/rxdconst.es.po
Normal file
395
components/rx/languages/rxdconst.es.po
Normal file
@ -0,0 +1,395 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: rxdconst.sapptitlelabel
|
||||||
|
msgid "Application \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sbrowsedata
|
||||||
|
msgid "browse"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.scalcfieldsdata
|
||||||
|
msgid "calc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.scapturefilter
|
||||||
|
msgid "Элементы уп#209�авления захвачены фильт#209�ом"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.schangepassword
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.scirculardatalink
|
||||||
|
msgid "SCircularDataLink"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sconfirmpasswordlabel
|
||||||
|
msgid "&Confirm:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sconfirmsave
|
||||||
|
msgid "Data changed. Save?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdatabasename
|
||||||
|
msgid "Database loocked: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdatasourcefixed
|
||||||
|
msgid "SDataSourceFixed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdbexceptcaption
|
||||||
|
msgid "Error in DB engine"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdeletemultiplerecords
|
||||||
|
msgid "Delete all selected records?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdeleterecordquestion
|
||||||
|
msgid "Delete record?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.seditdata
|
||||||
|
msgid "editing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.serrormsglabel
|
||||||
|
msgid "Error message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadcompare
|
||||||
|
msgid "Опе#209�ации с#209�авнения т#209�ебуют наличия поля и константы"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadfield
|
||||||
|
msgid "Field '%s' not used in filter expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadnulltest
|
||||||
|
msgid "NULL-values enabled in '=' и '<>'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprexpected
|
||||||
|
msgid "Ожидалось вы#209�ажение, а вст#209�ечено %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprincorrect
|
||||||
|
msgid "Error in filter expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprinvalidchar
|
||||||
|
msgid "Error symbol in expression: '%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnameerror
|
||||||
|
msgid "Error in filed name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnorparen
|
||||||
|
msgid "Ожидалось ')', а вст#209�ечено: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnotboolean
|
||||||
|
msgid "Field '%s' is not boolean"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprstringerror
|
||||||
|
msgid "Error in string const"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprtermination
|
||||||
|
msgid "Error in filter end"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldreadonly
|
||||||
|
msgid "SFieldReadOnly %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldrequired
|
||||||
|
msgid "Field '%s' must have a value"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldtypemismatch
|
||||||
|
msgid "Type mismatch for field '%s', expecting: %s actual: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.shintlabel
|
||||||
|
msgid "Enter you user name and password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinactivedata
|
||||||
|
msgid "inactive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinsertdata
|
||||||
|
msgid "append"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinvaliddate
|
||||||
|
msgid "Invalid Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinvalidfields
|
||||||
|
msgid "No fields defined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinvalidusername
|
||||||
|
msgid "User name or password not valid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.slocaldatabase
|
||||||
|
msgid "Невозможно п#209�оизвести эту опе#209�ацию с локальной базой данных"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.smemnorecords
|
||||||
|
msgid "No data found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.smore1
|
||||||
|
msgid "&More >>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.smore2
|
||||||
|
msgid "&Less <<"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snewpasswordlabel
|
||||||
|
msgid "&New password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snextbutton
|
||||||
|
msgid "&Next"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snotcapturefilter
|
||||||
|
msgid "Элементы уп#209�авления должны быть захвачены фильт#209�ом"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snotediting
|
||||||
|
msgid "Dataset not in edit or insert mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.soldpasswordlabel
|
||||||
|
msgid "&Old password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordchanged
|
||||||
|
msgid "Password changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordlabel
|
||||||
|
msgid "&Password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordnotchanged
|
||||||
|
msgid "Password not changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordsmismatch
|
||||||
|
msgid "New password and confirmation not equal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sprevbutton
|
||||||
|
msgid "&Prior"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spropdefbylookup
|
||||||
|
msgid "PropDefByLookup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sregistration
|
||||||
|
msgid "Register"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sretrylogin
|
||||||
|
msgid "Вы хотите повто#209�ить попытку соединения с базой данных?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxascendign
|
||||||
|
msgid "Ascendente"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridemptifilter
|
||||||
|
msgid "(Empty)"
|
||||||
|
msgstr "(Todos)"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfilter
|
||||||
|
msgid "Filter data"
|
||||||
|
msgstr "Filtrar"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfilterclear
|
||||||
|
msgctxt "rxdconst.srxdbgridfilterclear"
|
||||||
|
msgid "Clear filter"
|
||||||
|
msgstr "Quitar Filtro"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfiltersimple
|
||||||
|
msgid "Filter in table"
|
||||||
|
msgstr "Filtrar en Encabezado"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfind
|
||||||
|
msgctxt "rxdconst.srxdbgridfind"
|
||||||
|
msgid "Find data"
|
||||||
|
msgstr "Buscar"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindcaption
|
||||||
|
msgctxt "rxdconst.srxdbgridfindcaption"
|
||||||
|
msgid "Find data"
|
||||||
|
msgstr "Buscar"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindcasesens
|
||||||
|
msgid "Case sensetive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfinddirecion
|
||||||
|
msgid "Direction"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindonfield
|
||||||
|
msgid "Find on field"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindpartial
|
||||||
|
msgid "Partial key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeall
|
||||||
|
msgid "All"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeback
|
||||||
|
msgid "Backward"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeforw
|
||||||
|
msgid "Forward"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindtext
|
||||||
|
msgid "Text to find"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolcaption
|
||||||
|
msgid "Grid columns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolhint1
|
||||||
|
msgid "Move selected column up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolhint2
|
||||||
|
msgid "Move selected column down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselectcolumns
|
||||||
|
msgid "Select visible collumns"
|
||||||
|
msgstr "Seleccionar Columnas"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridsortbycolumns
|
||||||
|
msgid "Sort data for collumns"
|
||||||
|
msgstr "Ordenar por Columna"
|
||||||
|
|
||||||
|
#: rxdconst.srxdescending
|
||||||
|
msgid "Descendente"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformapply
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr "Aceptar"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcancel
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Cancelar"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcaption
|
||||||
|
msgid "Filter conditions"
|
||||||
|
msgstr "Condiciones de Filtro"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformclear
|
||||||
|
msgctxt "rxdconst.srxfilterformclear"
|
||||||
|
msgid "Clear filter"
|
||||||
|
msgstr "Limpiar Todo"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcondition
|
||||||
|
msgid "Condition :"
|
||||||
|
msgstr "Condición:"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformend
|
||||||
|
msgid "end."
|
||||||
|
msgstr "FIN."
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformonfield
|
||||||
|
msgid "On field :"
|
||||||
|
msgstr "Campo :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformoperaion
|
||||||
|
msgid "Operation :"
|
||||||
|
msgstr "Operación :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformoperand
|
||||||
|
msgid "Operand :"
|
||||||
|
msgstr "Operando :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformselectexp
|
||||||
|
msgid "Enter filter expression for data in table:"
|
||||||
|
msgstr "Seleccionar todos los registros que cumplan las siguientes condiciónes :"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformaddfield
|
||||||
|
msgid "&Add field"
|
||||||
|
msgstr "&Adicionar"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformallfields
|
||||||
|
msgid "&Fields in dataset:"
|
||||||
|
msgstr "&Orden de Ordenamiento :"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformcaption
|
||||||
|
msgid "Sort on field"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformmovednfield
|
||||||
|
msgid "&Down"
|
||||||
|
msgstr "A&bajo"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformmoveupfield
|
||||||
|
msgid "&Up"
|
||||||
|
msgstr "A&rriba"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformremovefield
|
||||||
|
msgid "&Remove"
|
||||||
|
msgstr "&Eliminar"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformsortfields
|
||||||
|
msgid "&Selected fields:"
|
||||||
|
msgstr "&Campos Disponibles :"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformsortorder
|
||||||
|
msgid "Select field for sort data:"
|
||||||
|
msgstr "Seleccionar Dirección de Ordenamiento :"
|
||||||
|
|
||||||
|
#: rxdconst.sservererrorlabel
|
||||||
|
msgid "Server error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.ssetkeydata
|
||||||
|
msgid "find"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunknownfieldtype
|
||||||
|
msgid "SUnknownFieldType %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunlockcaption
|
||||||
|
msgid "Unloock"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunlockhint
|
||||||
|
msgid "Enter you password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.susernamelabel
|
||||||
|
msgid "&User name:"
|
||||||
|
msgstr ""
|
||||||
|
|
395
components/rx/languages/rxdconst.po
Normal file
395
components/rx/languages/rxdconst.po
Normal file
@ -0,0 +1,395 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: rxdconst.sapptitlelabel
|
||||||
|
msgid "Application \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sbrowsedata
|
||||||
|
msgid "browse"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.scalcfieldsdata
|
||||||
|
msgid "calc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.scapturefilter
|
||||||
|
msgid "Элементы уп#209�авления захвачены фильт#209�ом"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.schangepassword
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.scirculardatalink
|
||||||
|
msgid "SCircularDataLink"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sconfirmpasswordlabel
|
||||||
|
msgid "&Confirm:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sconfirmsave
|
||||||
|
msgid "Data changed. Save?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdatabasename
|
||||||
|
msgid "Database loocked: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdatasourcefixed
|
||||||
|
msgid "SDataSourceFixed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdbexceptcaption
|
||||||
|
msgid "Error in DB engine"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdeletemultiplerecords
|
||||||
|
msgid "Delete all selected records?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdeleterecordquestion
|
||||||
|
msgid "Delete record?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.seditdata
|
||||||
|
msgid "editing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.serrormsglabel
|
||||||
|
msgid "Error message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadcompare
|
||||||
|
msgid "Опе#209�ации с#209�авнения т#209�ебуют наличия поля и константы"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadfield
|
||||||
|
msgid "Field '%s' not used in filter expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadnulltest
|
||||||
|
msgid "NULL-values enabled in '=' и '<>'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprexpected
|
||||||
|
msgid "Ожидалось вы#209�ажение, а вст#209�ечено %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprincorrect
|
||||||
|
msgid "Error in filter expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprinvalidchar
|
||||||
|
msgid "Error symbol in expression: '%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnameerror
|
||||||
|
msgid "Error in filed name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnorparen
|
||||||
|
msgid "Ожидалось ')', а вст#209�ечено: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnotboolean
|
||||||
|
msgid "Field '%s' is not boolean"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprstringerror
|
||||||
|
msgid "Error in string const"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprtermination
|
||||||
|
msgid "Error in filter end"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldreadonly
|
||||||
|
msgid "SFieldReadOnly %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldrequired
|
||||||
|
msgid "Field '%s' must have a value"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldtypemismatch
|
||||||
|
msgid "Type mismatch for field '%s', expecting: %s actual: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.shintlabel
|
||||||
|
msgid "Enter you user name and password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinactivedata
|
||||||
|
msgid "inactive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinsertdata
|
||||||
|
msgid "append"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinvaliddate
|
||||||
|
msgid "Invalid Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinvalidfields
|
||||||
|
msgid "No fields defined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sinvalidusername
|
||||||
|
msgid "User name or password not valid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.slocaldatabase
|
||||||
|
msgid "Невозможно п#209�оизвести эту опе#209�ацию с локальной базой данных"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.smemnorecords
|
||||||
|
msgid "No data found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.smore1
|
||||||
|
msgid "&More >>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.smore2
|
||||||
|
msgid "&Less <<"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snewpasswordlabel
|
||||||
|
msgid "&New password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snextbutton
|
||||||
|
msgid "&Next"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snotcapturefilter
|
||||||
|
msgid "Элементы уп#209�авления должны быть захвачены фильт#209�ом"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.snotediting
|
||||||
|
msgid "Dataset not in edit or insert mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.soldpasswordlabel
|
||||||
|
msgid "&Old password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordchanged
|
||||||
|
msgid "Password changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordlabel
|
||||||
|
msgid "&Password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordnotchanged
|
||||||
|
msgid "Password not changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spasswordsmismatch
|
||||||
|
msgid "New password and confirmation not equal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sprevbutton
|
||||||
|
msgid "&Prior"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.spropdefbylookup
|
||||||
|
msgid "PropDefByLookup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sregistration
|
||||||
|
msgid "Register"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sretrylogin
|
||||||
|
msgid "Вы хотите повто#209�ить попытку соединения с базой данных?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxascendign
|
||||||
|
msgid "Ascendente"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridemptifilter
|
||||||
|
msgid "(Empty)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfilter
|
||||||
|
msgid "Filter data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfilterclear
|
||||||
|
msgctxt "rxdconst.srxdbgridfilterclear"
|
||||||
|
msgid "Clear filter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfiltersimple
|
||||||
|
msgid "Filter in table"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfind
|
||||||
|
msgctxt "rxdconst.srxdbgridfind"
|
||||||
|
msgid "Find data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindcaption
|
||||||
|
msgctxt "rxdconst.srxdbgridfindcaption"
|
||||||
|
msgid "Find data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindcasesens
|
||||||
|
msgid "Case sensetive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfinddirecion
|
||||||
|
msgid "Direction"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindonfield
|
||||||
|
msgid "Find on field"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindpartial
|
||||||
|
msgid "Partial key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeall
|
||||||
|
msgid "All"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeback
|
||||||
|
msgid "Backward"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeforw
|
||||||
|
msgid "Forward"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindtext
|
||||||
|
msgid "Text to find"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolcaption
|
||||||
|
msgid "Grid columns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolhint1
|
||||||
|
msgid "Move selected column up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolhint2
|
||||||
|
msgid "Move selected column down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselectcolumns
|
||||||
|
msgid "Select visible collumns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridsortbycolumns
|
||||||
|
msgid "Sort data for collumns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdescending
|
||||||
|
msgid "Descendente"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformapply
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcancel
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcaption
|
||||||
|
msgid "Filter conditions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformclear
|
||||||
|
msgctxt "rxdconst.srxfilterformclear"
|
||||||
|
msgid "Clear filter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcondition
|
||||||
|
msgid "Condition :"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformend
|
||||||
|
msgid "end."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformonfield
|
||||||
|
msgid "On field :"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformoperaion
|
||||||
|
msgid "Operation :"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformoperand
|
||||||
|
msgid "Operand :"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformselectexp
|
||||||
|
msgid "Enter filter expression for data in table:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformaddfield
|
||||||
|
msgid "&Add field"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformallfields
|
||||||
|
msgid "&Fields in dataset:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformcaption
|
||||||
|
msgid "Sort on field"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformmovednfield
|
||||||
|
msgid "&Down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformmoveupfield
|
||||||
|
msgid "&Up"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformremovefield
|
||||||
|
msgid "&Remove"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformsortfields
|
||||||
|
msgid "&Selected fields:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformsortorder
|
||||||
|
msgid "Select field for sort data:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sservererrorlabel
|
||||||
|
msgid "Server error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.ssetkeydata
|
||||||
|
msgid "find"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunknownfieldtype
|
||||||
|
msgid "SUnknownFieldType %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunlockcaption
|
||||||
|
msgid "Unloock"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunlockhint
|
||||||
|
msgid "Enter you password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.susernamelabel
|
||||||
|
msgid "&User name:"
|
||||||
|
msgstr ""
|
||||||
|
|
395
components/rx/languages/rxdconst.ru.po
Normal file
395
components/rx/languages/rxdconst.ru.po
Normal file
@ -0,0 +1,395 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: rxdconst.sapptitlelabel
|
||||||
|
msgid "Application \"%s\""
|
||||||
|
msgstr "Программа \"%s\""
|
||||||
|
|
||||||
|
#: rxdconst.sbrowsedata
|
||||||
|
msgid "browse"
|
||||||
|
msgstr "просмотр"
|
||||||
|
|
||||||
|
#: rxdconst.scalcfieldsdata
|
||||||
|
msgid "calc"
|
||||||
|
msgstr "вычисление"
|
||||||
|
|
||||||
|
#: rxdconst.scapturefilter
|
||||||
|
msgid "Элементы уп#209�авления захвачены фильт#209�ом"
|
||||||
|
msgstr "Элементы управления захвачены фильтром"
|
||||||
|
|
||||||
|
#: rxdconst.schangepassword
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr "Изменить пароль"
|
||||||
|
|
||||||
|
#: rxdconst.scirculardatalink
|
||||||
|
msgid "SCircularDataLink"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sconfirmpasswordlabel
|
||||||
|
msgid "&Confirm:"
|
||||||
|
msgstr "&Подтверждение:"
|
||||||
|
|
||||||
|
#: rxdconst.sconfirmsave
|
||||||
|
msgid "Data changed. Save?"
|
||||||
|
msgstr "Данные были изменены. Сохранить?"
|
||||||
|
|
||||||
|
#: rxdconst.sdatabasename
|
||||||
|
msgid "Database loocked: %s"
|
||||||
|
msgstr "База данных блокирована: %s"
|
||||||
|
|
||||||
|
#: rxdconst.sdatasourcefixed
|
||||||
|
msgid "SDataSourceFixed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sdbexceptcaption
|
||||||
|
msgid "Error in DB engine"
|
||||||
|
msgstr "Ошибка ядры БД"
|
||||||
|
|
||||||
|
#: rxdconst.sdeletemultiplerecords
|
||||||
|
msgid "Delete all selected records?"
|
||||||
|
msgstr "Удалить все выделенные записи"
|
||||||
|
|
||||||
|
#: rxdconst.sdeleterecordquestion
|
||||||
|
msgid "Delete record?"
|
||||||
|
msgstr "Удалить запись"
|
||||||
|
|
||||||
|
#: rxdconst.seditdata
|
||||||
|
msgid "editing"
|
||||||
|
msgstr "редактирование"
|
||||||
|
|
||||||
|
#: rxdconst.serrormsglabel
|
||||||
|
msgid "Error message"
|
||||||
|
msgstr "Сообщение об ошибке"
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadcompare
|
||||||
|
msgid "Опе#209�ации с#209�авнения т#209�ебуют наличия поля и константы"
|
||||||
|
msgstr "Операции сравнения требуют наличия поля и константы"
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadfield
|
||||||
|
msgid "Field '%s' not used in filter expression"
|
||||||
|
msgstr "Поле '%s' не может быть использовано в выражении фильтрации"
|
||||||
|
|
||||||
|
#: rxdconst.sexprbadnulltest
|
||||||
|
msgid "NULL-values enabled in '=' и '<>'"
|
||||||
|
msgstr "NULL-значения разрешены только в выражениях '=' и '<>'"
|
||||||
|
|
||||||
|
#: rxdconst.sexprexpected
|
||||||
|
msgid "Ожидалось вы#209�ажение, а вст#209�ечено %s"
|
||||||
|
msgstr "Ожидалось выражение, а встречено %s"
|
||||||
|
|
||||||
|
#: rxdconst.sexprincorrect
|
||||||
|
msgid "Error in filter expression"
|
||||||
|
msgstr "Ошибка в выражении фильтра"
|
||||||
|
|
||||||
|
#: rxdconst.sexprinvalidchar
|
||||||
|
msgid "Error symbol in expression: '%s'"
|
||||||
|
msgstr "Ошибочный символ в выражении: '%s'"
|
||||||
|
|
||||||
|
#: rxdconst.sexprnameerror
|
||||||
|
msgid "Error in filed name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sexprnorparen
|
||||||
|
msgid "Ожидалось ')', а вст#209�ечено: %s"
|
||||||
|
msgstr "Ожидалось ')', а встречено: %s"
|
||||||
|
|
||||||
|
#: rxdconst.sexprnotboolean
|
||||||
|
msgid "Field '%s' is not boolean"
|
||||||
|
msgstr "Поле '%s' не логического типа"
|
||||||
|
|
||||||
|
#: rxdconst.sexprstringerror
|
||||||
|
msgid "Error in string const"
|
||||||
|
msgstr "Ошибка в строковой константе"
|
||||||
|
|
||||||
|
#: rxdconst.sexprtermination
|
||||||
|
msgid "Error in filter end"
|
||||||
|
msgstr "Ошибка в окончании выражения фильтра"
|
||||||
|
|
||||||
|
#: rxdconst.sfieldreadonly
|
||||||
|
msgid "SFieldReadOnly %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sfieldrequired
|
||||||
|
msgid "Field '%s' must have a value"
|
||||||
|
msgstr "Поле '%s' ожидает значение"
|
||||||
|
|
||||||
|
#: rxdconst.sfieldtypemismatch
|
||||||
|
msgid "Type mismatch for field '%s', expecting: %s actual: %s"
|
||||||
|
msgstr "Несоответсвие типов для поля '%s', необходимо: %s введено: %s"
|
||||||
|
|
||||||
|
#: rxdconst.shintlabel
|
||||||
|
msgid "Enter you user name and password"
|
||||||
|
msgstr "Введите ваше имя и пароль"
|
||||||
|
|
||||||
|
#: rxdconst.sinactivedata
|
||||||
|
msgid "inactive"
|
||||||
|
msgstr "не активный"
|
||||||
|
|
||||||
|
#: rxdconst.sinsertdata
|
||||||
|
msgid "append"
|
||||||
|
msgstr "вставка"
|
||||||
|
|
||||||
|
#: rxdconst.sinvaliddate
|
||||||
|
msgid "Invalid Date"
|
||||||
|
msgstr "Неверная дата"
|
||||||
|
|
||||||
|
#: rxdconst.sinvalidfields
|
||||||
|
msgid "No fields defined"
|
||||||
|
msgstr "Нет объявления полей"
|
||||||
|
|
||||||
|
#: rxdconst.sinvalidusername
|
||||||
|
msgid "User name or password not valid"
|
||||||
|
msgstr "Ошибка в имени пользователя или пароле"
|
||||||
|
|
||||||
|
#: rxdconst.slocaldatabase
|
||||||
|
msgid "Невозможно п#209�оизвести эту опе#209�ацию с локальной базой данных"
|
||||||
|
msgstr "Невозможно произвести эту операцию с локальной базой данных"
|
||||||
|
|
||||||
|
#: rxdconst.smemnorecords
|
||||||
|
msgid "No data found"
|
||||||
|
msgstr "Данных не найдено"
|
||||||
|
|
||||||
|
#: rxdconst.smore1
|
||||||
|
msgid "&More >>"
|
||||||
|
msgstr "&Больше >>"
|
||||||
|
|
||||||
|
#: rxdconst.smore2
|
||||||
|
msgid "&Less <<"
|
||||||
|
msgstr "&Меньше <<"
|
||||||
|
|
||||||
|
#: rxdconst.snewpasswordlabel
|
||||||
|
msgid "&New password:"
|
||||||
|
msgstr "&Новый пароль:"
|
||||||
|
|
||||||
|
#: rxdconst.snextbutton
|
||||||
|
msgid "&Next"
|
||||||
|
msgstr "&Дальше"
|
||||||
|
|
||||||
|
#: rxdconst.snotcapturefilter
|
||||||
|
msgid "Элементы уп#209�авления должны быть захвачены фильт#209�ом"
|
||||||
|
msgstr "Элементы управления должны быть захвачены фильтром"
|
||||||
|
|
||||||
|
#: rxdconst.snotediting
|
||||||
|
msgid "Dataset not in edit or insert mode"
|
||||||
|
msgstr "Набор данных не в режиме редактирования или вставки"
|
||||||
|
|
||||||
|
#: rxdconst.soldpasswordlabel
|
||||||
|
msgid "&Old password:"
|
||||||
|
msgstr "&Старый пароль"
|
||||||
|
|
||||||
|
#: rxdconst.spasswordchanged
|
||||||
|
msgid "Password changed"
|
||||||
|
msgstr "Пароль изменён"
|
||||||
|
|
||||||
|
#: rxdconst.spasswordlabel
|
||||||
|
msgid "&Password:"
|
||||||
|
msgstr "&Пароль:"
|
||||||
|
|
||||||
|
#: rxdconst.spasswordnotchanged
|
||||||
|
msgid "Password not changed"
|
||||||
|
msgstr "Пароль не изменён"
|
||||||
|
|
||||||
|
#: rxdconst.spasswordsmismatch
|
||||||
|
msgid "New password and confirmation not equal"
|
||||||
|
msgstr "Новый пароль и подтверждение не совпадают"
|
||||||
|
|
||||||
|
#: rxdconst.sprevbutton
|
||||||
|
msgid "&Prior"
|
||||||
|
msgstr "&Превыдущие"
|
||||||
|
|
||||||
|
#: rxdconst.spropdefbylookup
|
||||||
|
msgid "PropDefByLookup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sregistration
|
||||||
|
msgid "Register"
|
||||||
|
msgstr "Регистрация"
|
||||||
|
|
||||||
|
#: rxdconst.sretrylogin
|
||||||
|
msgid "Вы хотите повто#209�ить попытку соединения с базой данных?"
|
||||||
|
msgstr "Вы хотите повторить попытку соединения с базой данных?"
|
||||||
|
|
||||||
|
#: rxdconst.srxascendign
|
||||||
|
msgid "Ascendente"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridemptifilter
|
||||||
|
msgid "(Empty)"
|
||||||
|
msgstr "(Нет)"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfilter
|
||||||
|
msgid "Filter data"
|
||||||
|
msgstr "Фильтр данных"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfilterclear
|
||||||
|
msgctxt "rxdconst.srxdbgridfilterclear"
|
||||||
|
msgid "Clear filter"
|
||||||
|
msgstr "Очистить фильтр"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfiltersimple
|
||||||
|
msgid "Filter in table"
|
||||||
|
msgstr "Фильтр в таблице"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfind
|
||||||
|
msgctxt "rxdconst.srxdbgridfind"
|
||||||
|
msgid "Find data"
|
||||||
|
msgstr "Поиск данных"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindcaption
|
||||||
|
msgctxt "rxdconst.srxdbgridfindcaption"
|
||||||
|
msgid "Find data"
|
||||||
|
msgstr "Поиск данных"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindcasesens
|
||||||
|
msgid "Case sensetive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfinddirecion
|
||||||
|
msgid "Direction"
|
||||||
|
msgstr "Направление"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindonfield
|
||||||
|
msgid "Find on field"
|
||||||
|
msgstr "Искать по полю"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindpartial
|
||||||
|
msgid "Partial key"
|
||||||
|
msgstr "Частиный поиск"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeall
|
||||||
|
msgid "All"
|
||||||
|
msgstr "Всё"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeback
|
||||||
|
msgid "Backward"
|
||||||
|
msgstr "Назад"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindrangeforw
|
||||||
|
msgid "Forward"
|
||||||
|
msgstr "Вперёд"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridfindtext
|
||||||
|
msgid "Text to find"
|
||||||
|
msgstr "Текст для поиска"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolcaption
|
||||||
|
msgid "Grid columns"
|
||||||
|
msgstr "Поля таблицы"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolhint1
|
||||||
|
msgid "Move selected column up"
|
||||||
|
msgstr "Переместить выбранное поле выше"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselcolhint2
|
||||||
|
msgid "Move selected column down"
|
||||||
|
msgstr "Переместить выбранное поле ниже"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridselectcolumns
|
||||||
|
msgid "Select visible collumns"
|
||||||
|
msgstr "Выбор столбцов для отображения"
|
||||||
|
|
||||||
|
#: rxdconst.srxdbgridsortbycolumns
|
||||||
|
msgid "Sort data for collumns"
|
||||||
|
msgstr "Сортировать данные по колонкам"
|
||||||
|
|
||||||
|
#: rxdconst.srxdescending
|
||||||
|
msgid "Descendente"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformapply
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr "Применить"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcancel
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Отмена"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcaption
|
||||||
|
msgid "Filter conditions"
|
||||||
|
msgstr "Выражение фильтра"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformclear
|
||||||
|
msgctxt "rxdconst.srxfilterformclear"
|
||||||
|
msgid "Clear filter"
|
||||||
|
msgstr "Очистить фильтр"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformcondition
|
||||||
|
msgid "Condition :"
|
||||||
|
msgstr "Выражение :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformend
|
||||||
|
msgid "end."
|
||||||
|
msgstr "конец."
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformonfield
|
||||||
|
msgid "On field :"
|
||||||
|
msgstr "На поле :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformoperaion
|
||||||
|
msgid "Operation :"
|
||||||
|
msgstr "Операция :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformoperand
|
||||||
|
msgid "Operand :"
|
||||||
|
msgstr "Операнд :"
|
||||||
|
|
||||||
|
#: rxdconst.srxfilterformselectexp
|
||||||
|
msgid "Enter filter expression for data in table:"
|
||||||
|
msgstr "Введите выражение фильтрации данных в таблице:"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformaddfield
|
||||||
|
msgid "&Add field"
|
||||||
|
msgstr "&Добавить поле"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformallfields
|
||||||
|
msgid "&Fields in dataset:"
|
||||||
|
msgstr "&Поля в таблице"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformcaption
|
||||||
|
msgid "Sort on field"
|
||||||
|
msgstr "Сортировать по полям"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformmovednfield
|
||||||
|
msgid "&Down"
|
||||||
|
msgstr "&Вниз"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformmoveupfield
|
||||||
|
msgid "&Up"
|
||||||
|
msgstr "&Вверх"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformremovefield
|
||||||
|
msgid "&Remove"
|
||||||
|
msgstr "&Убрать"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformsortfields
|
||||||
|
msgid "&Selected fields:"
|
||||||
|
msgstr "&Выбранные поля"
|
||||||
|
|
||||||
|
#: rxdconst.srxsortbyformsortorder
|
||||||
|
msgid "Select field for sort data:"
|
||||||
|
msgstr "Укажите поля для сортировки данных :"
|
||||||
|
|
||||||
|
#: rxdconst.sservererrorlabel
|
||||||
|
msgid "Server error"
|
||||||
|
msgstr "Ошибка сервера"
|
||||||
|
|
||||||
|
#: rxdconst.ssetkeydata
|
||||||
|
msgid "find"
|
||||||
|
msgstr "поиск"
|
||||||
|
|
||||||
|
#: rxdconst.sunknownfieldtype
|
||||||
|
msgid "SUnknownFieldType %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxdconst.sunlockcaption
|
||||||
|
msgid "Unloock"
|
||||||
|
msgstr "Разблокировать"
|
||||||
|
|
||||||
|
#: rxdconst.sunlockhint
|
||||||
|
msgid "Enter you password"
|
||||||
|
msgstr "Введите ваш пароль"
|
||||||
|
|
||||||
|
#: rxdconst.susernamelabel
|
||||||
|
msgid "&User name:"
|
||||||
|
msgstr "&Имя пользователя"
|
||||||
|
|
11
components/rx/languages/rxmemds.po
Normal file
11
components/rx/languages/rxmemds.po
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: rxmemds.sinvalidfields
|
||||||
|
msgid "No fields defined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rxmemds.smemnorecords
|
||||||
|
msgid "No data found"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -419,8 +419,10 @@ begin
|
|||||||
|
|
||||||
if ARow>0 then
|
if ARow>0 then
|
||||||
begin
|
begin
|
||||||
if not ((gdSelected in aState) and (gdFocused in aState)) then begin
|
if not ((gdSelected in aState) and (gdFocused in aState)) then
|
||||||
if (FDaysArray[ACol, ARow].DayDate = Date) and (FDaysArray[ACol, ARow].DayColor <> FNotInThisMonthColor) then begin
|
begin
|
||||||
|
if (FDaysArray[ACol, ARow].DayDate = Date) and (FDaysArray[ACol, ARow].DayColor <> FNotInThisMonthColor) then
|
||||||
|
begin
|
||||||
R := ARect;
|
R := ARect;
|
||||||
// Variant 1
|
// Variant 1
|
||||||
//Dec(R.Bottom, 1);
|
//Dec(R.Bottom, 1);
|
||||||
@ -441,7 +443,7 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
Canvas.Font.Color:=clText;
|
Canvas.Font.Color:=clWindowText;
|
||||||
//DrawCellText(ACol, ARow, ARect, AState, ShortDayNames[(Ord(StartOfWeek) + ACol) mod 7 + 1]);
|
//DrawCellText(ACol, ARow, ARect, AState, ShortDayNames[(Ord(StartOfWeek) + ACol) mod 7 + 1]);
|
||||||
if FShortDaysOfWeek <> nil then begin
|
if FShortDaysOfWeek <> nil then begin
|
||||||
if ACol <= FShortDaysOfWeek.Count - 1 then
|
if ACol <= FShortDaysOfWeek.Count - 1 then
|
||||||
@ -622,7 +624,7 @@ begin
|
|||||||
if IsWeekend(x, y) then
|
if IsWeekend(x, y) then
|
||||||
FDaysArray[x,y].DayColor:=WeekendColor
|
FDaysArray[x,y].DayColor:=WeekendColor
|
||||||
else
|
else
|
||||||
FDaysArray[x,y].DayColor:=clText;
|
FDaysArray[x,y].DayColor:=clWindowText;
|
||||||
FDaysArray[x,y].DayNum:=DayNum;
|
FDaysArray[x,y].DayNum:=DayNum;
|
||||||
end;
|
end;
|
||||||
FirstDate:=FirstDate+1;
|
FirstDate:=FirstDate+1;
|
||||||
@ -890,6 +892,7 @@ function CreatePopupCalendar(AOwner: TComponent
|
|||||||
{$IFDEF USED_BiDi}; ABiDiMode: TBiDiMode = bdLeftToRight {$ENDIF}): TPopupCalendar;
|
{$IFDEF USED_BiDi}; ABiDiMode: TBiDiMode = bdLeftToRight {$ENDIF}): TPopupCalendar;
|
||||||
begin
|
begin
|
||||||
Result := TPopupCalendar.Create(AOwner);
|
Result := TPopupCalendar.Create(AOwner);
|
||||||
|
|
||||||
if (AOwner <> nil) and not (csDesigning in AOwner.ComponentState) and
|
if (AOwner <> nil) and not (csDesigning in AOwner.ComponentState) and
|
||||||
(Screen.PixelsPerInch <> 96) then
|
(Screen.PixelsPerInch <> 96) then
|
||||||
begin { scale to screen res }
|
begin { scale to screen res }
|
||||||
@ -952,7 +955,7 @@ begin
|
|||||||
if AOwner is TControl then ShowHint := TControl(AOwner).ShowHint
|
if AOwner is TControl then ShowHint := TControl(AOwner).ShowHint
|
||||||
else ShowHint := True;
|
else ShowHint := True;
|
||||||
|
|
||||||
if (csDesigning in ComponentState) then Exit;
|
// if (csDesigning in ComponentState) then Exit;
|
||||||
|
|
||||||
FMonthNames := TStringList.Create;
|
FMonthNames := TStringList.Create;
|
||||||
if FMonthNames.Count = 0 then begin
|
if FMonthNames.Count = 0 then begin
|
||||||
|
@ -11,3 +11,15 @@ LazarusResources.Add('rx_markerup','XPM',[
|
|||||||
+'#....a..",'#10'".#......a.",'#10'".aaaaaaaa.",'#10'".bbbbbbbb.",'#10'".....'
|
+'#....a..",'#10'".#......a.",'#10'".aaaaaaaa.",'#10'".bbbbbbbb.",'#10'".....'
|
||||||
+'....."};'#10
|
+'....."};'#10
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
LazarusResources.Add('menu_grid','XPM',[
|
||||||
|
'/* XPM */'#10'static const unsigned char * menu_grid_xpm[] = {'#10'"16 16 4 1",'
|
||||||
|
+#10'" c None",'#10'"! c black",'#10'"# c #800000",'#10'"$ c #FFFF00",'
|
||||||
|
+#10'" ",'#10'" ! ",'#10'" !#! ",'
|
||||||
|
+#10'" !###! ",'#10'" !##$##! ",'#10'" !!!#$#!!! ",'
|
||||||
|
+#10'" !#$#! ",'#10'" !#$#! ",'#10'" !#$#! ",'
|
||||||
|
+#10'" !#$#! ",'#10'" !#$#! ",'#10'" !!!#$#!!! ",'
|
||||||
|
+#10'" !##$##! ",'#10'" !###! ",'#10'" !#! ",'
|
||||||
|
+#10'" ! "};'#10
|
||||||
|
]);
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, LResources, LCLType, LCLIntf, Forms, Controls,
|
Classes, SysUtils, LResources, LCLType, LCLIntf, Forms, Controls,
|
||||||
Graphics, Dialogs, Grids, dbutils, DBGrids, DB, PropertyStorage, vclutils,
|
Graphics, Dialogs, Grids, dbutils, DBGrids, DB, PropertyStorage, vclutils,
|
||||||
LMessages, types, StdCtrls;
|
LMessages, types, StdCtrls, Menus;
|
||||||
|
|
||||||
const
|
const
|
||||||
CBadQuickSearchSymbols = [VK_UNKNOWN..VK_HELP]+[VK_LWIN..VK_SLEEP]+[VK_NUMLOCK..VK_SCROLL]+[VK_LSHIFT..VK_OEM_102]+[VK_PROCESSKEY]+[VK_ATTN..VK_UNDEFINED];
|
CBadQuickSearchSymbols = [VK_UNKNOWN..VK_HELP]+[VK_LWIN..VK_SLEEP]+[VK_NUMLOCK..VK_SCROLL]+[VK_LSHIFT..VK_OEM_102]+[VK_PROCESSKEY]+[VK_ATTN..VK_UNDEFINED];
|
||||||
@ -41,21 +41,29 @@ type
|
|||||||
rdgFilter,
|
rdgFilter,
|
||||||
rdgMultiTitleLines,
|
rdgMultiTitleLines,
|
||||||
rdgMrOkOnDblClik,
|
rdgMrOkOnDblClik,
|
||||||
rdgAllowQuickSearch
|
rdgAllowQuickSearch,
|
||||||
|
rdgAllowFilterForm,
|
||||||
|
rdgAllowSortForm
|
||||||
);
|
);
|
||||||
|
|
||||||
TOptionsRx = set of TOptionRx;
|
TOptionsRx = set of TOptionRx;
|
||||||
|
|
||||||
|
TCreateLookup = TNotifyEvent;
|
||||||
|
TDisplayLookup = TNotifyEvent;
|
||||||
// TDataSetClass = class of TDataSet;
|
// TDataSetClass = class of TDataSet;
|
||||||
|
|
||||||
TRxColumn = class;
|
TRxColumn = class;
|
||||||
|
|
||||||
|
{ TExDBGridSortEngine }
|
||||||
|
|
||||||
TExDBGridSortEngine = class
|
TExDBGridSortEngine = class
|
||||||
private
|
private
|
||||||
FDataSetClass:TDataSetClass;
|
FDataSetClass:TDataSetClass;
|
||||||
public
|
public
|
||||||
procedure Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);virtual;abstract;
|
procedure Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);virtual;abstract;
|
||||||
|
procedure SortList(ListField:string; ADataSet:TDataSet; Asc:boolean);virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TExDBGridSortEngineClass = class of TExDBGridSortEngine;
|
TExDBGridSortEngineClass = class of TExDBGridSortEngine;
|
||||||
|
|
||||||
TMLCaptionItem = class
|
TMLCaptionItem = class
|
||||||
@ -114,6 +122,10 @@ type
|
|||||||
function GetStatTotal:string;
|
function GetStatTotal:string;
|
||||||
procedure ResetTestValue;
|
procedure ResetTestValue;
|
||||||
procedure UpdateTestValue;
|
procedure UpdateTestValue;
|
||||||
|
|
||||||
|
function DeleteTestValue: boolean;
|
||||||
|
function PostTestValue: boolean;
|
||||||
|
function ErrorTestValue: boolean;
|
||||||
public
|
public
|
||||||
constructor Create(Owner:TRxColumn);
|
constructor Create(Owner:TRxColumn);
|
||||||
property Owner:TRxColumn read FOwner;
|
property Owner:TRxColumn read FOwner;
|
||||||
@ -236,6 +248,21 @@ type
|
|||||||
FPressed: Boolean;
|
FPressed: Boolean;
|
||||||
FSwapButtons: Boolean;
|
FSwapButtons: Boolean;
|
||||||
FTracking: Boolean;
|
FTracking: Boolean;
|
||||||
|
|
||||||
|
F_TopRect : TRect;
|
||||||
|
F_Clicked : Boolean;
|
||||||
|
F_PopupMenu : TPopupMenu;
|
||||||
|
F_MenuBMP : TBitmap;
|
||||||
|
F_EventOnFilterRec : TFilterRecordEvent;
|
||||||
|
F_EventOnBeforeDelete: TDataSetNotifyEvent;
|
||||||
|
F_EventOnBeforePost : TDataSetNotifyEvent;
|
||||||
|
F_EventOnDeleteError : TDataSetErrorEvent;
|
||||||
|
F_EventOnPostError : TDataSetErrorEvent;
|
||||||
|
F_LastFilter : TStringList;
|
||||||
|
F_SortListField : TStringList;
|
||||||
|
F_CreateLookup : TCreateLookup;
|
||||||
|
F_DisplayLookup : TDisplayLookup;
|
||||||
|
|
||||||
//storage
|
//storage
|
||||||
//Column resize
|
//Column resize
|
||||||
FColumnResizing : Boolean;
|
FColumnResizing : Boolean;
|
||||||
@ -273,6 +300,7 @@ type
|
|||||||
procedure OutCaptionCellText90(aCol,aRow: Integer;const aRect: TRect; aState: TGridDrawState;const ACaption:string;const TextOrient:TTextOrientation);
|
procedure OutCaptionCellText90(aCol,aRow: Integer;const aRect: TRect; aState: TGridDrawState;const ACaption:string;const TextOrient:TTextOrientation);
|
||||||
procedure OutCaptionSortMarker(const aRect: TRect; ASortMarker: TSortMarker);
|
procedure OutCaptionSortMarker(const aRect: TRect; ASortMarker: TSortMarker);
|
||||||
procedure OutCaptionMLCellText(aCol,aRow: Integer; aRect: TRect; aState: TGridDrawState; MLI:TMLCaptionItem);
|
procedure OutCaptionMLCellText(aCol,aRow: Integer; aRect: TRect; aState: TGridDrawState; MLI:TMLCaptionItem);
|
||||||
|
procedure UpdateJMenuStates;
|
||||||
|
|
||||||
//storage
|
//storage
|
||||||
procedure OnIniSave(Sender: TObject);
|
procedure OnIniSave(Sender: TObject);
|
||||||
@ -310,7 +338,20 @@ type
|
|||||||
function IsDefaultRowHeightStored:boolean;
|
function IsDefaultRowHeightStored:boolean;
|
||||||
procedure VisualChange; override;
|
procedure VisualChange; override;
|
||||||
procedure SetQuickUTF8Search(AValue : String);
|
procedure SetQuickUTF8Search(AValue : String);
|
||||||
|
|
||||||
|
procedure BeforeDel(DataSet: TDataSet);
|
||||||
|
procedure BeforePo(DataSet: TDataSet);
|
||||||
|
procedure ErrorDel(DataSet: TDataSet; E: EDatabaseError;var DataAction: TDataAction);
|
||||||
|
procedure ErrorPo(DataSet: TDataSet; E: EDatabaseError;var DataAction: TDataAction);
|
||||||
|
Procedure OnFind(Sender: TObject);
|
||||||
|
Procedure OnFilterBy(Sender: TObject);
|
||||||
|
Procedure OnFilter(Sender: TObject);
|
||||||
|
Procedure OnFilterClose(Sender: TObject);
|
||||||
|
Procedure OnSortBy(Sender: TObject);
|
||||||
|
Procedure OnChooseVisibleFields(Sender: TObject);
|
||||||
public
|
public
|
||||||
|
procedure FilterRec(DataSet : TDataSet;var Accept: Boolean);
|
||||||
|
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
function EditorByStyle(Style: TColumnButtonStyle): TWinControl; override;
|
function EditorByStyle(Style: TColumnButtonStyle): TWinControl; override;
|
||||||
@ -331,6 +372,9 @@ type
|
|||||||
procedure OptimizeColumnsWidthAll;
|
procedure OptimizeColumnsWidthAll;
|
||||||
procedure UpdateTitleHight;
|
procedure UpdateTitleHight;
|
||||||
property QuickUTF8Search:String read FQuickUTF8Search write SetQuickUTF8Search;
|
property QuickUTF8Search:String read FQuickUTF8Search write SetQuickUTF8Search;
|
||||||
|
|
||||||
|
procedure GetOnCreateLookup;
|
||||||
|
procedure GetOnDisplayLookup;
|
||||||
published
|
published
|
||||||
property AfterQuickSearch: TRxQuickSearchNotifyEvent read FAfterQuickSearch write FAfterQuickSearch;
|
property AfterQuickSearch: TRxQuickSearchNotifyEvent read FAfterQuickSearch write FAfterQuickSearch;
|
||||||
property BeforeQuickSearch: TRxQuickSearchNotifyEvent read FBeforeQuickSearch write FBeforeQuickSearch;
|
property BeforeQuickSearch: TRxQuickSearchNotifyEvent read FBeforeQuickSearch write FBeforeQuickSearch;
|
||||||
@ -429,13 +473,16 @@ type
|
|||||||
property OnTitleClick;
|
property OnTitleClick;
|
||||||
property OnUserCheckboxBitmap;
|
property OnUserCheckboxBitmap;
|
||||||
property OnUTF8KeyPress;
|
property OnUTF8KeyPress;
|
||||||
|
|
||||||
|
property OnCreateLookup: TCreateLookup read F_CreateLookup write F_CreateLookup;
|
||||||
|
property OnDisplayLookup: TDisplayLookup read F_DisplayLookup write F_DisplayLookup;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure RegisterExDBGridSortEngine(ExDBGridSortEngineClass:TExDBGridSortEngineClass; DataSetClass:TDataSetClass);
|
procedure RegisterExDBGridSortEngine(ExDBGridSortEngineClass:TExDBGridSortEngineClass; DataSetClass:TDataSetClass);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses Math, rxdconst, rxstrutils, rxdbgrid_findunit, rxdbgrid_columsunit,
|
uses Math, rxdconst, rxstrutils, rxdbgrid_findunit, rxdbgrid_columsunit,
|
||||||
rxlookup, tooledit, LCLProc;
|
rxlookup, tooledit, LCLProc, rxfilterby, rxsortby;
|
||||||
|
|
||||||
var
|
var
|
||||||
ExDBGridSortEngineList:TStringList;
|
ExDBGridSortEngineList:TStringList;
|
||||||
@ -474,6 +521,7 @@ type
|
|||||||
procedure KeyDown(var Key : Word; Shift : TShiftState); override;
|
procedure KeyDown(var Key : Word; Shift : TShiftState); override;
|
||||||
procedure msg_SetGrid(var Msg: TGridMessage); message GM_SETGRID;
|
procedure msg_SetGrid(var Msg: TGridMessage); message GM_SETGRID;
|
||||||
procedure msg_SetValue(var Msg: TGridMessage); message GM_SETVALUE;
|
procedure msg_SetValue(var Msg: TGridMessage); message GM_SETVALUE;
|
||||||
|
procedure ShowList; override;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -665,6 +713,20 @@ begin
|
|||||||
FGrid.KeyDown(Key, shift);
|
FGrid.KeyDown(Key, shift);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure doEditorKeyDown;
|
||||||
|
begin
|
||||||
|
if FGrid<>nil then
|
||||||
|
FGrid.EditorkeyDown(Self, key, shift);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetFastEntry: boolean;
|
||||||
|
begin
|
||||||
|
if FGrid<>nil then
|
||||||
|
Result := FGrid.FastEditing
|
||||||
|
else
|
||||||
|
Result := False;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
case Key of
|
case Key of
|
||||||
VK_UP,
|
VK_UP,
|
||||||
@ -674,6 +736,18 @@ begin
|
|||||||
doGridKeyDown;
|
doGridKeyDown;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
VK_LEFT, VK_RIGHT:
|
||||||
|
if GetFastEntry then
|
||||||
|
begin
|
||||||
|
doGridKeyDown;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
doEditorKeyDown;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
inherited KeyDown(Key, Shift);
|
inherited KeyDown(Key, Shift);
|
||||||
end;
|
end;
|
||||||
@ -694,13 +768,20 @@ begin
|
|||||||
DataSource:=FGrid.DataSource;
|
DataSource:=FGrid.DataSource;
|
||||||
if Assigned(F) then
|
if Assigned(F) then
|
||||||
begin
|
begin
|
||||||
DataField:=F.FieldName;
|
// DataField:=F.FieldName;
|
||||||
|
DataField:=F.KeyFields;
|
||||||
LookupDisplay:=F.LookupResultField;
|
LookupDisplay:=F.LookupResultField;
|
||||||
LookupField:=F.LookupKeyFields;
|
LookupField:=F.LookupKeyFields;
|
||||||
FLDS.DataSet:=F.LookupDataSet;
|
FLDS.DataSet:=F.LookupDataSet;
|
||||||
|
FGrid.GetOnCreateLookup;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGridLookupComboEditor.ShowList;
|
||||||
|
begin
|
||||||
|
FGrid.GetOnDisplayLookup;
|
||||||
|
inherited ShowList;
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TRxDBGridLookupComboEditor.Create(AOwner: TComponent);
|
constructor TRxDBGridLookupComboEditor.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
@ -1081,6 +1162,16 @@ begin
|
|||||||
OutCaptionCellText(aCol, aRow, aRect, aState, MLI.Caption);
|
OutCaptionCellText(aCol, aRow, aRect, aState, MLI.Caption);
|
||||||
end;
|
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:=rdgFilter in FOptionsRx;
|
||||||
|
F_PopupMenu.Items[3].Enabled:=(rdgFilter in FOptionsRx) or (rdgAllowFilterForm in FOptionsRx);
|
||||||
|
F_PopupMenu.Items[5].Enabled:=rdgAllowSortForm in FOptionsRx;
|
||||||
|
F_PopupMenu.Items[6].Enabled:=rdgAllowColumnsForm in FOptionsRx;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TRxDBGrid.OnIniSave(Sender: TObject);
|
procedure TRxDBGrid.OnIniSave(Sender: TObject);
|
||||||
var
|
var
|
||||||
i:integer;
|
i:integer;
|
||||||
@ -1168,18 +1259,6 @@ end;
|
|||||||
procedure TRxDBGrid.DefaultDrawTitle(aCol, aRow: Integer; aRect: TRect;
|
procedure TRxDBGrid.DefaultDrawTitle(aCol, aRow: Integer; aRect: TRect;
|
||||||
aState: TGridDrawState);
|
aState: TGridDrawState);
|
||||||
|
|
||||||
{ procedure FixRectangle;
|
|
||||||
begin
|
|
||||||
case Canvas.TextStyle.Alignment of
|
|
||||||
Classes.taLeftJustify: Inc(aRect.Left, 3);
|
|
||||||
Classes.taRightJustify: Dec(aRect.Right, 3);
|
|
||||||
end;
|
|
||||||
case Canvas.TextStyle.Layout of
|
|
||||||
tlTop: Inc(aRect.Top, 3);
|
|
||||||
tlBottom: Dec(aRect.Bottom, 3);
|
|
||||||
end;
|
|
||||||
end;}
|
|
||||||
|
|
||||||
var
|
var
|
||||||
ASortMarker: TSortMarker;
|
ASortMarker: TSortMarker;
|
||||||
Background: TColor;
|
Background: TColor;
|
||||||
@ -1422,7 +1501,16 @@ var
|
|||||||
FBackground: TColor;
|
FBackground: TColor;
|
||||||
begin
|
begin
|
||||||
if (gdFixed in aState) and (aRow=0) then
|
if (gdFixed in aState) and (aRow=0) then
|
||||||
DefaultDrawCellA(aCol, aRow, aRect, aState)
|
begin
|
||||||
|
DefaultDrawCellA(aCol, aRow, aRect, aState);
|
||||||
|
if (ARect.Top<=0) and (aCol=0) and (aRow=0) and (DatalinkActive) and (DataSource.DataSet.State = dsBrowse) then
|
||||||
|
begin
|
||||||
|
F_TopRect := ARect;
|
||||||
|
Canvas.Lock;
|
||||||
|
Canvas.Draw((ARect.Left+ARect.Right-F_MenuBMP.Width) div 2,(ARect.Top + ARect.Bottom - F_MenuBMP.Height) div 2, F_MenuBMP);
|
||||||
|
Canvas.UnLock;
|
||||||
|
end;
|
||||||
|
end
|
||||||
else
|
else
|
||||||
if not ((gdFixed in aState) or (aCol=0) or (aRow=0)) then
|
if not ((gdFixed in aState) or (aCol=0) or (aRow=0)) then
|
||||||
begin
|
begin
|
||||||
@ -1476,6 +1564,55 @@ begin
|
|||||||
end;
|
end;
|
||||||
FSortField:=nil;
|
FSortField:=nil;
|
||||||
FSortOrder:=smNone;
|
FSortOrder:=smNone;
|
||||||
|
|
||||||
|
F_SortListField.Clear;
|
||||||
|
if not (csDestroying in ComponentState) and not (csDesigning in ComponentState) then
|
||||||
|
begin
|
||||||
|
if Value then
|
||||||
|
begin
|
||||||
|
if DataSource.DataSet.OnFilterRecord<>@FilterRec then
|
||||||
|
begin
|
||||||
|
F_EventOnFilterRec:=DataSource.DataSet.OnFilterRecord;
|
||||||
|
DataSource.DataSet.OnFilterRecord:=@FilterRec;
|
||||||
|
end;
|
||||||
|
if DataSource.DataSet.BeforeDelete<>@BeforeDel then
|
||||||
|
begin
|
||||||
|
F_EventOnBeforeDelete:=DataSource.DataSet.BeforeDelete;
|
||||||
|
DataSource.DataSet.BeforeDelete:=@BeforeDel;
|
||||||
|
end;
|
||||||
|
if DataSource.DataSet.BeforePost<>@BeforePo then
|
||||||
|
begin
|
||||||
|
F_EventOnBeforePost:=DataSource.DataSet.BeforePost;
|
||||||
|
DataSource.DataSet.BeforePost:=@BeforePo;
|
||||||
|
end;
|
||||||
|
if DataSource.DataSet.OnDeleteError<>@ErrorDel then
|
||||||
|
begin
|
||||||
|
F_EventOnDeleteError:=DataSource.DataSet.OnDeleteError;
|
||||||
|
DataSource.DataSet.OnDeleteError:=@ErrorDel;
|
||||||
|
end;
|
||||||
|
if DataSource.DataSet.OnPostError<>@ErrorPo then
|
||||||
|
begin
|
||||||
|
F_EventOnPostError:=DataSource.DataSet.OnPostError;
|
||||||
|
DataSource.DataSet.OnPostError:=@ErrorPo;
|
||||||
|
end;
|
||||||
|
CalcStatTotals;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
DataSource.DataSet.OnFilterRecord:=F_EventOnFilterRec;
|
||||||
|
F_EventOnFilterRec:=nil;
|
||||||
|
DataSource.DataSet.BeforeDelete:=F_EventOnBeforeDelete;
|
||||||
|
F_EventOnBeforeDelete:=nil;
|
||||||
|
DataSource.DataSet.BeforePost:=F_EventOnBeforePost;
|
||||||
|
F_EventOnBeforePost:=nil;
|
||||||
|
DataSource.DataSet.OnDeleteError:=F_EventOnDeleteError;
|
||||||
|
F_EventOnDeleteError:=nil;
|
||||||
|
DataSource.DataSet.OnPostError:=F_EventOnPostError;
|
||||||
|
F_EventOnPostError:=nil;
|
||||||
|
OptionsRx:=OptionsRx - [rdgFilter];
|
||||||
|
F_LastFilter.Clear;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxDBGrid.DrawFooterRows;
|
procedure TRxDBGrid.DrawFooterRows;
|
||||||
@ -1592,6 +1729,21 @@ var
|
|||||||
// dump : integer;
|
// dump : integer;
|
||||||
begin
|
begin
|
||||||
Cell := MouseCoord(X, Y);
|
Cell := MouseCoord(X, Y);
|
||||||
|
if (DatalinkActive) And (DataSource.DataSet.State = dsBrowse) And (Button = mbLeft) And (Cell.X =0 ) And (Cell.Y = 0) And (dgIndicator in Options) then
|
||||||
|
begin
|
||||||
|
F_Clicked := True;
|
||||||
|
Rect := F_TopRect;
|
||||||
|
Canvas.Brush.Color := FixedColor;
|
||||||
|
Canvas.FillRect(Rect);
|
||||||
|
if (dgColLines in Options) Then
|
||||||
|
begin
|
||||||
|
InflateRect(Rect, 1, 1);
|
||||||
|
DrawEdge(Canvas.Handle, Rect, BDR_RAISEDINNER, BF_FLAT);
|
||||||
|
DrawEdge(Canvas.Handle, Rect, BDR_RAISEDINNER, BF_FLAT);
|
||||||
|
end;
|
||||||
|
Canvas.Draw(((Rect.Left+Rect.Right-F_MenuBMP.Width) div 2)+1,((Rect.Top + Rect.Bottom - F_MenuBMP.Height) div 2)+1, F_MenuBMP);
|
||||||
|
end;
|
||||||
|
|
||||||
if (Cell.Y=0) and (Cell.X >= ord(dgIndicator in Options)) then
|
if (Cell.Y=0) and (Cell.X >= ord(dgIndicator in Options)) then
|
||||||
begin
|
begin
|
||||||
if (rdgFilter in OptionsRx) and DatalinkActive then
|
if (rdgFilter in OptionsRx) and DatalinkActive then
|
||||||
@ -1684,7 +1836,13 @@ var
|
|||||||
Cell: TGridCoord;
|
Cell: TGridCoord;
|
||||||
ACol: Longint;
|
ACol: Longint;
|
||||||
DoClick: Boolean;
|
DoClick: Boolean;
|
||||||
|
|
||||||
|
ShowMenu : Boolean;
|
||||||
|
MPT : TPoint;
|
||||||
|
Rct : TRect;
|
||||||
begin
|
begin
|
||||||
|
ShowMenu := False;
|
||||||
|
|
||||||
FColumnResizing := false;
|
FColumnResizing := false;
|
||||||
|
|
||||||
if (dgHeaderPushedLook in Options) and FTracking and (FPressedCol <> nil) then
|
if (dgHeaderPushedLook in Options) and FTracking and (FPressedCol <> nil) then
|
||||||
@ -1702,9 +1860,12 @@ begin
|
|||||||
begin
|
begin
|
||||||
FPressedCol := ColumnFromGridColumn(Cell.X) as TColumn;
|
FPressedCol := ColumnFromGridColumn(Cell.X) as TColumn;
|
||||||
if Assigned(FPressedCol) then
|
if Assigned(FPressedCol) then
|
||||||
|
begin
|
||||||
|
F_SortListField.Clear;
|
||||||
DoTitleClick(FPressedCol.Index, FPressedCol.Field);
|
DoTitleClick(FPressedCol.Index, FPressedCol.Field);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if FSwapButtons then begin
|
if FSwapButtons then begin
|
||||||
@ -1712,7 +1873,36 @@ begin
|
|||||||
MouseCapture := False;
|
MouseCapture := False;
|
||||||
if Button = mbRight then Button := mbLeft;
|
if Button = mbRight then Button := mbLeft;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if (DatalinkActive) And (DataSource.DataSet.State = dsBrowse) then
|
||||||
|
begin
|
||||||
|
Cell := MouseCoord(X,Y);
|
||||||
|
if ((Button = mbLeft) and (Cell.X =0 ) and (Cell.Y = 0) And (dgIndicator in Options)) Or (F_Clicked) then
|
||||||
|
begin
|
||||||
|
Rct := F_TopRect;
|
||||||
|
Canvas.Brush.Color := FixedColor;
|
||||||
|
Canvas.FillRect(Rct);
|
||||||
|
if (dgColLines in Options) Then
|
||||||
|
begin
|
||||||
|
DrawEdge(Canvas.Handle, Rct, BDR_RAISEDINNER, BF_BOTTOMRIGHT);
|
||||||
|
DrawEdge(Canvas.Handle, Rct, BDR_RAISEDINNER, BF_TOPLEFT);
|
||||||
|
end;
|
||||||
|
F_Clicked := False;
|
||||||
|
ShowMenu := True;
|
||||||
|
Button:=mbRight;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
inherited MouseUp(Button, Shift, X, Y);
|
inherited MouseUp(Button, Shift, X, Y);
|
||||||
|
|
||||||
|
if (DatalinkActive) and (DataSource.DataSet.State = dsBrowse) and (ShowMenu) then
|
||||||
|
begin
|
||||||
|
MPT.X := F_TopRect.Left;
|
||||||
|
MPT.Y := F_TopRect.Bottom;
|
||||||
|
MPT := ClientToScreen(MPT);
|
||||||
|
DrawCell(0,0,F_TopRect,[gdFixed]);
|
||||||
|
UpdateJMenuStates;
|
||||||
|
F_PopupMenu.Popup(MPT.X,MPT.Y);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxDBGrid.SetQuickUTF8Search(AValue : String);
|
procedure TRxDBGrid.SetQuickUTF8Search(AValue : String);
|
||||||
@ -1796,6 +1986,52 @@ begin
|
|||||||
end;
|
end;
|
||||||
VK_DELETE:if not (aoDelete in FAllowedOperations) then exit;
|
VK_DELETE:if not (aoDelete in FAllowedOperations) then exit;
|
||||||
VK_INSERT:if not (aoInsert in FAllowedOperations) then exit;
|
VK_INSERT:if not (aoInsert in FAllowedOperations) then exit;
|
||||||
|
|
||||||
|
ord('T'):begin
|
||||||
|
if ssCtrl in Shift then
|
||||||
|
begin
|
||||||
|
OnFilterBy(Self);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
ord('E'):begin
|
||||||
|
if ssCtrl in Shift then
|
||||||
|
begin
|
||||||
|
OnFilter(Self);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
ord('Q'):begin
|
||||||
|
if ssCtrl in Shift then
|
||||||
|
begin
|
||||||
|
OnFilterClose(Self);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
ord('C'):begin
|
||||||
|
if ssCtrl in Shift then
|
||||||
|
begin
|
||||||
|
OnSortBy(Self);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
VK_RETURN:if (aoAppend in FAllowedOperations) and (EditorMode) and (Col=ColCount-1) and (Row=RowCount-1) then
|
||||||
|
if DataSource.DataSet.State=dsInsert then
|
||||||
|
begin
|
||||||
|
DataSource.DataSet.Post;
|
||||||
|
Col:=0;
|
||||||
|
Key:=VK_DOWN;
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
exit;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Col:=0;
|
||||||
|
Key:=VK_DOWN;
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
VK_DOWN:if not (aoAppend in FAllowedOperations) then
|
VK_DOWN:if not (aoAppend in FAllowedOperations) then
|
||||||
begin
|
begin
|
||||||
FTmpReadOnly:=ReadOnly;
|
FTmpReadOnly:=ReadOnly;
|
||||||
@ -1884,6 +2120,11 @@ procedure TRxDBGrid.UpdateActive;
|
|||||||
begin
|
begin
|
||||||
if FInProcessCalc>0 then exit;
|
if FInProcessCalc>0 then exit;
|
||||||
inherited UpdateActive;
|
inherited UpdateActive;
|
||||||
|
if FInProcessCalc<0 then
|
||||||
|
begin
|
||||||
|
FInProcessCalc:=0;
|
||||||
|
CalcStatTotals;
|
||||||
|
end;
|
||||||
{ if (rdgFooterRows in OptionsRx) and (FooterRowCount > 0) then
|
{ if (rdgFooterRows in OptionsRx) and (FooterRowCount > 0) then
|
||||||
CalcStatTotals;}
|
CalcStatTotals;}
|
||||||
end;
|
end;
|
||||||
@ -1931,6 +2172,10 @@ begin
|
|||||||
else
|
else
|
||||||
Value := FFilterListEditor.Text
|
Value := FFilterListEditor.Text
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
DataSource.DataSet.Refresh;
|
||||||
|
CalcStatTotals;
|
||||||
|
|
||||||
if Assigned(FOnFiltred) then
|
if Assigned(FOnFiltred) then
|
||||||
FOnFiltred(Self);
|
FOnFiltred(Self);
|
||||||
end;
|
end;
|
||||||
@ -2034,10 +2279,10 @@ begin
|
|||||||
P := Ds.GetBookMark;
|
P := Ds.GetBookMark;
|
||||||
DS.DisableControls;
|
DS.DisableControls;
|
||||||
try
|
try
|
||||||
|
DS.First;
|
||||||
for i:=0 to Columns.Count - 1 do
|
for i:=0 to Columns.Count - 1 do
|
||||||
TRxColumn(Columns[i]).Footer.ResetTestValue;
|
TRxColumn(Columns[i]).Footer.ResetTestValue;
|
||||||
|
|
||||||
DS.First;
|
|
||||||
while not DS.EOF do
|
while not DS.EOF do
|
||||||
begin
|
begin
|
||||||
for i:=0 to Columns.Count - 1 do
|
for i:=0 to Columns.Count - 1 do
|
||||||
@ -2100,6 +2345,207 @@ begin
|
|||||||
CalcTitle;
|
CalcTitle;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.FilterRec(DataSet : TDataSet;var Accept: Boolean);
|
||||||
|
var
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
Accept:=true;
|
||||||
|
for i:=0 to Columns.Count-1 do
|
||||||
|
begin
|
||||||
|
with TRxColumn(Columns[i]) do
|
||||||
|
if (Filter.Value<>'') and (Filter.Value<>Field.AsString) then
|
||||||
|
begin
|
||||||
|
Accept:=false;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if Assigned(F_EventOnFilterRec) then
|
||||||
|
F_EventOnFilterRec(DataSet,Accept);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.BeforeDel(DataSet: TDataSet);
|
||||||
|
var
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
if (rdgFooterRows in OptionsRx) and (DatalinkActive) then
|
||||||
|
for i:=0 to Columns.Count - 1 do
|
||||||
|
if not TRxColumn(Columns[i]).Footer.DeleteTestValue then
|
||||||
|
begin
|
||||||
|
FInProcessCalc:=-1;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
if Assigned(F_EventOnBeforeDelete) then
|
||||||
|
F_EventOnBeforeDelete(DataSet);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.BeforePo(DataSet: TDataSet);
|
||||||
|
var
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
if (rdgFooterRows in OptionsRx) and (DatalinkActive) then
|
||||||
|
for i:=0 to Columns.Count - 1 do
|
||||||
|
if not TRxColumn(Columns[i]).Footer.PostTestValue then
|
||||||
|
begin
|
||||||
|
FInProcessCalc:=-1;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
if Assigned(F_EventOnBeforePost) then
|
||||||
|
F_EventOnBeforePost(DataSet);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.ErrorDel(DataSet: TDataSet; E: EDatabaseError;var DataAction: TDataAction);
|
||||||
|
var
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
if (rdgFooterRows in OptionsRx) and (DatalinkActive) then
|
||||||
|
for i:=0 to Columns.Count - 1 do
|
||||||
|
if not TRxColumn(Columns[i]).Footer.ErrorTestValue then
|
||||||
|
begin
|
||||||
|
FInProcessCalc:=-1;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
if Assigned(F_EventOnDeleteError) then
|
||||||
|
F_EventOnDeleteError(DataSet,E,DataAction);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.ErrorPo(DataSet: TDataSet; E: EDatabaseError;var DataAction: TDataAction);
|
||||||
|
var
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
if (rdgFooterRows in OptionsRx) and (DatalinkActive) then
|
||||||
|
for i:=0 to Columns.Count - 1 do
|
||||||
|
if not TRxColumn(Columns[i]).Footer.ErrorTestValue then
|
||||||
|
begin
|
||||||
|
FInProcessCalc:=-1;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
if Assigned(F_EventOnPostError) then
|
||||||
|
F_EventOnPostError(DataSet,E,DataAction);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.OnFind(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if rdgAllowDialogFind in OptionsRx then
|
||||||
|
ShowFindDialog;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.OnFilterBy(Sender: TObject);
|
||||||
|
var
|
||||||
|
NewFilter : String;
|
||||||
|
begin
|
||||||
|
if DataLinkActive then
|
||||||
|
begin
|
||||||
|
OptionsRx:=OptionsRx - [rdgFilter];
|
||||||
|
rxFilterByForm:=TrxFilterByForm.Create(Application);
|
||||||
|
NewFilter:=DataSource.DataSet.Filter;
|
||||||
|
if rxFilterByForm.Execute(DataSource.DataSet, NewFilter, F_LastFilter) then
|
||||||
|
begin
|
||||||
|
if NewFilter <> '' then
|
||||||
|
begin
|
||||||
|
DataSource.DataSet.Filter := NewFilter;
|
||||||
|
DataSource.DataSet.Filtered := True;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
DataSource.DataSet.Filtered := False;
|
||||||
|
end;
|
||||||
|
CalcStatTotals;
|
||||||
|
end;
|
||||||
|
FreeAndNil(rxFilterByForm);
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.OnFilter(Sender: TObject);
|
||||||
|
var
|
||||||
|
C:TRxColumn;
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
OptionsRx:=OptionsRx + [rdgFilter];
|
||||||
|
|
||||||
|
for i:=0 to Columns.Count-1 do
|
||||||
|
begin
|
||||||
|
C:=TRxColumn(Columns[i]);
|
||||||
|
C.Filter.ValueList.Clear;
|
||||||
|
C.Filter.Value:='';
|
||||||
|
C.Filter.ItemIndex:=-1;
|
||||||
|
C.Filter.ValueList.Add(C.Filter.EmptyValue);
|
||||||
|
end;
|
||||||
|
|
||||||
|
DataSource.DataSet.DisableControls;
|
||||||
|
DataSource.DataSet.Filtered:=true;
|
||||||
|
DataSource.DataSet.First;
|
||||||
|
while not DataSource.DataSet.EOF do
|
||||||
|
begin
|
||||||
|
for i:=0 to Columns.Count-1 do
|
||||||
|
begin
|
||||||
|
C:=TRxColumn(Columns[i]);
|
||||||
|
if (C.Field<>nil) and (C.Filter.ValueList.IndexOf(C.Field.AsString)<0) then
|
||||||
|
C.Filter.ValueList.Add(C.Field.AsString);
|
||||||
|
end;
|
||||||
|
DataSource.DataSet.Next;
|
||||||
|
end;
|
||||||
|
DataSource.DataSet.First;
|
||||||
|
DataSource.DataSet.EnableControls;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TRxDBGrid.OnFilterClose(Sender: TObject);
|
||||||
|
var
|
||||||
|
C:TRxColumn;
|
||||||
|
i:integer;
|
||||||
|
Begin
|
||||||
|
OptionsRx:=OptionsRx - [rdgFilter];
|
||||||
|
DataSource.DataSet.Filtered:=false;
|
||||||
|
CalcStatTotals;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Procedure TRxDBGrid.OnSortBy(Sender: TObject);
|
||||||
|
var
|
||||||
|
i:integer;
|
||||||
|
s:string;
|
||||||
|
o:boolean;
|
||||||
|
begin
|
||||||
|
if DatalinkActive then
|
||||||
|
begin
|
||||||
|
FSortField:=nil;
|
||||||
|
rxSortByForm:=TrxSortByForm.Create(Application);
|
||||||
|
o:=not (FSortOrder=smDown);
|
||||||
|
if rxSortByForm.Execute(DataSource.DataSet,F_SortListField,o) then
|
||||||
|
begin
|
||||||
|
for i:=0 to F_SortListField.Count-1 do
|
||||||
|
begin
|
||||||
|
s:=s+F_SortListField.Strings[i]+';';
|
||||||
|
end;
|
||||||
|
s:=Copy(s,1,Length(s)-1);
|
||||||
|
if o then
|
||||||
|
FSortOrder:=smUp
|
||||||
|
else
|
||||||
|
FSortOrder:=smDown;
|
||||||
|
FSortEngine.SortList(s, DataSource.DataSet, o);
|
||||||
|
end;
|
||||||
|
FreeAndNil(rxSortByForm);
|
||||||
|
// Paint;
|
||||||
|
Invalidate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure TRxDBGrid.OnChooseVisibleFields(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if rdgAllowColumnsForm in OptionsRx then
|
||||||
|
ShowColumnsDialog;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure TRxDBGrid.GetOnCreateLookup;
|
||||||
|
begin
|
||||||
|
if Assigned(F_CreateLookup) then
|
||||||
|
F_CreateLookup(FRxDbGridLookupComboEditor);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure TRxDBGrid.GetOnDisplayLookup;
|
||||||
|
begin
|
||||||
|
if Assigned(F_DisplayLookup) then
|
||||||
|
F_DisplayLookup(FRxDbGridLookupComboEditor);
|
||||||
|
end;
|
||||||
|
//!!!
|
||||||
constructor TRxDBGrid.Create(AOwner: TComponent);
|
constructor TRxDBGrid.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
@ -2109,6 +2555,54 @@ begin
|
|||||||
|
|
||||||
FMarkerUp := LoadLazResBitmapImage('rx_markerup');
|
FMarkerUp := LoadLazResBitmapImage('rx_markerup');
|
||||||
FMarkerDown := LoadLazResBitmapImage('rx_markerdown');
|
FMarkerDown := LoadLazResBitmapImage('rx_markerdown');
|
||||||
|
Options:=Options - [dgTabs];
|
||||||
|
OptionsRx:=OptionsRx + [rdgAllowColumnsForm]+[rdgAllowDialogFind];
|
||||||
|
|
||||||
|
FAutoSort:=True;
|
||||||
|
// FTitleButtons:=True;
|
||||||
|
|
||||||
|
F_Clicked := False;
|
||||||
|
F_MenuBMP := TBitmap.Create;
|
||||||
|
F_MenuBMP := LoadLazResBitmapImage('menu_grid');
|
||||||
|
|
||||||
|
F_PopupMenu := TPopupMenu.Create(Self);
|
||||||
|
F_PopupMenu.Name := 'OptionsMenu';
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(0,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[0].Caption :=sRxDBGridFind;
|
||||||
|
F_PopupMenu.Items[0].ShortCut:=KeyToShortCut(ord('F'), [ssCtrl]);
|
||||||
|
F_PopupMenu.Items[0].OnClick :=@OnFind;
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(1,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[1].Caption :=sRxDBGridFilter;
|
||||||
|
F_PopupMenu.Items[1].ShortCut:=KeyToShortCut(ord('T'), [ssCtrl]);
|
||||||
|
F_PopupMenu.Items[1].OnClick := @OnFilterBy;
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(2,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[2].Caption :=sRxDBGridFilterSimple;
|
||||||
|
F_PopupMenu.Items[2].ShortCut:=KeyToShortCut(ord('E'), [ssCtrl]);
|
||||||
|
F_PopupMenu.Items[2].OnClick := @OnFilter;
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(3,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[3].Caption :=sRxDBGridFilterClear;
|
||||||
|
F_PopupMenu.Items[3].ShortCut:=KeyToShortCut(ord('Q'), [ssCtrl]);
|
||||||
|
F_PopupMenu.Items[3].OnClick := @OnFilterClose;
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(4,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[4].Caption :='-';
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(5,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[5].Caption :=sRxDBGridSortByColumns;
|
||||||
|
F_PopupMenu.Items[5].ShortCut:=KeyToShortCut(ord('C'), [ssCtrl]);
|
||||||
|
F_PopupMenu.Items[5].OnClick := @OnSortBy;
|
||||||
|
|
||||||
|
F_PopupMenu.Items.Insert(6,TMenuItem.Create(F_PopupMenu));
|
||||||
|
F_PopupMenu.Items[6].Caption :=sRxDBGridSelectColumns;
|
||||||
|
F_PopupMenu.Items[6].ShortCut:=KeyToShortCut(ord('W'), [ssCtrl]);
|
||||||
|
F_PopupMenu.Items[6].OnClick := @OnChooseVisibleFields;
|
||||||
|
|
||||||
|
F_LastFilter := TStringList.Create;
|
||||||
|
F_SortListField := TStringList.Create;
|
||||||
|
|
||||||
FPropertyStorageLink:=TPropertyStorageLink.Create;
|
FPropertyStorageLink:=TPropertyStorageLink.Create;
|
||||||
FPropertyStorageLink.OnSave:=@OnIniSave;
|
FPropertyStorageLink.OnSave:=@OnIniSave;
|
||||||
@ -2117,7 +2611,8 @@ begin
|
|||||||
// FTitleLines := TITLE_DEFAULT;
|
// FTitleLines := TITLE_DEFAULT;
|
||||||
FAllowedOperations:=[aoInsert, aoUpdate, aoDelete, aoAppend];
|
FAllowedOperations:=[aoInsert, aoUpdate, aoDelete, aoAppend];
|
||||||
|
|
||||||
FFooterColor:=clWindow;
|
// FFooterColor:=clWindow;
|
||||||
|
FFooterColor:=clYellow;
|
||||||
FFooterRowCount:=0;
|
FFooterRowCount:=0;
|
||||||
|
|
||||||
FFilterListEditor := TFilterListCellEditor.Create(nil);
|
FFilterListEditor := TFilterListCellEditor.Create(nil);
|
||||||
@ -2150,6 +2645,12 @@ begin
|
|||||||
FreeAndNil(FMarkerUp);
|
FreeAndNil(FMarkerUp);
|
||||||
FreeAndNil(FPropertyStorageLink);
|
FreeAndNil(FPropertyStorageLink);
|
||||||
FreeAndNil(FFilterListEditor);
|
FreeAndNil(FFilterListEditor);
|
||||||
|
|
||||||
|
FreeAndNil(F_PopupMenu);
|
||||||
|
FreeAndNil(F_MenuBMP);
|
||||||
|
FreeAndNil(F_LastFilter);
|
||||||
|
FreeAndNil(F_SortListField);
|
||||||
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2461,7 +2962,9 @@ function TRxColumnFooter.GetStatTotal: string;
|
|||||||
var
|
var
|
||||||
F:TField;
|
F:TField;
|
||||||
begin
|
begin
|
||||||
if (FFieldName<>'') and TRxDBGrid(FOwner.Grid).DatalinkActive then
|
if (FFieldName<>'') and TRxDBGrid(FOwner.Grid).DatalinkActive
|
||||||
|
and (TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecordCount<>0)
|
||||||
|
then
|
||||||
begin
|
begin
|
||||||
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||||
if Assigned(F) then
|
if Assigned(F) then
|
||||||
@ -2474,6 +2977,9 @@ begin
|
|||||||
if FValueType in [fvtSum, fvtAvg] then
|
if FValueType in [fvtSum, fvtAvg] then
|
||||||
Result:=''
|
Result:=''
|
||||||
else
|
else
|
||||||
|
if FTestValue=0 then
|
||||||
|
Result:=''
|
||||||
|
else
|
||||||
if FDisplayFormat = '' then
|
if FDisplayFormat = '' then
|
||||||
Result:=DateToStr(FTestValue)
|
Result:=DateToStr(FTestValue)
|
||||||
else
|
else
|
||||||
@ -2509,8 +3015,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxColumnFooter.ResetTestValue;
|
procedure TRxColumnFooter.ResetTestValue;
|
||||||
|
var
|
||||||
|
F:TField;
|
||||||
begin
|
begin
|
||||||
FTestValue:=0;
|
FTestValue:=0;
|
||||||
|
|
||||||
|
if (ValueType=fvtMin) and (TRxDBGrid(FOwner.Grid).DataSource.DataSet.RecordCount<>0) then
|
||||||
|
begin
|
||||||
|
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||||
|
if (Assigned(F)) and not (F.IsNull) then
|
||||||
|
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||||
|
FTestValue:=F.AsDateTime
|
||||||
|
else
|
||||||
|
FTestValue:=F.AsFloat;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxColumnFooter.UpdateTestValue;
|
procedure TRxColumnFooter.UpdateTestValue;
|
||||||
@ -2542,6 +3060,132 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TRxColumnFooter.DeleteTestValue: boolean;
|
||||||
|
var
|
||||||
|
F:TField;
|
||||||
|
begin
|
||||||
|
Result:=true;
|
||||||
|
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||||
|
begin
|
||||||
|
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||||
|
if (Assigned(F)) and not (F.IsNull) then
|
||||||
|
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||||
|
Result:=not ((FValueType in [fvtMax, fvtMin]) and (FTestValue=F.AsDateTime))
|
||||||
|
else
|
||||||
|
if FValueType in [fvtMax, fvtMin] then
|
||||||
|
Result:=(FTestValue<>F.AsFloat)
|
||||||
|
else
|
||||||
|
FTestValue:=FTestValue-F.AsFloat;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TRxColumnFooter.PostTestValue: boolean;
|
||||||
|
var
|
||||||
|
F:TField;
|
||||||
|
begin
|
||||||
|
Result:=true;
|
||||||
|
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||||
|
begin
|
||||||
|
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||||
|
if Assigned(F) then
|
||||||
|
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||||
|
begin
|
||||||
|
if FValueType in [fvtMax, fvtMin] then
|
||||||
|
if F.DataSet.State=dsinsert then
|
||||||
|
begin
|
||||||
|
if not (F.IsNull) then
|
||||||
|
case FValueType of
|
||||||
|
fvtMax:FTestValue:=Max(FTestValue, F.AsDateTime);
|
||||||
|
fvtMin:FTestValue:=Min(FTestValue, F.AsDateTime);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if (F.OldValue<>null) and (FTestValue=TDateTime(F.OldValue)) then
|
||||||
|
Result:=false
|
||||||
|
else
|
||||||
|
if not F.IsNull then
|
||||||
|
case FValueType of
|
||||||
|
fvtMax:FTestValue:=Max(FTestValue, F.AsDateTime);
|
||||||
|
fvtMin:FTestValue:=Min(FTestValue, F.AsDateTime);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if F.DataSet.State=dsinsert then
|
||||||
|
begin
|
||||||
|
if not F.IsNull then
|
||||||
|
case FValueType of
|
||||||
|
fvtSum:FTestValue:=FTestValue+F.AsFloat;
|
||||||
|
fvtMax:FTestValue:=Max(FTestValue, F.AsFloat);
|
||||||
|
fvtMin:FTestValue:=Min(FTestValue, F.AsFloat);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if (FValueType in [fvtMax, fvtMin]) and (F.OldValue<>null) and (FTestValue=Float(F.OldValue)) then
|
||||||
|
Result:=false
|
||||||
|
else
|
||||||
|
case FValueType of
|
||||||
|
fvtSum:
|
||||||
|
begin
|
||||||
|
if F.OldValue<>null then
|
||||||
|
FTestValue:=FTestValue-Float(F.OldValue);
|
||||||
|
if not F.IsNull then
|
||||||
|
FTestValue:=FTestValue+F.AsFloat;
|
||||||
|
end;
|
||||||
|
fvtMax:if not F.IsNull then FTestValue:=Max(FTestValue, F.AsFloat);
|
||||||
|
fvtMin:if not F.IsNull then FTestValue:=Min(FTestValue, F.AsFloat);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TRxColumnFooter.ErrorTestValue: boolean;
|
||||||
|
var
|
||||||
|
F:TField;
|
||||||
|
begin
|
||||||
|
Result:=true;
|
||||||
|
if ValueType in [fvtSum, fvtAvg, fvtMax, fvtMin] then
|
||||||
|
begin
|
||||||
|
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||||
|
if Assigned(F) then
|
||||||
|
if F.DataType in [ftDate, ftTime, ftDateTime, ftTimeStamp] then
|
||||||
|
begin
|
||||||
|
if FValueType in [fvtMax, fvtMin] then
|
||||||
|
if not (F.IsNull) and (FTestValue=F.AsDateTime) then
|
||||||
|
Result:=false
|
||||||
|
else
|
||||||
|
if (F.DataSet.RecordCount<>0) and (F.OldValue<>null) then
|
||||||
|
case FValueType of
|
||||||
|
fvtMax:FTestValue:=Max(FTestValue, TDateTime(F.OldValue));
|
||||||
|
fvtMin:FTestValue:=Min(FTestValue, TDateTime(F.OldValue));
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if (FValueType in [fvtMax, fvtMin]) and not (F.IsNull) and (FTestValue=F.AsFloat) then
|
||||||
|
Result:=false
|
||||||
|
else
|
||||||
|
case FValueType of
|
||||||
|
fvtSum:
|
||||||
|
if F.DataSet.RecordCount=0 then
|
||||||
|
begin
|
||||||
|
if not F.IsNull then
|
||||||
|
FTestValue:=FTestValue-F.AsFloat
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if F.OldValue<>null then
|
||||||
|
FTestValue:=FTestValue+Float(F.OldValue);
|
||||||
|
if not F.IsNull then
|
||||||
|
FTestValue:=FTestValue-F.AsFloat;
|
||||||
|
end;
|
||||||
|
fvtMax:
|
||||||
|
if (F.DataSet.RecordCount<>0) and (F.OldValue<>null) then
|
||||||
|
FTestValue:=Max(FTestValue, Float(F.OldValue));
|
||||||
|
fvtMin:
|
||||||
|
if (F.DataSet.RecordCount<>0) and (F.OldValue<>null) then
|
||||||
|
FTestValue:=Min(FTestValue, Float(F.OldValue));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
///!
|
||||||
constructor TRxColumnFooter.Create(Owner: TRxColumn);
|
constructor TRxColumnFooter.Create(Owner: TRxColumn);
|
||||||
begin
|
begin
|
||||||
inherited Create;
|
inherited Create;
|
||||||
@ -2633,6 +3277,11 @@ begin
|
|||||||
FEmptyFont := TFont.Create;
|
FEmptyFont := TFont.Create;
|
||||||
FValueList := TStringList.Create;
|
FValueList := TStringList.Create;
|
||||||
FColor := clWhite;
|
FColor := clWhite;
|
||||||
|
|
||||||
|
// FColor := clSkyBlue;
|
||||||
|
FEmptyFont.Style:=[fsItalic];
|
||||||
|
FEmptyValue:=sRxDBGridEmptiFilter;
|
||||||
|
FFont.Style:=[fsItalic];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TRxColumnFilter.Destroy;
|
destructor TRxColumnFilter.Destroy;
|
||||||
@ -2643,6 +3292,14 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TExDBGridSortEngine }
|
||||||
|
|
||||||
|
procedure TExDBGridSortEngine.SortList(ListField: string; ADataSet: TDataSet;
|
||||||
|
Asc: boolean);
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
{$I rxdbgrid.lrs}
|
{$I rxdbgrid.lrs}
|
||||||
// {$I rx_markerdown.lrs}
|
// {$I rx_markerdown.lrs}
|
||||||
|
@ -1,91 +1,138 @@
|
|||||||
object rxDBGridColumsForm: TrxDBGridColumsForm
|
object rxDBGridColumsForm: TrxDBGridColumsForm
|
||||||
Left = 492
|
Left = 489
|
||||||
Height = 296
|
Height = 375
|
||||||
Top = 264
|
Top = 248
|
||||||
Width = 355
|
Width = 448
|
||||||
HorzScrollBar.Page = 354
|
ActiveControl = CheckListBox1
|
||||||
VertScrollBar.Page = 295
|
|
||||||
Caption = 'Grid colums'
|
Caption = 'Grid colums'
|
||||||
ClientHeight = 296
|
ClientHeight = 375
|
||||||
ClientWidth = 355
|
ClientWidth = 448
|
||||||
PixelsPerInch = 96
|
OnCreate = FormCreate
|
||||||
object SpeedButton1: TSpeedButton
|
Position = poScreenCenter
|
||||||
Left = 8
|
ShowHint = True
|
||||||
Height = 22
|
LCLVersion = '0.9.27'
|
||||||
Top = 260
|
|
||||||
Width = 23
|
|
||||||
Color = clBtnFace
|
|
||||||
Glyph.Data = {
|
|
||||||
9B0100002F2A2058504D202A2F0A7374617469632063686172202A506F696E74
|
|
||||||
55505B5D3D7B0A22313620313620332031222C0A222E2063204E6F6E65222C0A
|
|
||||||
222320632023303030303030222C0A226120632023303038303830222C0A222E
|
|
||||||
2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E
|
|
||||||
2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E
|
|
||||||
2E2E2E232E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2361232E2E2E2E2E2E22
|
|
||||||
2C0A222E2E2E2E2E2E23616161232E2E2E2E2E222C0A222E2E2E2E2E23616161
|
|
||||||
6161232E2E2E2E222C0A222E2E2E2E2361616161616161232E2E2E222C0A222E
|
|
||||||
2E2E23232323616161232323232E2E222C0A222E2E2E2E2E2E23616161232E2E
|
|
||||||
2E2E2E222C0A222E2E2E2E2E2E23616161232E2E2E2E2E222C0A222E2E2E2E2E
|
|
||||||
2E23616161232E2E2E2E2E222C0A222E2E2E2E2E2E23232323232E2E2E2E2E22
|
|
||||||
2C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E
|
|
||||||
2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E227D3B0A
|
|
||||||
}
|
|
||||||
NumGlyphs = 0
|
|
||||||
end
|
|
||||||
object SpeedButton2: TSpeedButton
|
|
||||||
Left = 40
|
|
||||||
Height = 22
|
|
||||||
Top = 260
|
|
||||||
Width = 23
|
|
||||||
Color = clBtnFace
|
|
||||||
Glyph.Data = {
|
|
||||||
9D0100002F2A2058504D202A2F0A7374617469632063686172202A506F696E74
|
|
||||||
446F776E5B5D3D7B0A22313620313620332031222C0A222E2063204E6F6E6522
|
|
||||||
2C0A222320632023303030303030222C0A226120632023303038303830222C0A
|
|
||||||
222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E
|
|
||||||
2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E
|
|
||||||
2E2E2E23232323232E2E2E2E2E222C0A222E2E2E2E2E2E23616161232E2E2E2E
|
|
||||||
2E222C0A222E2E2E2E2E2E23616161232E2E2E2E2E222C0A222E2E2E2E2E2E23
|
|
||||||
616161232E2E2E2E2E222C0A222E2E2E23232323616161232323232E2E222C0A
|
|
||||||
222E2E2E2E2361616161616161232E2E2E222C0A222E2E2E2E2E236161616161
|
|
||||||
232E2E2E2E222C0A222E2E2E2E2E2E23616161232E2E2E2E2E222C0A222E2E2E
|
|
||||||
2E2E2E2E2361232E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E232E2E2E2E2E2E
|
|
||||||
2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E
|
|
||||||
2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E227D3B
|
|
||||||
0A
|
|
||||||
}
|
|
||||||
NumGlyphs = 0
|
|
||||||
end
|
|
||||||
object CheckListBox1: TCheckListBox
|
object CheckListBox1: TCheckListBox
|
||||||
Left = 8
|
AnchorSideLeft.Control = Owner
|
||||||
Height = 238
|
AnchorSideTop.Control = Owner
|
||||||
Top = 8
|
AnchorSideRight.Control = Owner
|
||||||
Width = 340
|
AnchorSideRight.Side = asrBottom
|
||||||
Anchors = [akTop, akLeft, akRight]
|
AnchorSideBottom.Control = ButtonPanel1
|
||||||
|
Left = 6
|
||||||
|
Height = 315
|
||||||
|
Top = 6
|
||||||
|
Width = 436
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
|
TopIndex = -1
|
||||||
end
|
end
|
||||||
object Button1: TButton
|
object ButtonPanel1: TButtonPanel
|
||||||
Left = 195
|
Left = 6
|
||||||
Height = 30
|
Height = 42
|
||||||
Top = 258
|
Top = 327
|
||||||
Width = 75
|
Width = 436
|
||||||
Anchors = [akRight, akBottom]
|
|
||||||
BorderSpacing.InnerBorder = 2
|
|
||||||
Caption = 'OK'
|
|
||||||
Default = True
|
|
||||||
ModalResult = 1
|
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
|
ShowButtons = [pbOK, pbCancel, pbHelp]
|
||||||
|
object SpeedButton2: TSpeedButton
|
||||||
|
AnchorSideLeft.Control = SpeedButton1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = SpeedButton1
|
||||||
|
AnchorSideBottom.Control = SpeedButton1
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 143
|
||||||
|
Height = 34
|
||||||
|
Top = 0
|
||||||
|
Width = 23
|
||||||
|
Anchors = [akTop, akLeft, akBottom]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
Color = clBtnFace
|
||||||
|
Glyph.Data = {
|
||||||
|
36040000424D3604000000000000360000002800000010000000100000000100
|
||||||
|
2000000000000004000064000000640000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000FF0000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000FF808000FF0000
|
||||||
|
00FF000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000FF808000FF808000FF808000FF8080
|
||||||
|
00FF808000FF000000FF00000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000FF808000FF808000FF808000FF808000FF8080
|
||||||
|
00FF808000FF808000FF000000FF000000000000000000000000000000000000
|
||||||
|
000000000000000000FF000000FF000000FF000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF000000FF000000FF000000FF0000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF000000FF000000FF0000
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000
|
||||||
|
}
|
||||||
|
NumGlyphs = 0
|
||||||
|
end
|
||||||
|
object SpeedButton1: TSpeedButton
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ButtonPanel1
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 114
|
||||||
|
Height = 34
|
||||||
|
Top = 0
|
||||||
|
Width = 23
|
||||||
|
Anchors = [akTop, akLeft, akBottom]
|
||||||
|
BorderSpacing.Left = 18
|
||||||
|
Color = clBtnFace
|
||||||
|
Glyph.Data = {
|
||||||
|
36040000424D3604000000000000360000002800000010000000100000000100
|
||||||
|
2000000000000004000064000000640000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF000000FF000000FF0000
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000FF000000FF000000FF000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF000000FF000000FF000000FF0000000000000000000000000000
|
||||||
|
00000000000000000000000000FF808000FF808000FF808000FF808000FF8080
|
||||||
|
00FF808000FF808000FF000000FF000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000FF808000FF808000FF808000FF8080
|
||||||
|
00FF808000FF000000FF00000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000FF808000FF808000FF8080
|
||||||
|
00FF000000FF0000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000FF808000FF0000
|
||||||
|
00FF000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000FF0000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000
|
||||||
|
}
|
||||||
|
NumGlyphs = 0
|
||||||
end
|
end
|
||||||
object Button2: TButton
|
|
||||||
Left = 273
|
|
||||||
Height = 30
|
|
||||||
Top = 258
|
|
||||||
Width = 75
|
|
||||||
Anchors = [akRight, akBottom]
|
|
||||||
BorderSpacing.InnerBorder = 2
|
|
||||||
Cancel = True
|
|
||||||
Caption = 'Cancel'
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 2
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,34 +1,91 @@
|
|||||||
{ ��� - ���� ��������, ������������� ��������� lazarus }
|
{ ��� - ���� ��������, ������������� ��������� lazarus }
|
||||||
|
|
||||||
LazarusResources.Add('TrxDBGridColumsForm','FORMDATA',[
|
LazarusResources.Add('TrxDBGridColumsForm','FORMDATA',[
|
||||||
'TPF0'#19'TrxDBGridColumsForm'#18'rxDBGridColumsForm'#4'Left'#3#236#1#6'Heigh'
|
'TPF0'#19'TrxDBGridColumsForm'#18'rxDBGridColumsForm'#4'Left'#3#233#1#6'Heigh'
|
||||||
+'t'#3'('#1#3'Top'#3#8#1#5'Width'#3'c'#1#18'HorzScrollBar.Page'#3'b'#1#18'Ver'
|
+'t'#3'w'#1#3'Top'#3#248#0#5'Width'#3#192#1#13'ActiveControl'#7#13'CheckListB'
|
||||||
+'tScrollBar.Page'#3''''#1#7'Caption'#6#11'Grid colums'#12'ClientHeight'#3'('
|
+'ox1'#7'Caption'#6#11'Grid colums'#12'ClientHeight'#3'w'#1#11'ClientWidth'#3
|
||||||
+#1#11'ClientWidth'#3'c'#1#13'PixelsPerInch'#2'`'#0#12'TSpeedButton'#12'Speed'
|
+#192#1#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#8'ShowH'
|
||||||
+'Button1'#4'Left'#2#8#6'Height'#2#22#3'Top'#3#4#1#5'Width'#2#23#5'Color'#7#9
|
+'int'#9#10'LCLVersion'#6#6'0.9.27'#0#13'TCheckListBox'#13'CheckListBox1'#22
|
||||||
+'clBtnFace'#10'Glyph.Data'#10#159#1#0#0#155#1#0#0'/* XPM */'#10'static char '
|
+'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#23
|
||||||
+'*PointUP[]={'#10'"16 16 3 1",'#10'". c None",'#10'"# c #000000",'#10'"a c #'
|
+'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'
|
||||||
+'008080",'#10'"................",'#10'"................",'#10'".............'
|
+#24'AnchorSideBottom.Control'#7#12'ButtonPanel1'#4'Left'#2#6#6'Height'#3';'#1
|
||||||
+'...",'#10'"........#.......",'#10'".......#a#......",'#10'"......#aaa#.....'
|
+#3'Top'#2#6#5'Width'#3#180#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'a'
|
||||||
+'",'#10'".....#aaaaa#....",'#10'"....#aaaaaaa#...",'#10'"...####aaa####..",'
|
+'kBottom'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#8'TabOrder'#2#0#8
|
||||||
+#10'"......#aaa#.....",'#10'"......#aaa#.....",'#10'"......#aaa#.....",'#10
|
+'TopIndex'#2#255#0#0#12'TButtonPanel'#12'ButtonPanel1'#4'Left'#2#6#6'Height'
|
||||||
+'"......#####.....",'#10'"................",'#10'"................",'#10'"..'
|
+#2'*'#3'Top'#3'G'#1#5'Width'#3#180#1#8'TabOrder'#2#1#11'ShowButtons'#11#4'pb'
|
||||||
+'.............."};'#10#9'NumGlyphs'#2#0#0#0#12'TSpeedButton'#12'SpeedButton2'
|
+'OK'#8'pbCancel'#6'pbHelp'#0#0#12'TSpeedButton'#12'SpeedButton2'#22'AnchorSi'
|
||||||
+#4'Left'#2'('#6'Height'#2#22#3'Top'#3#4#1#5'Width'#2#23#5'Color'#7#9'clBtnFa'
|
+'deLeft.Control'#7#12'SpeedButton1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
|
||||||
+'ce'#10'Glyph.Data'#10#161#1#0#0#157#1#0#0'/* XPM */'#10'static char *PointD'
|
+'AnchorSideTop.Control'#7#12'SpeedButton1'#24'AnchorSideBottom.Control'#7#12
|
||||||
+'own[]={'#10'"16 16 3 1",'#10'". c None",'#10'"# c #000000",'#10'"a c #00808'
|
+'SpeedButton1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#143#0#6'He'
|
||||||
+'0",'#10'"................",'#10'"................",'#10'"................",'
|
+'ight'#2'"'#3'Top'#2#0#5'Width'#2#23#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBo'
|
||||||
+#10'"......#####.....",'#10'"......#aaa#.....",'#10'"......#aaa#.....",'#10
|
+'ttom'#0#18'BorderSpacing.Left'#2#6#5'Color'#7#9'clBtnFace'#10'Glyph.Data'#10
|
||||||
+'"......#aaa#.....",'#10'"...####aaa####..",'#10'"....#aaaaaaa#...",'#10'"..'
|
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
|
||||||
+'...#aaaaa#....",'#10'"......#aaa#.....",'#10'".......#a#......",'#10'".....'
|
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+'...#.......",'#10'"................",'#10'"................",'#10'"........'
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+'........"};'#10#9'NumGlyphs'#2#0#0#0#13'TCheckListBox'#13'CheckListBox1'#4
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+'Left'#2#8#6'Height'#3#238#0#3'Top'#2#8#5'Width'#3'T'#1#7'Anchors'#11#5'akTo'
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+'p'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#0#0#7'TButton'#7'Button1'#4'Left'
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#3#195#0#6'Height'#2#30#3'Top'#3#2#1#5'Width'#2'K'#7'Anchors'#11#7'akRight'#8
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+'akBottom'#0#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#2'OK'#7'Default'
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0
|
||||||
+#9#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7'TButton'#7'Button2'#4'Left'#3#17
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#1#6'Height'#2#30#3'Top'#3#2#1#5'Width'#2'K'#7'Anchors'#11#7'akRight'#8'akBo'
|
+#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+'ttom'#0#25'BorderSpacing.InnerBorder'#2#2#6'Cancel'#9#7'Caption'#6#6'Cancel'
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#0
|
+#255#128#128#0#255#128#128#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128
|
||||||
|
+#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#0#0#0#255
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
|
||||||
|
+#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#128
|
||||||
|
+#128#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#0#255#128#128#0#255
|
||||||
|
+#128#128#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128#128#0
|
||||||
|
+#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128#128#0
|
||||||
|
+#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128#128#0
|
||||||
|
+#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||||
|
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#9'NumGlyphs'#2#0#0
|
||||||
|
+#0#12'TSpeedButton'#12'SpeedButton1'#19'AnchorSideLeft.Side'#7#9'asrBottom'
|
||||||
|
+#21'AnchorSideTop.Control'#7#12'ButtonPanel1'#21'AnchorSideBottom.Side'#7#9
|
||||||
|
+'asrBottom'#4'Left'#2'r'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#23#7'Anchors'
|
||||||
|
+#11#5'akTop'#6'akLeft'#8'akBottom'#0#18'BorderSpacing.Left'#2#18#5'Color'#7#9
|
||||||
|
+'clBtnFace'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
|
||||||
|
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0
|
||||||
|
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128
|
||||||
|
,#128#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128
|
||||||
|
+#128#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128
|
||||||
|
+#128#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#0#255
|
||||||
|
+#128#128#0#255#128#128#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128#128#0
|
||||||
|
+#255#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#0
|
||||||
|
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#255#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255#128#128#0#255
|
||||||
|
+#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#128#128#0#255#128#128#0#255#0#0#0#255
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#255#128#128#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#9'NumGlyphs'#2#0#0#0#0#0
|
||||||
]);
|
]);
|
||||||
|
1
components/rx/rxdbgrid_columsunit.lrt
Normal file
1
components/rx/rxdbgrid_columsunit.lrt
Normal file
@ -0,0 +1 @@
|
|||||||
|
TRXDBGRIDCOLUMSFORM.CAPTION=Grid colums
|
@ -6,18 +6,18 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, CheckLst,
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, CheckLst,
|
||||||
StdCtrls, Buttons, rxdbgrid;
|
StdCtrls, Buttons, ButtonPanel, rxdbgrid;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TrxDBGridColumsForm }
|
{ TrxDBGridColumsForm }
|
||||||
|
|
||||||
TrxDBGridColumsForm = class(TForm)
|
TrxDBGridColumsForm = class(TForm)
|
||||||
Button1: TButton;
|
ButtonPanel1: TButtonPanel;
|
||||||
Button2: TButton;
|
|
||||||
CheckListBox1: TCheckListBox;
|
CheckListBox1: TCheckListBox;
|
||||||
SpeedButton1: TSpeedButton;
|
SpeedButton1: TSpeedButton;
|
||||||
SpeedButton2: TSpeedButton;
|
SpeedButton2: TSpeedButton;
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
private
|
private
|
||||||
FGrid:TRxDBGrid;
|
FGrid:TRxDBGrid;
|
||||||
procedure SetGrid(AGrid:TRxDBGrid);
|
procedure SetGrid(AGrid:TRxDBGrid);
|
||||||
@ -29,6 +29,7 @@ type
|
|||||||
|
|
||||||
procedure ShowRxDBGridColumsForm(Grid:TRxDBGrid);
|
procedure ShowRxDBGridColumsForm(Grid:TRxDBGrid);
|
||||||
implementation
|
implementation
|
||||||
|
uses rxdconst;
|
||||||
|
|
||||||
procedure ShowRxDBGridColumsForm(Grid: TRxDBGrid);
|
procedure ShowRxDBGridColumsForm(Grid: TRxDBGrid);
|
||||||
var
|
var
|
||||||
@ -43,6 +44,17 @@ end;
|
|||||||
|
|
||||||
{ TrxDBGridColumsForm }
|
{ TrxDBGridColumsForm }
|
||||||
|
|
||||||
|
procedure TrxDBGridColumsForm.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
SpeedButton1.AnchorSideLeft.Control:=ButtonPanel1.HelpButton;
|
||||||
|
SpeedButton1.AnchorSideTop.Control:=ButtonPanel1.HelpButton;
|
||||||
|
SpeedButton1.AnchorSideBottom.Control:=ButtonPanel1.HelpButton;
|
||||||
|
|
||||||
|
Caption:=sRxDbGridSelColCaption;
|
||||||
|
SpeedButton1.Hint:=sRxDbGridSelColHint1;
|
||||||
|
SpeedButton2.Hint:=sRxDbGridSelColHint2;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TrxDBGridColumsForm.SetGrid(AGrid: TRxDBGrid);
|
procedure TrxDBGridColumsForm.SetGrid(AGrid: TRxDBGrid);
|
||||||
var
|
var
|
||||||
i:integer;
|
i:integer;
|
||||||
|
@ -1,46 +1,55 @@
|
|||||||
object rxDBGridFindForm: TrxDBGridFindForm
|
object rxDBGridFindForm: TrxDBGridFindForm
|
||||||
Left = 436
|
Left = 474
|
||||||
Height = 127
|
Height = 232
|
||||||
Top = 423
|
Top = 384
|
||||||
Width = 493
|
Width = 493
|
||||||
HorzScrollBar.Page = 492
|
ActiveControl = Edit1
|
||||||
VertScrollBar.Page = 126
|
|
||||||
ActiveControl = BtnFind
|
|
||||||
Caption = 'Find'
|
Caption = 'Find'
|
||||||
ClientHeight = 127
|
ClientHeight = 232
|
||||||
ClientWidth = 493
|
ClientWidth = 493
|
||||||
OnActivate = FormActivate
|
OnCreate = FormCreate
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
|
Position = poDesktopCenter
|
||||||
|
LCLVersion = '0.9.27'
|
||||||
object Label1: TLabel
|
object Label1: TLabel
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Owner
|
||||||
AnchorSideBottom.Control = Edit1
|
AnchorSideBottom.Control = Edit1
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 14
|
Height = 18
|
||||||
Top = 16
|
Top = 6
|
||||||
Width = 57
|
Width = 78
|
||||||
Anchors = [akLeft, akBottom]
|
BorderSpacing.Around = 6
|
||||||
Caption = 'Text to find'
|
Caption = 'Text to find'
|
||||||
FocusControl = Edit1
|
FocusControl = Edit1
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object Label2: TLabel
|
object Label2: TLabel
|
||||||
AnchorSideLeft.Control = Label1
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Edit1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideBottom.Control = ComboBox1
|
AnchorSideBottom.Control = ComboBox1
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 14
|
Height = 18
|
||||||
Top = 45
|
Top = 63
|
||||||
Width = 57
|
Width = 80
|
||||||
Anchors = [akLeft, akBottom]
|
BorderSpacing.Around = 6
|
||||||
Caption = 'Find at filed'
|
Caption = 'Find at filed'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object BtnFind: TButton
|
object BtnFind: TButton
|
||||||
Left = 408
|
AnchorSideRight.Control = Button2
|
||||||
Height = 38
|
AnchorSideBottom.Control = Owner
|
||||||
Top = 8
|
AnchorSideBottom.Side = asrBottom
|
||||||
Width = 80
|
Left = 334
|
||||||
Anchors = [akTop, akRight]
|
Height = 37
|
||||||
|
Top = 189
|
||||||
|
Width = 88
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Around = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
Caption = 'Find more'
|
Caption = 'Find more'
|
||||||
Default = True
|
Default = True
|
||||||
@ -50,12 +59,18 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
|||||||
object Button2: TButton
|
object Button2: TButton
|
||||||
AnchorSideTop.Control = BtnFind
|
AnchorSideTop.Control = BtnFind
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 408
|
AnchorSideRight.Control = Owner
|
||||||
Height = 34
|
AnchorSideRight.Side = asrBottom
|
||||||
Top = 54
|
AnchorSideBottom.Control = Owner
|
||||||
Width = 80
|
AnchorSideBottom.Side = asrBottom
|
||||||
Anchors = [akTop, akRight]
|
Left = 428
|
||||||
|
Height = 37
|
||||||
|
Top = 189
|
||||||
|
Width = 59
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
AutoSize = True
|
||||||
BorderSpacing.Top = 8
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Around = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
Cancel = True
|
Cancel = True
|
||||||
Caption = 'Close'
|
Caption = 'Close'
|
||||||
@ -64,52 +79,61 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
|||||||
end
|
end
|
||||||
object Edit1: TEdit
|
object Edit1: TEdit
|
||||||
AnchorSideLeft.Control = ComboBox1
|
AnchorSideLeft.Control = ComboBox1
|
||||||
Left = 71
|
AnchorSideTop.Control = Label1
|
||||||
Height = 22
|
AnchorSideTop.Side = asrBottom
|
||||||
Top = 8
|
AnchorSideRight.Control = Owner
|
||||||
Width = 326
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 18
|
||||||
|
Height = 27
|
||||||
|
Top = 30
|
||||||
|
Width = 469
|
||||||
Anchors = [akTop, akLeft, akRight]
|
Anchors = [akTop, akLeft, akRight]
|
||||||
AutoSize = True
|
BorderSpacing.Around = 6
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object ComboBox1: TComboBox
|
object ComboBox1: TComboBox
|
||||||
AnchorSideLeft.Control = Label2
|
AnchorSideLeft.Control = Label2
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideTop.Control = Label2
|
||||||
AnchorSideTop.Control = Edit1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = Edit1
|
AnchorSideRight.Control = Owner
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 71
|
Left = 12
|
||||||
Height = 21
|
Height = 31
|
||||||
Top = 38
|
Top = 87
|
||||||
Width = 326
|
Width = 475
|
||||||
Anchors = [akTop, akLeft, akRight]
|
Anchors = [akTop, akLeft, akRight]
|
||||||
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
|
BorderSpacing.Around = 6
|
||||||
BorderSpacing.Left = 8
|
ItemHeight = 0
|
||||||
BorderSpacing.Top = 8
|
|
||||||
ItemHeight = 13
|
|
||||||
MaxLength = 0
|
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object CheckBox1: TCheckBox
|
object CheckBox1: TCheckBox
|
||||||
AnchorSideLeft.Control = Label1
|
AnchorSideLeft.Control = Owner
|
||||||
AnchorSideTop.Control = ComboBox1
|
AnchorSideTop.Control = ComboBox1
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 13
|
Height = 21
|
||||||
Top = 67
|
Top = 124
|
||||||
Width = 92
|
Width = 129
|
||||||
BorderSpacing.Top = 8
|
BorderSpacing.Around = 6
|
||||||
Caption = 'Case sensetive'
|
Caption = 'Case sensetive'
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object RadioGroup1: TRadioGroup
|
object RadioGroup1: TRadioGroup
|
||||||
Left = 232
|
AnchorSideLeft.Control = CheckBox1
|
||||||
Height = 76
|
AnchorSideLeft.Side = asrBottom
|
||||||
Top = 72
|
AnchorSideTop.Control = ComboBox1
|
||||||
Width = 150
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 141
|
||||||
|
Height = 52
|
||||||
|
Top = 124
|
||||||
|
Width = 346
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
AutoFill = True
|
AutoFill = True
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Around = 6
|
||||||
Caption = 'Direction'
|
Caption = 'Direction'
|
||||||
ChildSizing.LeftRightSpacing = 6
|
ChildSizing.LeftRightSpacing = 6
|
||||||
ChildSizing.TopBottomSpacing = 6
|
ChildSizing.TopBottomSpacing = 6
|
||||||
@ -118,9 +142,10 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
|||||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
ChildSizing.ControlsPerLine = 1
|
ChildSizing.ControlsPerLine = 3
|
||||||
ClientHeight = 58
|
ClientHeight = 33
|
||||||
ClientWidth = 146
|
ClientWidth = 342
|
||||||
|
Columns = 3
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'All'
|
'All'
|
||||||
'Forward'
|
'Forward'
|
||||||
@ -130,14 +155,14 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
|||||||
Visible = False
|
Visible = False
|
||||||
end
|
end
|
||||||
object CheckBox2: TCheckBox
|
object CheckBox2: TCheckBox
|
||||||
AnchorSideLeft.Control = Label1
|
AnchorSideLeft.Control = Owner
|
||||||
AnchorSideTop.Control = CheckBox1
|
AnchorSideTop.Control = CheckBox1
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 13
|
Height = 21
|
||||||
Top = 88
|
Top = 151
|
||||||
Width = 69
|
Width = 91
|
||||||
BorderSpacing.Top = 8
|
BorderSpacing.Around = 6
|
||||||
Caption = 'Partial key'
|
Caption = 'Partial key'
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
|
@ -1,50 +1,62 @@
|
|||||||
{ ��� - ���� ��������, ������������� ��������� lazarus }
|
{ ��� - ���� ��������, ������������� ��������� lazarus }
|
||||||
|
|
||||||
LazarusResources.Add('TrxDBGridFindForm','FORMDATA',[
|
LazarusResources.Add('TrxDBGridFindForm','FORMDATA',[
|
||||||
'TPF0'#17'TrxDBGridFindForm'#16'rxDBGridFindForm'#4'Left'#3#180#1#6'Height'#2
|
'TPF0'#17'TrxDBGridFindForm'#16'rxDBGridFindForm'#4'Left'#3#218#1#6'Height'#3
|
||||||
+''#3'Top'#3#167#1#5'Width'#3#237#1#18'HorzScrollBar.Page'#3#236#1#18'VertSc'
|
+#232#0#3'Top'#3#128#1#5'Width'#3#237#1#13'ActiveControl'#7#5'Edit1'#7'Captio'
|
||||||
+'rollBar.Page'#2'~'#13'ActiveControl'#7#7'BtnFind'#7'Caption'#6#4'Find'#12'C'
|
+'n'#6#4'Find'#12'ClientHeight'#3#232#0#11'ClientWidth'#3#237#1#8'OnCreate'#7
|
||||||
+'lientHeight'#2''#11'ClientWidth'#3#237#1#10'OnActivate'#7#12'FormActivate'
|
+#10'FormCreate'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesktopCenter'#10
|
||||||
+#6'OnShow'#7#8'FormShow'#0#6'TLabel'#6'Label1'#24'AnchorSideBottom.Control'#7
|
+'LCLVersion'#6#6'0.9.27'#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#5
|
||||||
+#5'Edit1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#14
|
+'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#24'AnchorSideBottom.Control'#7#5
|
||||||
+#3'Top'#2#16#5'Width'#2'9'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6
|
+'Edit1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#18#3
|
||||||
+#12'Text to find'#12'FocusControl'#7#5'Edit1'#11'ParentColor'#8#0#0#6'TLabel'
|
+'Top'#2#6#5'Width'#2'N'#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'Text to'
|
||||||
+#6'Label2'#22'AnchorSideLeft.Control'#7#6'Label1'#24'AnchorSideBottom.Contro'
|
+' find'#12'FocusControl'#7#5'Edit1'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'
|
||||||
+'l'#7#9'ComboBox1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'He'
|
+#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Edit1'
|
||||||
+'ight'#2#14#3'Top'#2'-'#5'Width'#2'9'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7
|
+#18'AnchorSideTop.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#9'Comb'
|
||||||
+'Caption'#6#13'Find at filed'#11'ParentColor'#8#0#0#7'TButton'#7'BtnFind'#4
|
+'oBox1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#18#3
|
||||||
+'Left'#3#152#1#6'Height'#2'&'#3'Top'#2#8#5'Width'#2'P'#7'Anchors'#11#5'akTop'
|
+'Top'#2'?'#5'Width'#2'P'#20'BorderSpacing.Around'#2#6#7'Caption'#6#13'Find a'
|
||||||
+#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'Find more'#7
|
+'t filed'#11'ParentColor'#8#0#0#7'TButton'#7'BtnFind'#23'AnchorSideRight.Con'
|
||||||
+'Default'#9#7'OnClick'#7#12'BtnFindClick'#8'TabOrder'#2#4#0#0#7'TButton'#7'B'
|
+'trol'#7#7'Button2'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBot'
|
||||||
+'utton2'#21'AnchorSideTop.Control'#7#7'BtnFind'#18'AnchorSideTop.Side'#7#9'a'
|
+'tom.Side'#7#9'asrBottom'#4'Left'#3'N'#1#6'Height'#2'%'#3'Top'#3#189#0#5'Wid'
|
||||||
+'srBottom'#4'Left'#3#152#1#6'Height'#2'"'#3'Top'#2'6'#5'Width'#2'P'#7'Anchor'
|
+'th'#2'X'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpac'
|
||||||
+'s'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#8#25'BorderSpacing.Inne'
|
+'ing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'Find more'
|
||||||
+'rBorder'#2#4#6'Cancel'#9#7'Caption'#6#5'Close'#7'OnClick'#7#12'Button2Click'
|
+#7'Default'#9#7'OnClick'#7#12'BtnFindClick'#8'TabOrder'#2#4#0#0#7'TButton'#7
|
||||||
+#8'TabOrder'#2#5#0#0#5'TEdit'#5'Edit1'#22'AnchorSideLeft.Control'#7#9'ComboB'
|
+'Button2'#21'AnchorSideTop.Control'#7#7'BtnFind'#18'AnchorSideTop.Side'#7#9
|
||||||
+'ox1'#4'Left'#2'G'#6'Height'#2#22#3'Top'#2#8#5'Width'#3'F'#1#7'Anchors'#11#5
|
+'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7
|
||||||
+'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#8'TabOrder'#2#0#0#0#9'TComboBox'
|
+#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Si'
|
||||||
+#9'ComboBox1'#22'AnchorSideLeft.Control'#7#6'Label2'#19'AnchorSideLeft.Side'
|
+'de'#7#9'asrBottom'#4'Left'#3#172#1#6'Height'#2'%'#3'Top'#3#189#0#5'Width'#2
|
||||||
+#7#9'asrBottom'#21'AnchorSideTop.Control'#7#5'Edit1'#18'AnchorSideTop.Side'#7
|
+';'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#17'BorderSpacing.To'
|
||||||
+#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Edit1'#20'AnchorSideRight.Side'
|
+'p'#2#8#20'BorderSpacing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#6'Can'
|
||||||
+#7#9'asrBottom'#4'Left'#2'G'#6'Height'#2#21#3'Top'#2'&'#5'Width'#3'F'#1#7'An'
|
+'cel'#9#7'Caption'#6#5'Close'#7'OnClick'#7#12'Button2Click'#8'TabOrder'#2#5#0
|
||||||
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactE'
|
+#0#5'TEdit'#5'Edit1'#22'AnchorSideLeft.Control'#7#9'ComboBox1'#21'AnchorSide'
|
||||||
+'ndOfLineComplete'#20'cbactSearchAscending'#0#18'BorderSpacing.Left'#2#8#17
|
+'Top.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSid'
|
||||||
+'BorderSpacing.Top'#2#8#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'c'
|
+'eRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2
|
||||||
+'sDropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#22'AnchorSideL'
|
+#18#6'Height'#2#27#3'Top'#2#30#5'Width'#3#213#1#7'Anchors'#11#5'akTop'#6'akL'
|
||||||
+'eft.Control'#7#6'Label1'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18'Anchor'
|
+'eft'#7'akRight'#0#20'BorderSpacing.Around'#2#6#8'TabOrder'#2#0#0#0#9'TCombo'
|
||||||
+'SideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#13#3'Top'#2'C'#5'Width'
|
+'Box'#9'ComboBox1'#22'AnchorSideLeft.Control'#7#6'Label2'#21'AnchorSideTop.C'
|
||||||
+#2'\'#17'BorderSpacing.Top'#2#8#7'Caption'#6#14'Case sensetive'#8'TabOrder'#2
|
+'ontrol'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRigh'
|
||||||
+#2#0#0#11'TRadioGroup'#11'RadioGroup1'#4'Left'#3#232#0#6'Height'#2'L'#3'Top'
|
+'t.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#12#6
|
||||||
+#2'H'#5'Width'#3#150#0#8'AutoFill'#9#7'Caption'#6#9'Direction'#28'ChildSizin'
|
+'Height'#2#31#3'Top'#2'W'#5'Width'#3#219#1#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||||
+'g.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing'
|
+'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#5'Style'#7#14'cs'
|
||||||
+'.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVe'
|
+'DropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#22'AnchorSideLe'
|
||||||
+'rtical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14
|
+'ft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18'AnchorSi'
|
||||||
+'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'Chil'
|
+'deTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#21#3'Top'#2'|'#5'Width'#3
|
||||||
+'dSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.Controls'
|
+#129#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#14'Case sensetive'#8'TabOrd'
|
||||||
+'PerLine'#2#1#12'ClientHeight'#2':'#11'ClientWidth'#3#146#0#13'Items.Strings'
|
+'er'#2#2#0#0#11'TRadioGroup'#11'RadioGroup1'#22'AnchorSideLeft.Control'#7#9
|
||||||
+#1#6#3'All'#6#7'Forward'#6#8'Backward'#0#8'TabOrder'#2#6#7'Visible'#8#0#0#9
|
+'CheckBox1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'
|
||||||
+'TCheckBox'#9'CheckBox2'#22'AnchorSideLeft.Control'#7#6'Label1'#21'AnchorSid'
|
+#7#9'ComboBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Con'
|
||||||
+'eTop.Control'#7#9'CheckBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2
|
+'trol'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#141#0#6
|
||||||
+#6#6'Height'#2#13#3'Top'#2'X'#5'Width'#2'E'#17'BorderSpacing.Top'#2#8#7'Capt'
|
+'Height'#2'4'#3'Top'#2'|'#5'Width'#3'Z'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||||
+'ion'#6#11'Partial key'#8'TabOrder'#2#3#0#0#0
|
+'akRight'#0#8'AutoFill'#9#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Capti'
|
||||||
|
+'on'#6#9'Direction'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopB'
|
||||||
|
+'ottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChild'
|
||||||
|
+'Resize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'C'
|
||||||
|
+'hildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVert'
|
||||||
|
+'ical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTo'
|
||||||
|
+'pToBottom'#27'ChildSizing.ControlsPerLine'#2#3#12'ClientHeight'#2'!'#11'Cli'
|
||||||
|
+'entWidth'#3'V'#1#7'Columns'#2#3#13'Items.Strings'#1#6#3'All'#6#7'Forward'#6
|
||||||
|
+#8'Backward'#0#8'TabOrder'#2#6#7'Visible'#8#0#0#9'TCheckBox'#9'CheckBox2'#22
|
||||||
|
+'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#9'CheckBox1'
|
||||||
|
+#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#21#3'Top'#3
|
||||||
|
+#151#0#5'Width'#2'['#20'BorderSpacing.Around'#2#6#7'Caption'#6#11'Partial ke'
|
||||||
|
+'y'#8'TabOrder'#2#3#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -24,7 +24,7 @@ type
|
|||||||
RadioGroup1: TRadioGroup;
|
RadioGroup1: TRadioGroup;
|
||||||
procedure BtnFindClick(Sender: TObject);
|
procedure BtnFindClick(Sender: TObject);
|
||||||
procedure Button2Click(Sender: TObject);
|
procedure Button2Click(Sender: TObject);
|
||||||
procedure FormActivate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
private
|
private
|
||||||
FGrid:TRxDBGrid;
|
FGrid:TRxDBGrid;
|
||||||
@ -37,7 +37,7 @@ type
|
|||||||
procedure ShowRxDBGridFindForm(Grid:TRxDBGrid);
|
procedure ShowRxDBGridFindForm(Grid:TRxDBGrid);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses dbutils, DBGrids;
|
uses dbutils, DBGrids, rxdconst;
|
||||||
|
|
||||||
procedure ShowRxDBGridFindForm(Grid: TRxDBGrid);
|
procedure ShowRxDBGridFindForm(Grid: TRxDBGrid);
|
||||||
var
|
var
|
||||||
@ -56,11 +56,18 @@ begin
|
|||||||
Close;
|
Close;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TrxDBGridFindForm.FormActivate(Sender: TObject);
|
procedure TrxDBGridFindForm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
{ BtnFind.Height:=Canvas.TextHeight('W') + 6;
|
Caption:=sRxDbGridFindCaption;
|
||||||
Button2.Height:=BtnFind.Height;}
|
Label1.Caption:=sRxDbGridFindText;
|
||||||
ComboBox1.Height:=Edit1.Height;
|
Label2.Caption:=sRxDbGridFindOnField;
|
||||||
|
CheckBox1.Caption:=sRxDbGridFindCaseSens;
|
||||||
|
CheckBox2.Caption:=sRxDbGridFindPartial;
|
||||||
|
RadioGroup1.Caption:=sRxDbGridFindDirecion;
|
||||||
|
RadioGroup1.Items.Clear;
|
||||||
|
RadioGroup1.Items.Add(sRxDbGridFindRangeAll);
|
||||||
|
RadioGroup1.Items.Add(sRxDbGridFindRangeForw);
|
||||||
|
RadioGroup1.Items.Add(sRxDbGridFindRangeBack);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TrxDBGridFindForm.FormShow(Sender: TObject);
|
procedure TrxDBGridFindForm.FormShow(Sender: TObject);
|
||||||
|
@ -9,151 +9,65 @@
|
|||||||
|
|
||||||
unit rxdconst;
|
unit rxdconst;
|
||||||
|
|
||||||
{ RX Data aware controls constants }
|
|
||||||
{
|
|
||||||
Reserved range
|
|
||||||
from MaxExtStrID - 86
|
|
||||||
to MaxExtStrID - 134
|
|
||||||
}
|
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
const
|
|
||||||
{ The minimal VCL's used string ID is 61440. The custom IDs must be
|
|
||||||
less that above. }
|
|
||||||
MaxExtStrID = 61300;
|
|
||||||
|
|
||||||
resourcestring
|
resourcestring
|
||||||
(*
|
|
||||||
{ DBLists }
|
|
||||||
|
|
||||||
SLocalDatabase = MaxExtStrID - 86;
|
|
||||||
|
|
||||||
{ DBUtils }
|
|
||||||
|
|
||||||
SRetryLogin = MaxExtStrID - 87;
|
|
||||||
|
|
||||||
{ DBFilter }
|
|
||||||
|
|
||||||
SExprNotBoolean = MaxExtStrID - 88;
|
|
||||||
SExprBadNullTest = MaxExtStrID - 89;
|
|
||||||
SExprBadField = MaxExtStrID - 90;
|
|
||||||
SCaptureFilter = MaxExtStrID - 91;
|
|
||||||
SNotCaptureFilter = MaxExtStrID - 92;
|
|
||||||
|
|
||||||
{ RxDBCtrl }
|
{ RxDBCtrl }
|
||||||
|
|
||||||
SInactiveData = MaxExtStrID - 93;
|
|
||||||
SBrowseData = MaxExtStrID - 94;
|
|
||||||
SEditData = MaxExtStrID - 95;
|
|
||||||
SInsertData = MaxExtStrID - 96;
|
|
||||||
SSetKeyData = MaxExtStrID - 97;
|
|
||||||
SCalcFieldsData = MaxExtStrID - 98;
|
|
||||||
|
|
||||||
{ LoginDlg }
|
|
||||||
|
|
||||||
SRegistration = MaxExtStrID - 99;
|
|
||||||
SAppTitleLabel = MaxExtStrID - 100;
|
|
||||||
SHintLabel = MaxExtStrID - 101;
|
|
||||||
SUserNameLabel = MaxExtStrID - 102;
|
|
||||||
SPasswordLabel = MaxExtStrID - 103;
|
|
||||||
SInvalidUserName = MaxExtStrID - 104;
|
|
||||||
|
|
||||||
{ ChPswDlg }
|
|
||||||
|
|
||||||
SChangePassword = MaxExtStrID - 105;
|
|
||||||
SOldPasswordLabel = MaxExtStrID - 106;
|
|
||||||
SNewPasswordLabel = MaxExtStrID - 107;
|
|
||||||
SConfirmPasswordLabel = MaxExtStrID - 108;
|
|
||||||
SPasswordChanged = MaxExtStrID - 109;
|
|
||||||
SPasswordNotChanged = MaxExtStrID - 110;
|
|
||||||
SPasswordsMismatch = MaxExtStrID - 111;
|
|
||||||
|
|
||||||
{ DBExcpt }
|
|
||||||
|
|
||||||
SDBExceptCaption = MaxExtStrID - 112;
|
|
||||||
SBDEErrorLabel = MaxExtStrID - 113;
|
|
||||||
SServerErrorLabel = MaxExtStrID - 114;
|
|
||||||
SErrorMsgLabel = MaxExtStrID - 115;
|
|
||||||
SNextButton = MaxExtStrID - 116;
|
|
||||||
SPrevButton = MaxExtStrID - 117;
|
|
||||||
|
|
||||||
{ DBFilter expression parser }
|
|
||||||
|
|
||||||
SExprIncorrect = MaxExtStrID - 118;
|
|
||||||
SExprTermination = MaxExtStrID - 119;
|
|
||||||
SExprNameError = MaxExtStrID - 120;
|
|
||||||
SExprStringError = MaxExtStrID - 121;
|
|
||||||
SExprInvalidChar = MaxExtStrID - 122;
|
|
||||||
SExprNoRParen = MaxExtStrID - 123;
|
|
||||||
SExprExpected = MaxExtStrID - 124;
|
|
||||||
SExprBadCompare = MaxExtStrID - 125;
|
|
||||||
|
|
||||||
{ DBUtils }
|
|
||||||
|
|
||||||
SConfirmSave = MaxExtStrID - 126;
|
|
||||||
SDatabaseName = MaxExtStrID - 127;
|
|
||||||
|
|
||||||
{ LoginDlg }
|
|
||||||
|
|
||||||
SUnlockCaption = MaxExtStrID - 128;
|
|
||||||
SUnlockHint = MaxExtStrID - 129;
|
|
||||||
|
|
||||||
{ RxDBCtrl }
|
|
||||||
|
|
||||||
SDeleteMultipleRecords = MaxExtStrID - 130;*)
|
|
||||||
|
|
||||||
SLocalDatabase = 'Невозможно произвести эту операцию с локальной базой данных';
|
SLocalDatabase = 'Невозможно произвести эту операцию с локальной базой данных';
|
||||||
SRetryLogin = 'Вы хотите повторить попытку соединения с базой данных?';
|
SRetryLogin = 'Вы хотите повторить попытку соединения с базой данных?';
|
||||||
SExprNotBoolean = 'Поле ''%s'' не является полем логического типа';
|
SExprNotBoolean = 'Field ''%s'' is not boolean';
|
||||||
SExprBadNullTest = 'NULL-значения допустимы только в операциях ''='' и ''<>''';
|
SExprBadNullTest = 'NULL-values enabled in ''='' и ''<>''';
|
||||||
SExprBadField = 'Поле ''%s'' не может быть использовано в выражении фильтра';
|
SExprBadField = 'Field ''%s'' not used in filter expression';
|
||||||
SCaptureFilter = 'Элементы управления захвачены фильтром';
|
SCaptureFilter = 'Элементы управления захвачены фильтром';
|
||||||
SNotCaptureFilter = 'Элементы управления должны быть захвачены фильтром';
|
SNotCaptureFilter = 'Элементы управления должны быть захвачены фильтром';
|
||||||
SInactiveData = 'неактивно';
|
SInactiveData = 'inactive';
|
||||||
SBrowseData = 'просмотр';
|
SBrowseData = 'browse';
|
||||||
SEditData = 'редактирование';
|
SEditData = 'editing';
|
||||||
SInsertData = 'добавление';
|
SInsertData = 'append';
|
||||||
SSetKeyData = 'поиск';
|
SSetKeyData = 'find';
|
||||||
SCalcFieldsData = 'подсчет';
|
SCalcFieldsData = 'calc';
|
||||||
SRegistration = 'Регистрация';
|
SRegistration = 'Register';
|
||||||
SAppTitleLabel = 'Программа "%s"';
|
SAppTitleLabel = 'Application "%s"';
|
||||||
SHintLabel = 'Введите Ваше пользовательское имя и пароль';
|
SHintLabel = 'Enter you user name and password';
|
||||||
SUserNameLabel = '&Имя пользователя:';
|
SUserNameLabel = '&User name:';
|
||||||
SPasswordLabel = '&Пароль:';
|
SPasswordLabel = '&Password:';
|
||||||
SMore1 = '&Больше >>';
|
SMore1 = '&More >>';
|
||||||
SMore2 = '&Меньше <<';
|
SMore2 = '&Less <<';
|
||||||
SInvalidUserName = 'Неверное имя пользователя или пароль';
|
SInvalidUserName = 'User name or password not valid';
|
||||||
SChangePassword = 'Смена пароля';
|
SChangePassword = 'Change password';
|
||||||
SOldPasswordLabel = '&Старый пароль:';
|
SOldPasswordLabel = '&Old password:';
|
||||||
SNewPasswordLabel = '&Новый пароль:';
|
SNewPasswordLabel = '&New password:';
|
||||||
SConfirmPasswordLabel = '&Подтверждение:';
|
SConfirmPasswordLabel = '&Confirm:';
|
||||||
SPasswordChanged = 'Пароль сменен';
|
SPasswordChanged = 'Password changed';
|
||||||
SPasswordNotChanged = 'Пароль не сменен';
|
SPasswordNotChanged = 'Password not changed';
|
||||||
SPasswordsMismatch = 'Новый пароль и подтверждение не совпадают';
|
SPasswordsMismatch = 'New password and confirmation not equal';
|
||||||
SDBExceptCaption = 'Ошибка процессора БД';
|
SDBExceptCaption = 'Error in DB engine';
|
||||||
SBDEErrorLabel = 'Ошибка BDE';
|
SServerErrorLabel = 'Server error';
|
||||||
SServerErrorLabel = 'Ошибка сервера';
|
SErrorMsgLabel = 'Error message';
|
||||||
SErrorMsgLabel = 'Сообщение об ошибке';
|
SNextButton = '&Next';
|
||||||
SNextButton = '&Дальше';
|
SPrevButton = '&Prior';
|
||||||
SPrevButton = '&Назад';
|
SExprIncorrect = 'Error in filter expression';
|
||||||
SExprIncorrect = 'Некорректно сформулировано выражение фильтра';
|
SExprTermination = 'Error in filter end';
|
||||||
SExprTermination = 'Неверное завершение выражения фильтра';
|
SExprNameError = 'Error in filed name';
|
||||||
SExprNameError = 'Невозможно определить завершение имени поля';
|
SExprStringError = 'Error in string const';
|
||||||
SExprStringError = 'Невозможно определить завершение строковой константы';
|
SExprInvalidChar = 'Error symbol in expression: ''%s''';
|
||||||
SExprInvalidChar = 'Неверный символ в выражении фильтра: ''%s''';
|
|
||||||
SExprNoRParen = 'Ожидалось '')'', а встречено: %s';
|
SExprNoRParen = 'Ожидалось '')'', а встречено: %s';
|
||||||
SExprExpected = 'Ожидалось выражение, а встречено %s';
|
SExprExpected = 'Ожидалось выражение, а встречено %s';
|
||||||
SExprBadCompare = 'Операции сравнения требуют наличия поля и константы';
|
SExprBadCompare = 'Операции сравнения требуют наличия поля и константы';
|
||||||
SConfirmSave = 'Данные были изменены. Сохранять?';
|
SConfirmSave = 'Data changed. Save?';
|
||||||
SDatabaseName = 'База данных: %s';
|
SDatabaseName = 'Database loocked: %s';
|
||||||
SUnlockCaption = 'Разблокирование';
|
SUnlockCaption = 'Unloock';
|
||||||
SUnlockHint = 'Введите ваш пароль';
|
SUnlockHint = 'Enter you password';
|
||||||
SDeleteMultipleRecords = 'Удалить все выбранные записи?';
|
SDeleteMultipleRecords = 'Delete all selected records?';
|
||||||
|
|
||||||
SPropDefByLookup = 'PropDefByLookup';
|
SPropDefByLookup = 'PropDefByLookup';
|
||||||
SDataSourceFixed = 'SDataSourceFixed';
|
SDataSourceFixed = 'SDataSourceFixed';
|
||||||
SCircularDataLink = 'SCircularDataLink';
|
SCircularDataLink = 'SCircularDataLink';
|
||||||
|
sRxAscendign = 'Ascendente';//'Ascendente');
|
||||||
|
sRxDescending = 'Descendente';//'Descendente');
|
||||||
|
|
||||||
|
|
||||||
SDeleteRecordQuestion = 'Delete record?';
|
SDeleteRecordQuestion = 'Delete record?';
|
||||||
@ -164,6 +78,57 @@ resourcestring
|
|||||||
SUnknownFieldType = 'SUnknownFieldType %s';
|
SUnknownFieldType = 'SUnknownFieldType %s';
|
||||||
SFieldReadOnly = 'SFieldReadOnly %s';
|
SFieldReadOnly = 'SFieldReadOnly %s';
|
||||||
|
|
||||||
|
//RXDBgrid
|
||||||
|
sRxDBGridFind = 'Find data'; //// 'Buscar Ctrl+F';
|
||||||
|
sRxDBGridFilter = 'Filter data';//'Filtrar Ctrl+T';
|
||||||
|
sRxDBGridFilterSimple = 'Filter in table';// Ctrl+E'; 'Filtrar en Encabezado Ctrl+E';
|
||||||
|
sRxDBGridFilterClear = 'Clear filter';// Ctrl+Q';'Quitar Filtro Ctrl+Q';
|
||||||
|
sRxDBGridSortByColumns = 'Sort data for collumns';// Ctrl+C';'Ordenar por Columnas Ctrl+C';
|
||||||
|
sRxDBGridSelectColumns = 'Select visible collumns';// Ctrl+W';'Seleccionar Columnas Ctrl+W';
|
||||||
|
sRxDBGridEmptiFilter = '(Empty)';
|
||||||
|
|
||||||
|
//RxDBGrid filter form
|
||||||
|
sRxFilterFormSelectExp = 'Enter filter expression for data in table:';
|
||||||
|
sRxFilterFormOnField = 'On field :';
|
||||||
|
sRxFilterFormOperaion = 'Operation :';
|
||||||
|
sRxFilterFormCondition = 'Condition :';
|
||||||
|
sRxFilterFormOperand = 'Operand :';
|
||||||
|
sRxFilterFormEnd = 'end.';
|
||||||
|
sRxFilterFormClear = 'Clear filter';
|
||||||
|
sRxFilterFormCancel = 'Cancel';
|
||||||
|
sRxFilterFormApply = 'Apply';
|
||||||
|
sRxFilterFormCaption = 'Filter conditions';
|
||||||
|
|
||||||
|
//TrxSortByForm
|
||||||
|
sRxSortByFormCaption = 'Sort on field';
|
||||||
|
sRxSortByFormAllFields = '&Fields in dataset:';
|
||||||
|
sRxSortByFormSortFields = '&Selected fields:';
|
||||||
|
sRxSortByFormSortOrder = 'Select field for sort data:';
|
||||||
|
sRxSortByFormAddField = '&Add field';
|
||||||
|
sRxSortByFormRemoveField = '&Remove';
|
||||||
|
sRxSortByFormMoveUpField = '&Up';
|
||||||
|
sRxSortByFormMoveDnField = '&Down';
|
||||||
|
|
||||||
|
//TRxMemoryData
|
||||||
|
SMemNoRecords = 'No data found';
|
||||||
|
SInvalidFields = 'No fields defined';
|
||||||
|
|
||||||
|
//TrxDBGridFindForm
|
||||||
|
sRxDbGridFindCaption = 'Find data';
|
||||||
|
sRxDbGridFindText = 'Text to find';
|
||||||
|
sRxDbGridFindOnField = 'Find on field';
|
||||||
|
sRxDbGridFindCaseSens = 'Case sensetive';
|
||||||
|
sRxDbGridFindPartial = 'Partial key';
|
||||||
|
sRxDbGridFindDirecion = 'Direction';
|
||||||
|
sRxDbGridFindRangeAll = 'All';
|
||||||
|
sRxDbGridFindRangeForw = 'Forward';
|
||||||
|
sRxDbGridFindRangeBack = 'Backward';
|
||||||
|
|
||||||
|
//TrxDBGridColumsForm
|
||||||
|
sRxDbGridSelColCaption = 'Grid columns';
|
||||||
|
sRxDbGridSelColHint1 = 'Move selected column up';
|
||||||
|
sRxDbGridSelColHint2 = 'Move selected column down';
|
||||||
|
|
||||||
const
|
const
|
||||||
{ The following strings should not be localized }
|
{ The following strings should not be localized }
|
||||||
sAction = '.Action';
|
sAction = '.Action';
|
||||||
|
775
components/rx/rxfilterby.lfm
Normal file
775
components/rx/rxfilterby.lfm
Normal file
@ -0,0 +1,775 @@
|
|||||||
|
object rxFilterByForm: TrxFilterByForm
|
||||||
|
Left = 464
|
||||||
|
Height = 445
|
||||||
|
Top = 115
|
||||||
|
Width = 644
|
||||||
|
ActiveControl = Edit1
|
||||||
|
Caption = 'Filter conditions'
|
||||||
|
ClientHeight = 445
|
||||||
|
ClientWidth = 644
|
||||||
|
OnCreate = FormCreate
|
||||||
|
Position = poScreenCenter
|
||||||
|
LCLVersion = '0.9.27'
|
||||||
|
object Label1: TLabel
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Owner
|
||||||
|
Left = 6
|
||||||
|
Height = 18
|
||||||
|
Top = 6
|
||||||
|
Width = 252
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'Select filter expression for data'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 18
|
||||||
|
Top = 30
|
||||||
|
Width = 68
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'On field:'
|
||||||
|
Font.Color = clRed
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object Label3: TLabel
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 18
|
||||||
|
Top = 30
|
||||||
|
Width = 90
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'Operation :'
|
||||||
|
Font.Color = clRed
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object Label4: TLabel
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 271
|
||||||
|
Height = 18
|
||||||
|
Top = 30
|
||||||
|
Width = 96
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'Conditions :'
|
||||||
|
Font.Color = clRed
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object Label5: TLabel
|
||||||
|
AnchorSideLeft.Control = ComboBox3
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 533
|
||||||
|
Height = 18
|
||||||
|
Top = 30
|
||||||
|
Width = 80
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'Operand :'
|
||||||
|
Font.Color = clRed
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object Label6: TLabel
|
||||||
|
AnchorSideLeft.Control = ComboBox3
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = ComboBox25
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 18
|
||||||
|
Top = 379
|
||||||
|
Width = 35
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
Caption = 'End.'
|
||||||
|
Font.Color = clRed
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object ComboBox1: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 31
|
||||||
|
Top = 54
|
||||||
|
Width = 153
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object ComboBox2: TComboBox
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 54
|
||||||
|
Width = 96
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object Edit1: TEdit
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 271
|
||||||
|
Height = 27
|
||||||
|
Top = 54
|
||||||
|
Width = 250
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object ComboBox3: TComboBox
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 54
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object ComboBox4: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 93
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object ComboBox5: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 91
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
|
object Edit2: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 91
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 6
|
||||||
|
end
|
||||||
|
object ComboBox6: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 91
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 7
|
||||||
|
end
|
||||||
|
object ComboBox7: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox4
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 132
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 8
|
||||||
|
end
|
||||||
|
object ComboBox8: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox4
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 130
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 9
|
||||||
|
end
|
||||||
|
object Edit3: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox4
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 130
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 10
|
||||||
|
end
|
||||||
|
object ComboBox9: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox4
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 130
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 11
|
||||||
|
end
|
||||||
|
object ComboBox10: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox7
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 171
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 12
|
||||||
|
end
|
||||||
|
object ComboBox11: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox7
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 169
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 13
|
||||||
|
end
|
||||||
|
object Edit4: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox7
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 169
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 14
|
||||||
|
end
|
||||||
|
object ComboBox12: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox7
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 169
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 15
|
||||||
|
end
|
||||||
|
object ComboBox13: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox10
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 210
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 16
|
||||||
|
end
|
||||||
|
object ComboBox14: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox10
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 208
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 17
|
||||||
|
end
|
||||||
|
object Edit5: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox10
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 208
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 18
|
||||||
|
end
|
||||||
|
object ComboBox15: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox10
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 208
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 19
|
||||||
|
end
|
||||||
|
object ComboBox16: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox13
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 249
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 20
|
||||||
|
end
|
||||||
|
object ComboBox17: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox13
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 247
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 21
|
||||||
|
end
|
||||||
|
object Edit6: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox13
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 247
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 22
|
||||||
|
end
|
||||||
|
object ComboBox18: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox13
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 247
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 23
|
||||||
|
end
|
||||||
|
object ComboBox19: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox16
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 288
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 24
|
||||||
|
end
|
||||||
|
object ComboBox20: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox16
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 286
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 25
|
||||||
|
end
|
||||||
|
object Edit7: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox16
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 286
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 26
|
||||||
|
end
|
||||||
|
object ComboBox21: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox16
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 286
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 27
|
||||||
|
end
|
||||||
|
object ComboBox22: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox19
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 327
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 28
|
||||||
|
end
|
||||||
|
object ComboBox23: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox19
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 325
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 29
|
||||||
|
end
|
||||||
|
object Edit8: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox19
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 325
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 30
|
||||||
|
end
|
||||||
|
object ComboBox24: TComboBox
|
||||||
|
AnchorSideTop.Control = ComboBox19
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 527
|
||||||
|
Height = 31
|
||||||
|
Top = 325
|
||||||
|
Width = 111
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 31
|
||||||
|
end
|
||||||
|
object ComboBox25: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = ComboBox22
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 8
|
||||||
|
Height = 31
|
||||||
|
Top = 366
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 32
|
||||||
|
end
|
||||||
|
object ComboBox26: TComboBox
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideTop.Control = ComboBox22
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 168
|
||||||
|
Height = 31
|
||||||
|
Top = 364
|
||||||
|
Width = 96
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
DropDownCount = 9
|
||||||
|
ItemHeight = 0
|
||||||
|
OnChange = ComboBoxChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 33
|
||||||
|
end
|
||||||
|
object Edit9: TEdit
|
||||||
|
AnchorSideLeft.Control = ComboBox2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ComboBox22
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ComboBox3
|
||||||
|
Left = 270
|
||||||
|
Height = 27
|
||||||
|
Top = 364
|
||||||
|
Width = 251
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
OnChange = EditChange
|
||||||
|
TabOrder = 34
|
||||||
|
end
|
||||||
|
object ComboBox27: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideBottom.Control = Owner
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 31
|
||||||
|
Top = 408
|
||||||
|
Width = 58
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'And'
|
||||||
|
'Or'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 35
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
object Button1: TButton
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = Owner
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 589
|
||||||
|
Height = 29
|
||||||
|
Top = 410
|
||||||
|
Width = 49
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'Apply'
|
||||||
|
Default = True
|
||||||
|
OnClick = Button1Click
|
||||||
|
TabOrder = 36
|
||||||
|
end
|
||||||
|
object Button2: TButton
|
||||||
|
AnchorSideRight.Control = Button1
|
||||||
|
AnchorSideBottom.Control = Owner
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 524
|
||||||
|
Height = 29
|
||||||
|
Top = 410
|
||||||
|
Width = 59
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Cancel = True
|
||||||
|
Caption = 'Cancel'
|
||||||
|
OnClick = Button2Click
|
||||||
|
TabOrder = 37
|
||||||
|
end
|
||||||
|
object Button3: TButton
|
||||||
|
AnchorSideRight.Control = Button2
|
||||||
|
AnchorSideBottom.Control = Owner
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 436
|
||||||
|
Height = 29
|
||||||
|
Top = 410
|
||||||
|
Width = 82
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'Clear filter'
|
||||||
|
OnClick = Button3Click
|
||||||
|
TabOrder = 38
|
||||||
|
end
|
||||||
|
end
|
261
components/rx/rxfilterby.lrs
Normal file
261
components/rx/rxfilterby.lrs
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
{ Это - файл ресурсов, автоматически созданный lazarus }
|
||||||
|
|
||||||
|
LazarusResources.Add('TrxFilterByForm','FORMDATA',[
|
||||||
|
'TPF0'#15'TrxFilterByForm'#14'rxFilterByForm'#4'Left'#3#208#1#6'Height'#3#189
|
||||||
|
+#1#3'Top'#2's'#5'Width'#3#132#2#13'ActiveControl'#7#5'Edit1'#7'Caption'#6#17
|
||||||
|
+'Filter conditions'#12'ClientHeight'#3#189#1#11'ClientWidth'#3#132#2#8'OnCre'
|
||||||
|
+'ate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0'
|
||||||
|
+'.9.27'#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Ancho'
|
||||||
|
+'rSideTop.Control'#7#5'Owner'#4'Left'#2#6#6'Height'#2#18#3'Top'#2#6#5'Width'
|
||||||
|
+#3#252#0#20'BorderSpacing.Around'#2#6#7'Caption'#6'!Select filter expression'
|
||||||
|
+' for data'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8
|
||||||
|
+#0#0#6'TLabel'#6'Label2'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSide'
|
||||||
|
+'Top.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6
|
||||||
|
+'Height'#2#18#3'Top'#2#30#5'Width'#2'D'#20'BorderSpacing.Around'#2#6#7'Capti'
|
||||||
|
+'on'#6#9'On field:'#10'Font.Color'#7#5'clRed'#10'Font.Style'#11#6'fsBold'#0
|
||||||
|
+#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#6'Label3'#21'AnchorSideTop'
|
||||||
|
+'.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#168#0
|
||||||
|
+#6'Height'#2#18#3'Top'#2#30#5'Width'#2'Z'#20'BorderSpacing.Around'#2#6#7'Cap'
|
||||||
|
+'tion'#6#11'Operation :'#10'Font.Color'#7#5'clRed'#10'Font.Style'#11#6'fsBol'
|
||||||
|
+'d'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#6'Label4'#21'AnchorSi'
|
||||||
|
+'deTop.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3
|
||||||
|
+#15#1#6'Height'#2#18#3'Top'#2#30#5'Width'#2'`'#20'BorderSpacing.Around'#2#6#7
|
||||||
|
+'Caption'#6#12'Conditions :'#10'Font.Color'#7#5'clRed'#10'Font.Style'#11#6'f'
|
||||||
|
+'sBold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#6'Label5'#22'Anch'
|
||||||
|
+'orSideLeft.Control'#7#9'ComboBox3'#21'AnchorSideTop.Control'#7#6'Label1'#18
|
||||||
|
+'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#21#2#6'Height'#2#18#3'Top'#2#30
|
||||||
|
+#5'Width'#2'P'#20'BorderSpacing.Around'#2#6#7'Caption'#6#9'Operand :'#10'Fon'
|
||||||
|
+'t.Color'#7#5'clRed'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'Pare'
|
||||||
|
+'ntFont'#8#0#0#6'TLabel'#6'Label6'#22'AnchorSideLeft.Control'#7#9'ComboBox3'
|
||||||
|
+#18'AnchorSideTop.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#10'Com'
|
||||||
|
+'boBox25'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#15#2#6'Height'#2
|
||||||
|
+#18#3'Top'#3'{'#1#5'Width'#2'#'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Capt'
|
||||||
|
+'ion'#6#4'End.'#10'Font.Color'#7#5'clRed'#10'Font.Style'#11#6'fsBold'#0#11'P'
|
||||||
|
+'arentColor'#8#10'ParentFont'#8#0#0#9'TComboBox'#9'ComboBox1'#22'AnchorSideL'
|
||||||
|
+'eft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#6'Label2'#18'AnchorSide'
|
||||||
|
+'Top.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#31#3'Top'#2'6'#5'Width'#3
|
||||||
|
+#153#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#5'Style'#7#14'csDropD'
|
||||||
|
+'ownList'#8'TabOrder'#2#0#0#0#9'TComboBox'#9'ComboBox2'#21'AnchorSideTop.Con'
|
||||||
|
+'trol'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'H'
|
||||||
|
+'eight'#2#31#3'Top'#2'6'#5'Width'#2'`'#20'BorderSpacing.Around'#2#6#13'DropD'
|
||||||
|
+'ownCount'#2#9#10'ItemHeight'#2#0#8'OnChange'#7#14'ComboBoxChange'#5'Style'#7
|
||||||
|
+#14'csDropDownList'#8'TabOrder'#2#1#0#0#5'TEdit'#5'Edit1'#21'AnchorSideTop.C'
|
||||||
|
+'ontrol'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRigh'
|
||||||
|
+'t.Control'#7#9'ComboBox3'#4'Left'#3#15#1#6'Height'#2#27#3'Top'#2'6'#5'Width'
|
||||||
|
+#3#250#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#20'BorderSpacing.Arou'
|
||||||
|
+'nd'#2#6#8'OnChange'#7#10'EditChange'#8'TabOrder'#2#2#0#0#9'TComboBox'#9'Com'
|
||||||
|
+'boBox3'#21'AnchorSideTop.Control'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'as'
|
||||||
|
+'rBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9
|
||||||
|
+'asrBottom'#4'Left'#3#15#2#6'Height'#2#31#3'Top'#2'6'#5'Width'#2'o'#7'Anchor'
|
||||||
|
+'s'#11#5'akTop'#7'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0
|
||||||
|
+#13'Items.Strings'#1#6#3'And'#6#2'Or'#0#5'Style'#7#14'csDropDownList'#8'TabO'
|
||||||
|
+'rder'#2#3#0#0#9'TComboBox'#9'ComboBox4'#22'AnchorSideLeft.Control'#7#5'Owne'
|
||||||
|
+'r'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18'AnchorSideTop.Side'#7#9'asrB'
|
||||||
|
+'ottom'#23'AnchorSideRight.Control'#7#9'ComboBox1'#20'AnchorSideRight.Side'#7
|
||||||
|
+#9'asrBottom'#4'Left'#2#8#6'Height'#2#31#3'Top'#2']'#5'Width'#3#149#0#7'Anch'
|
||||||
|
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'Borde'
|
||||||
|
+'rSpacing.Top'#2#6#20'BorderSpacing.Around'#2#2#10'ItemHeight'#2#0#5'Style'#7
|
||||||
|
+#14'csDropDownList'#8'TabOrder'#2#4#0#0#9'TComboBox'#9'ComboBox5'#22'AnchorS'
|
||||||
|
+'ideLeft.Control'#7#9'ComboBox2'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18
|
||||||
|
+'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox'
|
||||||
|
+'2'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'Height'#2#31#3
|
||||||
|
+'Top'#2'['#5'Width'#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'Bo'
|
||||||
|
+'rderSpacing.Top'#2#6#13'DropDownCount'#2#9#10'ItemHeight'#2#0#8'OnChange'#7
|
||||||
|
+#14'ComboBoxChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#5#0#0#5'TEdi'
|
||||||
|
+'t'#5'Edit2'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#19'AnchorSideLeft.Sid'
|
||||||
|
+'e'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18'AnchorSideTop'
|
||||||
|
+'.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox3'#4'Left'#3
|
||||||
|
,#14#1#6'Height'#2#27#3'Top'#2'['#5'Width'#3#251#0#7'Anchors'#11#5'akTop'#6'a'
|
||||||
|
+'kLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#8
|
||||||
|
+'OnChange'#7#10'EditChange'#8'TabOrder'#2#6#0#0#9'TComboBox'#9'ComboBox6'#21
|
||||||
|
+'AnchorSideTop.Control'#7#9'ComboBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'
|
||||||
|
+#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBott'
|
||||||
|
+'om'#4'Left'#3#15#2#6'Height'#2#31#3'Top'#2'['#5'Width'#2'o'#7'Anchors'#11#5
|
||||||
|
+'akTop'#7'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#13'Item'
|
||||||
|
+'s.Strings'#1#6#3'And'#6#2'Or'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2
|
||||||
|
+#7#0#0#9'TComboBox'#9'ComboBox7'#22'AnchorSideLeft.Control'#7#5'Owner'#21'An'
|
||||||
|
+'chorSideTop.Control'#7#9'ComboBox4'#18'AnchorSideTop.Side'#7#9'asrBottom'#23
|
||||||
|
+'AnchorSideRight.Control'#7#9'ComboBox1'#20'AnchorSideRight.Side'#7#9'asrBot'
|
||||||
|
+'tom'#4'Left'#2#8#6'Height'#2#31#3'Top'#3#132#0#5'Width'#3#149#0#7'Anchors'
|
||||||
|
+#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpac'
|
||||||
|
+'ing.Top'#2#6#20'BorderSpacing.Around'#2#2#10'ItemHeight'#2#0#5'Style'#7#14
|
||||||
|
+'csDropDownList'#8'TabOrder'#2#8#0#0#9'TComboBox'#9'ComboBox8'#22'AnchorSide'
|
||||||
|
+'Left.Control'#7#9'ComboBox2'#21'AnchorSideTop.Control'#7#9'ComboBox4'#18'An'
|
||||||
|
+'chorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox2'
|
||||||
|
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'Height'#2#31#3'To'
|
||||||
|
+'p'#3#130#0#5'Width'#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'B'
|
||||||
|
+'orderSpacing.Top'#2#6#13'DropDownCount'#2#9#10'ItemHeight'#2#0#8'OnChange'#7
|
||||||
|
+#14'ComboBoxChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#9#0#0#5'TEdi'
|
||||||
|
+'t'#5'Edit3'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#19'AnchorSideLeft.Sid'
|
||||||
|
+'e'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'ComboBox4'#18'AnchorSideTop'
|
||||||
|
+'.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox3'#4'Left'#3
|
||||||
|
+#14#1#6'Height'#2#27#3'Top'#3#130#0#5'Width'#3#251#0#7'Anchors'#11#5'akTop'#6
|
||||||
|
+'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#8
|
||||||
|
+'OnChange'#7#10'EditChange'#8'TabOrder'#2#10#0#0#9'TComboBox'#9'ComboBox9'#21
|
||||||
|
+'AnchorSideTop.Control'#7#9'ComboBox4'#18'AnchorSideTop.Side'#7#9'asrBottom'
|
||||||
|
+#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBott'
|
||||||
|
+'om'#4'Left'#3#15#2#6'Height'#2#31#3'Top'#3#130#0#5'Width'#2'o'#7'Anchors'#11
|
||||||
|
+#5'akTop'#7'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#13'It'
|
||||||
|
+'ems.Strings'#1#6#3'And'#6#2'Or'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'
|
||||||
|
+#2#11#0#0#9'TComboBox'#10'ComboBox10'#22'AnchorSideLeft.Control'#7#5'Owner'
|
||||||
|
+#21'AnchorSideTop.Control'#7#9'ComboBox7'#18'AnchorSideTop.Side'#7#9'asrBott'
|
||||||
|
+'om'#23'AnchorSideRight.Control'#7#9'ComboBox1'#20'AnchorSideRight.Side'#7#9
|
||||||
|
+'asrBottom'#4'Left'#2#8#6'Height'#2#31#3'Top'#3#171#0#5'Width'#3#149#0#7'Anc'
|
||||||
|
+'hors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'Bord'
|
||||||
|
+'erSpacing.Top'#2#6#20'BorderSpacing.Around'#2#2#10'ItemHeight'#2#0#5'Style'
|
||||||
|
+#7#14'csDropDownList'#8'TabOrder'#2#12#0#0#9'TComboBox'#10'ComboBox11'#22'An'
|
||||||
|
+'chorSideLeft.Control'#7#9'ComboBox2'#21'AnchorSideTop.Control'#7#9'ComboBox'
|
||||||
|
+'7'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'Co'
|
||||||
|
+'mboBox2'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'Height'#2
|
||||||
|
+#31#3'Top'#3#169#0#5'Width'#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
|
||||||
|
+#0#17'BorderSpacing.Top'#2#6#13'DropDownCount'#2#9#10'ItemHeight'#2#0#8'OnCh'
|
||||||
|
+'ange'#7#14'ComboBoxChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#13#0
|
||||||
|
+#0#5'TEdit'#5'Edit4'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#19'AnchorSide'
|
||||||
|
+'Left.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'ComboBox7'#18'Ancho'
|
||||||
|
+'rSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox3'#4
|
||||||
|
+'Left'#3#14#1#6'Height'#2#27#3'Top'#3#169#0#5'Width'#3#251#0#7'Anchors'#11#5
|
||||||
|
+'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.T'
|
||||||
|
+'op'#2#6#8'OnChange'#7#10'EditChange'#8'TabOrder'#2#14#0#0#9'TComboBox'#10'C'
|
||||||
|
+'omboBox12'#21'AnchorSideTop.Control'#7#9'ComboBox7'#18'AnchorSideTop.Side'#7
|
||||||
|
+#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'
|
||||||
|
+#7#9'asrBottom'#4'Left'#3#15#2#6'Height'#2#31#3'Top'#3#169#0#5'Width'#2'o'#7
|
||||||
|
+'Anchors'#11#5'akTop'#7'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeigh'
|
||||||
|
+'t'#2#0#13'Items.Strings'#1#6#3'And'#6#2'Or'#0#5'Style'#7#14'csDropDownList'
|
||||||
|
+#8'TabOrder'#2#15#0#0#9'TComboBox'#10'ComboBox13'#22'AnchorSideLeft.Control'
|
||||||
|
+#7#5'Owner'#21'AnchorSideTop.Control'#7#10'ComboBox10'#18'AnchorSideTop.Side'
|
||||||
|
+#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox1'#20'AnchorSideRigh'
|
||||||
|
+'t.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2#31#3'Top'#3#210#0#5'Width'#3
|
||||||
|
+#149#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2
|
||||||
|
+#6#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#2#10'ItemHeight'#2#0
|
||||||
|
+#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#16#0#0#9'TComboBox'#10'ComboBox'
|
||||||
|
+'14'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#21'AnchorSideTop.Control'#7#10
|
||||||
|
,'ComboBox10'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Contro'
|
||||||
|
+'l'#7#9'ComboBox2'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#168#0#6
|
||||||
|
+'Height'#2#31#3'Top'#3#208#0#5'Width'#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||||
|
+'akRight'#0#17'BorderSpacing.Top'#2#6#13'DropDownCount'#2#9#10'ItemHeight'#2
|
||||||
|
+#0#8'OnChange'#7#14'ComboBoxChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'
|
||||||
|
+#2#17#0#0#5'TEdit'#5'Edit5'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#19'Anc'
|
||||||
|
+'horSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#10'ComboBox10'
|
||||||
|
+#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'Combo'
|
||||||
|
+'Box3'#4'Left'#3#14#1#6'Height'#2#27#3'Top'#3#208#0#5'Width'#3#251#0#7'Ancho'
|
||||||
|
+'rs'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'Border'
|
||||||
|
+'Spacing.Top'#2#6#8'OnChange'#7#10'EditChange'#8'TabOrder'#2#18#0#0#9'TCombo'
|
||||||
|
+'Box'#10'ComboBox15'#21'AnchorSideTop.Control'#7#10'ComboBox10'#18'AnchorSid'
|
||||||
|
+'eTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorS'
|
||||||
|
+'ideRight.Side'#7#9'asrBottom'#4'Left'#3#15#2#6'Height'#2#31#3'Top'#3#208#0#5
|
||||||
|
+'Width'#2'o'#7'Anchors'#11#5'akTop'#7'akRight'#0#20'BorderSpacing.Around'#2#6
|
||||||
|
+#10'ItemHeight'#2#0#13'Items.Strings'#1#6#3'And'#6#2'Or'#0#5'Style'#7#14'csD'
|
||||||
|
+'ropDownList'#8'TabOrder'#2#19#0#0#9'TComboBox'#10'ComboBox16'#22'AnchorSide'
|
||||||
|
+'Left.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#10'ComboBox13'#18'Anch'
|
||||||
|
+'orSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox1'#20
|
||||||
|
+'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2#31#3'Top'#3#249
|
||||||
|
+#0#5'Width'#3#149#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderS'
|
||||||
|
+'pacing.Left'#2#6#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Around'#2#2#10
|
||||||
|
+'ItemHeight'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#20#0#0#9'TCombo'
|
||||||
|
+'Box'#10'ComboBox17'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#21'AnchorSide'
|
||||||
|
+'Top.Control'#7#10'ComboBox13'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'Anch'
|
||||||
|
+'orSideRight.Control'#7#9'ComboBox2'#20'AnchorSideRight.Side'#7#9'asrBottom'
|
||||||
|
+#4'Left'#3#168#0#6'Height'#2#31#3'Top'#3#247#0#5'Width'#2'`'#7'Anchors'#11#5
|
||||||
|
+'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#13'DropDownCount'#2
|
||||||
|
+#9#10'ItemHeight'#2#0#8'OnChange'#7#14'ComboBoxChange'#5'Style'#7#14'csDropD'
|
||||||
|
+'ownList'#8'TabOrder'#2#21#0#0#5'TEdit'#5'Edit6'#22'AnchorSideLeft.Control'#7
|
||||||
|
+#9'ComboBox2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contro'
|
||||||
|
+'l'#7#10'ComboBox13'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRigh'
|
||||||
|
+'t.Control'#7#9'ComboBox3'#4'Left'#3#14#1#6'Height'#2#27#3'Top'#3#247#0#5'Wi'
|
||||||
|
+'dth'#3#251#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing'
|
||||||
|
+'.Left'#2#6#17'BorderSpacing.Top'#2#6#8'OnChange'#7#10'EditChange'#8'TabOrde'
|
||||||
|
+'r'#2#22#0#0#9'TComboBox'#10'ComboBox18'#21'AnchorSideTop.Control'#7#10'Comb'
|
||||||
|
+'oBox13'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7
|
||||||
|
+#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#15#2#6'Height'#2
|
||||||
|
+#31#3'Top'#3#247#0#5'Width'#2'o'#7'Anchors'#11#5'akTop'#7'akRight'#0#20'Bord'
|
||||||
|
+'erSpacing.Around'#2#6#10'ItemHeight'#2#0#13'Items.Strings'#1#6#3'And'#6#2'O'
|
||||||
|
+'r'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#23#0#0#9'TComboBox'#10'Com'
|
||||||
|
+'boBox19'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7
|
||||||
|
+#10'ComboBox16'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Con'
|
||||||
|
+'trol'#7#9'ComboBox1'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#8#6
|
||||||
|
+'Height'#2#31#3'Top'#3' '#1#5'Width'#3#149#0#7'Anchors'#11#5'akTop'#6'akLeft'
|
||||||
|
+#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#20'Border'
|
||||||
|
+'Spacing.Around'#2#2#10'ItemHeight'#2#0#5'Style'#7#14'csDropDownList'#8'TabO'
|
||||||
|
+'rder'#2#24#0#0#9'TComboBox'#10'ComboBox20'#22'AnchorSideLeft.Control'#7#9'C'
|
||||||
|
+'omboBox2'#21'AnchorSideTop.Control'#7#10'ComboBox16'#18'AnchorSideTop.Side'
|
||||||
|
+#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox2'#20'AnchorSideRigh'
|
||||||
|
+'t.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'Height'#2#31#3'Top'#3#30#1#5'Width'
|
||||||
|
+#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6
|
||||||
|
+#13'DropDownCount'#2#9#10'ItemHeight'#2#0#8'OnChange'#7#14'ComboBoxChange'#5
|
||||||
|
+'Style'#7#14'csDropDownList'#8'TabOrder'#2#25#0#0#5'TEdit'#5'Edit7'#22'Ancho'
|
||||||
|
+'rSideLeft.Control'#7#9'ComboBox2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
|
||||||
|
+'AnchorSideTop.Control'#7#10'ComboBox16'#18'AnchorSideTop.Side'#7#9'asrBotto'
|
||||||
|
+'m'#23'AnchorSideRight.Control'#7#9'ComboBox3'#4'Left'#3#14#1#6'Height'#2#27
|
||||||
|
+#3'Top'#3#30#1#5'Width'#3#251#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0
|
||||||
|
+#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#8'OnChange'#7#10'EditC'
|
||||||
|
+'hange'#8'TabOrder'#2#26#0#0#9'TComboBox'#10'ComboBox21'#21'AnchorSideTop.Co'
|
||||||
|
+'ntrol'#7#10'ComboBox16'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSide'
|
||||||
|
+'Right.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3
|
||||||
|
+#15#2#6'Height'#2#31#3'Top'#3#30#1#5'Width'#2'o'#7'Anchors'#11#5'akTop'#7'ak'
|
||||||
|
+'Right'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#13'Items.Strings'#1
|
||||||
|
,#6#3'And'#6#2'Or'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#27#0#0#9'TCo'
|
||||||
|
+'mboBox'#10'ComboBox22'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideT'
|
||||||
|
+'op.Control'#7#10'ComboBox19'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'Ancho'
|
||||||
|
+'rSideRight.Control'#7#9'ComboBox1'#20'AnchorSideRight.Side'#7#9'asrBottom'#4
|
||||||
|
+'Left'#2#8#6'Height'#2#31#3'Top'#3'G'#1#5'Width'#3#149#0#7'Anchors'#11#5'akT'
|
||||||
|
+'op'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'
|
||||||
|
+#2#6#20'BorderSpacing.Around'#2#2#10'ItemHeight'#2#0#5'Style'#7#14'csDropDow'
|
||||||
|
+'nList'#8'TabOrder'#2#28#0#0#9'TComboBox'#10'ComboBox23'#22'AnchorSideLeft.C'
|
||||||
|
+'ontrol'#7#9'ComboBox2'#21'AnchorSideTop.Control'#7#10'ComboBox19'#18'Anchor'
|
||||||
|
+'SideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox2'#20
|
||||||
|
+'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'Height'#2#31#3'Top'#3
|
||||||
|
+'E'#1#5'Width'#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderS'
|
||||||
|
+'pacing.Top'#2#6#13'DropDownCount'#2#9#10'ItemHeight'#2#0#8'OnChange'#7#14'C'
|
||||||
|
+'omboBoxChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#29#0#0#5'TEdit'#5
|
||||||
|
+'Edit8'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#19'AnchorSideLeft.Side'#7#9
|
||||||
|
+'asrBottom'#21'AnchorSideTop.Control'#7#10'ComboBox19'#18'AnchorSideTop.Side'
|
||||||
|
+#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox3'#4'Left'#3#14#1#6
|
||||||
|
+'Height'#2#27#3'Top'#3'E'#1#5'Width'#3#251#0#7'Anchors'#11#5'akTop'#6'akLeft'
|
||||||
|
+#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#8'OnChang'
|
||||||
|
+'e'#7#10'EditChange'#8'TabOrder'#2#30#0#0#9'TComboBox'#10'ComboBox24'#21'Anc'
|
||||||
|
+'horSideTop.Control'#7#10'ComboBox19'#18'AnchorSideTop.Side'#7#9'asrBottom'
|
||||||
|
+#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBott'
|
||||||
|
+'om'#4'Left'#3#15#2#6'Height'#2#31#3'Top'#3'E'#1#5'Width'#2'o'#7'Anchors'#11
|
||||||
|
+#5'akTop'#7'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#13'It'
|
||||||
|
+'ems.Strings'#1#6#3'And'#6#2'Or'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'
|
||||||
|
+#2#31#0#0#9'TComboBox'#10'ComboBox25'#22'AnchorSideLeft.Control'#7#5'Owner'
|
||||||
|
+#21'AnchorSideTop.Control'#7#10'ComboBox22'#18'AnchorSideTop.Side'#7#9'asrBo'
|
||||||
|
+'ttom'#23'AnchorSideRight.Control'#7#9'ComboBox1'#20'AnchorSideRight.Side'#7
|
||||||
|
+#9'asrBottom'#4'Left'#2#8#6'Height'#2#31#3'Top'#3'n'#1#5'Width'#3#149#0#7'An'
|
||||||
|
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'Bor'
|
||||||
|
+'derSpacing.Top'#2#6#20'BorderSpacing.Around'#2#2#10'ItemHeight'#2#0#5'Style'
|
||||||
|
+#7#14'csDropDownList'#8'TabOrder'#2' '#0#0#9'TComboBox'#10'ComboBox26'#22'An'
|
||||||
|
+'chorSideLeft.Control'#7#9'ComboBox2'#21'AnchorSideTop.Control'#7#10'ComboBo'
|
||||||
|
+'x22'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9
|
||||||
|
+'ComboBox2'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#168#0#6'Height'
|
||||||
|
+#2#31#3'Top'#3'l'#1#5'Width'#2'`'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
|
||||||
|
+#0#17'BorderSpacing.Top'#2#6#13'DropDownCount'#2#9#10'ItemHeight'#2#0#8'OnCh'
|
||||||
|
+'ange'#7#14'ComboBoxChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2'!'#0
|
||||||
|
+#0#5'TEdit'#5'Edit9'#22'AnchorSideLeft.Control'#7#9'ComboBox2'#19'AnchorSide'
|
||||||
|
+'Left.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#10'ComboBox22'#18'Anc'
|
||||||
|
+'horSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'ComboBox3'#4
|
||||||
|
+'Left'#3#14#1#6'Height'#2#27#3'Top'#3'l'#1#5'Width'#3#251#0#7'Anchors'#11#5
|
||||||
|
+'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.T'
|
||||||
|
+'op'#2#6#8'OnChange'#7#10'EditChange'#8'TabOrder'#2'"'#0#0#9'TComboBox'#10'C'
|
||||||
|
+'omboBox27'#22'AnchorSideLeft.Control'#7#5'Owner'#24'AnchorSideBottom.Contro'
|
||||||
|
+'l'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'
|
||||||
|
+#2#31#3'Top'#3#152#1#5'Width'#2':'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#20
|
||||||
|
+'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#13'Items.Strings'#1#6#3'And'#6
|
||||||
|
+#2'Or'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2'#'#7'Visible'#8#0#0#7'T'
|
||||||
|
+'Button'#7'Button1'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRigh'
|
||||||
|
+'t.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSid'
|
||||||
|
+'eBottom.Side'#7#9'asrBottom'#4'Left'#3'M'#2#6'Height'#2#29#3'Top'#3#154#1#5
|
||||||
|
+'Width'#2'1'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'BorderS'
|
||||||
|
+'pacing.Around'#2#6#7'Caption'#6#5'Apply'#7'Default'#9#7'OnClick'#7#12'Butto'
|
||||||
|
+'n1Click'#8'TabOrder'#2'$'#0#0#7'TButton'#7'Button2'#23'AnchorSideRight.Cont'
|
||||||
|
+'rol'#7#7'Button1'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBott'
|
||||||
|
+'om.Side'#7#9'asrBottom'#4'Left'#3#12#2#6'Height'#2#29#3'Top'#3#154#1#5'Widt'
|
||||||
|
+'h'#2';'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpaci'
|
||||||
|
+'ng.Around'#2#6#6'Cancel'#9#7'Caption'#6#6'Cancel'#7'OnClick'#7#12'Button2Cl'
|
||||||
|
+'ick'#8'TabOrder'#2'%'#0#0#7'TButton'#7'Button3'#23'AnchorSideRight.Control'
|
||||||
|
+#7#7'Button2'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Si'
|
||||||
|
+'de'#7#9'asrBottom'#4'Left'#3#180#1#6'Height'#2#29#3'Top'#3#154#1#5'Width'#2
|
||||||
|
+'R'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Ar'
|
||||||
|
+'ound'#2#6#7'Caption'#6#12'Clear filter'#7'OnClick'#7#12'Button3Click'#8'Tab'
|
||||||
|
,'Order'#2'&'#0#0#0
|
||||||
|
]);
|
10
components/rx/rxfilterby.lrt
Normal file
10
components/rx/rxfilterby.lrt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
TRXFILTERBYFORM.CAPTION=Filter conditions
|
||||||
|
TRXFILTERBYFORM.LABEL1.CAPTION=Select filter expression for data
|
||||||
|
TRXFILTERBYFORM.LABEL2.CAPTION=On field:
|
||||||
|
TRXFILTERBYFORM.LABEL3.CAPTION=Operation :
|
||||||
|
TRXFILTERBYFORM.LABEL4.CAPTION=Conditions :
|
||||||
|
TRXFILTERBYFORM.LABEL5.CAPTION=Operand :
|
||||||
|
TRXFILTERBYFORM.LABEL6.CAPTION=End.
|
||||||
|
TRXFILTERBYFORM.BUTTON1.CAPTION=Apply
|
||||||
|
TRXFILTERBYFORM.BUTTON2.CAPTION=Cancel
|
||||||
|
TRXFILTERBYFORM.BUTTON3.CAPTION=Clear filter
|
349
components/rx/rxfilterby.pas
Normal file
349
components/rx/rxfilterby.pas
Normal file
@ -0,0 +1,349 @@
|
|||||||
|
unit rxfilterby;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||||
|
StdCtrls, db;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TrxFilterByForm }
|
||||||
|
|
||||||
|
TrxFilterByForm = class(TForm)
|
||||||
|
Button1: TButton;
|
||||||
|
Button2: TButton;
|
||||||
|
Button3: TButton;
|
||||||
|
ComboBox1: TComboBox;
|
||||||
|
ComboBox10: TComboBox;
|
||||||
|
ComboBox11: TComboBox;
|
||||||
|
ComboBox12: TComboBox;
|
||||||
|
ComboBox13: TComboBox;
|
||||||
|
ComboBox14: TComboBox;
|
||||||
|
ComboBox15: TComboBox;
|
||||||
|
ComboBox16: TComboBox;
|
||||||
|
ComboBox17: TComboBox;
|
||||||
|
ComboBox18: TComboBox;
|
||||||
|
ComboBox19: TComboBox;
|
||||||
|
ComboBox2: TComboBox;
|
||||||
|
ComboBox20: TComboBox;
|
||||||
|
ComboBox21: TComboBox;
|
||||||
|
ComboBox22: TComboBox;
|
||||||
|
ComboBox23: TComboBox;
|
||||||
|
ComboBox24: TComboBox;
|
||||||
|
ComboBox25: TComboBox;
|
||||||
|
ComboBox26: TComboBox;
|
||||||
|
ComboBox27: TComboBox;
|
||||||
|
ComboBox3: TComboBox;
|
||||||
|
ComboBox4: TComboBox;
|
||||||
|
ComboBox5: TComboBox;
|
||||||
|
ComboBox6: TComboBox;
|
||||||
|
ComboBox7: TComboBox;
|
||||||
|
ComboBox8: TComboBox;
|
||||||
|
ComboBox9: TComboBox;
|
||||||
|
Edit1: TEdit;
|
||||||
|
Edit2: TEdit;
|
||||||
|
Edit3: TEdit;
|
||||||
|
Edit4: TEdit;
|
||||||
|
Edit5: TEdit;
|
||||||
|
Edit6: TEdit;
|
||||||
|
Edit7: TEdit;
|
||||||
|
Edit8: TEdit;
|
||||||
|
Edit9: TEdit;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
Label3: TLabel;
|
||||||
|
Label4: TLabel;
|
||||||
|
Label5: TLabel;
|
||||||
|
Label6: TLabel;
|
||||||
|
procedure Button1Click(Sender: TObject);
|
||||||
|
procedure Button2Click(Sender: TObject);
|
||||||
|
procedure Button3Click(Sender: TObject);
|
||||||
|
procedure ComboBoxChange(Sender: TObject);
|
||||||
|
procedure EditChange(Sender: TObject);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
private
|
||||||
|
Combo_1 : Array[1..9] of TComboBox;
|
||||||
|
Combo_2 : Array[1..9] of TComboBox;
|
||||||
|
Edit_1 : Array[1..9] of TEdit;
|
||||||
|
Combo_3 : Array[1..9] of TComboBox;
|
||||||
|
Table : TDataSet;
|
||||||
|
procedure ClearALL(adoTable : TDataSet);
|
||||||
|
function FindCombo(CB:TComboBox):Integer;
|
||||||
|
function FindEdit(ED:TEdit):Integer;
|
||||||
|
public
|
||||||
|
function Execute(adoTable : TDataSet; Var FilterStr : String; Var LastFilter : TstringList):Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
rxFilterByForm: TrxFilterByForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses rxdconst;
|
||||||
|
|
||||||
|
{ TrxFilterByForm }
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.Button2Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ModalResult := mrCancel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.Button3Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ClearALL(Table);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.ComboBoxChange(Sender: TObject);
|
||||||
|
Var
|
||||||
|
CBN : Integer;
|
||||||
|
CB : TComboBox;
|
||||||
|
begin
|
||||||
|
CB := (Sender AS TComboBox);
|
||||||
|
CBN := FindCombo(CB);
|
||||||
|
if CBN=0 Then Exit;
|
||||||
|
if (CB.Text=' IS NULL ') Or (CB.Text=' IS NOT NULL ') Then
|
||||||
|
Begin
|
||||||
|
Edit_1[CBN].Text := '';
|
||||||
|
Edit_1[CBN].Enabled := False;
|
||||||
|
Edit_1[CBN].Color := clInactiveCaption;
|
||||||
|
End
|
||||||
|
Else
|
||||||
|
Begin
|
||||||
|
Edit_1[CBN].Enabled := True;
|
||||||
|
Edit_1[CBN].Color := clWindow;
|
||||||
|
End;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.EditChange(Sender: TObject);
|
||||||
|
Var
|
||||||
|
EDN : Integer;
|
||||||
|
ED : TEdit;
|
||||||
|
begin
|
||||||
|
ED := (Sender AS TEdit);
|
||||||
|
EDN := FindEdit(ED);
|
||||||
|
if EDN=0 Then Exit;
|
||||||
|
if ED.Text='' Then Combo_1[EDN].ItemIndex:=-1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Label1.Caption:=sRxFilterFormSelectExp;
|
||||||
|
Label2.Caption:=sRxFilterFormSelectExp;
|
||||||
|
Label3.Caption:=sRxFilterFormOperaion;
|
||||||
|
Label4.Caption:=sRxFilterFormCondition;
|
||||||
|
Label5.Caption:=sRxFilterFormOperand;
|
||||||
|
Label6.Caption:=sRxFilterFormEnd;
|
||||||
|
Button3.Caption:=sRxFilterFormClear;
|
||||||
|
Button2.Caption:=sRxFilterFormCancel;
|
||||||
|
Button1.Caption:=sRxFilterFormApply;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.Button1Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ModalResult := mrOK;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxFilterByForm.ClearALL(adoTable : TDataSet);
|
||||||
|
var
|
||||||
|
X : Integer;
|
||||||
|
begin
|
||||||
|
//*****************************************************************************
|
||||||
|
Combo_1[1].Items.Clear;
|
||||||
|
Combo_1[1].Items.Add('');
|
||||||
|
For X := 0 To adoTable.FieldCount-1 do
|
||||||
|
Begin
|
||||||
|
if (adoTable.Fields[X].FieldKind=fkData) And (adoTable.Fields[X].Visible) Then
|
||||||
|
Combo_1[1].Items.Add(adoTable.Fields[X].FieldName);
|
||||||
|
End;
|
||||||
|
Combo_1[1].ItemIndex := 0;
|
||||||
|
For X := 2 To 9 do
|
||||||
|
Begin
|
||||||
|
Combo_1[X].Items.Assign(Combo_1[1].Items);
|
||||||
|
Combo_1[X].ItemIndex := 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Combo_2[1].Items.Clear;
|
||||||
|
Combo_2[1].Items.Add(' = ');
|
||||||
|
Combo_2[1].Items.Add(' > ');
|
||||||
|
Combo_2[1].Items.Add(' < ');
|
||||||
|
Combo_2[1].Items.Add(' >= ');
|
||||||
|
Combo_2[1].Items.Add(' <= ');
|
||||||
|
Combo_2[1].Items.Add(' <> ');
|
||||||
|
Combo_2[1].Items.Add(' LIKE ');
|
||||||
|
Combo_2[1].Items.Add(' IS NULL ');
|
||||||
|
Combo_2[1].Items.Add(' IS NOT NULL ');
|
||||||
|
Combo_2[1].ItemIndex := 0;
|
||||||
|
for X := 2 To 9 do
|
||||||
|
begin
|
||||||
|
Combo_2[X].Items.Assign(Combo_2[1].Items);
|
||||||
|
Combo_2[X].ItemIndex := 0;
|
||||||
|
end;
|
||||||
|
for X := 1 To 9 do
|
||||||
|
begin
|
||||||
|
Combo_3[X].ItemIndex := 0;
|
||||||
|
end;
|
||||||
|
for X := 1 To 9 do Edit_1[X].Text := '';
|
||||||
|
//*****************************************************************************
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TrxFilterByForm.Execute(adoTable : TDataSet; Var FilterStr : String; Var LastFilter : TstringList):Boolean;
|
||||||
|
Var
|
||||||
|
X : Integer;
|
||||||
|
P : Integer;
|
||||||
|
S : String;
|
||||||
|
SD : String;
|
||||||
|
FF : TField;
|
||||||
|
Begin
|
||||||
|
Result := False;
|
||||||
|
//*****************************************************************************
|
||||||
|
Combo_1[1]:= ComboBox1;
|
||||||
|
Combo_1[2]:= ComboBox4;
|
||||||
|
Combo_1[3]:= ComboBox7;
|
||||||
|
Combo_1[4]:= ComboBox10;
|
||||||
|
Combo_1[5]:= ComboBox13;
|
||||||
|
Combo_1[6]:= ComboBox16;
|
||||||
|
Combo_1[7]:= ComboBox19;
|
||||||
|
Combo_1[8]:= ComboBox22;
|
||||||
|
Combo_1[9]:= ComboBox25;
|
||||||
|
|
||||||
|
Combo_2[1]:= ComboBox2;
|
||||||
|
Combo_2[2]:= ComboBox5;
|
||||||
|
Combo_2[3]:= ComboBox8;
|
||||||
|
Combo_2[4]:= ComboBox11;
|
||||||
|
Combo_2[5]:= ComboBox14;
|
||||||
|
Combo_2[6]:= ComboBox17;
|
||||||
|
Combo_2[7]:= ComboBox20;
|
||||||
|
Combo_2[8]:= ComboBox23;
|
||||||
|
Combo_2[9]:= ComboBox26;
|
||||||
|
|
||||||
|
Combo_3[1]:= ComboBox3;
|
||||||
|
Combo_3[2]:= ComboBox6;
|
||||||
|
Combo_3[3]:= ComboBox9;
|
||||||
|
Combo_3[4]:= ComboBox12;
|
||||||
|
Combo_3[5]:= ComboBox15;
|
||||||
|
Combo_3[6]:= ComboBox18;
|
||||||
|
Combo_3[7]:= ComboBox21;
|
||||||
|
Combo_3[8]:= ComboBox24;
|
||||||
|
Combo_3[9]:= ComboBox27;
|
||||||
|
Combo_3[9].Visible := False;
|
||||||
|
|
||||||
|
Edit_1[1] := Edit1;
|
||||||
|
Edit_1[2] := Edit2;
|
||||||
|
Edit_1[3] := Edit3;
|
||||||
|
Edit_1[4] := Edit4;
|
||||||
|
Edit_1[5] := Edit5;
|
||||||
|
Edit_1[6] := Edit6;
|
||||||
|
Edit_1[7] := Edit7;
|
||||||
|
Edit_1[8] := Edit8;
|
||||||
|
Edit_1[9] := Edit9;
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
Table := adoTable;
|
||||||
|
ClearALL(Table);
|
||||||
|
if LastFilter.Count > 0 Then
|
||||||
|
Begin
|
||||||
|
For X := 0 To LastFilter.Count-1 do
|
||||||
|
Begin
|
||||||
|
S := LastFilter.Strings[X];
|
||||||
|
P := Pos('|||',S);
|
||||||
|
if P > 0 Then
|
||||||
|
Begin
|
||||||
|
Combo_1[X+1].ItemIndex := Combo_1[X+1].Items.IndexOf(System.Copy(S,1,P-1));
|
||||||
|
System.Delete(S,1,P+2);
|
||||||
|
End;
|
||||||
|
P := Pos('|||',S);
|
||||||
|
if P > 0 Then
|
||||||
|
Begin
|
||||||
|
SD:=System.Copy(S,1,P-1);
|
||||||
|
Combo_2[X+1].ItemIndex := Combo_2[X+1].Items.IndexOf(System.Copy(S,1,P-1));
|
||||||
|
System.Delete(S,1,P+2);
|
||||||
|
if (SD=' IS NULL ') or (SD=' IS NOT NULL ') Then
|
||||||
|
Begin
|
||||||
|
Edit_1[X+1].Text := '';
|
||||||
|
Edit_1[X+1].Enabled := False;
|
||||||
|
Edit_1[X+1].Color := clInactiveCaption;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
P := Pos('|||',S);
|
||||||
|
if P > 0 Then
|
||||||
|
Begin
|
||||||
|
Edit_1[X+1].Text := System.Copy(S,1,P-1);
|
||||||
|
System.Delete(S,1,P+2);
|
||||||
|
End;
|
||||||
|
Combo_3[X+1].ItemIndex := Combo_3[X+1].Items.IndexOf(S);
|
||||||
|
if Combo_3[X+1].ItemIndex = -1 Then Combo_3[X+1].ItemIndex := 0;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
ShowModal;
|
||||||
|
if ModalResult=mrOK Then
|
||||||
|
Begin
|
||||||
|
Result := True;
|
||||||
|
FilterStr := '';
|
||||||
|
LastFilter.Clear;
|
||||||
|
For X := 1 to 9 Do
|
||||||
|
Begin
|
||||||
|
if (Combo_1[X].Text <> '')
|
||||||
|
And (Combo_2[X].Text <> '') Then
|
||||||
|
Begin
|
||||||
|
if (Edit_1[X].Enabled=False) or (Edit_1[X].Text <> '') Then
|
||||||
|
Begin
|
||||||
|
if X>1 Then
|
||||||
|
FilterStr := FilterStr+Combo_3[X-1].Text+' ';
|
||||||
|
FF := Table.FindField(Combo_1[X].Text);
|
||||||
|
Case FF.DataType of
|
||||||
|
ftDateTime ,
|
||||||
|
ftDate : FilterStr := FilterStr+'('+Combo_1[X].Text+Combo_2[X].Text+Char(39)+Copy(Edit_1[X].Text,7,4)+Copy(Edit_1[X].Text,3,4)+Copy(Edit_1[X].Text,1,2)+Copy(Edit_1[X].Text,11,9)+Char(39)+') ';
|
||||||
|
ftUnknown : FilterStr := FilterStr+'('+Combo_1[X].Text+Combo_2[X].Text+Edit_1[X].Text+') ';
|
||||||
|
ftTime,
|
||||||
|
ftString,
|
||||||
|
ftMemo : FilterStr := FilterStr+'('+Combo_1[X].Text+Combo_2[X].Text+Char(39)+Edit_1[X].Text+Char(39)+') ';
|
||||||
|
else
|
||||||
|
FilterStr := FilterStr+'('+Combo_1[X].Text+Combo_2[X].Text+Edit_1[X].Text+') ';
|
||||||
|
End;
|
||||||
|
LastFilter.Add(Combo_1[X].Text+'|||'+Combo_2[X].Text+'|||'+Edit_1[X].Text+'|||'+Combo_3[X].Text);
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TrxFilterByForm.FindCombo(CB:TComboBox):Integer;
|
||||||
|
Var
|
||||||
|
X : Integer;
|
||||||
|
Begin
|
||||||
|
Result :=0;
|
||||||
|
For X := 1 to 9 do
|
||||||
|
Begin
|
||||||
|
if Combo_2[X]=CB Then
|
||||||
|
Begin
|
||||||
|
Result := X;
|
||||||
|
Exit;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TrxFilterByForm.FindEdit(ED:TEdit):Integer;
|
||||||
|
Var
|
||||||
|
X : Integer;
|
||||||
|
Begin
|
||||||
|
Result :=0;
|
||||||
|
For X := 1 to 9 do
|
||||||
|
Begin
|
||||||
|
if Edit_1[X]=ED Then
|
||||||
|
Begin
|
||||||
|
Result := X;
|
||||||
|
Exit;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initialization
|
||||||
|
{$I rxfilterby.lrs}
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -144,6 +144,12 @@ type
|
|||||||
FDisplayAll: boolean;
|
FDisplayAll: boolean;
|
||||||
FUnfindedValue: TRxDBValueVariant;
|
FUnfindedValue: TRxDBValueVariant;
|
||||||
FSuccesfullyFind : boolean;
|
FSuccesfullyFind : boolean;
|
||||||
|
|
||||||
|
FOnSelect : TNotifyEvent;
|
||||||
|
procedure SetValue(const Value: string);
|
||||||
|
function GetKeyValue: Variant;
|
||||||
|
procedure SetKeyValue(const Value: Variant);
|
||||||
|
|
||||||
function GetDataSource: TDataSource;
|
function GetDataSource: TDataSource;
|
||||||
function GetDisplayAll: Boolean;
|
function GetDisplayAll: Boolean;
|
||||||
function GetDropDownCount: Integer;
|
function GetDropDownCount: Integer;
|
||||||
@ -242,6 +248,11 @@ type
|
|||||||
property LookupSource: TDataSource read GetLookupSource write SetLookupSource;
|
property LookupSource: TDataSource read GetLookupSource write SetLookupSource;
|
||||||
property OnGetGridCellProps: TGetCellPropsEvent read GetOnGetGridCellProps
|
property OnGetGridCellProps: TGetCellPropsEvent read GetOnGetGridCellProps
|
||||||
write SetOnGetGridCellProps;
|
write SetOnGetGridCellProps;
|
||||||
|
|
||||||
|
property Value: string read FValue write SetValue stored False;
|
||||||
|
property KeyValue: Variant read GetKeyValue write SetKeyValue stored False;
|
||||||
|
property OnSelect: TNotifyEvent read FOnSelect write FOnSelect;
|
||||||
|
|
||||||
property UnfindedValue : TRxDBValueVariant read FUnfindedValue write FUnfindedValue default rxufNone;
|
property UnfindedValue : TRxDBValueVariant read FUnfindedValue write FUnfindedValue default rxufNone;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
@ -253,6 +264,9 @@ type
|
|||||||
TRxDBLookupCombo = class(TRxCustomDBLookupCombo)
|
TRxDBLookupCombo = class(TRxCustomDBLookupCombo)
|
||||||
protected
|
protected
|
||||||
procedure OnClosePopup(AResult:boolean);override;
|
procedure OnClosePopup(AResult:boolean);override;
|
||||||
|
public
|
||||||
|
property Value;
|
||||||
|
property KeyValue;
|
||||||
published
|
published
|
||||||
property AutoSize;
|
property AutoSize;
|
||||||
property Align;
|
property Align;
|
||||||
@ -292,6 +306,8 @@ type
|
|||||||
property OnMouseUp;
|
property OnMouseUp;
|
||||||
property OnStartDrag;
|
property OnStartDrag;
|
||||||
property OnGetGridCellProps;
|
property OnGetGridCellProps;
|
||||||
|
property OnSelect;
|
||||||
|
|
||||||
property ParentColor;
|
property ParentColor;
|
||||||
property ParentFont;
|
property ParentFont;
|
||||||
property ParentShowHint;
|
property ParentShowHint;
|
||||||
@ -914,6 +930,25 @@ var
|
|||||||
F:TField;
|
F:TField;
|
||||||
begin
|
begin
|
||||||
FValuesList.Clear;
|
FValuesList.Clear;
|
||||||
|
if not Assigned(FDataField) then
|
||||||
|
begin
|
||||||
|
if FLookupDataLink.Active then
|
||||||
|
if (Self.FSuccesfullyFind) or (Self.UnfindedValue = rxufLastSuccessful) then
|
||||||
|
begin
|
||||||
|
for i:=0 to FFieldList.Count-1 do
|
||||||
|
begin
|
||||||
|
F:=FLookupDataLink.DataSet.FieldByName(FFieldList[i]);
|
||||||
|
k:=FValuesList.Add(F.DisplayText);
|
||||||
|
FValuesList.Objects[k]:=TObject(PtrInt(F.DisplayWidth));
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
case Self.UnfindedValue of
|
||||||
|
rxufNone : {Do nothing};
|
||||||
|
rxufOriginal : FValuesList.Add(FValue);//Show original field value...
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
if Assigned(FDataField) then
|
if Assigned(FDataField) then
|
||||||
begin
|
begin
|
||||||
if FDataField.IsNull then
|
if FDataField.IsNull then
|
||||||
@ -938,24 +973,43 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.ShowList;
|
procedure TRxCustomDBLookupCombo.ShowList;
|
||||||
|
{$IFDEF LINUX}
|
||||||
|
var
|
||||||
|
TempF:TPopUpForm;
|
||||||
|
{$ENDIF}
|
||||||
begin
|
begin
|
||||||
if Assigned(FLookupDataLink.DataSet) and (FLookupDataLink.DataSet.Active) then
|
if Assigned(FLookupDataLink.DataSet) and (FLookupDataLink.DataSet.Active) then
|
||||||
if not PopupVisible then
|
if not PopupVisible then
|
||||||
begin
|
begin
|
||||||
|
if FDataField<>nil then
|
||||||
|
if FDataField <> nil then
|
||||||
|
FValue := FDataField.AsString
|
||||||
|
else
|
||||||
|
FValue := FEmptyValue;
|
||||||
|
|
||||||
if FDataField <> nil then FValue := FDataField.AsString
|
if not Assigned(FDataField) then
|
||||||
else FValue := FEmptyValue;
|
begin
|
||||||
|
if not FLocateObject.Locate(FLookupField, FValue, true, false) then
|
||||||
|
FLookupDataLink.DataSet.First;
|
||||||
|
end
|
||||||
|
else
|
||||||
if Assigned(FDataField) and not FDataField.IsNull then
|
if Assigned(FDataField) and not FDataField.IsNull then
|
||||||
Begin
|
begin
|
||||||
if not FLocateObject.Locate(FLookupField, FValue, true, false) then
|
if not FLocateObject.Locate(FLookupField, FValue, true, false) then
|
||||||
FLookupDataLink.DataSet.First;//In case we cannot find curvalue...
|
FLookupDataLink.DataSet.First;//In case we cannot find curvalue...
|
||||||
End
|
end
|
||||||
else
|
else
|
||||||
if FLookupDataLink.Active then
|
if FLookupDataLink.Active then
|
||||||
FLookupDataLink.DataSet.First;
|
FLookupDataLink.DataSet.First;
|
||||||
|
|
||||||
FRxPopUpForm:=ShowRxDBPopUpForm(Self, FLookupDataLink.DataSet, @OnClosePopup,
|
FRxPopUpForm:=ShowRxDBPopUpForm(Self, FLookupDataLink.DataSet, @OnClosePopup,
|
||||||
FPopUpFormOptions, FLookupDisplay, LookupDisplayIndex, 0 {ButtonWidth}, Font);
|
FPopUpFormOptions, FLookupDisplay, LookupDisplayIndex, 0 {ButtonWidth}, Font);
|
||||||
|
{$IFDEF LINUX}
|
||||||
|
TempF:=FRxPopUpForm;
|
||||||
|
if FRxPopUpForm.ShowModal = mrOk then
|
||||||
|
OnClosePopup(true);
|
||||||
|
TempF.Free;
|
||||||
|
{$ENDIF}
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -975,10 +1029,23 @@ end;
|
|||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.UpdateKeyValue;
|
procedure TRxCustomDBLookupCombo.UpdateKeyValue;
|
||||||
begin
|
begin
|
||||||
|
if Assigned(FDataField) then
|
||||||
if FDataField <> nil then
|
if FDataField <> nil then
|
||||||
FValue := FDataField.AsString
|
FValue := FDataField.AsString
|
||||||
else
|
else
|
||||||
FValue := FEmptyValue;
|
FValue := FEmptyValue;
|
||||||
|
|
||||||
|
if not Assigned(FDataField) then
|
||||||
|
begin
|
||||||
|
if FValue=FEmptyValue then
|
||||||
|
FSuccesfullyFind := false
|
||||||
|
else
|
||||||
|
FSuccesfullyFind := FLocateObject.Locate(FLookupField, FValue, true, false);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if FDataField.IsNull then
|
||||||
|
FSuccesfullyFind := false
|
||||||
|
else
|
||||||
if not FDataField.IsNull then
|
if not FDataField.IsNull then
|
||||||
FSuccesfullyFind := FLocateObject.Locate(FLookupField, FValue, true, false);
|
FSuccesfullyFind := FLocateObject.Locate(FLookupField, FValue, true, false);
|
||||||
KeyValueChanged;
|
KeyValueChanged;
|
||||||
@ -1010,12 +1077,32 @@ begin
|
|||||||
if Assigned(FRxPopUpForm) and AResult and (pfgColumnResize in FPopUpFormOptions.Options) then
|
if Assigned(FRxPopUpForm) and AResult and (pfgColumnResize in FPopUpFormOptions.Options) then
|
||||||
FillPopupWidth(FPopUpFormOptions, FRxPopUpForm);
|
FillPopupWidth(FPopUpFormOptions, FRxPopUpForm);
|
||||||
|
|
||||||
|
if FRxPopUpForm=nil then
|
||||||
|
begin
|
||||||
|
SetFocus;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
FRxPopUpForm:=nil;
|
FRxPopUpForm:=nil;
|
||||||
|
if not AResult then
|
||||||
|
UpdateKeyValue
|
||||||
|
else
|
||||||
|
if AResult and not Assigned(FDataLink.DataSource) and (FLookupDataLink.Active) then
|
||||||
|
begin
|
||||||
|
if FKeyField.IsNull then
|
||||||
|
SetValueKey(FEmptyValue)
|
||||||
|
else
|
||||||
|
SetValueKey(FKeyField.AsString);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
|
||||||
if AResult and Assigned(FDataLink.DataSource) then
|
if AResult and Assigned(FDataLink.DataSource) then
|
||||||
begin
|
begin
|
||||||
FDataLink.Edit;
|
FDataLink.Edit;
|
||||||
NeedUpdateData;//We need to update DataField;
|
NeedUpdateData;//We need to update DataField;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if (AResult) and (Assigned(FOnSelect)) then
|
||||||
|
FOnSelect(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.DoAutoSize;
|
procedure TRxCustomDBLookupCombo.DoAutoSize;
|
||||||
@ -1049,10 +1136,20 @@ begin
|
|||||||
Key := 0;
|
Key := 0;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if (Key = VK_ESCAPE) and (not FDataField.IsNull) then
|
if (Key = VK_ESCAPE) and not (Assigned(FDataField)) then
|
||||||
|
begin
|
||||||
|
SetValueKey(FEmptyValue);
|
||||||
|
if Assigned(FOnSelect) then
|
||||||
|
FOnSelect(Self);
|
||||||
|
Key:=0;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if (Key = VK_ESCAPE) and (not FDataField.IsNull) and (FDataLink.Edit) then
|
||||||
begin
|
begin
|
||||||
FDataField.Clear;
|
FDataField.Clear;
|
||||||
UpdateKeyValue;
|
UpdateKeyValue;
|
||||||
|
if Assigned(FOnSelect) then
|
||||||
|
FOnSelect(Self);
|
||||||
Key:=0;
|
Key:=0;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1075,15 +1172,36 @@ begin
|
|||||||
end;
|
end;
|
||||||
//FDataLink.UpdateRecord; -- no need more...
|
//FDataLink.UpdateRecord; -- no need more...
|
||||||
Self.NeedUpdateData;
|
Self.NeedUpdateData;
|
||||||
|
if Assigned(FOnSelect) then
|
||||||
|
FOnSelect(Self);
|
||||||
KeyValueChanged;
|
KeyValueChanged;
|
||||||
Key:=0;
|
Key:=0;
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if FLookupDataLink.Active and not (PopupVisible or ReadOnly) then
|
||||||
|
begin
|
||||||
|
if (Key in [VK_UP, VK_DOWN]) and (Shift = []) then
|
||||||
|
begin
|
||||||
|
case Key of
|
||||||
|
VK_UP: if not FLookupDataLink.DataSet.BOF then
|
||||||
|
FLookupDataLink.DataSet.Prior;
|
||||||
|
VK_DOWN: if not FLookupDataLink.DataSet.EOF then
|
||||||
|
FLookupDataLink.DataSet.Next;
|
||||||
|
end;
|
||||||
|
SetValueKey(FKeyField.AsString);
|
||||||
|
if Assigned(FOnSelect) then
|
||||||
|
FOnSelect(Self);
|
||||||
|
Key:=0;
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.KeyPress(var Key: char);
|
procedure TRxCustomDBLookupCombo.KeyPress(var Key: char);
|
||||||
begin
|
begin
|
||||||
|
if not (PopupVisible) and ((Key in [#32..#255]) or (Key=#8)) then
|
||||||
|
ShowList;
|
||||||
inherited KeyPress(Key);
|
inherited KeyPress(Key);
|
||||||
if PopupVisible then
|
if PopupVisible then
|
||||||
FRxPopUpForm.KeyPress(Key);
|
FRxPopUpForm.KeyPress(Key);
|
||||||
@ -1174,12 +1292,14 @@ begin
|
|||||||
{ If not Self.PopupVisible then
|
{ If not Self.PopupVisible then
|
||||||
DoButtonClick(Self);}
|
DoButtonClick(Self);}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.Click;
|
procedure TRxCustomDBLookupCombo.Click;
|
||||||
begin
|
begin
|
||||||
inherited Click;
|
inherited Click;
|
||||||
If not Self.PopupVisible then
|
If not Self.PopupVisible then
|
||||||
DoButtonClick(Self);
|
DoButtonClick(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.Paint;
|
procedure TRxCustomDBLookupCombo.Paint;
|
||||||
var
|
var
|
||||||
Selected:boolean;
|
Selected:boolean;
|
||||||
@ -1217,6 +1337,12 @@ begin
|
|||||||
SetRect(R1, 3, 3, ClientWidth - 3, ClientHeight - 3);
|
SetRect(R1, 3, 3, ClientWidth - 3, ClientHeight - 3);
|
||||||
Canvas.FillRect(R1);
|
Canvas.FillRect(R1);
|
||||||
R.Right:=R.Right - GetButtonWidth;
|
R.Right:=R.Right - GetButtonWidth;
|
||||||
|
if PopupVisible and (Caption<>'') then
|
||||||
|
begin
|
||||||
|
AText:=Caption;
|
||||||
|
Canvas.TextRect(R, TextMargin, Max(0, (HeightOf(R) - Canvas.TextHeight('Wg')) div 2), AText);
|
||||||
|
end
|
||||||
|
else
|
||||||
if FDisplayAll then
|
if FDisplayAll then
|
||||||
PaintDisplayValues(Canvas, R, TextMargin)
|
PaintDisplayValues(Canvas, R, TextMargin)
|
||||||
else
|
else
|
||||||
@ -1241,6 +1367,7 @@ procedure TRxCustomDBLookupCombo.LookupDataSetChanged(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
if PopupVisible then
|
if PopupVisible then
|
||||||
begin
|
begin
|
||||||
|
FSuccesfullyFind := true;
|
||||||
UpdateFieldValues;
|
UpdateFieldValues;
|
||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
@ -1260,6 +1387,7 @@ begin
|
|||||||
DataSet := FLookupDataLink.DataSet;
|
DataSet := FLookupDataLink.DataSet;
|
||||||
FKeyField := DataSet.FieldByName(FLookupField);
|
FKeyField := DataSet.FieldByName(FLookupField);
|
||||||
FListActive := True;
|
FListActive := True;
|
||||||
|
FDisplayField := FLookupDataLink.DataSet.FieldByName(FFieldList[FLookupDisplayIndex]);
|
||||||
end;
|
end;
|
||||||
FLocateObject.DataSet := DataSet;
|
FLocateObject.DataSet := DataSet;
|
||||||
|
|
||||||
@ -1268,6 +1396,32 @@ begin
|
|||||||
else KeyValueChanged;
|
else KeyValueChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TRxCustomDBLookupCombo.SetValue(const Value: string);
|
||||||
|
begin
|
||||||
|
if (Value <> FValue) then
|
||||||
|
begin
|
||||||
|
if FListActive and not ReadOnly and (FDataLink.DataSource <> nil) and FDataLink.Edit then
|
||||||
|
FDataField.AsString := Value
|
||||||
|
else
|
||||||
|
SetValueKey(Value);
|
||||||
|
if Assigned(FOnSelect) then
|
||||||
|
FOnSelect(Self);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TRxCustomDBLookupCombo.GetKeyValue: Variant;
|
||||||
|
begin
|
||||||
|
if Value = FEmptyValue then
|
||||||
|
Result := null
|
||||||
|
else
|
||||||
|
Result := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRxCustomDBLookupCombo.SetKeyValue(const Value: Variant);
|
||||||
|
begin
|
||||||
|
Self.Value := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TRxCustomDBLookupCombo.Create(AOwner: TComponent);
|
constructor TRxCustomDBLookupCombo.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
@ -1389,7 +1543,7 @@ end;
|
|||||||
procedure TRxDBLookupCombo.OnClosePopup(AResult: boolean);
|
procedure TRxDBLookupCombo.OnClosePopup(AResult: boolean);
|
||||||
begin
|
begin
|
||||||
inherited OnClosePopup(AResult);
|
inherited OnClosePopup(AResult);
|
||||||
SetFocus;
|
// SetFocus;
|
||||||
{ if (Owner is TWinControl) then
|
{ if (Owner is TWinControl) then
|
||||||
TWinControl(Owner).Repaint
|
TWinControl(Owner).Repaint
|
||||||
else
|
else
|
||||||
|
@ -207,10 +207,6 @@ implementation
|
|||||||
|
|
||||||
uses Forms, rxdconst, dbconst, Variants;
|
uses Forms, rxdconst, dbconst, Variants;
|
||||||
|
|
||||||
resourcestring
|
|
||||||
SMemNoRecords = 'No data found';
|
|
||||||
SInvalidFields = 'No fields defined';
|
|
||||||
|
|
||||||
const
|
const
|
||||||
ftBlobTypes = [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle,
|
ftBlobTypes = [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle,
|
||||||
ftDBaseOle, ftTypedBinary, ftOraBlob, ftOraClob];
|
ftDBaseOle, ftTypedBinary, ftOraBlob, ftOraClob];
|
||||||
|
@ -26,7 +26,7 @@ translate to Lazarus by alexs in 2005 - 2009
|
|||||||
<License Value="free ware
|
<License Value="free ware
|
||||||
"/>
|
"/>
|
||||||
<Version Major="2" Minor="1" Release="1" Build="103"/>
|
<Version Major="2" Minor="1" Release="1" Build="103"/>
|
||||||
<Files Count="51">
|
<Files Count="54">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="rxlookup.pas"/>
|
<Filename Value="rxlookup.pas"/>
|
||||||
<UnitName Value="rxlookup"/>
|
<UnitName Value="rxlookup"/>
|
||||||
@ -233,7 +233,23 @@ translate to Lazarus by alexs in 2005 - 2009
|
|||||||
<Filename Value="rxdbctrls.pas"/>
|
<Filename Value="rxdbctrls.pas"/>
|
||||||
<UnitName Value="RxDBCtrls"/>
|
<UnitName Value="RxDBCtrls"/>
|
||||||
</Item51>
|
</Item51>
|
||||||
|
<Item52>
|
||||||
|
<Filename Value="rxfilterby.lfm"/>
|
||||||
|
<Type Value="LFM"/>
|
||||||
|
</Item52>
|
||||||
|
<Item53>
|
||||||
|
<Filename Value="rxfilterby.lrs"/>
|
||||||
|
<Type Value="LRS"/>
|
||||||
|
</Item53>
|
||||||
|
<Item54>
|
||||||
|
<Filename Value="rxfilterby.pas"/>
|
||||||
|
<UnitName Value="rxfilterby"/>
|
||||||
|
</Item54>
|
||||||
</Files>
|
</Files>
|
||||||
|
<i18n>
|
||||||
|
<EnableI18N Value="True"/>
|
||||||
|
<OutDir Value="languages"/>
|
||||||
|
</i18n>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
<RequiredPkgs Count="4">
|
<RequiredPkgs Count="4">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
@ -16,7 +16,7 @@ uses
|
|||||||
rxdbgrid_findunit, rxdbgrid_columsunit, rxpopupunit, rxcustomchartpanel,
|
rxdbgrid_findunit, rxdbgrid_columsunit, rxpopupunit, rxcustomchartpanel,
|
||||||
rxsortmemds, AutoPanel, pickdate, rxiconv, rxceEditLookupFields, rxclock,
|
rxsortmemds, AutoPanel, pickdate, rxiconv, rxceEditLookupFields, rxclock,
|
||||||
rxspin, RxDBSpinEdit, RegisterRxDB, RxTimeEdit, RxDBTimeEdit, RxDBCtrls,
|
rxspin, RxDBSpinEdit, RegisterRxDB, RxTimeEdit, RxDBTimeEdit, RxDBCtrls,
|
||||||
LazarusPackageIntf;
|
rxfilterby, LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -167,6 +167,7 @@ type
|
|||||||
FOnPopUpCloseEvent:TPopUpCloseEvent;
|
FOnPopUpCloseEvent:TPopUpCloseEvent;
|
||||||
FPopUpFormOptions:TPopUpFormOptions;
|
FPopUpFormOptions:TPopUpFormOptions;
|
||||||
FRowCount:word;
|
FRowCount:word;
|
||||||
|
WControl:TWinControl;
|
||||||
function GetDataSet: TDataSet;
|
function GetDataSet: TDataSet;
|
||||||
function GetLookupDisplayIndex: integer;
|
function GetLookupDisplayIndex: integer;
|
||||||
procedure SetDataSet(const AValue: TDataSet);
|
procedure SetDataSet(const AValue: TDataSet);
|
||||||
@ -210,6 +211,9 @@ begin
|
|||||||
Result.DataSet:=ADataSet;
|
Result.DataSet:=ADataSet;
|
||||||
Result.LookupDisplayIndex:=ALookupDisplayIndex;
|
Result.LookupDisplayIndex:=ALookupDisplayIndex;
|
||||||
|
|
||||||
|
AControl.Caption:='';
|
||||||
|
Result.WControl:=AControl;
|
||||||
|
|
||||||
if Assigned(Font) then
|
if Assigned(Font) then
|
||||||
begin
|
begin
|
||||||
Result.FGrid.Font.Assign(Font);
|
Result.FGrid.Font.Assign(Font);
|
||||||
@ -217,11 +221,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF LINUX}
|
{$IFDEF LINUX}
|
||||||
if Result.ShowModal = mrOk then
|
{ if Result.ShowModal = mrOk then
|
||||||
if Assigned(AOnPopUpCloseEvent) then
|
if Assigned(AOnPopUpCloseEvent) then
|
||||||
AOnPopUpCloseEvent(true);
|
AOnPopUpCloseEvent(true);
|
||||||
Result.Free;
|
Result.Free;
|
||||||
Result:=nil;
|
Result:=nil;}
|
||||||
{$ELSE LINUX}
|
{$ELSE LINUX}
|
||||||
Result.Show;
|
Result.Show;
|
||||||
Result.FGrid.UpdateActive;
|
Result.FGrid.UpdateActive;
|
||||||
@ -293,7 +297,7 @@ begin
|
|||||||
inherited KeyDown(Key, Shift);
|
inherited KeyDown(Key, Shift);
|
||||||
end;
|
end;
|
||||||
FGrid.KeyDown(Key, Shift);
|
FGrid.KeyDown(Key, Shift);
|
||||||
Key:=0;
|
// Key:=0;
|
||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -759,27 +763,67 @@ end;
|
|||||||
|
|
||||||
procedure TPopUpGrid.ClearFind;
|
procedure TPopUpGrid.ClearFind;
|
||||||
begin
|
begin
|
||||||
|
TPopUpForm(Owner).WControl.Caption:=' ';
|
||||||
|
TPopUpForm(Owner).WControl.Repaint;
|
||||||
FFindLine:='';
|
FFindLine:='';
|
||||||
if DatalinkActive then
|
if DatalinkActive then
|
||||||
DataSource.DataSet.First;
|
DataSource.DataSet.First;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPopUpGrid.FindNextChar(AChar: Char);
|
procedure TPopUpGrid.FindNextChar(AChar: Char);
|
||||||
|
var
|
||||||
|
F:string;
|
||||||
begin
|
begin
|
||||||
FFindLine:=FFindLine + AChar;
|
FFindLine:=FFindLine + AChar;
|
||||||
if DatalinkActive then
|
if DatalinkActive then
|
||||||
DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey]);
|
{ if true then
|
||||||
|
begin}
|
||||||
|
if DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey]) then
|
||||||
|
begin
|
||||||
|
TPopUpForm(Owner).WControl.Caption:=FFindLine;
|
||||||
|
TPopUpForm(Owner).WControl.Repaint;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
FFindLine:=F;
|
||||||
|
{ end
|
||||||
|
else
|
||||||
|
DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey]);}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPopUpGrid.FindPriorChar;
|
procedure TPopUpGrid.FindPriorChar;
|
||||||
|
var
|
||||||
|
F:string;
|
||||||
begin
|
begin
|
||||||
if FFindLine = '' then exit;
|
if FFindLine = '' then exit;
|
||||||
|
F:=FFindLine;
|
||||||
Delete(FFindLine, Length(FFindLine), 1);
|
Delete(FFindLine, Length(FFindLine), 1);
|
||||||
if DatalinkActive then
|
if DatalinkActive then
|
||||||
|
if (FFindLine<>'') then
|
||||||
|
begin
|
||||||
|
if true then
|
||||||
|
begin
|
||||||
|
if DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey]) then
|
||||||
|
begin
|
||||||
|
TPopUpForm(Owner).WControl.Caption:=FFindLine;
|
||||||
|
TPopUpForm(Owner).WControl.Repaint;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
FFindLine:=F;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey])
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
TPopUpForm(Owner).WControl.Caption:=' ';
|
||||||
|
TPopUpForm(Owner).WControl.Repaint;
|
||||||
|
DataSource.DataSet.First;
|
||||||
|
end;
|
||||||
|
{ if DatalinkActive then
|
||||||
if (FFindLine<>'') then
|
if (FFindLine<>'') then
|
||||||
DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey])
|
DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey])
|
||||||
else
|
else
|
||||||
DataSource.DataSet.First;
|
DataSource.DataSet.First;}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPopUpGrid.SetLookupDisplayIndex(const AValue: integer);
|
procedure TPopUpGrid.SetLookupDisplayIndex(const AValue: integer);
|
||||||
@ -791,6 +835,12 @@ end;
|
|||||||
procedure TPopUpGrid.KeyPress(var Key: char);
|
procedure TPopUpGrid.KeyPress(var Key: char);
|
||||||
begin
|
begin
|
||||||
inherited KeyPress(Key);
|
inherited KeyPress(Key);
|
||||||
|
if (Columns[FLookupDisplayIndex].Field.DataType<>ftString) and not (Key in ['0'..'9']) then
|
||||||
|
Exit
|
||||||
|
else
|
||||||
|
if Key=#32 then
|
||||||
|
FindNextChar(Key)
|
||||||
|
else
|
||||||
if Key>#32 then
|
if Key>#32 then
|
||||||
FindNextChar(Key)
|
FindNextChar(Key)
|
||||||
else
|
else
|
||||||
@ -800,6 +850,32 @@ end;
|
|||||||
|
|
||||||
procedure TPopUpGrid.KeyDown(var Key: Word; Shift: TShiftState);
|
procedure TPopUpGrid.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
|
if true then
|
||||||
|
begin
|
||||||
|
if Key = VK_DELETE then
|
||||||
|
begin
|
||||||
|
ClearFind;
|
||||||
|
Key:=0;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if Key = VK_BACK then
|
||||||
|
begin
|
||||||
|
FindPriorChar;
|
||||||
|
Key:=0;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if Key in [VK_UP,VK_DOWN,VK_PRIOR,VK_NEXT] then
|
||||||
|
begin
|
||||||
|
FFindLine:='';
|
||||||
|
TPopUpForm(Owner).WControl.Caption:='';
|
||||||
|
TPopUpForm(Owner).WControl.Repaint;
|
||||||
|
end;
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
{ else
|
||||||
if (Key>=Ord('0')) and (Key<=Ord('9')) then
|
if (Key>=Ord('0')) and (Key<=Ord('9')) then
|
||||||
FindNextChar(Char(Key))
|
FindNextChar(Char(Key))
|
||||||
else
|
else
|
||||||
@ -816,7 +892,7 @@ begin
|
|||||||
inherited KeyDown(Key, Shift);
|
inherited KeyDown(Key, Shift);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
Key:=0;
|
Key:=0;}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
241
components/rx/rxsortby.lfm
Normal file
241
components/rx/rxsortby.lfm
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
object rxSortByForm: TrxSortByForm
|
||||||
|
Left = 450
|
||||||
|
Height = 337
|
||||||
|
Top = 270
|
||||||
|
Width = 583
|
||||||
|
ActiveControl = AddBtn
|
||||||
|
Caption = 'Sort by fields'
|
||||||
|
ClientHeight = 337
|
||||||
|
ClientWidth = 583
|
||||||
|
OnClose = FormClose
|
||||||
|
OnCreate = FormCreate
|
||||||
|
Position = poScreenCenter
|
||||||
|
LCLVersion = '0.9.27'
|
||||||
|
object Label1: TLabel
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Owner
|
||||||
|
Left = 6
|
||||||
|
Height = 18
|
||||||
|
Top = 6
|
||||||
|
Width = 131
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = '&Fields for sorting:'
|
||||||
|
FocusControl = ListBox1
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
AnchorSideLeft.Control = AddBtn
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Owner
|
||||||
|
Left = 352
|
||||||
|
Height = 18
|
||||||
|
Top = 6
|
||||||
|
Width = 75
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = '&All fields:'
|
||||||
|
FocusControl = ListBox2
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label4: TLabel
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideBottom.Control = ComboBox1
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 18
|
||||||
|
Top = 265
|
||||||
|
Width = 116
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
Caption = 'Select sort order'
|
||||||
|
FocusControl = ComboBox1
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object ListBox2: TListBox
|
||||||
|
AnchorSideLeft.Control = AddBtn
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = ComboBox1
|
||||||
|
Left = 352
|
||||||
|
Height = 216
|
||||||
|
Top = 30
|
||||||
|
Width = 225
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
OnDblClick = ListBox2DblClick
|
||||||
|
TabOrder = 0
|
||||||
|
TopIndex = -1
|
||||||
|
end
|
||||||
|
object RemoveBtn: TBitBtn
|
||||||
|
AnchorSideLeft.Control = AddBtn
|
||||||
|
AnchorSideTop.Control = AddBtn
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = AddBtn
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 197
|
||||||
|
Height = 35
|
||||||
|
Top = 71
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
Caption = '&Remove'
|
||||||
|
Glyph.Data = {
|
||||||
|
8A010000424D8A01000000000000760000002800000018000000170000000100
|
||||||
|
0400000000001401000000000000000000001000000010000000000000000000
|
||||||
|
80000080000000808000800000008000800080800000C0C0C000808080000000
|
||||||
|
C80000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777
|
||||||
|
7777777777777777777777877777777777777777777777007777777777777777
|
||||||
|
7777770907777777777777777777770990777777777777777777770999077777
|
||||||
|
7777777777777709999077777777777800000009999907777777777099999999
|
||||||
|
9999907777777770999999999999990777777770999999999999999077777770
|
||||||
|
9999999999999999F7777770999999999999999F7777777099999999999999F7
|
||||||
|
777777709999999999999F7777777778FFFFFF899999F7777777777777777789
|
||||||
|
999F7777777777777777778999F7777777777777777777899F77777777777777
|
||||||
|
77777789F7777777777777777777778F7777777777777777777777F777777777
|
||||||
|
7777777777777777777777777777
|
||||||
|
}
|
||||||
|
Layout = blGlyphRight
|
||||||
|
NumGlyphs = 0
|
||||||
|
OnClick = RemoveBtnClick
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object UpBtn: TBitBtn
|
||||||
|
AnchorSideLeft.Control = AddBtn
|
||||||
|
AnchorSideTop.Control = RemoveBtn
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = AddBtn
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 197
|
||||||
|
Height = 36
|
||||||
|
Top = 112
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
Caption = 'M&ove up'
|
||||||
|
Glyph.Data = {
|
||||||
|
96010000424D9601000000000000760000002800000017000000180000000100
|
||||||
|
0400000000002001000000000000000000001000000010000000000000000000
|
||||||
|
80000080000000808000800000008000800080800000C0C0C000808080000000
|
||||||
|
C80000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777
|
||||||
|
7777777777707777777777777777777777707777777777777777777777707777
|
||||||
|
77780000000877777770777777709999999F77777770777777709999999F7777
|
||||||
|
7770777777709999999F77777770777777709999999F77777770777777709999
|
||||||
|
999F77777770777777709999999F77777770780000009999999888888F707709
|
||||||
|
9999999999999999F7707770999999999999999F7770777709999999999999F7
|
||||||
|
777077777099999999999F7777707777770999999999F7777770777777709999
|
||||||
|
999F7777777077777777099999F7777777707777777770999F77777777707777
|
||||||
|
77777709F7777777777077777777777F77777777777077777777777777777777
|
||||||
|
7770777777777777777777777770777777777777777777777770
|
||||||
|
}
|
||||||
|
NumGlyphs = 0
|
||||||
|
OnClick = UpBtnClick
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object DownBtn: TBitBtn
|
||||||
|
AnchorSideLeft.Control = AddBtn
|
||||||
|
AnchorSideTop.Control = UpBtn
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = AddBtn
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 197
|
||||||
|
Height = 36
|
||||||
|
Top = 154
|
||||||
|
Width = 149
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
Caption = '&Move down'
|
||||||
|
Glyph.Data = {
|
||||||
|
96010000424D9601000000000000760000002800000017000000180000000100
|
||||||
|
0400000000002001000000000000000000001000000010000000000000000000
|
||||||
|
80000080000000808000800000008000800080800000C0C0C000808080000000
|
||||||
|
C80000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777
|
||||||
|
7777777777707777777777777777777777707777777777777777777777707777
|
||||||
|
7777777F777777777770777777777709F777777777707777777770999F777777
|
||||||
|
777077777777099999F777777770777777709999999F77777770777777099999
|
||||||
|
9999F777777077777099999999999F777770777709999999999999F777707770
|
||||||
|
999999999999999F777077099999999999999999F77078000000999999988888
|
||||||
|
8F70777777709999999F77777770777777709999999F77777770777777709999
|
||||||
|
999F77777770777777709999999F77777770777777709999999F777777707777
|
||||||
|
77709999999F7777777077777778000000087777777077777777777777777777
|
||||||
|
7770777777777777777777777770777777777777777777777770
|
||||||
|
}
|
||||||
|
NumGlyphs = 0
|
||||||
|
OnClick = DownBtnClick
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object ComboBox1: TComboBox
|
||||||
|
AnchorSideLeft.Control = Label4
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = ButtonPanel1
|
||||||
|
Left = 128
|
||||||
|
Height = 31
|
||||||
|
Top = 252
|
||||||
|
Width = 449
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
|
object ListBox1: TListBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = ComboBox1
|
||||||
|
Left = 6
|
||||||
|
Height = 216
|
||||||
|
Top = 30
|
||||||
|
Width = 185
|
||||||
|
Anchors = [akTop, akLeft, akBottom]
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
OnDblClick = ListBox1DblClick
|
||||||
|
TabOrder = 6
|
||||||
|
TopIndex = -1
|
||||||
|
end
|
||||||
|
object AddBtn: TBitBtn
|
||||||
|
AnchorSideLeft.Control = ListBox1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = ListBox1
|
||||||
|
Left = 197
|
||||||
|
Height = 35
|
||||||
|
Top = 30
|
||||||
|
Width = 149
|
||||||
|
AutoSize = True
|
||||||
|
Caption = '&Add field to sort'
|
||||||
|
Glyph.Data = {
|
||||||
|
8A010000424D8A01000000000000760000002800000018000000170000000100
|
||||||
|
0400000000001401000000000000000000001000000010000000000000000000
|
||||||
|
80000080000000808000800000008000800080800000C0C0C000808080000000
|
||||||
|
C80000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777
|
||||||
|
7777777777777777777777777877777777777777777777770077777777777777
|
||||||
|
7777777090777777777777777777770990777777777777777777709990777777
|
||||||
|
7777777777770999907777777777777777709999900000008777777777099999
|
||||||
|
999999990777777770999999999999990777777709999999999999990777777F
|
||||||
|
999999999999999907777777F999999999999999077777777F99999999999999
|
||||||
|
0777777777F999999999999907777777777F999998FFFFFF877777777777F999
|
||||||
|
987777777777777777777F999877777777777777777777F99877777777777777
|
||||||
|
7777777F987777777777777777777777F877777777777777777777777F777777
|
||||||
|
7777777777777777777777777777
|
||||||
|
}
|
||||||
|
NumGlyphs = 0
|
||||||
|
OnClick = AddBtnClick
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object ButtonPanel1: TButtonPanel
|
||||||
|
Left = 6
|
||||||
|
Height = 42
|
||||||
|
Top = 289
|
||||||
|
Width = 571
|
||||||
|
TabOrder = 7
|
||||||
|
ShowButtons = [pbOK, pbCancel, pbHelp]
|
||||||
|
end
|
||||||
|
end
|
112
components/rx/rxsortby.lrs
Normal file
112
components/rx/rxsortby.lrs
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
{ Este es un archivo de recurso de Lazarus generado automáticamente }
|
||||||
|
|
||||||
|
LazarusResources.Add('TrxSortByForm','FORMDATA',[
|
||||||
|
'TPF0'#13'TrxSortByForm'#12'rxSortByForm'#4'Left'#3#194#1#6'Height'#3'Q'#1#3
|
||||||
|
+'Top'#3#14#1#5'Width'#3'G'#2#13'ActiveControl'#7#6'AddBtn'#7'Caption'#6#14'S'
|
||||||
|
+'ort by fields'#12'ClientHeight'#3'Q'#1#11'ClientWidth'#3'G'#2#7'OnClose'#7#9
|
||||||
|
+'FormClose'#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#10
|
||||||
|
+'LCLVersion'#6#6'0.9.27'#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#5
|
||||||
|
+'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#6#6'Height'#2#18#3'To'
|
||||||
|
+'p'#2#6#5'Width'#3#131#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#20'&Field'
|
||||||
|
+'s for sorting:'#12'FocusControl'#7#8'ListBox1'#11'ParentColor'#8#0#0#6'TLab'
|
||||||
|
+'el'#6'Label2'#22'AnchorSideLeft.Control'#7#6'AddBtn'#19'AnchorSideLeft.Side'
|
||||||
|
+#7#9'asrBottom'#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#3'`'#1#6'Height'
|
||||||
|
+#2#18#3'Top'#2#6#5'Width'#2'K'#20'BorderSpacing.Around'#2#6#7'Caption'#6#12
|
||||||
|
+'&All fields:'#12'FocusControl'#7#8'ListBox2'#11'ParentColor'#8#0#0#6'TLabel'
|
||||||
|
+#6'Label4'#22'AnchorSideLeft.Control'#7#5'Owner'#24'AnchorSideBottom.Control'
|
||||||
|
+#7#9'ComboBox1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Heigh'
|
||||||
|
+'t'#2#18#3'Top'#3#9#1#5'Width'#2't'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#18
|
||||||
|
+'BorderSpacing.Left'#2#6#7'Caption'#6#17'Select sort order'#12'FocusControl'
|
||||||
|
+#7#9'ComboBox1'#11'ParentColor'#8#0#0#8'TListBox'#8'ListBox2'#22'AnchorSideL'
|
||||||
|
+'eft.Control'#7#6'AddBtn'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSi'
|
||||||
|
+'deTop.Control'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorS'
|
||||||
|
+'ideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'Anc'
|
||||||
|
+'horSideBottom.Control'#7#9'ComboBox1'#4'Left'#3'`'#1#6'Height'#3#216#0#3'To'
|
||||||
|
+'p'#2#30#5'Width'#3#225#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBo'
|
||||||
|
+'ttom'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#10'OnDblClick'#7#16
|
||||||
|
+'ListBox2DblClick'#8'TabOrder'#2#0#8'TopIndex'#2#255#0#0#7'TBitBtn'#9'Remove'
|
||||||
|
+'Btn'#22'AnchorSideLeft.Control'#7#6'AddBtn'#21'AnchorSideTop.Control'#7#6'A'
|
||||||
|
+'ddBtn'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#6
|
||||||
|
+'AddBtn'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#197#0#6'Height'#2
|
||||||
|
+'#'#3'Top'#2'G'#5'Width'#3#149#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
|
||||||
|
+#0#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6#7'&Remove'#10'Glyph.'
|
||||||
|
+'Data'#10#142#1#0#0#138#1#0#0'BM'#138#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#24#0#0
|
||||||
|
+#0#23#0#0#0#1#0#4#0#0#0#0#0#20#1#0#0#0#0#0#0#0#0#0#0#16#0#0#0#16#0#0#0#0#0#0
|
||||||
|
+#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192
|
||||||
|
+#192#0#128#128#128#0#0#0#200#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0
|
||||||
|
+#255#255#0#0#255#255#255#0'wwwwwwwwwwwwwwwww'#135'wwwwwwwwwww'#0'wwwwwwwwwww'
|
||||||
|
+#9#7'wwwwwwwwww'#9#144'wwwwwwwwww'#9#153#7'wwwwwwwww'#9#153#144'wwwwwx'#0#0#0
|
||||||
|
+#9#153#153#7'wwwwp'#153#153#153#153#153#153#144'wwwwp'#153#153#153#153#153
|
||||||
|
+#153#153#7'wwwp'#153#153#153#153#153#153#153#144'wwwp'#153#153#153#153#153
|
||||||
|
+#153#153#153#247'wwp'#153#153#153#153#153#153#153#159'wwwp'#153#153#153#153
|
||||||
|
+#153#153#153#247'wwwp'#153#153#153#153#153#153#159'wwwwx'#255#255#255#137#153
|
||||||
|
+#153#247'wwwwwwww'#137#153#159'wwwwwwwww'#137#153#247'wwwwwwwww'#137#159'www'
|
||||||
|
+'wwwwwww'#137#247'wwwwwwwwww'#143'wwwwwwwwwww'#247'wwwwwwwwwwwwwwwwww'#6'Lay'
|
||||||
|
+'out'#7#12'blGlyphRight'#9'NumGlyphs'#2#0#7'OnClick'#7#14'RemoveBtnClick'#8
|
||||||
|
+'TabOrder'#2#2#0#0#7'TBitBtn'#5'UpBtn'#22'AnchorSideLeft.Control'#7#6'AddBtn'
|
||||||
|
+#21'AnchorSideTop.Control'#7#9'RemoveBtn'#18'AnchorSideTop.Side'#7#9'asrBott'
|
||||||
|
+'om'#23'AnchorSideRight.Control'#7#6'AddBtn'#20'AnchorSideRight.Side'#7#9'as'
|
||||||
|
+'rBottom'#4'Left'#3#197#0#6'Height'#2'$'#3'Top'#2'p'#5'Width'#3#149#0#7'Anch'
|
||||||
|
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#17'BorderSpacing.Top'
|
||||||
|
+#2#6#7'Caption'#6#8'M&ove up'#10'Glyph.Data'#10#154#1#0#0#150#1#0#0'BM'#150#1
|
||||||
|
+#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#23#0#0#0#24#0#0#0#1#0#4#0#0#0#0#0' '#1#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0
|
||||||
|
+#0#0#128#0#128#0#128#128#0#0#192#192#192#0#128#128#128#0#0#0#200#0#0#255#0#0
|
||||||
|
+#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0'wwwwwwwwwwwpwww'
|
||||||
|
+'wwwwwwwwpwwwwwwwwwwwpwwwx'#0#0#0#8'wwwpwwwp'#153#153#153#159'wwwpwwwp'#153
|
||||||
|
+#153#153#159'wwwpwwwp'#153#153#153#159'wwwpwwwp'#153#153#153#159'wwwpwwwp'
|
||||||
|
+#153#153#153#159'wwwpwwwp'#153#153#153#159'wwwpx'#0#0#0#153#153#153#152#136
|
||||||
|
+#136#143'pw'#9#153#153#153#153#153#153#153#153#247'pwp'#153#153#153#153#153
|
||||||
|
+#153#153#159'wpww'#9#153#153#153#153#153#153#247'wpwwp'#153#153#153#153#153
|
||||||
|
+#159'wwpwww'#9#153#153#153#153#247'wwpwwwp'#153#153#153#159'wwwpwwww'#9#153
|
||||||
|
+#153#247'wwwpwwwwp'#153#159'wwwwpwwwww'#9#247'wwwwpwwwwwwwwwwpwwwwwwwwwwwpw'
|
||||||
|
+'wwwwwwwwwwpwwwwwwwwwwwp'#9'NumGlyphs'#2#0#7'OnClick'#7#10'UpBtnClick'#8'Tab'
|
||||||
|
+'Order'#2#3#0#0#7'TBitBtn'#7'DownBtn'#22'AnchorSideLeft.Control'#7#6'AddBtn'
|
||||||
|
+#21'AnchorSideTop.Control'#7#5'UpBtn'#18'AnchorSideTop.Side'#7#9'asrBottom'
|
||||||
|
+#23'AnchorSideRight.Control'#7#6'AddBtn'#20'AnchorSideRight.Side'#7#9'asrBot'
|
||||||
|
+'tom'#4'Left'#3#197#0#6'Height'#2'$'#3'Top'#3#154#0#5'Width'#3#149#0#7'Ancho'
|
||||||
|
,'rs'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#17'BorderSpacing.Top'#2
|
||||||
|
+#6#7'Caption'#6#10'&Move down'#10'Glyph.Data'#10#154#1#0#0#150#1#0#0'BM'#150
|
||||||
|
+#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#23#0#0#0#24#0#0#0#1#0#4#0#0#0#0#0' '#1#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128
|
||||||
|
+#0#0#0#128#0#128#0#128#128#0#0#192#192#192#0#128#128#128#0#0#0#200#0#0#255#0
|
||||||
|
+#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0'wwwwwwwwwwwpw'
|
||||||
|
+'wwwwwwwwwwpwwwwwwwwwwwpwwwwwwwwwwpwwwww'#9#247'wwwwpwwwwp'#153#159'wwwwpww'
|
||||||
|
+'ww'#9#153#153#247'wwwpwwwp'#153#153#153#159'wwwpwww'#9#153#153#153#153#247
|
||||||
|
+'wwpwwp'#153#153#153#153#153#159'wwpww'#9#153#153#153#153#153#153#247'wpwp'
|
||||||
|
+#153#153#153#153#153#153#153#159'wpw'#9#153#153#153#153#153#153#153#153#247
|
||||||
|
+'px'#0#0#0#153#153#153#152#136#136#143'pwwwp'#153#153#153#159'wwwpwwwp'#153
|
||||||
|
+#153#153#159'wwwpwwwp'#153#153#153#159'wwwpwwwp'#153#153#153#159'wwwpwwwp'
|
||||||
|
+#153#153#153#159'wwwpwwwp'#153#153#153#159'wwwpwwwx'#0#0#0#8'wwwpwwwwwwwwwww'
|
||||||
|
+'pwwwwwwwwwwwpwwwwwwwwwwwp'#9'NumGlyphs'#2#0#7'OnClick'#7#12'DownBtnClick'#8
|
||||||
|
+'TabOrder'#2#4#0#0#9'TComboBox'#9'ComboBox1'#22'AnchorSideLeft.Control'#7#6
|
||||||
|
+'Label4'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7
|
||||||
|
+#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Contro'
|
||||||
|
+'l'#7#12'ButtonPanel1'#4'Left'#3#128#0#6'Height'#2#31#3'Top'#3#252#0#5'Width'
|
||||||
|
+#3#193#1#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0#20'BorderSpacing.A'
|
||||||
|
+'round'#2#6#10'ItemHeight'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#5
|
||||||
|
+#0#0#8'TListBox'#8'ListBox1'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anchor'
|
||||||
|
+'SideTop.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#24'Ancho'
|
||||||
|
+'rSideBottom.Control'#7#9'ComboBox1'#4'Left'#2#6#6'Height'#3#216#0#3'Top'#2
|
||||||
|
+#30#5'Width'#3#185#0#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#20'Borde'
|
||||||
|
+'rSpacing.Around'#2#6#10'ItemHeight'#2#0#10'OnDblClick'#7#16'ListBox1DblClic'
|
||||||
|
+'k'#8'TabOrder'#2#6#8'TopIndex'#2#255#0#0#7'TBitBtn'#6'AddBtn'#22'AnchorSide'
|
||||||
|
+'Left.Control'#7#8'ListBox1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'Ancho'
|
||||||
|
+'rSideTop.Control'#7#8'ListBox1'#4'Left'#3#197#0#6'Height'#2'#'#3'Top'#2#30#5
|
||||||
|
+'Width'#3#149#0#8'AutoSize'#9#7'Caption'#6#18'&Add field to sort'#10'Glyph.D'
|
||||||
|
+'ata'#10#142#1#0#0#138#1#0#0'BM'#138#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0#24#0#0#0
|
||||||
|
+#23#0#0#0#1#0#4#0#0#0#0#0#20#1#0#0#0#0#0#0#0#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0
|
||||||
|
+#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192
|
||||||
|
+#192#0#128#128#128#0#0#0#200#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0
|
||||||
|
+#255#255#0#0#255#255#255#0'wwwwwwwwwwwwwwwwwwxwwwwwwwwwww'#0'wwwwwwwwwwp'#144
|
||||||
|
+'wwwwwwwwww'#9#144'wwwwwwwwwp'#153#144'wwwwwwwww'#9#153#144'wwwwwwwwp'#153
|
||||||
|
+#153#144#0#0#0#135'wwww'#9#153#153#153#153#153#153#7'wwwp'#153#153#153#153
|
||||||
|
+#153#153#153#7'www'#9#153#153#153#153#153#153#153#7'ww'#153#153#153#153#153
|
||||||
|
+#153#153#153#7'www'#249#153#153#153#153#153#153#153#7'www'#153#153#153#153
|
||||||
|
+#153#153#153#7'wwww'#249#153#153#153#153#153#153#7'wwww'#153#153#152#255#255
|
||||||
|
+#255#135'wwwww'#249#153#152'wwwwwwwww'#153#152'wwwwwwwwww'#249#152'wwwwwwww'
|
||||||
|
+'ww'#152'wwwwwwwwwww'#248'wwwwwwwwwwwwwwwwwwwwwwwwwwww'#9'NumGlyphs'#2#0#7
|
||||||
|
+'OnClick'#7#11'AddBtnClick'#8'TabOrder'#2#1#0#0#12'TButtonPanel'#12'ButtonPa'
|
||||||
|
+'nel1'#4'Left'#2#6#6'Height'#2'*'#3'Top'#3'!'#1#5'Width'#3';'#2#8'TabOrder'#2
|
||||||
|
+#7#11'ShowButtons'#11#4'pbOK'#8'pbCancel'#6'pbHelp'#0#0#0#0
|
||||||
|
]);
|
10
components/rx/rxsortby.lrt
Normal file
10
components/rx/rxsortby.lrt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
TRXSORTBYFORM.CAPTION=rxSortByForm
|
||||||
|
TRXSORTBYFORM.LABEL1.CAPTION=&Orden de Ordenamiento :
|
||||||
|
TRXSORTBYFORM.LABEL2.CAPTION=&Campos Disponibles :
|
||||||
|
TRXSORTBYFORM.LABEL4.CAPTION=Seleccionar Dirección de Ordenamiento :
|
||||||
|
TRXSORTBYFORM.REMOVEBTN.CAPTION=&Eliminar
|
||||||
|
TRXSORTBYFORM.UPBTN.CAPTION=A&rriba
|
||||||
|
TRXSORTBYFORM.DOWNBTN.CAPTION=A&bajo
|
||||||
|
TRXSORTBYFORM.OKBUTTON.CAPTION=Aceptar
|
||||||
|
TRXSORTBYFORM.CANCELBUTTON.CAPTION=Cancelar
|
||||||
|
TRXSORTBYFORM.ADDBTN.CAPTION=&Adicionar
|
190
components/rx/rxsortby.pas
Normal file
190
components/rx/rxsortby.pas
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
unit rxsortby;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||||
|
StdCtrls, Buttons, ButtonPanel, db;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TrxSortByForm }
|
||||||
|
|
||||||
|
TrxSortByForm = class(TForm)
|
||||||
|
AddBtn: TBitBtn;
|
||||||
|
ButtonPanel1: TButtonPanel;
|
||||||
|
ComboBox1: TComboBox;
|
||||||
|
DownBtn: TBitBtn;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
Label4: TLabel;
|
||||||
|
ListBox1: TListBox;
|
||||||
|
ListBox2: TListBox;
|
||||||
|
RemoveBtn: TBitBtn;
|
||||||
|
UpBtn: TBitBtn;
|
||||||
|
procedure AddBtnClick(Sender: TObject);
|
||||||
|
procedure DownBtnClick(Sender: TObject);
|
||||||
|
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure ListBox1DblClick(Sender: TObject);
|
||||||
|
procedure ListBox2DblClick(Sender: TObject);
|
||||||
|
procedure RemoveBtnClick(Sender: TObject);
|
||||||
|
procedure UpBtnClick(Sender: TObject);
|
||||||
|
private
|
||||||
|
OrderListTemp: TStringList;
|
||||||
|
OrderAsc:boolean;
|
||||||
|
public
|
||||||
|
{ public declarations }
|
||||||
|
function Execute(adoTable : TDataSet; SortFieldNames:TStringList; var Asc:boolean):Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
rxSortByForm: TrxSortByForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses rxdconst;
|
||||||
|
|
||||||
|
{ TrxSortByForm }
|
||||||
|
|
||||||
|
procedure TrxSortByForm.DownBtnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
TmpField:String;
|
||||||
|
Poz : Integer;
|
||||||
|
begin
|
||||||
|
if ListBox1.ItemIndex < ListBox1.Items.Count-1 Then
|
||||||
|
begin
|
||||||
|
Poz:=ListBox1.ItemIndex;
|
||||||
|
TmpField:=ListBox1.Items[Poz+1];
|
||||||
|
ListBox1.Items[Poz+1]:=ListBox1.Items[Poz];
|
||||||
|
ListBox1.Items[Poz]:=TmpField;
|
||||||
|
ListBox1.ItemIndex:=Poz+1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxSortByForm.FormClose(Sender: TObject; var CloseAction: TCloseAction
|
||||||
|
);
|
||||||
|
var
|
||||||
|
X:Integer;
|
||||||
|
begin
|
||||||
|
if ModalResult = mrOk then
|
||||||
|
begin
|
||||||
|
OrderAsc:=(ComboBox1.ItemIndex=0);
|
||||||
|
OrderListTemp.Clear;
|
||||||
|
for X:=0 To ListBox1.Items.Count-1 do
|
||||||
|
OrderListTemp.Add(ListBox1.Items[X]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxSortByForm.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ComboBox1.Clear;
|
||||||
|
ComboBox1.Items.Add(sRxAscendign);
|
||||||
|
ComboBox1.Items.Add(sRxDescending);
|
||||||
|
Caption:=sRxSortByFormCaption;
|
||||||
|
Label2.Caption:=sRxSortByFormAllFields;
|
||||||
|
Label1.Caption:=sRxSortByFormSortFields;
|
||||||
|
Label4.Caption:=sRxSortByFormSortOrder;
|
||||||
|
AddBtn.Caption:=sRxSortByFormAddField;
|
||||||
|
RemoveBtn.Caption:=sRxSortByFormRemoveField;
|
||||||
|
UpBtn.Caption:=sRxSortByFormMoveUpField;
|
||||||
|
DownBtn.Caption:=sRxSortByFormMoveDnField;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxSortByForm.ListBox1DblClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
RemoveBtn.Click;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TrxSortByForm.ListBox2DblClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
AddBtn.Click;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TrxSortByForm.AddBtnClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if ListBox2.ItemIndex <> -1 Then
|
||||||
|
begin
|
||||||
|
ListBox1.Items.Add(ListBox2.Items.Strings[ListBox2.ItemIndex]);
|
||||||
|
ListBox2.Items.Delete(ListBox2.ItemIndex);
|
||||||
|
ListBox1.ItemIndex:=ListBox1.Items.Count-1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxSortByForm.RemoveBtnClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if ListBox1.ItemIndex <> -1 Then
|
||||||
|
begin
|
||||||
|
ListBox2.Items.Add(ListBox1.Items.Strings[ListBox1.ItemIndex]);
|
||||||
|
ListBox1.Items.Delete(ListBox1.ItemIndex);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TrxSortByForm.UpBtnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
TmpField:String;
|
||||||
|
Poz : Integer;
|
||||||
|
begin
|
||||||
|
if ListBox1.ItemIndex > 0 Then
|
||||||
|
begin
|
||||||
|
Poz:=ListBox1.ItemIndex;
|
||||||
|
TmpField:=ListBox1.Items[Poz-1];
|
||||||
|
ListBox1.Items[Poz-1]:=ListBox1.Items[Poz];
|
||||||
|
ListBox1.Items[Poz]:=TmpField;
|
||||||
|
ListBox1.ItemIndex:=Poz-1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function TrxSortByForm.Execute(adoTable : TDataSet; SortFieldNames: TStringList; var Asc:boolean): Boolean;
|
||||||
|
var
|
||||||
|
X,P : Integer;
|
||||||
|
S : String;
|
||||||
|
SortFieldNamesTmp : TStringList;
|
||||||
|
begin
|
||||||
|
Result:=False;
|
||||||
|
if not Asc then
|
||||||
|
ComboBox1.ItemIndex:=1
|
||||||
|
else
|
||||||
|
ComboBox1.ItemIndex:=0;
|
||||||
|
SortFieldNamesTmp:=TStringList.Create;
|
||||||
|
for X:=0 to adoTable.FieldDefs.Count-1 do
|
||||||
|
// If (NOT adoTable.FieldDefs[X].FieldClass.IsBlob) Then
|
||||||
|
SortFieldNamesTmp.Add(adoTable.FieldDefs.Items[X].Name);
|
||||||
|
if SortFieldNames.Count > 0 Then
|
||||||
|
begin
|
||||||
|
ListBox1.Clear;
|
||||||
|
for X:=0 To SortFieldNames.Count-1 Do
|
||||||
|
begin
|
||||||
|
S:=SortFieldNames.Strings[X];
|
||||||
|
ListBox1.Items.Add(S);
|
||||||
|
P:=SortFieldNamesTmp.IndexOF(SortFieldNames.Strings[X]);
|
||||||
|
if P > -1 then
|
||||||
|
SortFieldNamesTmp.Delete(P);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if SortFieldNamesTmp.Count > 0 then
|
||||||
|
begin
|
||||||
|
ListBox2.Clear;
|
||||||
|
for X:=0 To SortFieldNamesTmp.Count-1 do
|
||||||
|
ListBox2.Items.Add(SortFieldNamesTmp.Strings[X]);
|
||||||
|
end;
|
||||||
|
SortFieldNamesTmp.Free;
|
||||||
|
|
||||||
|
OrderListTemp:=SortFieldNames;
|
||||||
|
OrderAsc:=Asc;
|
||||||
|
if ShowModal = mrOK Then
|
||||||
|
begin
|
||||||
|
Asc:=OrderAsc;
|
||||||
|
Result:=True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
{$I rxsortby.lrs}
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -563,7 +563,7 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
Canvas.Font.Color := clBtnText;
|
Canvas.Font.Color := clWindowText;
|
||||||
if ((FLastDrawFlagsA and DFCS_FLAT) <> 0) and ((FLastDrawFlagsA and DFCS_PUSHED) = 0) and (TToolPanel(Parent).FToolBarStyle <> tbsWindowsXP)
|
if ((FLastDrawFlagsA and DFCS_FLAT) <> 0) and ((FLastDrawFlagsA and DFCS_PUSHED) = 0) and (TToolPanel(Parent).FToolBarStyle <> tbsWindowsXP)
|
||||||
and (tpCaptionPopup in TToolbarItems(FOwnerItem.Collection).FToolPanel.Options) then
|
and (tpCaptionPopup in TToolbarItems(FOwnerItem.Collection).FToolPanel.Options) then
|
||||||
OffsetRect(PaintRect, -2, -2);
|
OffsetRect(PaintRect, -2, -2);
|
||||||
|
@ -180,7 +180,7 @@ function PaintComboEdit(Editor: TCustomMaskEdit; const AText: string;
|
|||||||
function EditorTextMargins(Editor: TCustomMaskEdit): TPoint;
|
function EditorTextMargins(Editor: TCustomMaskEdit): TPoint;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses lclintf, LCLStrConsts, rxconst, rxstrutils, LResources, Forms;
|
uses lclintf, LCLStrConsts, rxconst, rxstrutils, LResources, Forms, LCLProc;
|
||||||
|
|
||||||
type
|
type
|
||||||
TPopupCalendarAccess = class(TPopupCalendar)
|
TPopupCalendarAccess = class(TPopupCalendar)
|
||||||
@ -398,7 +398,9 @@ begin
|
|||||||
csPopup:
|
csPopup:
|
||||||
begin
|
begin
|
||||||
if FPopup = nil then
|
if FPopup = nil then
|
||||||
|
begin
|
||||||
FPopup := CreatePopupCalendar(Self{$IFDEF USED_BiDi}, BiDiMode {$ENDIF});
|
FPopup := CreatePopupCalendar(Self{$IFDEF USED_BiDi}, BiDiMode {$ENDIF});
|
||||||
|
end;
|
||||||
FPopup.OnCloseUp := @PopupCloseUp;
|
FPopup.OnCloseUp := @PopupCloseUp;
|
||||||
FPopup.Color := FPopupColor;
|
FPopup.Color := FPopupColor;
|
||||||
TRxCalendarGrid(FPopup.Calendar).NotInThisMonthColor:=FNotInThisMonthColor;
|
TRxCalendarGrid(FPopup.Calendar).NotInThisMonthColor:=FNotInThisMonthColor;
|
||||||
@ -461,6 +463,7 @@ procedure TCustomRxDateEdit.SetYearDigits(const AValue: TYearDigits);
|
|||||||
begin
|
begin
|
||||||
if FYearDigits=AValue then exit;
|
if FYearDigits=AValue then exit;
|
||||||
FYearDigits:=AValue;
|
FYearDigits:=AValue;
|
||||||
|
UpdateFormat;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomRxDateEdit.CalendarHintsChanged(Sender: TObject);
|
procedure TCustomRxDateEdit.CalendarHintsChanged(Sender: TObject);
|
||||||
@ -507,7 +510,11 @@ end;}
|
|||||||
|
|
||||||
procedure TCustomRxDateEdit.UpdateFormat;
|
procedure TCustomRxDateEdit.UpdateFormat;
|
||||||
begin
|
begin
|
||||||
FDateFormat := DefDateFormat(FourDigitYear);
|
case YearDigits of
|
||||||
|
dyDefault:FDateFormat :=DefDateFormat(FourDigitYear);
|
||||||
|
dyFour:FDateFormat := DefDateFormat(true);
|
||||||
|
dyTwo:FDateFormat := DefDateFormat(false);//DefDateMask(FBlanksChar, false);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomRxDateEdit.UpdatePopup;
|
procedure TCustomRxDateEdit.UpdatePopup;
|
||||||
@ -807,7 +814,11 @@ end;
|
|||||||
|
|
||||||
function TCustomRxDateEdit.GetDateMask: string;
|
function TCustomRxDateEdit.GetDateMask: string;
|
||||||
begin
|
begin
|
||||||
Result := DefDateMask(FBlanksChar, FourDigitYear);
|
case YearDigits of
|
||||||
|
dyDefault:Result :=DefDateMask(FBlanksChar, FourDigitYear);
|
||||||
|
dyFour:Result := DefDateMask(FBlanksChar, true);
|
||||||
|
dyTwo:Result := DefDateMask(FBlanksChar, false);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomRxDateEdit.UpdateMask;
|
procedure TCustomRxDateEdit.UpdateMask;
|
||||||
@ -818,12 +829,12 @@ begin
|
|||||||
DateValue := GetDate;
|
DateValue := GetDate;
|
||||||
OldFormat := FDateFormat;
|
OldFormat := FDateFormat;
|
||||||
UpdateFormat;
|
UpdateFormat;
|
||||||
{ if (GetDateMask <> EditMask) or (OldFormat <> FDateFormat) then
|
if (GetDateMask <> EditMask) or (OldFormat <> FDateFormat) then
|
||||||
begin
|
begin
|
||||||
{ force update }
|
{ force update }
|
||||||
EditMask := '';
|
EditMask := '';
|
||||||
EditMask := GetDateMask;
|
EditMask := GetDateMask;
|
||||||
end;}
|
end;
|
||||||
UpdatePopup;
|
UpdatePopup;
|
||||||
SetDate(DateValue);
|
SetDate(DateValue);
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user