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 draw buttons in ToolPanel with use system themes
|
||||
- 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)
|
||||
+ In TRxCustomDBLookupCombo add check for CircularDataLink
|
||||
|
@ -23,8 +23,15 @@
|
||||
+ Реализована возможность объединения ячеек в заголовке таблицы
|
||||
(смотрите в демке на RxDBGrid)
|
||||
- Исправлена ошибка установки значения для 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)
|
||||
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
|
||||
+ У объекта 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;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
@ -5,13 +5,7 @@ unit exsortzeos;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, DB,
|
||||
{$IFDEF FPC}
|
||||
RxDBGrid
|
||||
{$ELSE}
|
||||
exDBGrid
|
||||
{$ENDIF}
|
||||
,ZConnection, ZDataset, ZAbstractRODataset;
|
||||
Classes, SysUtils, DB, RxDBGrid, ZConnection, ZDataset, ZAbstractRODataset;
|
||||
|
||||
type
|
||||
TFBDataSetSortEngine = class(TExDBGridSortEngine)
|
||||
@ -20,14 +14,16 @@ type
|
||||
end;
|
||||
|
||||
implementation
|
||||
//uses FBCustomDataSet;
|
||||
|
||||
procedure TFBDataSetSortEngine.Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);
|
||||
begin
|
||||
if Assigned(ADataSet) then begin
|
||||
(ADataSet as TZQuery).SortedFields:=Field.FieldName;
|
||||
if Asc then (ADataSet as TZQuery).SortType:=stAscending
|
||||
else (ADataSet as TZQuery).SortType:=stDescending;
|
||||
if Assigned(ADataSet) then
|
||||
begin
|
||||
(ADataSet as TZQuery).SortedFields:='"' + Field.FieldName + '"';
|
||||
if Asc then
|
||||
(ADataSet as TZQuery).SortType:=stAscending
|
||||
else
|
||||
(ADataSet as TZQuery).SortType:=stDescending;
|
||||
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
|
||||
begin
|
||||
if not ((gdSelected in aState) and (gdFocused in aState)) then begin
|
||||
if (FDaysArray[ACol, ARow].DayDate = Date) and (FDaysArray[ACol, ARow].DayColor <> FNotInThisMonthColor) then begin
|
||||
if not ((gdSelected in aState) and (gdFocused in aState)) then
|
||||
begin
|
||||
if (FDaysArray[ACol, ARow].DayDate = Date) and (FDaysArray[ACol, ARow].DayColor <> FNotInThisMonthColor) then
|
||||
begin
|
||||
R := ARect;
|
||||
// Variant 1
|
||||
//Dec(R.Bottom, 1);
|
||||
@ -441,7 +443,7 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
Canvas.Font.Color:=clText;
|
||||
Canvas.Font.Color:=clWindowText;
|
||||
//DrawCellText(ACol, ARow, ARect, AState, ShortDayNames[(Ord(StartOfWeek) + ACol) mod 7 + 1]);
|
||||
if FShortDaysOfWeek <> nil then begin
|
||||
if ACol <= FShortDaysOfWeek.Count - 1 then
|
||||
@ -622,7 +624,7 @@ begin
|
||||
if IsWeekend(x, y) then
|
||||
FDaysArray[x,y].DayColor:=WeekendColor
|
||||
else
|
||||
FDaysArray[x,y].DayColor:=clText;
|
||||
FDaysArray[x,y].DayColor:=clWindowText;
|
||||
FDaysArray[x,y].DayNum:=DayNum;
|
||||
end;
|
||||
FirstDate:=FirstDate+1;
|
||||
@ -890,6 +892,7 @@ function CreatePopupCalendar(AOwner: TComponent
|
||||
{$IFDEF USED_BiDi}; ABiDiMode: TBiDiMode = bdLeftToRight {$ENDIF}): TPopupCalendar;
|
||||
begin
|
||||
Result := TPopupCalendar.Create(AOwner);
|
||||
|
||||
if (AOwner <> nil) and not (csDesigning in AOwner.ComponentState) and
|
||||
(Screen.PixelsPerInch <> 96) then
|
||||
begin { scale to screen res }
|
||||
@ -952,7 +955,7 @@ begin
|
||||
if AOwner is TControl then ShowHint := TControl(AOwner).ShowHint
|
||||
else ShowHint := True;
|
||||
|
||||
if (csDesigning in ComponentState) then Exit;
|
||||
// if (csDesigning in ComponentState) then Exit;
|
||||
|
||||
FMonthNames := TStringList.Create;
|
||||
if FMonthNames.Count = 0 then begin
|
||||
|
@ -11,3 +11,15 @@ LazarusResources.Add('rx_markerup','XPM',[
|
||||
+'#....a..",'#10'".#......a.",'#10'".aaaaaaaa.",'#10'".bbbbbbbb.",'#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
|
||||
Classes, SysUtils, LResources, LCLType, LCLIntf, Forms, Controls,
|
||||
Graphics, Dialogs, Grids, dbutils, DBGrids, DB, PropertyStorage, vclutils,
|
||||
LMessages, types, StdCtrls;
|
||||
LMessages, types, StdCtrls, Menus;
|
||||
|
||||
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];
|
||||
@ -41,21 +41,29 @@ type
|
||||
rdgFilter,
|
||||
rdgMultiTitleLines,
|
||||
rdgMrOkOnDblClik,
|
||||
rdgAllowQuickSearch
|
||||
rdgAllowQuickSearch,
|
||||
rdgAllowFilterForm,
|
||||
rdgAllowSortForm
|
||||
);
|
||||
|
||||
TOptionsRx = set of TOptionRx;
|
||||
|
||||
TCreateLookup = TNotifyEvent;
|
||||
TDisplayLookup = TNotifyEvent;
|
||||
// TDataSetClass = class of TDataSet;
|
||||
|
||||
TRxColumn = class;
|
||||
|
||||
{ TExDBGridSortEngine }
|
||||
|
||||
TExDBGridSortEngine = class
|
||||
private
|
||||
FDataSetClass:TDataSetClass;
|
||||
public
|
||||
procedure Sort(Field:TField; ADataSet:TDataSet; Asc:boolean);virtual;abstract;
|
||||
procedure SortList(ListField:string; ADataSet:TDataSet; Asc:boolean);virtual;
|
||||
end;
|
||||
|
||||
TExDBGridSortEngineClass = class of TExDBGridSortEngine;
|
||||
|
||||
TMLCaptionItem = class
|
||||
@ -114,6 +122,10 @@ type
|
||||
function GetStatTotal:string;
|
||||
procedure ResetTestValue;
|
||||
procedure UpdateTestValue;
|
||||
|
||||
function DeleteTestValue: boolean;
|
||||
function PostTestValue: boolean;
|
||||
function ErrorTestValue: boolean;
|
||||
public
|
||||
constructor Create(Owner:TRxColumn);
|
||||
property Owner:TRxColumn read FOwner;
|
||||
@ -236,6 +248,21 @@ type
|
||||
FPressed: Boolean;
|
||||
FSwapButtons: 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
|
||||
//Column resize
|
||||
FColumnResizing : Boolean;
|
||||
@ -273,6 +300,7 @@ type
|
||||
procedure OutCaptionCellText90(aCol,aRow: Integer;const aRect: TRect; aState: TGridDrawState;const ACaption:string;const TextOrient:TTextOrientation);
|
||||
procedure OutCaptionSortMarker(const aRect: TRect; ASortMarker: TSortMarker);
|
||||
procedure OutCaptionMLCellText(aCol,aRow: Integer; aRect: TRect; aState: TGridDrawState; MLI:TMLCaptionItem);
|
||||
procedure UpdateJMenuStates;
|
||||
|
||||
//storage
|
||||
procedure OnIniSave(Sender: TObject);
|
||||
@ -310,7 +338,20 @@ type
|
||||
function IsDefaultRowHeightStored:boolean;
|
||||
procedure VisualChange; override;
|
||||
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
|
||||
procedure FilterRec(DataSet : TDataSet;var Accept: Boolean);
|
||||
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
function EditorByStyle(Style: TColumnButtonStyle): TWinControl; override;
|
||||
@ -331,6 +372,9 @@ type
|
||||
procedure OptimizeColumnsWidthAll;
|
||||
procedure UpdateTitleHight;
|
||||
property QuickUTF8Search:String read FQuickUTF8Search write SetQuickUTF8Search;
|
||||
|
||||
procedure GetOnCreateLookup;
|
||||
procedure GetOnDisplayLookup;
|
||||
published
|
||||
property AfterQuickSearch: TRxQuickSearchNotifyEvent read FAfterQuickSearch write FAfterQuickSearch;
|
||||
property BeforeQuickSearch: TRxQuickSearchNotifyEvent read FBeforeQuickSearch write FBeforeQuickSearch;
|
||||
@ -429,13 +473,16 @@ type
|
||||
property OnTitleClick;
|
||||
property OnUserCheckboxBitmap;
|
||||
property OnUTF8KeyPress;
|
||||
|
||||
property OnCreateLookup: TCreateLookup read F_CreateLookup write F_CreateLookup;
|
||||
property OnDisplayLookup: TDisplayLookup read F_DisplayLookup write F_DisplayLookup;
|
||||
end;
|
||||
|
||||
procedure RegisterExDBGridSortEngine(ExDBGridSortEngineClass:TExDBGridSortEngineClass; DataSetClass:TDataSetClass);
|
||||
|
||||
implementation
|
||||
uses Math, rxdconst, rxstrutils, rxdbgrid_findunit, rxdbgrid_columsunit,
|
||||
rxlookup, tooledit, LCLProc;
|
||||
rxlookup, tooledit, LCLProc, rxfilterby, rxsortby;
|
||||
|
||||
var
|
||||
ExDBGridSortEngineList:TStringList;
|
||||
@ -474,6 +521,7 @@ type
|
||||
procedure KeyDown(var Key : Word; Shift : TShiftState); override;
|
||||
procedure msg_SetGrid(var Msg: TGridMessage); message GM_SETGRID;
|
||||
procedure msg_SetValue(var Msg: TGridMessage); message GM_SETVALUE;
|
||||
procedure ShowList; override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -665,6 +713,20 @@ begin
|
||||
FGrid.KeyDown(Key, shift);
|
||||
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
|
||||
case Key of
|
||||
VK_UP,
|
||||
@ -674,6 +736,18 @@ begin
|
||||
doGridKeyDown;
|
||||
exit;
|
||||
end;
|
||||
VK_LEFT, VK_RIGHT:
|
||||
if GetFastEntry then
|
||||
begin
|
||||
doGridKeyDown;
|
||||
exit;
|
||||
end;
|
||||
else
|
||||
begin
|
||||
inherited KeyDown(Key, Shift);
|
||||
doEditorKeyDown;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
inherited KeyDown(Key, Shift);
|
||||
end;
|
||||
@ -694,13 +768,20 @@ begin
|
||||
DataSource:=FGrid.DataSource;
|
||||
if Assigned(F) then
|
||||
begin
|
||||
DataField:=F.FieldName;
|
||||
// DataField:=F.FieldName;
|
||||
DataField:=F.KeyFields;
|
||||
LookupDisplay:=F.LookupResultField;
|
||||
LookupField:=F.LookupKeyFields;
|
||||
FLDS.DataSet:=F.LookupDataSet;
|
||||
FGrid.GetOnCreateLookup;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRxDBGridLookupComboEditor.ShowList;
|
||||
begin
|
||||
FGrid.GetOnDisplayLookup;
|
||||
inherited ShowList;
|
||||
end;
|
||||
|
||||
constructor TRxDBGridLookupComboEditor.Create(AOwner: TComponent);
|
||||
begin
|
||||
@ -1081,6 +1162,16 @@ begin
|
||||
OutCaptionCellText(aCol, aRow, aRect, aState, MLI.Caption);
|
||||
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);
|
||||
var
|
||||
i:integer;
|
||||
@ -1168,18 +1259,6 @@ end;
|
||||
procedure TRxDBGrid.DefaultDrawTitle(aCol, aRow: Integer; aRect: TRect;
|
||||
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
|
||||
ASortMarker: TSortMarker;
|
||||
Background: TColor;
|
||||
@ -1422,7 +1501,16 @@ var
|
||||
FBackground: TColor;
|
||||
begin
|
||||
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
|
||||
if not ((gdFixed in aState) or (aCol=0) or (aRow=0)) then
|
||||
begin
|
||||
@ -1476,6 +1564,55 @@ begin
|
||||
end;
|
||||
FSortField:=nil;
|
||||
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;
|
||||
|
||||
procedure TRxDBGrid.DrawFooterRows;
|
||||
@ -1592,6 +1729,21 @@ var
|
||||
// dump : integer;
|
||||
begin
|
||||
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
|
||||
begin
|
||||
if (rdgFilter in OptionsRx) and DatalinkActive then
|
||||
@ -1684,7 +1836,13 @@ var
|
||||
Cell: TGridCoord;
|
||||
ACol: Longint;
|
||||
DoClick: Boolean;
|
||||
|
||||
ShowMenu : Boolean;
|
||||
MPT : TPoint;
|
||||
Rct : TRect;
|
||||
begin
|
||||
ShowMenu := False;
|
||||
|
||||
FColumnResizing := false;
|
||||
|
||||
if (dgHeaderPushedLook in Options) and FTracking and (FPressedCol <> nil) then
|
||||
@ -1702,7 +1860,10 @@ begin
|
||||
begin
|
||||
FPressedCol := ColumnFromGridColumn(Cell.X) as TColumn;
|
||||
if Assigned(FPressedCol) then
|
||||
begin
|
||||
F_SortListField.Clear;
|
||||
DoTitleClick(FPressedCol.Index, FPressedCol.Field);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
@ -1712,7 +1873,36 @@ begin
|
||||
MouseCapture := False;
|
||||
if Button = mbRight then Button := mbLeft;
|
||||
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);
|
||||
|
||||
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;
|
||||
|
||||
procedure TRxDBGrid.SetQuickUTF8Search(AValue : String);
|
||||
@ -1796,6 +1986,52 @@ begin
|
||||
end;
|
||||
VK_DELETE:if not (aoDelete 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
|
||||
begin
|
||||
FTmpReadOnly:=ReadOnly;
|
||||
@ -1884,6 +2120,11 @@ procedure TRxDBGrid.UpdateActive;
|
||||
begin
|
||||
if FInProcessCalc>0 then exit;
|
||||
inherited UpdateActive;
|
||||
if FInProcessCalc<0 then
|
||||
begin
|
||||
FInProcessCalc:=0;
|
||||
CalcStatTotals;
|
||||
end;
|
||||
{ if (rdgFooterRows in OptionsRx) and (FooterRowCount > 0) then
|
||||
CalcStatTotals;}
|
||||
end;
|
||||
@ -1931,6 +2172,10 @@ begin
|
||||
else
|
||||
Value := FFilterListEditor.Text
|
||||
end;
|
||||
|
||||
DataSource.DataSet.Refresh;
|
||||
CalcStatTotals;
|
||||
|
||||
if Assigned(FOnFiltred) then
|
||||
FOnFiltred(Self);
|
||||
end;
|
||||
@ -2034,10 +2279,10 @@ begin
|
||||
P := Ds.GetBookMark;
|
||||
DS.DisableControls;
|
||||
try
|
||||
DS.First;
|
||||
for i:=0 to Columns.Count - 1 do
|
||||
TRxColumn(Columns[i]).Footer.ResetTestValue;
|
||||
|
||||
DS.First;
|
||||
while not DS.EOF do
|
||||
begin
|
||||
for i:=0 to Columns.Count - 1 do
|
||||
@ -2100,6 +2345,207 @@ begin
|
||||
CalcTitle;
|
||||
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);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
@ -2109,6 +2555,54 @@ begin
|
||||
|
||||
FMarkerUp := LoadLazResBitmapImage('rx_markerup');
|
||||
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.OnSave:=@OnIniSave;
|
||||
@ -2117,7 +2611,8 @@ begin
|
||||
// FTitleLines := TITLE_DEFAULT;
|
||||
FAllowedOperations:=[aoInsert, aoUpdate, aoDelete, aoAppend];
|
||||
|
||||
FFooterColor:=clWindow;
|
||||
// FFooterColor:=clWindow;
|
||||
FFooterColor:=clYellow;
|
||||
FFooterRowCount:=0;
|
||||
|
||||
FFilterListEditor := TFilterListCellEditor.Create(nil);
|
||||
@ -2150,6 +2645,12 @@ begin
|
||||
FreeAndNil(FMarkerUp);
|
||||
FreeAndNil(FPropertyStorageLink);
|
||||
FreeAndNil(FFilterListEditor);
|
||||
|
||||
FreeAndNil(F_PopupMenu);
|
||||
FreeAndNil(F_MenuBMP);
|
||||
FreeAndNil(F_LastFilter);
|
||||
FreeAndNil(F_SortListField);
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -2461,7 +2962,9 @@ function TRxColumnFooter.GetStatTotal: string;
|
||||
var
|
||||
F:TField;
|
||||
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
|
||||
F:=TRxDBGrid(FOwner.Grid).DataSource.DataSet.FieldByName(FFieldName);
|
||||
if Assigned(F) then
|
||||
@ -2474,6 +2977,9 @@ begin
|
||||
if FValueType in [fvtSum, fvtAvg] then
|
||||
Result:=''
|
||||
else
|
||||
if FTestValue=0 then
|
||||
Result:=''
|
||||
else
|
||||
if FDisplayFormat = '' then
|
||||
Result:=DateToStr(FTestValue)
|
||||
else
|
||||
@ -2509,8 +3015,20 @@ begin
|
||||
end;
|
||||
|
||||
procedure TRxColumnFooter.ResetTestValue;
|
||||
var
|
||||
F:TField;
|
||||
begin
|
||||
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;
|
||||
|
||||
procedure TRxColumnFooter.UpdateTestValue;
|
||||
@ -2542,6 +3060,132 @@ begin
|
||||
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);
|
||||
begin
|
||||
inherited Create;
|
||||
@ -2633,6 +3277,11 @@ begin
|
||||
FEmptyFont := TFont.Create;
|
||||
FValueList := TStringList.Create;
|
||||
FColor := clWhite;
|
||||
|
||||
// FColor := clSkyBlue;
|
||||
FEmptyFont.Style:=[fsItalic];
|
||||
FEmptyValue:=sRxDBGridEmptiFilter;
|
||||
FFont.Style:=[fsItalic];
|
||||
end;
|
||||
|
||||
destructor TRxColumnFilter.Destroy;
|
||||
@ -2643,6 +3292,14 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
{ TExDBGridSortEngine }
|
||||
|
||||
procedure TExDBGridSortEngine.SortList(ListField: string; ADataSet: TDataSet;
|
||||
Asc: boolean);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I rxdbgrid.lrs}
|
||||
// {$I rx_markerdown.lrs}
|
||||
|
@ -1,91 +1,138 @@
|
||||
object rxDBGridColumsForm: TrxDBGridColumsForm
|
||||
Left = 492
|
||||
Height = 296
|
||||
Top = 264
|
||||
Width = 355
|
||||
HorzScrollBar.Page = 354
|
||||
VertScrollBar.Page = 295
|
||||
Left = 489
|
||||
Height = 375
|
||||
Top = 248
|
||||
Width = 448
|
||||
ActiveControl = CheckListBox1
|
||||
Caption = 'Grid colums'
|
||||
ClientHeight = 296
|
||||
ClientWidth = 355
|
||||
PixelsPerInch = 96
|
||||
object SpeedButton1: TSpeedButton
|
||||
Left = 8
|
||||
Height = 22
|
||||
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
|
||||
ClientHeight = 375
|
||||
ClientWidth = 448
|
||||
OnCreate = FormCreate
|
||||
Position = poScreenCenter
|
||||
ShowHint = True
|
||||
LCLVersion = '0.9.27'
|
||||
object CheckListBox1: TCheckListBox
|
||||
Left = 8
|
||||
Height = 238
|
||||
Top = 8
|
||||
Width = 340
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = ButtonPanel1
|
||||
Left = 6
|
||||
Height = 315
|
||||
Top = 6
|
||||
Width = 436
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Around = 6
|
||||
ItemHeight = 0
|
||||
TabOrder = 0
|
||||
TopIndex = -1
|
||||
end
|
||||
object Button1: TButton
|
||||
Left = 195
|
||||
Height = 30
|
||||
Top = 258
|
||||
Width = 75
|
||||
Anchors = [akRight, akBottom]
|
||||
BorderSpacing.InnerBorder = 2
|
||||
Caption = 'OK'
|
||||
Default = True
|
||||
ModalResult = 1
|
||||
object ButtonPanel1: TButtonPanel
|
||||
Left = 6
|
||||
Height = 42
|
||||
Top = 327
|
||||
Width = 436
|
||||
TabOrder = 1
|
||||
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
|
||||
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
|
||||
end
|
||||
|
@ -1,34 +1,91 @@
|
||||
{ ��� - ���� ��������, ������������� ��������� lazarus }
|
||||
|
||||
LazarusResources.Add('TrxDBGridColumsForm','FORMDATA',[
|
||||
'TPF0'#19'TrxDBGridColumsForm'#18'rxDBGridColumsForm'#4'Left'#3#236#1#6'Heigh'
|
||||
+'t'#3'('#1#3'Top'#3#8#1#5'Width'#3'c'#1#18'HorzScrollBar.Page'#3'b'#1#18'Ver'
|
||||
+'tScrollBar.Page'#3''''#1#7'Caption'#6#11'Grid colums'#12'ClientHeight'#3'('
|
||||
+#1#11'ClientWidth'#3'c'#1#13'PixelsPerInch'#2'`'#0#12'TSpeedButton'#12'Speed'
|
||||
+'Button1'#4'Left'#2#8#6'Height'#2#22#3'Top'#3#4#1#5'Width'#2#23#5'Color'#7#9
|
||||
+'clBtnFace'#10'Glyph.Data'#10#159#1#0#0#155#1#0#0'/* XPM */'#10'static char '
|
||||
+'*PointUP[]={'#10'"16 16 3 1",'#10'". c None",'#10'"# c #000000",'#10'"a c #'
|
||||
+'008080",'#10'"................",'#10'"................",'#10'".............'
|
||||
+'...",'#10'"........#.......",'#10'".......#a#......",'#10'"......#aaa#.....'
|
||||
+'",'#10'".....#aaaaa#....",'#10'"....#aaaaaaa#...",'#10'"...####aaa####..",'
|
||||
+#10'"......#aaa#.....",'#10'"......#aaa#.....",'#10'"......#aaa#.....",'#10
|
||||
+'"......#####.....",'#10'"................",'#10'"................",'#10'"..'
|
||||
+'.............."};'#10#9'NumGlyphs'#2#0#0#0#12'TSpeedButton'#12'SpeedButton2'
|
||||
+#4'Left'#2'('#6'Height'#2#22#3'Top'#3#4#1#5'Width'#2#23#5'Color'#7#9'clBtnFa'
|
||||
+'ce'#10'Glyph.Data'#10#161#1#0#0#157#1#0#0'/* XPM */'#10'static char *PointD'
|
||||
+'own[]={'#10'"16 16 3 1",'#10'". c None",'#10'"# c #000000",'#10'"a c #00808'
|
||||
+'0",'#10'"................",'#10'"................",'#10'"................",'
|
||||
+#10'"......#####.....",'#10'"......#aaa#.....",'#10'"......#aaa#.....",'#10
|
||||
+'"......#aaa#.....",'#10'"...####aaa####..",'#10'"....#aaaaaaa#...",'#10'"..'
|
||||
+'...#aaaaa#....",'#10'"......#aaa#.....",'#10'".......#a#......",'#10'".....'
|
||||
+'...#.......",'#10'"................",'#10'"................",'#10'"........'
|
||||
+'........"};'#10#9'NumGlyphs'#2#0#0#0#13'TCheckListBox'#13'CheckListBox1'#4
|
||||
+'Left'#2#8#6'Height'#3#238#0#3'Top'#2#8#5'Width'#3'T'#1#7'Anchors'#11#5'akTo'
|
||||
+'p'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#0#0#7'TButton'#7'Button1'#4'Left'
|
||||
+#3#195#0#6'Height'#2#30#3'Top'#3#2#1#5'Width'#2'K'#7'Anchors'#11#7'akRight'#8
|
||||
+'akBottom'#0#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#2'OK'#7'Default'
|
||||
+#9#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7'TButton'#7'Button2'#4'Left'#3#17
|
||||
+#1#6'Height'#2#30#3'Top'#3#2#1#5'Width'#2'K'#7'Anchors'#11#7'akRight'#8'akBo'
|
||||
+'ttom'#0#25'BorderSpacing.InnerBorder'#2#2#6'Cancel'#9#7'Caption'#6#6'Cancel'
|
||||
+#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#0
|
||||
'TPF0'#19'TrxDBGridColumsForm'#18'rxDBGridColumsForm'#4'Left'#3#233#1#6'Heigh'
|
||||
+'t'#3'w'#1#3'Top'#3#248#0#5'Width'#3#192#1#13'ActiveControl'#7#13'CheckListB'
|
||||
+'ox1'#7'Caption'#6#11'Grid colums'#12'ClientHeight'#3'w'#1#11'ClientWidth'#3
|
||||
+#192#1#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#8'ShowH'
|
||||
+'int'#9#10'LCLVersion'#6#6'0.9.27'#0#13'TCheckListBox'#13'CheckListBox1'#22
|
||||
+'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#23
|
||||
+'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'
|
||||
+#24'AnchorSideBottom.Control'#7#12'ButtonPanel1'#4'Left'#2#6#6'Height'#3';'#1
|
||||
+#3'Top'#2#6#5'Width'#3#180#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'a'
|
||||
+'kBottom'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#8'TabOrder'#2#0#8
|
||||
+'TopIndex'#2#255#0#0#12'TButtonPanel'#12'ButtonPanel1'#4'Left'#2#6#6'Height'
|
||||
+#2'*'#3'Top'#3'G'#1#5'Width'#3#180#1#8'TabOrder'#2#1#11'ShowButtons'#11#4'pb'
|
||||
+'OK'#8'pbCancel'#6'pbHelp'#0#0#12'TSpeedButton'#12'SpeedButton2'#22'AnchorSi'
|
||||
+'deLeft.Control'#7#12'SpeedButton1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
|
||||
+'AnchorSideTop.Control'#7#12'SpeedButton1'#24'AnchorSideBottom.Control'#7#12
|
||||
+'SpeedButton1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#143#0#6'He'
|
||||
+'ight'#2'"'#3'Top'#2#0#5'Width'#2#23#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBo'
|
||||
+'ttom'#0#18'BorderSpacing.Left'#2#6#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#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#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#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
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, CheckLst,
|
||||
StdCtrls, Buttons, rxdbgrid;
|
||||
StdCtrls, Buttons, ButtonPanel, rxdbgrid;
|
||||
|
||||
type
|
||||
|
||||
{ TrxDBGridColumsForm }
|
||||
|
||||
TrxDBGridColumsForm = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
ButtonPanel1: TButtonPanel;
|
||||
CheckListBox1: TCheckListBox;
|
||||
SpeedButton1: TSpeedButton;
|
||||
SpeedButton2: TSpeedButton;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
FGrid:TRxDBGrid;
|
||||
procedure SetGrid(AGrid:TRxDBGrid);
|
||||
@ -29,6 +29,7 @@ type
|
||||
|
||||
procedure ShowRxDBGridColumsForm(Grid:TRxDBGrid);
|
||||
implementation
|
||||
uses rxdconst;
|
||||
|
||||
procedure ShowRxDBGridColumsForm(Grid: TRxDBGrid);
|
||||
var
|
||||
@ -43,6 +44,17 @@ end;
|
||||
|
||||
{ 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);
|
||||
var
|
||||
i:integer;
|
||||
|
@ -1,46 +1,55 @@
|
||||
object rxDBGridFindForm: TrxDBGridFindForm
|
||||
Left = 436
|
||||
Height = 127
|
||||
Top = 423
|
||||
Left = 474
|
||||
Height = 232
|
||||
Top = 384
|
||||
Width = 493
|
||||
HorzScrollBar.Page = 492
|
||||
VertScrollBar.Page = 126
|
||||
ActiveControl = BtnFind
|
||||
ActiveControl = Edit1
|
||||
Caption = 'Find'
|
||||
ClientHeight = 127
|
||||
ClientHeight = 232
|
||||
ClientWidth = 493
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poDesktopCenter
|
||||
LCLVersion = '0.9.27'
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideBottom.Control = Edit1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 14
|
||||
Top = 16
|
||||
Width = 57
|
||||
Anchors = [akLeft, akBottom]
|
||||
Height = 18
|
||||
Top = 6
|
||||
Width = 78
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Text to find'
|
||||
FocusControl = Edit1
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = Label1
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Edit1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = ComboBox1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 14
|
||||
Top = 45
|
||||
Width = 57
|
||||
Anchors = [akLeft, akBottom]
|
||||
Height = 18
|
||||
Top = 63
|
||||
Width = 80
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Find at filed'
|
||||
ParentColor = False
|
||||
end
|
||||
object BtnFind: TButton
|
||||
Left = 408
|
||||
Height = 38
|
||||
Top = 8
|
||||
Width = 80
|
||||
Anchors = [akTop, akRight]
|
||||
AnchorSideRight.Control = Button2
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 334
|
||||
Height = 37
|
||||
Top = 189
|
||||
Width = 88
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 6
|
||||
BorderSpacing.InnerBorder = 4
|
||||
Caption = 'Find more'
|
||||
Default = True
|
||||
@ -50,12 +59,18 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
||||
object Button2: TButton
|
||||
AnchorSideTop.Control = BtnFind
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 408
|
||||
Height = 34
|
||||
Top = 54
|
||||
Width = 80
|
||||
Anchors = [akTop, akRight]
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 428
|
||||
Height = 37
|
||||
Top = 189
|
||||
Width = 59
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Around = 6
|
||||
BorderSpacing.InnerBorder = 4
|
||||
Cancel = True
|
||||
Caption = 'Close'
|
||||
@ -64,52 +79,61 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
||||
end
|
||||
object Edit1: TEdit
|
||||
AnchorSideLeft.Control = ComboBox1
|
||||
Left = 71
|
||||
Height = 22
|
||||
Top = 8
|
||||
Width = 326
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 18
|
||||
Height = 27
|
||||
Top = 30
|
||||
Width = 469
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 6
|
||||
TabOrder = 0
|
||||
end
|
||||
object ComboBox1: TComboBox
|
||||
AnchorSideLeft.Control = Label2
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Edit1
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Edit1
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 71
|
||||
Height = 21
|
||||
Top = 38
|
||||
Width = 326
|
||||
Left = 12
|
||||
Height = 31
|
||||
Top = 87
|
||||
Width = 475
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
ItemHeight = 13
|
||||
MaxLength = 0
|
||||
BorderSpacing.Around = 6
|
||||
ItemHeight = 0
|
||||
Style = csDropDownList
|
||||
TabOrder = 1
|
||||
end
|
||||
object CheckBox1: TCheckBox
|
||||
AnchorSideLeft.Control = Label1
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = ComboBox1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 13
|
||||
Top = 67
|
||||
Width = 92
|
||||
BorderSpacing.Top = 8
|
||||
Height = 21
|
||||
Top = 124
|
||||
Width = 129
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Case sensetive'
|
||||
TabOrder = 2
|
||||
end
|
||||
object RadioGroup1: TRadioGroup
|
||||
Left = 232
|
||||
Height = 76
|
||||
Top = 72
|
||||
Width = 150
|
||||
AnchorSideLeft.Control = CheckBox1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = ComboBox1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 141
|
||||
Height = 52
|
||||
Top = 124
|
||||
Width = 346
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoFill = True
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Direction'
|
||||
ChildSizing.LeftRightSpacing = 6
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
@ -118,9 +142,10 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||
ChildSizing.ControlsPerLine = 1
|
||||
ClientHeight = 58
|
||||
ClientWidth = 146
|
||||
ChildSizing.ControlsPerLine = 3
|
||||
ClientHeight = 33
|
||||
ClientWidth = 342
|
||||
Columns = 3
|
||||
Items.Strings = (
|
||||
'All'
|
||||
'Forward'
|
||||
@ -130,14 +155,14 @@ object rxDBGridFindForm: TrxDBGridFindForm
|
||||
Visible = False
|
||||
end
|
||||
object CheckBox2: TCheckBox
|
||||
AnchorSideLeft.Control = Label1
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = CheckBox1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 13
|
||||
Top = 88
|
||||
Width = 69
|
||||
BorderSpacing.Top = 8
|
||||
Height = 21
|
||||
Top = 151
|
||||
Width = 91
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Partial key'
|
||||
TabOrder = 3
|
||||
end
|
||||
|
@ -1,50 +1,62 @@
|
||||
{ ��� - ���� ��������, ������������� ��������� lazarus }
|
||||
|
||||
LazarusResources.Add('TrxDBGridFindForm','FORMDATA',[
|
||||
'TPF0'#17'TrxDBGridFindForm'#16'rxDBGridFindForm'#4'Left'#3#180#1#6'Height'#2
|
||||
+''#3'Top'#3#167#1#5'Width'#3#237#1#18'HorzScrollBar.Page'#3#236#1#18'VertSc'
|
||||
+'rollBar.Page'#2'~'#13'ActiveControl'#7#7'BtnFind'#7'Caption'#6#4'Find'#12'C'
|
||||
+'lientHeight'#2''#11'ClientWidth'#3#237#1#10'OnActivate'#7#12'FormActivate'
|
||||
+#6'OnShow'#7#8'FormShow'#0#6'TLabel'#6'Label1'#24'AnchorSideBottom.Control'#7
|
||||
+#5'Edit1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#14
|
||||
+#3'Top'#2#16#5'Width'#2'9'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6
|
||||
+#12'Text to find'#12'FocusControl'#7#5'Edit1'#11'ParentColor'#8#0#0#6'TLabel'
|
||||
+#6'Label2'#22'AnchorSideLeft.Control'#7#6'Label1'#24'AnchorSideBottom.Contro'
|
||||
+'l'#7#9'ComboBox1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'He'
|
||||
+'ight'#2#14#3'Top'#2'-'#5'Width'#2'9'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7
|
||||
+'Caption'#6#13'Find at filed'#11'ParentColor'#8#0#0#7'TButton'#7'BtnFind'#4
|
||||
+'Left'#3#152#1#6'Height'#2'&'#3'Top'#2#8#5'Width'#2'P'#7'Anchors'#11#5'akTop'
|
||||
+#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'Find more'#7
|
||||
+'Default'#9#7'OnClick'#7#12'BtnFindClick'#8'TabOrder'#2#4#0#0#7'TButton'#7'B'
|
||||
+'utton2'#21'AnchorSideTop.Control'#7#7'BtnFind'#18'AnchorSideTop.Side'#7#9'a'
|
||||
+'srBottom'#4'Left'#3#152#1#6'Height'#2'"'#3'Top'#2'6'#5'Width'#2'P'#7'Anchor'
|
||||
+'s'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#8#25'BorderSpacing.Inne'
|
||||
+'rBorder'#2#4#6'Cancel'#9#7'Caption'#6#5'Close'#7'OnClick'#7#12'Button2Click'
|
||||
+#8'TabOrder'#2#5#0#0#5'TEdit'#5'Edit1'#22'AnchorSideLeft.Control'#7#9'ComboB'
|
||||
+'ox1'#4'Left'#2'G'#6'Height'#2#22#3'Top'#2#8#5'Width'#3'F'#1#7'Anchors'#11#5
|
||||
+'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#8'TabOrder'#2#0#0#0#9'TComboBox'
|
||||
+#9'ComboBox1'#22'AnchorSideLeft.Control'#7#6'Label2'#19'AnchorSideLeft.Side'
|
||||
+#7#9'asrBottom'#21'AnchorSideTop.Control'#7#5'Edit1'#18'AnchorSideTop.Side'#7
|
||||
+#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Edit1'#20'AnchorSideRight.Side'
|
||||
+#7#9'asrBottom'#4'Left'#2'G'#6'Height'#2#21#3'Top'#2'&'#5'Width'#3'F'#1#7'An'
|
||||
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactE'
|
||||
+'ndOfLineComplete'#20'cbactSearchAscending'#0#18'BorderSpacing.Left'#2#8#17
|
||||
+'BorderSpacing.Top'#2#8#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'c'
|
||||
+'sDropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#22'AnchorSideL'
|
||||
+'eft.Control'#7#6'Label1'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18'Anchor'
|
||||
+'SideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#13#3'Top'#2'C'#5'Width'
|
||||
+#2'\'#17'BorderSpacing.Top'#2#8#7'Caption'#6#14'Case sensetive'#8'TabOrder'#2
|
||||
+#2#0#0#11'TRadioGroup'#11'RadioGroup1'#4'Left'#3#232#0#6'Height'#2'L'#3'Top'
|
||||
+#2'H'#5'Width'#3#150#0#8'AutoFill'#9#7'Caption'#6#9'Direction'#28'ChildSizin'
|
||||
+'g.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing'
|
||||
+'.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVe'
|
||||
+'rtical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14
|
||||
+'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'Chil'
|
||||
+'dSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.Controls'
|
||||
+'PerLine'#2#1#12'ClientHeight'#2':'#11'ClientWidth'#3#146#0#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#6'Label1'#21'AnchorSid'
|
||||
+'eTop.Control'#7#9'CheckBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2
|
||||
+#6#6'Height'#2#13#3'Top'#2'X'#5'Width'#2'E'#17'BorderSpacing.Top'#2#8#7'Capt'
|
||||
+'ion'#6#11'Partial key'#8'TabOrder'#2#3#0#0#0
|
||||
'TPF0'#17'TrxDBGridFindForm'#16'rxDBGridFindForm'#4'Left'#3#218#1#6'Height'#3
|
||||
+#232#0#3'Top'#3#128#1#5'Width'#3#237#1#13'ActiveControl'#7#5'Edit1'#7'Captio'
|
||||
+'n'#6#4'Find'#12'ClientHeight'#3#232#0#11'ClientWidth'#3#237#1#8'OnCreate'#7
|
||||
+#10'FormCreate'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesktopCenter'#10
|
||||
+'LCLVersion'#6#6'0.9.27'#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#5
|
||||
+'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#24'AnchorSideBottom.Control'#7#5
|
||||
+'Edit1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#18#3
|
||||
+'Top'#2#6#5'Width'#2'N'#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'Text to'
|
||||
+' find'#12'FocusControl'#7#5'Edit1'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'
|
||||
+#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Edit1'
|
||||
+#18'AnchorSideTop.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#9'Comb'
|
||||
+'oBox1'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#18#3
|
||||
+'Top'#2'?'#5'Width'#2'P'#20'BorderSpacing.Around'#2#6#7'Caption'#6#13'Find a'
|
||||
+'t filed'#11'ParentColor'#8#0#0#7'TButton'#7'BtnFind'#23'AnchorSideRight.Con'
|
||||
+'trol'#7#7'Button2'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBot'
|
||||
+'tom.Side'#7#9'asrBottom'#4'Left'#3'N'#1#6'Height'#2'%'#3'Top'#3#189#0#5'Wid'
|
||||
+'th'#2'X'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpac'
|
||||
+'ing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'Find more'
|
||||
+#7'Default'#9#7'OnClick'#7#12'BtnFindClick'#8'TabOrder'#2#4#0#0#7'TButton'#7
|
||||
+'Button2'#21'AnchorSideTop.Control'#7#7'BtnFind'#18'AnchorSideTop.Side'#7#9
|
||||
+'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7
|
||||
+#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Si'
|
||||
+'de'#7#9'asrBottom'#4'Left'#3#172#1#6'Height'#2'%'#3'Top'#3#189#0#5'Width'#2
|
||||
+';'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#17'BorderSpacing.To'
|
||||
+'p'#2#8#20'BorderSpacing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#6'Can'
|
||||
+'cel'#9#7'Caption'#6#5'Close'#7'OnClick'#7#12'Button2Click'#8'TabOrder'#2#5#0
|
||||
+#0#5'TEdit'#5'Edit1'#22'AnchorSideLeft.Control'#7#9'ComboBox1'#21'AnchorSide'
|
||||
+'Top.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSid'
|
||||
+'eRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2
|
||||
+#18#6'Height'#2#27#3'Top'#2#30#5'Width'#3#213#1#7'Anchors'#11#5'akTop'#6'akL'
|
||||
+'eft'#7'akRight'#0#20'BorderSpacing.Around'#2#6#8'TabOrder'#2#0#0#0#9'TCombo'
|
||||
+'Box'#9'ComboBox1'#22'AnchorSideLeft.Control'#7#6'Label2'#21'AnchorSideTop.C'
|
||||
+'ontrol'#7#6'Label2'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRigh'
|
||||
+'t.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#12#6
|
||||
+'Height'#2#31#3'Top'#2'W'#5'Width'#3#219#1#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||
+'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#5'Style'#7#14'cs'
|
||||
+'DropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#22'AnchorSideLe'
|
||||
+'ft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#9'ComboBox1'#18'AnchorSi'
|
||||
+'deTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#21#3'Top'#2'|'#5'Width'#3
|
||||
+#129#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#14'Case sensetive'#8'TabOrd'
|
||||
+'er'#2#2#0#0#11'TRadioGroup'#11'RadioGroup1'#22'AnchorSideLeft.Control'#7#9
|
||||
+'CheckBox1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'
|
||||
+#7#9'ComboBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Con'
|
||||
+'trol'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#141#0#6
|
||||
+'Height'#2'4'#3'Top'#2'|'#5'Width'#3'Z'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||
+'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;
|
||||
procedure BtnFindClick(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
FGrid:TRxDBGrid;
|
||||
@ -37,7 +37,7 @@ type
|
||||
procedure ShowRxDBGridFindForm(Grid:TRxDBGrid);
|
||||
|
||||
implementation
|
||||
uses dbutils, DBGrids;
|
||||
uses dbutils, DBGrids, rxdconst;
|
||||
|
||||
procedure ShowRxDBGridFindForm(Grid: TRxDBGrid);
|
||||
var
|
||||
@ -56,11 +56,18 @@ begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TrxDBGridFindForm.FormActivate(Sender: TObject);
|
||||
procedure TrxDBGridFindForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
{ BtnFind.Height:=Canvas.TextHeight('W') + 6;
|
||||
Button2.Height:=BtnFind.Height;}
|
||||
ComboBox1.Height:=Edit1.Height;
|
||||
Caption:=sRxDbGridFindCaption;
|
||||
Label1.Caption:=sRxDbGridFindText;
|
||||
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;
|
||||
|
||||
procedure TrxDBGridFindForm.FormShow(Sender: TObject);
|
||||
|
@ -9,160 +9,125 @@
|
||||
|
||||
unit rxdconst;
|
||||
|
||||
{ RX Data aware controls constants }
|
||||
{
|
||||
Reserved range
|
||||
from MaxExtStrID - 86
|
||||
to MaxExtStrID - 134
|
||||
}
|
||||
|
||||
interface
|
||||
|
||||
const
|
||||
{ The minimal VCL's used string ID is 61440. The custom IDs must be
|
||||
less that above. }
|
||||
MaxExtStrID = 61300;
|
||||
|
||||
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 }
|
||||
|
||||
SInactiveData = MaxExtStrID - 93;
|
||||
SBrowseData = MaxExtStrID - 94;
|
||||
SEditData = MaxExtStrID - 95;
|
||||
SInsertData = MaxExtStrID - 96;
|
||||
SSetKeyData = MaxExtStrID - 97;
|
||||
SCalcFieldsData = MaxExtStrID - 98;
|
||||
SLocalDatabase = 'Невозможно произвести эту операцию с локальной базой данных';
|
||||
SRetryLogin = 'Вы хотите повторить попытку соединения с базой данных?';
|
||||
SExprNotBoolean = 'Field ''%s'' is not boolean';
|
||||
SExprBadNullTest = 'NULL-values enabled in ''='' и ''<>''';
|
||||
SExprBadField = 'Field ''%s'' not used in filter expression';
|
||||
SCaptureFilter = 'Элементы управления захвачены фильтром';
|
||||
SNotCaptureFilter = 'Элементы управления должны быть захвачены фильтром';
|
||||
SInactiveData = 'inactive';
|
||||
SBrowseData = 'browse';
|
||||
SEditData = 'editing';
|
||||
SInsertData = 'append';
|
||||
SSetKeyData = 'find';
|
||||
SCalcFieldsData = 'calc';
|
||||
SRegistration = 'Register';
|
||||
SAppTitleLabel = 'Application "%s"';
|
||||
SHintLabel = 'Enter you user name and password';
|
||||
SUserNameLabel = '&User name:';
|
||||
SPasswordLabel = '&Password:';
|
||||
SMore1 = '&More >>';
|
||||
SMore2 = '&Less <<';
|
||||
SInvalidUserName = 'User name or password not valid';
|
||||
SChangePassword = 'Change password';
|
||||
SOldPasswordLabel = '&Old password:';
|
||||
SNewPasswordLabel = '&New password:';
|
||||
SConfirmPasswordLabel = '&Confirm:';
|
||||
SPasswordChanged = 'Password changed';
|
||||
SPasswordNotChanged = 'Password not changed';
|
||||
SPasswordsMismatch = 'New password and confirmation not equal';
|
||||
SDBExceptCaption = 'Error in DB engine';
|
||||
SServerErrorLabel = 'Server error';
|
||||
SErrorMsgLabel = 'Error message';
|
||||
SNextButton = '&Next';
|
||||
SPrevButton = '&Prior';
|
||||
SExprIncorrect = 'Error in filter expression';
|
||||
SExprTermination = 'Error in filter end';
|
||||
SExprNameError = 'Error in filed name';
|
||||
SExprStringError = 'Error in string const';
|
||||
SExprInvalidChar = 'Error symbol in expression: ''%s''';
|
||||
SExprNoRParen = 'Ожидалось '')'', а встречено: %s';
|
||||
SExprExpected = 'Ожидалось выражение, а встречено %s';
|
||||
SExprBadCompare = 'Операции сравнения требуют наличия поля и константы';
|
||||
SConfirmSave = 'Data changed. Save?';
|
||||
SDatabaseName = 'Database loocked: %s';
|
||||
SUnlockCaption = 'Unloock';
|
||||
SUnlockHint = 'Enter you password';
|
||||
SDeleteMultipleRecords = 'Delete all selected records?';
|
||||
|
||||
{ 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 = 'Невозможно произвести эту операцию с локальной базой данных';
|
||||
SRetryLogin = 'Вы хотите повторить попытку соединения с базой данных?';
|
||||
SExprNotBoolean = 'Поле ''%s'' не является полем логического типа';
|
||||
SExprBadNullTest = 'NULL-значения допустимы только в операциях ''='' и ''<>''';
|
||||
SExprBadField = 'Поле ''%s'' не может быть использовано в выражении фильтра';
|
||||
SCaptureFilter = 'Элементы управления захвачены фильтром';
|
||||
SNotCaptureFilter = 'Элементы управления должны быть захвачены фильтром';
|
||||
SInactiveData = 'неактивно';
|
||||
SBrowseData = 'просмотр';
|
||||
SEditData = 'редактирование';
|
||||
SInsertData = 'добавление';
|
||||
SSetKeyData = 'поиск';
|
||||
SCalcFieldsData = 'подсчет';
|
||||
SRegistration = 'Регистрация';
|
||||
SAppTitleLabel = 'Программа "%s"';
|
||||
SHintLabel = 'Введите Ваше пользовательское имя и пароль';
|
||||
SUserNameLabel = '&Имя пользователя:';
|
||||
SPasswordLabel = '&Пароль:';
|
||||
SMore1 = '&Больше >>';
|
||||
SMore2 = '&Меньше <<';
|
||||
SInvalidUserName = 'Неверное имя пользователя или пароль';
|
||||
SChangePassword = 'Смена пароля';
|
||||
SOldPasswordLabel = '&Старый пароль:';
|
||||
SNewPasswordLabel = '&Новый пароль:';
|
||||
SConfirmPasswordLabel = '&Подтверждение:';
|
||||
SPasswordChanged = 'Пароль сменен';
|
||||
SPasswordNotChanged = 'Пароль не сменен';
|
||||
SPasswordsMismatch = 'Новый пароль и подтверждение не совпадают';
|
||||
SDBExceptCaption = 'Ошибка процессора БД';
|
||||
SBDEErrorLabel = 'Ошибка BDE';
|
||||
SServerErrorLabel = 'Ошибка сервера';
|
||||
SErrorMsgLabel = 'Сообщение об ошибке';
|
||||
SNextButton = '&Дальше';
|
||||
SPrevButton = '&Назад';
|
||||
SExprIncorrect = 'Некорректно сформулировано выражение фильтра';
|
||||
SExprTermination = 'Неверное завершение выражения фильтра';
|
||||
SExprNameError = 'Невозможно определить завершение имени поля';
|
||||
SExprStringError = 'Невозможно определить завершение строковой константы';
|
||||
SExprInvalidChar = 'Неверный символ в выражении фильтра: ''%s''';
|
||||
SExprNoRParen = 'Ожидалось '')'', а встречено: %s';
|
||||
SExprExpected = 'Ожидалось выражение, а встречено %s';
|
||||
SExprBadCompare = 'Операции сравнения требуют наличия поля и константы';
|
||||
SConfirmSave = 'Данные были изменены. Сохранять?';
|
||||
SDatabaseName = 'База данных: %s';
|
||||
SUnlockCaption = 'Разблокирование';
|
||||
SUnlockHint = 'Введите ваш пароль';
|
||||
SDeleteMultipleRecords = 'Удалить все выбранные записи?';
|
||||
|
||||
SPropDefByLookup = 'PropDefByLookup';
|
||||
SDataSourceFixed = 'SDataSourceFixed';
|
||||
SCircularDataLink = 'SCircularDataLink';
|
||||
SPropDefByLookup = 'PropDefByLookup';
|
||||
SDataSourceFixed = 'SDataSourceFixed';
|
||||
SCircularDataLink = 'SCircularDataLink';
|
||||
sRxAscendign = 'Ascendente';//'Ascendente');
|
||||
sRxDescending = 'Descendente';//'Descendente');
|
||||
|
||||
|
||||
SDeleteRecordQuestion = 'Delete record?';
|
||||
SFieldTypeMismatch = 'Type mismatch for field ''%s'', expecting: %s actual: %s';
|
||||
SInvalidDate = 'Invalid Date';
|
||||
SFieldRequired = 'Field ''%s'' must have a value';
|
||||
SNotEditing = 'Dataset not in edit or insert mode';
|
||||
SUnknownFieldType = 'SUnknownFieldType %s';
|
||||
SFieldReadOnly = 'SFieldReadOnly %s';
|
||||
SDeleteRecordQuestion = 'Delete record?';
|
||||
SFieldTypeMismatch = 'Type mismatch for field ''%s'', expecting: %s actual: %s';
|
||||
SInvalidDate = 'Invalid Date';
|
||||
SFieldRequired = 'Field ''%s'' must have a value';
|
||||
SNotEditing = 'Dataset not in edit or insert mode';
|
||||
SUnknownFieldType = 'SUnknownFieldType %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
|
||||
{ The following strings should not be localized }
|
||||
|
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;
|
||||
FUnfindedValue: TRxDBValueVariant;
|
||||
FSuccesfullyFind : boolean;
|
||||
|
||||
FOnSelect : TNotifyEvent;
|
||||
procedure SetValue(const Value: string);
|
||||
function GetKeyValue: Variant;
|
||||
procedure SetKeyValue(const Value: Variant);
|
||||
|
||||
function GetDataSource: TDataSource;
|
||||
function GetDisplayAll: Boolean;
|
||||
function GetDropDownCount: Integer;
|
||||
@ -242,6 +248,11 @@ type
|
||||
property LookupSource: TDataSource read GetLookupSource write SetLookupSource;
|
||||
property OnGetGridCellProps: TGetCellPropsEvent read GetOnGetGridCellProps
|
||||
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;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
@ -253,6 +264,9 @@ type
|
||||
TRxDBLookupCombo = class(TRxCustomDBLookupCombo)
|
||||
protected
|
||||
procedure OnClosePopup(AResult:boolean);override;
|
||||
public
|
||||
property Value;
|
||||
property KeyValue;
|
||||
published
|
||||
property AutoSize;
|
||||
property Align;
|
||||
@ -292,6 +306,8 @@ type
|
||||
property OnMouseUp;
|
||||
property OnStartDrag;
|
||||
property OnGetGridCellProps;
|
||||
property OnSelect;
|
||||
|
||||
property ParentColor;
|
||||
property ParentFont;
|
||||
property ParentShowHint;
|
||||
@ -914,6 +930,25 @@ var
|
||||
F:TField;
|
||||
begin
|
||||
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
|
||||
begin
|
||||
if FDataField.IsNull then
|
||||
@ -938,24 +973,43 @@ begin
|
||||
end;
|
||||
|
||||
procedure TRxCustomDBLookupCombo.ShowList;
|
||||
{$IFDEF LINUX}
|
||||
var
|
||||
TempF:TPopUpForm;
|
||||
{$ENDIF}
|
||||
begin
|
||||
if Assigned(FLookupDataLink.DataSet) and (FLookupDataLink.DataSet.Active) then
|
||||
if not PopupVisible then
|
||||
begin
|
||||
if FDataField<>nil then
|
||||
if FDataField <> nil then
|
||||
FValue := FDataField.AsString
|
||||
else
|
||||
FValue := FEmptyValue;
|
||||
|
||||
if FDataField <> nil then FValue := FDataField.AsString
|
||||
else FValue := FEmptyValue;
|
||||
if not Assigned(FDataField) then
|
||||
begin
|
||||
if not FLocateObject.Locate(FLookupField, FValue, true, false) then
|
||||
FLookupDataLink.DataSet.First;
|
||||
end
|
||||
else
|
||||
if Assigned(FDataField) and not FDataField.IsNull then
|
||||
Begin
|
||||
if not FLocateObject.Locate(FLookupField, FValue, true, false) then
|
||||
FLookupDataLink.DataSet.First;//In case we cannot find curvalue...
|
||||
End
|
||||
begin
|
||||
if not FLocateObject.Locate(FLookupField, FValue, true, false) then
|
||||
FLookupDataLink.DataSet.First;//In case we cannot find curvalue...
|
||||
end
|
||||
else
|
||||
if FLookupDataLink.Active then
|
||||
FLookupDataLink.DataSet.First;
|
||||
|
||||
FRxPopUpForm:=ShowRxDBPopUpForm(Self, FLookupDataLink.DataSet, @OnClosePopup,
|
||||
FPopUpFormOptions, FLookupDisplay, LookupDisplayIndex, 0 {ButtonWidth}, Font);
|
||||
{$IFDEF LINUX}
|
||||
TempF:=FRxPopUpForm;
|
||||
if FRxPopUpForm.ShowModal = mrOk then
|
||||
OnClosePopup(true);
|
||||
TempF.Free;
|
||||
{$ENDIF}
|
||||
end
|
||||
end;
|
||||
|
||||
@ -975,10 +1029,23 @@ end;
|
||||
|
||||
procedure TRxCustomDBLookupCombo.UpdateKeyValue;
|
||||
begin
|
||||
if FDataField <> nil then
|
||||
FValue := FDataField.AsString
|
||||
if Assigned(FDataField) then
|
||||
if FDataField <> nil then
|
||||
FValue := FDataField.AsString
|
||||
else
|
||||
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
|
||||
FValue := FEmptyValue;
|
||||
if not FDataField.IsNull then
|
||||
FSuccesfullyFind := FLocateObject.Locate(FLookupField, FValue, true, false);
|
||||
KeyValueChanged;
|
||||
@ -1010,12 +1077,32 @@ begin
|
||||
if Assigned(FRxPopUpForm) and AResult and (pfgColumnResize in FPopUpFormOptions.Options) then
|
||||
FillPopupWidth(FPopUpFormOptions, FRxPopUpForm);
|
||||
|
||||
if FRxPopUpForm=nil then
|
||||
begin
|
||||
SetFocus;
|
||||
Exit;
|
||||
end;
|
||||
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
|
||||
begin
|
||||
FDataLink.Edit;
|
||||
NeedUpdateData;//We need to update DataField;
|
||||
end;
|
||||
|
||||
if (AResult) and (Assigned(FOnSelect)) then
|
||||
FOnSelect(Self);
|
||||
end;
|
||||
|
||||
procedure TRxCustomDBLookupCombo.DoAutoSize;
|
||||
@ -1049,10 +1136,20 @@ begin
|
||||
Key := 0;
|
||||
end
|
||||
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
|
||||
FDataField.Clear;
|
||||
UpdateKeyValue;
|
||||
if Assigned(FOnSelect) then
|
||||
FOnSelect(Self);
|
||||
Key:=0;
|
||||
end;
|
||||
end;
|
||||
@ -1075,15 +1172,36 @@ begin
|
||||
end;
|
||||
//FDataLink.UpdateRecord; -- no need more...
|
||||
Self.NeedUpdateData;
|
||||
if Assigned(FOnSelect) then
|
||||
FOnSelect(Self);
|
||||
KeyValueChanged;
|
||||
Key:=0;
|
||||
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;
|
||||
|
||||
procedure TRxCustomDBLookupCombo.KeyPress(var Key: char);
|
||||
begin
|
||||
if not (PopupVisible) and ((Key in [#32..#255]) or (Key=#8)) then
|
||||
ShowList;
|
||||
inherited KeyPress(Key);
|
||||
if PopupVisible then
|
||||
FRxPopUpForm.KeyPress(Key);
|
||||
@ -1174,12 +1292,14 @@ begin
|
||||
{ If not Self.PopupVisible then
|
||||
DoButtonClick(Self);}
|
||||
end;
|
||||
|
||||
procedure TRxCustomDBLookupCombo.Click;
|
||||
begin
|
||||
inherited Click;
|
||||
If not Self.PopupVisible then
|
||||
DoButtonClick(Self);
|
||||
end;
|
||||
|
||||
procedure TRxCustomDBLookupCombo.Paint;
|
||||
var
|
||||
Selected:boolean;
|
||||
@ -1217,6 +1337,12 @@ begin
|
||||
SetRect(R1, 3, 3, ClientWidth - 3, ClientHeight - 3);
|
||||
Canvas.FillRect(R1);
|
||||
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
|
||||
PaintDisplayValues(Canvas, R, TextMargin)
|
||||
else
|
||||
@ -1241,6 +1367,7 @@ procedure TRxCustomDBLookupCombo.LookupDataSetChanged(Sender: TObject);
|
||||
begin
|
||||
if PopupVisible then
|
||||
begin
|
||||
FSuccesfullyFind := true;
|
||||
UpdateFieldValues;
|
||||
Invalidate;
|
||||
end;
|
||||
@ -1260,6 +1387,7 @@ begin
|
||||
DataSet := FLookupDataLink.DataSet;
|
||||
FKeyField := DataSet.FieldByName(FLookupField);
|
||||
FListActive := True;
|
||||
FDisplayField := FLookupDataLink.DataSet.FieldByName(FFieldList[FLookupDisplayIndex]);
|
||||
end;
|
||||
FLocateObject.DataSet := DataSet;
|
||||
|
||||
@ -1268,6 +1396,32 @@ begin
|
||||
else KeyValueChanged;
|
||||
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);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
@ -1389,7 +1543,7 @@ end;
|
||||
procedure TRxDBLookupCombo.OnClosePopup(AResult: boolean);
|
||||
begin
|
||||
inherited OnClosePopup(AResult);
|
||||
SetFocus;
|
||||
// SetFocus;
|
||||
{ if (Owner is TWinControl) then
|
||||
TWinControl(Owner).Repaint
|
||||
else
|
||||
|
@ -207,10 +207,6 @@ implementation
|
||||
|
||||
uses Forms, rxdconst, dbconst, Variants;
|
||||
|
||||
resourcestring
|
||||
SMemNoRecords = 'No data found';
|
||||
SInvalidFields = 'No fields defined';
|
||||
|
||||
const
|
||||
ftBlobTypes = [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle,
|
||||
ftDBaseOle, ftTypedBinary, ftOraBlob, ftOraClob];
|
||||
|
@ -26,7 +26,7 @@ translate to Lazarus by alexs in 2005 - 2009
|
||||
<License Value="free ware
|
||||
"/>
|
||||
<Version Major="2" Minor="1" Release="1" Build="103"/>
|
||||
<Files Count="51">
|
||||
<Files Count="54">
|
||||
<Item1>
|
||||
<Filename Value="rxlookup.pas"/>
|
||||
<UnitName Value="rxlookup"/>
|
||||
@ -233,7 +233,23 @@ translate to Lazarus by alexs in 2005 - 2009
|
||||
<Filename Value="rxdbctrls.pas"/>
|
||||
<UnitName Value="RxDBCtrls"/>
|
||||
</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>
|
||||
<i18n>
|
||||
<EnableI18N Value="True"/>
|
||||
<OutDir Value="languages"/>
|
||||
</i18n>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="4">
|
||||
<Item1>
|
||||
|
@ -16,7 +16,7 @@ uses
|
||||
rxdbgrid_findunit, rxdbgrid_columsunit, rxpopupunit, rxcustomchartpanel,
|
||||
rxsortmemds, AutoPanel, pickdate, rxiconv, rxceEditLookupFields, rxclock,
|
||||
rxspin, RxDBSpinEdit, RegisterRxDB, RxTimeEdit, RxDBTimeEdit, RxDBCtrls,
|
||||
LazarusPackageIntf;
|
||||
rxfilterby, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -167,6 +167,7 @@ type
|
||||
FOnPopUpCloseEvent:TPopUpCloseEvent;
|
||||
FPopUpFormOptions:TPopUpFormOptions;
|
||||
FRowCount:word;
|
||||
WControl:TWinControl;
|
||||
function GetDataSet: TDataSet;
|
||||
function GetLookupDisplayIndex: integer;
|
||||
procedure SetDataSet(const AValue: TDataSet);
|
||||
@ -210,6 +211,9 @@ begin
|
||||
Result.DataSet:=ADataSet;
|
||||
Result.LookupDisplayIndex:=ALookupDisplayIndex;
|
||||
|
||||
AControl.Caption:='';
|
||||
Result.WControl:=AControl;
|
||||
|
||||
if Assigned(Font) then
|
||||
begin
|
||||
Result.FGrid.Font.Assign(Font);
|
||||
@ -217,11 +221,11 @@ begin
|
||||
end;
|
||||
|
||||
{$IFDEF LINUX}
|
||||
if Result.ShowModal = mrOk then
|
||||
{ if Result.ShowModal = mrOk then
|
||||
if Assigned(AOnPopUpCloseEvent) then
|
||||
AOnPopUpCloseEvent(true);
|
||||
Result.Free;
|
||||
Result:=nil;
|
||||
Result:=nil;}
|
||||
{$ELSE LINUX}
|
||||
Result.Show;
|
||||
Result.FGrid.UpdateActive;
|
||||
@ -293,7 +297,7 @@ begin
|
||||
inherited KeyDown(Key, Shift);
|
||||
end;
|
||||
FGrid.KeyDown(Key, Shift);
|
||||
Key:=0;
|
||||
// Key:=0;
|
||||
Invalidate;
|
||||
end;
|
||||
|
||||
@ -759,27 +763,67 @@ end;
|
||||
|
||||
procedure TPopUpGrid.ClearFind;
|
||||
begin
|
||||
TPopUpForm(Owner).WControl.Caption:=' ';
|
||||
TPopUpForm(Owner).WControl.Repaint;
|
||||
FFindLine:='';
|
||||
if DatalinkActive then
|
||||
DataSource.DataSet.First;
|
||||
end;
|
||||
|
||||
procedure TPopUpGrid.FindNextChar(AChar: Char);
|
||||
var
|
||||
F:string;
|
||||
begin
|
||||
FFindLine:=FFindLine + AChar;
|
||||
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;
|
||||
|
||||
procedure TPopUpGrid.FindPriorChar;
|
||||
var
|
||||
F:string;
|
||||
begin
|
||||
if FFindLine = '' then exit;
|
||||
F:=FFindLine;
|
||||
Delete(FFindLine, Length(FFindLine), 1);
|
||||
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
|
||||
DataSetLocateThrough(DataSource.DataSet, FLookupDisplayField, FFindLine, [loCaseInsensitive, loPartialKey])
|
||||
else
|
||||
DataSource.DataSet.First;
|
||||
DataSource.DataSet.First;}
|
||||
end;
|
||||
|
||||
procedure TPopUpGrid.SetLookupDisplayIndex(const AValue: integer);
|
||||
@ -791,6 +835,12 @@ end;
|
||||
procedure TPopUpGrid.KeyPress(var Key: char);
|
||||
begin
|
||||
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
|
||||
FindNextChar(Key)
|
||||
else
|
||||
@ -800,6 +850,32 @@ end;
|
||||
|
||||
procedure TPopUpGrid.KeyDown(var Key: Word; Shift: TShiftState);
|
||||
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
|
||||
FindNextChar(Char(Key))
|
||||
else
|
||||
@ -816,7 +892,7 @@ begin
|
||||
inherited KeyDown(Key, Shift);
|
||||
exit;
|
||||
end;
|
||||
Key:=0;
|
||||
Key:=0;}
|
||||
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
|
||||
else
|
||||
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)
|
||||
and (tpCaptionPopup in TToolbarItems(FOwnerItem.Collection).FToolPanel.Options) then
|
||||
OffsetRect(PaintRect, -2, -2);
|
||||
|
@ -180,7 +180,7 @@ function PaintComboEdit(Editor: TCustomMaskEdit; const AText: string;
|
||||
function EditorTextMargins(Editor: TCustomMaskEdit): TPoint;
|
||||
|
||||
implementation
|
||||
uses lclintf, LCLStrConsts, rxconst, rxstrutils, LResources, Forms;
|
||||
uses lclintf, LCLStrConsts, rxconst, rxstrutils, LResources, Forms, LCLProc;
|
||||
|
||||
type
|
||||
TPopupCalendarAccess = class(TPopupCalendar)
|
||||
@ -398,7 +398,9 @@ begin
|
||||
csPopup:
|
||||
begin
|
||||
if FPopup = nil then
|
||||
begin
|
||||
FPopup := CreatePopupCalendar(Self{$IFDEF USED_BiDi}, BiDiMode {$ENDIF});
|
||||
end;
|
||||
FPopup.OnCloseUp := @PopupCloseUp;
|
||||
FPopup.Color := FPopupColor;
|
||||
TRxCalendarGrid(FPopup.Calendar).NotInThisMonthColor:=FNotInThisMonthColor;
|
||||
@ -461,6 +463,7 @@ procedure TCustomRxDateEdit.SetYearDigits(const AValue: TYearDigits);
|
||||
begin
|
||||
if FYearDigits=AValue then exit;
|
||||
FYearDigits:=AValue;
|
||||
UpdateFormat;
|
||||
end;
|
||||
|
||||
procedure TCustomRxDateEdit.CalendarHintsChanged(Sender: TObject);
|
||||
@ -507,7 +510,11 @@ end;}
|
||||
|
||||
procedure TCustomRxDateEdit.UpdateFormat;
|
||||
begin
|
||||
FDateFormat := DefDateFormat(FourDigitYear);
|
||||
case YearDigits of
|
||||
dyDefault:FDateFormat :=DefDateFormat(FourDigitYear);
|
||||
dyFour:FDateFormat := DefDateFormat(true);
|
||||
dyTwo:FDateFormat := DefDateFormat(false);//DefDateMask(FBlanksChar, false);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCustomRxDateEdit.UpdatePopup;
|
||||
@ -807,7 +814,11 @@ end;
|
||||
|
||||
function TCustomRxDateEdit.GetDateMask: string;
|
||||
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;
|
||||
|
||||
procedure TCustomRxDateEdit.UpdateMask;
|
||||
@ -818,12 +829,12 @@ begin
|
||||
DateValue := GetDate;
|
||||
OldFormat := FDateFormat;
|
||||
UpdateFormat;
|
||||
{ if (GetDateMask <> EditMask) or (OldFormat <> FDateFormat) then
|
||||
if (GetDateMask <> EditMask) or (OldFormat <> FDateFormat) then
|
||||
begin
|
||||
{ force update }
|
||||
EditMask := '';
|
||||
EditMask := GetDateMask;
|
||||
end;}
|
||||
end;
|
||||
UpdatePopup;
|
||||
SetDate(DateValue);
|
||||
end;
|
||||
|
Reference in New Issue
Block a user