From a2ed9319051e796ebc7d43880e4c22465b89738f Mon Sep 17 00:00:00 2001 From: alexs75 Date: Mon, 21 Apr 2008 14:17:43 +0000 Subject: [PATCH] fix error in TRxDBLookupCombo after set value for DataField and LookupSourse.Active=false git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@434 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/curredit.pas | 3 +- components/rx/docs/WhatsNew.eng.txt | 1 + components/rx/docs/WhatsNew.rus.txt | 635 ++++++++++++++-------------- components/rx/docs/error.txt | 2 +- components/rx/docs/faq.txt | 12 +- components/rx/docs/readmy.txt | 70 +-- components/rx/docs/todo.txt | 10 +- components/rx/rxdbgrid.pas | 4 +- components/rx/rxhistory.pas | 191 +++++++++ components/rx/rxlookup.pas | 7 +- 10 files changed, 565 insertions(+), 370 deletions(-) create mode 100644 components/rx/rxhistory.pas diff --git a/components/rx/curredit.pas b/components/rx/curredit.pas index 482d34c18..d6b63aac4 100644 --- a/components/rx/curredit.pas +++ b/components/rx/curredit.pas @@ -665,8 +665,7 @@ begin C := CurrencyString[I]; if C in [',', '.'] then begin - // FCL - FormatFloat -// CurrStr := CurrStr + '''' + C + '''' + CurrStr := CurrStr + '''' + C + '''' end else CurrStr := CurrStr + C; end; diff --git a/components/rx/docs/WhatsNew.eng.txt b/components/rx/docs/WhatsNew.eng.txt index 4b15eb7cd..b006bbda1 100644 --- a/components/rx/docs/WhatsNew.eng.txt +++ b/components/rx/docs/WhatsNew.eng.txt @@ -37,6 +37,7 @@ + In property TRxDBLookupCombo.PopUpFormOptions add field AutoFillColumns. Used in dropdown list. - Cleanup code in TRxDBLookupCombo.Paint + In TRxDBLookupCombo property DropDownCount now work + - fix error in TRxDBLookupCombo after set value for DataField and LookupSourse.Active=false 29.08.2007 - 1.1.5.98 (svn revision 39) + In RxDBgrid - after close dataset list of SelectedRows is cleared + fix resaizing find form for RxDbGrd diff --git a/components/rx/docs/WhatsNew.rus.txt b/components/rx/docs/WhatsNew.rus.txt index 38402e690..c99ffbe49 100644 --- a/components/rx/docs/WhatsNew.rus.txt +++ b/components/rx/docs/WhatsNew.rus.txt @@ -1,351 +1,352 @@ - + TRxCustomDBLookupCombo CircularDataLink - + TRxCustomDBLookupCombo - - TRxCustomDBLookupCombo - DataField - + RxDBGrid DBGrid - + TRxCalendarGrid - . - - rxappicon.pas Windows - GTK2 ( ViruZ - ) - + rxiconv.pas ( iconv.pas A.Voito) - + TToolbar - + TRxCustomDBLookupCombo - - rxctrls fpc 2.2 - + TPopUpColumnTitle + + У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink + + У объекта TRxCustomDBLookupCombo ускорена отрисовка данных + - У объекта TRxCustomDBLookupCombo исправлен выбор первой записи из справочника при + пустом значени в DataField + + В RxDBGrid опубликованы недостающие обработчики из DBGrid + + Реализован новый компонент TRxCalendarGrid - простой календарь без заголовка. + - Исправлена ошибка компиляции модуля rxappicon.pas под Windows при использовании + интерфейса GTK2 (спасибо ViruZ - Вадим Витомский) + + Добавлен модуль rxiconv.pas (оригинальный модуль iconv.pas от A.Voito) + + Небольшое улучшение отрисовки заголовка кнопки в форме настройки TToolbar + + Исправлена отрисовка запрещённого состояния у TRxCustomDBLookupCombo + - Исправлена компиляция модуля rxctrls в fpc 2.2 + + В TPopUpColumnTitle введена поддержка дерективы NEW_STYLE_TITLE_ALIGNMENT_RXDBGRID - + RxDBGrid (Petr Smolik) - + RxDBGrid exsortzeos.pas ZeosDB (Petr Smolik) - - TCurrencyEdit BorderSpacing - + rxstrutils StrToStrings - TStrings - S Delims - + LookupField LookupDisplay - TRxLookupEdit TRxDBLookupCombo - + TRxDBLookupCombo AutoSize - + Font TRxDBLookupCombo - + TField RxDBGrid - TRxDBLookupCombo - - TRxLookupEdit - - + RxDBGrid - + TRxCustomDBLookupCombo - + TRxCustomDBLookupCombo - + RxDBGrid - + TRxDateEdit - + RxDBGrid ftDate, ftDateTime TRxDateEdit - (. Demos/RxDBGrid) - + RxDBGrid GTK GTK2 - + TRxSpeedButton TRxClock - + dbutils - FillValueForField - + RxColumnFooter.FieldName - + TDBDateEdit TRxDateEdit, - DBDateEdit_OLD. - . - + RxDBGrid - - . - + PopUpFormOptions TRxDBLookupCombo AutoFillColumns - - TDBGrid - - - TRxDBLookupCombo - + TRxDBLookupCombo DropDownCount -29.08.2007 - 1.1.5.98 (svn revision 39) - + RxDBGrid (SelectedRows) - - + RxDbGrd - + Lazarus - + TToolbarButton tbrSeparator tbrDivider - tbrSeparator - - tbrDivider - - + TToolbarButton tbrDropDownExtra - . - tbrDropDown + - - . ( - ) -12.08.2007 - 1.1.4.93 - + TRxDBComboBox - + TRxDBLookupCombo OnGetGridCellProps - - - + rx.inc + + В RxDBGrid изображения маркеров вынесены в ресурсы (Petr Smolik) + + Добавлен модуль автоматической сортировки в RxDBGrid exsortzeos.pas для ZeosDB (Petr Smolik) + - В TCurrencyEdit опубликовано свойство BorderSpacing + + В модуль rxstrutils добавлена процедура StrToStrings - заполняет класс TStrings строками + содержащимися в строке S и разделёнными симовлом Delims + + Реализован редактор свойств для полей LookupField и LookupDisplay у компонент + TRxLookupEdit и TRxDBLookupCombo + + TRxDBLookupCombo реализована поддержка свойства AutoSize + + При установке свойства Font у TRxDBLookupCombo выпадающий список использует этот же шрифт + + Если у объекта TField установленый лукапные источники то при редактировании в RxDBGrid + такого поля вызывается редактор на основе TRxDBLookupCombo + - Исправлена ошибка в компоненте TRxLookupEdit - не правильно закрывался выпадающий список + + В RxDBGrid опубликованны недостающие поля + + Косметические изменения отрисовки TRxCustomDBLookupCombo + + Выпадающий список в TRxCustomDBLookupCombo отображатеся просто по клику на компоненте + + В RxDBGrid доработана отрисовка маркера сортировки и заголовка колонки + + Перенесён и дописан компонент TRxDateEdit + + В RxDBGrid реализован редактор для полей типа ftDate, ftDateTime на основае TRxDateEdit + (см. Demos/RxDBGrid) + + Доработки фильтрации в RxDBGrid для GTK и GTK2 + + Перенесены компоненты TRxSpeedButton и TRxClock + + новая функция в модуле dbutils - FillValueForField + + Реализован редактор для RxColumnFooter.FieldName + + TDBDateEdit теперь наследуется от TRxDateEdit, чтобы оставить как было необходимо + включить директиву DBDateEdit_OLD. Для работоспособности программ необходимо переоткрыть все формы + в дизайнере. + + В RxDBGrid опубликованы недостающие поля + - Исправлена ошибка в обработке пустой даты в редакторе дат. + + В свойстве PopUpFormOptions компоненты TRxDBLookupCombo добавлено поле AutoFillColumns - аналог одноимённого поля + из TDBGrid - используется в выпадающем списке + - Улучшен код в отрисовке компоненты TRxDBLookupCombo + + В TRxDBLookupCombo работает свойство DropDownCount + - Исправлена ошибка TRxDBLookupCombo при LookupSourse.Active=false и установке значения для поля DataField +29.08.2007 - версия 1.1.5.98 (svn revision 39) + + В RxDBGrid После закрытия набора данных список помеченных строк (SelectedRows) + очищается + + Улучшено масштабирование формы поиска по RxDbGrd + + Компиляция в последнем Lazarus + + TToolbarButton различает теперь стили tbrSeparator и tbrDivider + tbrSeparator - разделитьль с чертой + tbrDivider - пустой разделитель + + TToolbarButton новый стиль tbrDropDownExtra - кнопка с выпадающим меню. + В отличии от tbrDropDown это работает как кнопка + если нажата крайня правая область - то + тогда появляется меню. (интерфейс ещё коряв - надо будет доработать в дальнейшем) +12.08.2007 - версия 1.1.4.93 + + В TRxDBComboBox опубликованы недостающие поля + + В TRxDBLookupCombo добавлено обработчик OnGetGridCellProps + - позволяет задавать при отрисовке фон в выпадающем списке + + В rx.inc ввёл новую дерективу компиляции RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT - - TRxDbGrid.Options - dgCancelOnExit (. 5 readmy.txt) - - RxDBGrid - + RxDBGrid - + TAutoPanel ( Dmitry V. Bolshakov) - - auto_panel_doc - + OptionsRX - rdgMrOkOnDblClik - RxDbGrid , - RxDbGrid ModalResult:=mrOk; -25.06.2007 - 1.1.3.86 - - TRxMemoryData.SortOnFields - + RxDBGrid TRxMemoryData - - rxsortmemds - + RxDBGrid UpdateTitleHight - - - RxDBGrid - + RxDBGrid | - - - + RxDBGrid.OptionsRx rdgMultiTitleLines - - | - - + rx.inc + если она определени - то в свойстве TRxDbGrid.Options выключается флаг + dgCancelOnExit (см. пункт 5 из readmy.txt) + - В RxDBGrid исправлена ошибка потери фокуса после закрытия списка фильтра + + В примере на RxDBGrid добавлен промер на визуальную фильтрацию данных + + Добавлен компонент TAutoPanel (автор Dmitry V. Bolshakov) - + документация в папке auto_panel_doc + + В свойстве OptionsRX добавлен новый флаг - rdgMrOkOnDblClik + при его установке при двойном нажатии на RxDbGrid форме, которой принадлежит + RxDbGrid присиваивается ModalResult:=mrOk; +25.06.2007 - версия 1.1.3.86 + - Исправлена ошибка в методе TRxMemoryData.SortOnFields + + Добавлена поддержка сортировок из RxDBGrid на TRxMemoryData + - достаточно просто подключить в проект модуль rxsortmemds + + В RxDBGrid добавлен метод UpdateTitleHight - принудительный пересчёт высоты заголовок колонок + - В RxDBGrid испралено определение нажатия на последнйи столбец + + В RxDBGrid в заголовке введена специальная обработка символа | - это + считается безусловный разделитель строк + + В RxDBGrid.OptionsRx добавлен флаг rdgMultiTitleLines - + при наличии в заголовке символа | между строками рисуется разделительная + линия + + В rx.inc ввёл новую дерективу компиляции NEW_STYLE_TITLE_ALIGNMENT_RXDBGRID - , RxDBGrid , - - - - - + TRxDBLookupCombo PopUpFormOptions - , - + TRxDBLookupCombo , - -31.05.2007 - 1.1.2.77 - - rxtoolbar.pas LCL - ( ) - TToolPanel - - rxlogin.pas - SetCursor -15.05.2007 - 1.1.1.75 - + RxDBGrid OptimizeColumnsWidth(AColList:String) - - ( - ";") - + RxDBGrid OptimizeColumnsWidthAll - - - + TRxColumn OptimizeWidth - - - + rdgDblClickOptimizeColWidth RxDBGrid.OptionsRx - - - - RxDBGrid - + RxDBGrid -28.03.2007 - 1.1.0.68 - - RxDBGrid - + RxDBGrid OptionsRx rdgXORColSizing - - - (), - - Delphi - - ( Yogrik) - + ToolBar- - + TRxDBLookupCombo - + TRxColumnTitle Hint ShowHint - , - TRxDBGrid - + TRxDBGrid ( Yogrik) -01.11.2006 - 1.0.19.61 - + TRxDBLookupCombo - , LookupDisplayIndex. - - LCL - + RxDBGrid (Footer row), - . - : - TDataSet + если она определна, то при создании новых колонок в RxDBGrid заголовок центрируется, + если эта деректива не определена - то поведение заголовка стандартное - выравнивается + по левому краю + + В TRxDBLookupCombo если в свойстве PopUpFormOptions заданы колонки то при отрисовке данных + в строке используется ширина, указанная в колонках + + В TRxDBLookupCombo после закрытия списка запоминается ширина колонок, установленная + оператором +31.05.2007 - версия 1.1.2.77 + - Исправлена компиляция модуля rxtoolbar.pas с последними версиями LCL + (после введения тем) - сам TToolPanel ещё не работает с темами + - Исправил компиляцию модуля rxlogin.pas - была ошибка на SetCursor +15.05.2007 - версия 1.1.1.75 + + В RxDBGrid добавлен метод OptimizeColumnsWidth(AColList:String) - подбирает + ширину колонки (колонок - перечисление через ";") по содержимому + + В RxDBGrid добавлен метод OptimizeColumnsWidthAll - соотвественно производит автободбор + ширины для всех колонок + + TRxColumn добавлен метод OptimizeWidth - подбор ширины указанной колонки + Для всех методов подбора ширины производится также выфетчивание всех записей + + Опция rdgDblClickOptimizeColWidth в свойстве RxDBGrid.OptionsRx работает + - исправлен глюк расчёта высоты заголовка колонки для многострочного заголовка + - Исправлен глюк отерытия примера на RxDBGrid + + В примере на RxDBGrid добавлен примера на оптимизацию ширины +28.03.2007 - версия 1.1.0.68 + - В RxDBGrid исправлена отрисовка итоговой строки при изменении размера колонок + + В RxDBGrid в свойстве OptionsRx добавлено состояние rdgXORColSizing + - при включённом прорисовка масштабирования колонки происходит линией + (контуром), окончательная прорисовка колонки происходит после окончания изменения + размера столбца - стандартное поведение в Delphi + - Изменён метод отрисовки итоговой строки (код от Yogrik) + + Небольшие доработки с позиционированием кнопок в ToolBar-е + + В TRxDBLookupCombo улучшена отрисовка выпадающего списка + + В TRxColumnTitle добавлены свойства Hint и ShowHint - подсказка, всплывающая при + наведении курсора на заголовок колонки в TRxDBGrid + + Реализована поддержка фильтрации днных в TRxDBGrid (код от Yogrik) +01.11.2006 - версия 1.0.19.61 + + В выпадающем списке компонента TRxDBLookupCombo реализован быстрый поиск + по столбцу, заданному свойством LookupDisplayIndex. + Из-за ограничений LCL поиск осуществляется пока только по вводу чисел + + В RxDBGrid добавлено отображение строки итогов (Footer row), соответсвенно введены + необходимые свойства в колонках. + Внимание: из-за ошибок в TDataSet не работает коректно пока агрегатные функции (SUM, MAX, MIN, AVG) - + TRxMemoryData AppendRecord - - TDataSet - + - RxDBGrid - RxDBGrid - - RxDBGrid OnDrawColumnCell -08.09.2006 - 1.0.18.56 - + TToolPanel ButtonAllign = (tbaNone, tbaLeft, tbaRignt) - , tbaNone - - + TToolbarItem ( ) - tbrSeparator - - + TRxDBLookupCombo - (parent) - LCL Win32 -19.08.2006 - 1.0.17.53 - + popup TRxDBLookupCombo bsNone - ( ) - + popup TRxDBLookupCombo - - - ESC TRxDBLookupCombo - - - null - , ( ) - - + RxDBLookupCombo OnChange -15.05.2006 - 1.0.16.49 - + TRxDBLookupCombo - + TRxDBLookupCombo PopUpFormOptions - - - PopUpFormOptions.Columns - , - LookupDisplay - (";") + + В TRxMemoryData реализовал свойство AppendRecord - пока не будет написано аналогичное + в TDataSet + + Новый Демо - RxDBGrid - демонстрация возможностей RxDBGrid + - В RxDBGrid исправлен вызов OnDrawColumnCell +08.09.2006 - версия 1.0.18.56 + + У объекта TToolPanel ввёл параметр ButtonAllign = (tbaNone, tbaLeft, tbaRignt) + выравнивание по умолчанию кнопок, tbaNone - это старое поведение + + У объекта TToolbarItem (кнопка панели инструментов) введена поддержка типа + tbrSeparator - разделитель между кнопками + + При закрытии списка у TRxDBLookupCombo происходит перерисовка + владельца (parent) компонента - обхожу глюк LCL в Win32 +19.08.2006 - версия 1.0.17.53 + + изменил по умолчанию рамку popup окна у TRxDBLookupCombo на стиль bsNone + (так привычнее) + + Одиночный клик мышки в списке popup окна у TRxDBLookupCombo также закрывает + его + - исправлена поведении в обработке клавиши ESC у компоненты TRxDBLookupCombo - + если поле набора данных не пустое - то происходит установка поля в null и обнуление + сканкода клавишы, при пустом поле (повторное нажатие) - клавиша не брабатывается + + У RxDBLookupCombo не срабатывало событие OnChange +15.05.2006 - версия 1.0.16.49 + + Полностью переписан выпадающий список для объекта TRxDBLookupCombo + + У объекта TRxDBLookupCombo введено новое свойство PopUpFormOptions - в нём + собраны все параметры выпадающего списка + если заполнен список PopUpFormOptions.Columns то список отоборажаемых + полей в гриде берётся из этого свойства, иначе возьмётся строка + LookupDisplay - здесь перечисляется список полей через точку с запятой (";") -11.05.2006 - 1.0.15.47 - + RxDBGrid , - - + OptionsRx Ctrl+F - - + OptionsRx Ctrl+W - - + TRxDbGrid.OnGetCellProps - , - - - + TRxDBGrid : +11.05.2006 - версия 1.0.15.47 + + В RxDBGrid добавлено свойство с дополнительными параметрами, работают пока два + отображение окна поиска в списке и окна выбора колонок к отображению + + при включённой опции в свойстве OptionsRx нажатие сочетания клавш Ctrl+F + отображает окно поиска по списку + + при включённой опции в свойстве OptionsRx нажатие сочетания клавш Ctrl+W + отображает окно выбора колонок + + изменён случай вызлва для события TRxDbGrid.OnGetCellProps - для ячеки, которая + в данный момент сфокусирована - событие не вызвается + + В TRxDBGrid добавлено свойство: function TRxDBGrid.ColumnByFieldName(AFieldName: string): TRxColumn - - - nil -11.04.2006 - 1.0.14.41 - - CurrencyEdit -14.02.2006 - 1.0.13.40 - - RxDbGrid - - RxDbGrid - + TToolPanel (Selected image list) - ( ) - - RxDbGrid ( 0) - - TToolPanel Items - Action -12.01.2006 - 1.0.12.38 - + RxDbGrid Orientation - - - + ( 90 - ) + возвращает указатель на требуемый столбец по имени поля набора данных + в случае отсутсвия данного столбца - вернёт nil +11.04.2006 - версия 1.0.14.41 + - небольшое исправление в отображение CurrencyEdit +14.02.2006 - версия 1.0.13.40 + - исправлена отрисовка RxDbGrid с не подключённым набором данных + - исправлена в RxDbGrid отрисовка заголовка колонки с набором полей по умолчанию + + В TToolPanel добавлена поддержка выделенного списка изображений (Selected image list) + (при наличии в нём изображений кнопки рисуются из него при наведённых на него курсоре) + - исправлена ошибка сжатия колонки в RxDbGrid (деление на 0) + - Исправлена кустомизация TToolPanel во время выполнения еслине у всех Items + установлено свойство Action +12.01.2006 - версия 1.0.12.38 + + в RxDbGrid в заголовке колонки добавлено свойство Orientation - отвечает за + направление отрисовки текста в заголовке столбца + + добавлена демка для демонстрацииотрисовки текста вертикально (под углом 90 + градусов) 21.12.2005 - + RxDbGrid AllowedOperation - - - + RxDbGrid OnGetCellProps - + TRxMemoryData OnFilterRecordEx - , TDataSet - OnFilterRecord -16.12.2005 - 1.0.11.35 - + TToolbarButton - Lazarus - + - + Linux -27.11.2005 - 1.0.11.34 - - TToolPanel - - runtime -22.10.2005 - 1.0.10.33 - + TRxLabel - - + TSecretPanel - - - TRxMemoryData - , FieldDefs - DB - - + TRxLoginDialog - - - TRxDBComboBox - -15.10.2005 - 1.0.9.30 - + TRxCustomDBLookupCombo - - ( Flat) - + TRxCustomDBLookupCombo - ESC ( DataField.Clear) - - TRxCustomDBLookupCombo - DataField - DisplayAllFields - EmptyValue - - TRxCustomDBLookupCombo - - DataField ( ) - - TRxCustomDBLookupCombo - - DropDownCount - - TRxCustomDBLookupCombo - - Enter - + TRxMemoryData - Lazarus - FieldDefs, Design-time - + TRxMemoryData - - - DataSet- - + TRxDBGrid - FieldName - + TRxDBGrid - - KeyList PickList ( TRxDBComboBox) + + в RxDbGrid добавлено свойство AllowedOperation - для запрета выплнения некоторых + операций + + в RxDbGrid доработан обработчик события OnGetCellProps + + в TRxMemoryData введено свойство OnFilterRecordEx - временно, пока в TDataSet + не реализуют работу свойства OnFilterRecord +16.12.2005 - версия 1.0.11.35 + + доработано поведение TToolbarButton для коректной работы + в последних сборках Lazarus + + исправлен регистр в названиях некоторых модулей + + пробная сборка под Linux +27.11.2005 - версия 1.0.11.34 + - TToolPanel - исправлена ошибка сохранения свойств панели при + редактировании её в runtime +22.10.2005 - версия 1.0.10.33 + + TRxLabel - перенесён компонент + + TSecretPanel - перенесён компонент + - TRxMemoryData - внесён код, обходящий ошибку востановления свойства FieldDefs + в модуле DB - работает вроде теперь всё правильно + + TRxLoginDialog - начат перенесён + - TRxDBComboBox - небольшой багфикс +15.10.2005 - версия 1.0.9.30 + + TRxCustomDBLookupCombo - Улучшена отрисовка + (старый стиль отрисовки будет при включённом Flat) + + TRxCustomDBLookupCombo - При нажатии клавишы ESC поле очищается (метод DataField.Clear) + - TRxCustomDBLookupCombo - Исправлена ошибка отрисовки пустого значения DataField в режиме + DisplayAllFields - отображается значение свойства EmptyValue + - TRxCustomDBLookupCombo - Исправлена ошибка открытия списка допустимых значений при + пустом DataField (список стоял на последней записи) + - TRxCustomDBLookupCombo - исправлен расчёт высоты выпадающего списка в зависимости + от значения свойства DropDownCount + - TRxCustomDBLookupCombo - исправлен выбор значения в выпадающем спсике нажатием + клавишы Enter + + TRxMemoryData - Введён код для обхода глюка Lazarus с не корректным созданием полей + по данным FieldDefs, которые были созданы в Design-time + + TRxMemoryData - реализован редактор компоненты - копия струтктуры из другого + DataSet-а + + TRxDBGrid - подключен редактор свойства FieldName у колонки + + TRxDBGrid - реализована возможность подстановки значений для отображения + через свойства KeyList и PickList (аналогично TRxDBComboBox) 10.10.2005 - - RxDbGrid ImageList, - - - ( 0) - + RxDbGrid FormStorage - - TToolPanel - + TPageManager - + TRxAppIcon - - - . - .. - - - - . Windows - - - . - - - - - - + - Исправлена ошибка при рисовании изображения в RxDbGrid из ImageList, + также операция немного ускорена + - исправлена ошибка при изменении ширины колонки (деление на 0) + + начата работа над сохранением состояния колонок RxDbGrid через FormStorage + - Небольшой багофикс при работе с изображениями в TToolPanel + + Добавил компонент TPageManager + + Написал новый компонент TRxAppIcon - это для тех кто не хочет возиться с + ресурсами - в момент запуска приложению будет сопоставлена указанная иконка. + т.к. она хранится не в стандартном виндовом ресурсе - поэтому проводник + будет показывать на приложении обычную иконку - но в момент запуска + появится указанная. Работает только под Windows - если кто знает как это + делается в других системах - допишите. + Когда в лазаре доделают нормальную работу с иконками - компоненту надо + переписать - а может лазарь научится создавать стандартный ресурс виндовый + для программы - тогда в этой компоненте надобность вобще отпадёт 08.10.2005 - + - + - - tpGlyphPopup, tpCaptionPopup - - - + RxDbGrid ImageList (. readmy.txt) - + TRXXPManifest - Windows - - XP + + Окно настройки теперь вегда сверху + + Для более тонкой настройки отображения кнопок добави в опциях тулбара + два дополнительных флага - tpGlyphPopup, tpCaptionPopup + - небольшие багофиксы + + реализована работа с изображениями в RxDbGrid через ImageList (см. readmy.txt) + + Добавлен компонент TRXXPManifest - работает только под Windows - + поддержка XP манифеста 05.10.2005 - + Flat, TransparentBtn - + Options, tpFlatBtns, tpTransparentBtns - + - Ctrl - - - + TToolbarItem Tag + + убрал свойстов Flat, TransparentBtn + + Добавил свойство Options, включающее tpFlatBtns, tpTransparentBtns + + Добавил включение окна настройки подвойному клику на панели + правой кнопкой мышки с зажатым Ctrl + - исправл баг множественного открытия окна настройки панели + + у TToolbarItem добавил свойство Tag 04.10.2005 - + TToolPanel - + WindowsXP - + Flat WindowsXP - - - .. TImageList.Draw - Action - - - - - ( Items) - - - + TToolPanel + + в TToolPanel пофиксил баг не верного начального размера кнопки + + Добавлена возможность прорисовки кнопок в стиле WindowsXP + + При в стиле Flat и WindowsXP при наведении курсора на кнопку + она приподнимается для лучшего визуализации + - т.к. TImageList.Draw не умеет рисовать запроещённое состояние + изоражения при задисабливании Action не дисаблится картинка + также из-за этого нет возможности сделать изображение с тенью + - вылазиет баг в лазаре если в дизайнере удалить напрямую с панели + кнопку (не через Items) - ещё не знаю как в лазаре в дизайнере + для некоторых элементов запретить удаление + + Добавил демку для TToolPanel 03.10.2005 - + - + TToolPanel - + - + DropDownMenu - + ( run-time) + + перевёл все имена файлов к нижнему регистру + + в TToolPanel пофиксил некторые баги + + работает окно настройки панели + + Поддерживается DropDownMenu в стиле полного нажатия кнопки + + скрытие не нужных кнопок (настройка в run-time) 02.10.2005 (beta) - + ( ) TToolPanel - RxToolbar - ToolBar - - Actions ( Items) - - . - : - + run-time - + propstorage - : - - DropDownMenu - - , (.) - - - ( run-time) - - ( Win9x, Flat) - WinXP - - DesignTime - - - + + Начата реализация (полностью своя) TToolPanel - аналог RxToolbar + по функциональности похоже на стандартный ToolBar - точно + также работает через Actions (для добавления кнопок использовать метод Items) + полностью моя перерисовка кнопок - нормальный внешний вид. + работает: + + кустомизация расположения кнопок и внешнего вида в run-time + + сохранение во внешний конфигурационный файл через propstorage + будут реализованы: + - DropDownMenu - в зависимости от стиля кнопки либо выпадает + при нажатии на кнопку, либо будет отдельнная облясть кнопки (суб.кнопка) для + вызова меню + - скрытие ненужных кнопок (настройка в run-time) + - стили отображения (сейчас стандарт Win9x, Flat) - добавляю как в WinXP + - мастер создания панели в DesignTime в лазаре + змеченые глюки + - не всегда коректно востанавливается при ширина кнопок - + принимаю заявки на функциональность и ошибки 30.10.2005 - + - + RxDice, RxSwith, TRxDBComboBox - + 2 - RX RX DBAware - - TRxDBLookupCombo + + перенёс + + перенёс RxDice, RxSwith, TRxDBComboBox + + Разбил на 2 закладки - RX и RX DBAware + - исправил баг с начальным размером у TRxDBLookupCombo 28.10.2005 - + Currency edit ( ) - - - FormatFloat FCL - - + + практически работает Currency edit (не проверил под линухом) + - из-за ошибки в функиции FormatFloat из FCL нельзя использовать в строке + форматирования одинарные или двойные кавычки - повесится 19.10.2005 - + TRxMemoryData - - blob - - + Currency edit - + - - - + + TRxMemoryData - работает почти полностью - нет поддержки blob - надо разбирать + + начал перенос Currency edit + + правил ошибки + - ещё не всё проверил в линуксе - теоретически должно собраться и работать 05.10.2005 - + TRxDBGrid - " , - , - - DBGridEh EhLib. - Jesus Reyes ( DBGrid- ) - , - . - . - , - ( ) + + Добавлен TRxDBGrid - написан по "мотивам оригинального, ещё есть что переносить + самое главное, почему его начал переносить - захотелось сделать сортировку + наборов данных как в DBGridEh из EhLib. Я вышел с предложением на + Jesus Reyes (автор DBGrid-а о добавлении функциональности) - он сказал, что нефиг + превращать стандартный компонент в новогоднюю ёлку. Поэтому стал сам доделывать + наследника. + Сейчас работает многострочные заголовки, подерживается нажатие на заголовок + как на кнопку с опциональным отображением символа сортировки (соответсвующее событие) - . exSortFB.pas - - . - - ( TExDBGridSortEngine) - . TFBDataSet ( FireBird) - - . - exsortmds.pas - MemDS - - - ( MemDS 1- ) + также добавил механизм автосортировки см. файл exSortFB.pas - тут наиболее лаконично + всё. Кратко - для необходимых типов источноков данных + пишется обёртка (наследник от TExDBGridSortEngine) который умеет в этом + источнике данных переупорядочивать записи. Мой TFBDataSet (работаю с FireBird) + умеет сам в локальном кэше сортировать запис - поэтому там всё просто. + exsortmds.pas - этот модуль для сортировки данных в стандартном MemDS + немного кривовато написано - практически нет механизмов добраться до внутреннего + буфера данных (кстати в MemDS есть баг позиционирования курсора на 1-ю запись) - - TRxMemoryData - - - - ( DataSet- ) - . MemDS - . + - TRxMemoryData - вроде всё скомпилировалось практически без правки - но чтото при + добавлении записи - ошибка (подозреваю не совместимость DataSet-а из дельфей и Лазаря) + надо разобраться. Стандартный MemDS ограничен - нет блоб и прочего. 31.09.2005 - + Add component TFolderLister - - - , LazReport-a - ( ) + + Add component TFolderLister - это моя разработка - на основе неё добавлю + ещё компонент для построения меню, содержащее отчёты для LazReport-a + (аналог у меня в дельфях моей также разработки) 07.01.2005 i'm port next RX components: - TDBDateEdit - - + TDBDateEdit - не даёт вводить значения руками - наследство от оригинального TDateEdit TRxDBCalcEdit TRXLookupEdit, - TRxDBLookupCombo - - - , - - - - . + TRxDBLookupCombo - тут баг - при кидании на форму не коректно устанавливаются + размеры, приходится руками ресайзить - когда нить доделаю - или кто сможет - + помогайте. and next modules: @@ -355,8 +356,8 @@ RXStrutils.pas VCLUtils.pas - - (alexs) +жду замечаний и предложений + Лагунов Алексей (alexs) - ALEXS75--YANDEX--RU + ALEXS75-на-YANDEX-точка-RU diff --git a/components/rx/docs/error.txt b/components/rx/docs/error.txt index db55e35ec..5fa8b1273 100644 --- a/components/rx/docs/error.txt +++ b/components/rx/docs/error.txt @@ -1,2 +1,2 @@ - : +Замеченные проблемы: diff --git a/components/rx/docs/faq.txt b/components/rx/docs/faq.txt index 324aa99ea..252e06a86 100644 --- a/components/rx/docs/faq.txt +++ b/components/rx/docs/faq.txt @@ -1,6 +1,6 @@ -1. - Q. TRxCustomDBLookupCombo - HOME END / - A. TRxDBGrid - ( TDBGrid) - - / Ctrl+Home/Ctrl+End \ No newline at end of file +1. + Q. Почему в выподающем списке TRxCustomDBLookupCombo клавишы + HOME и END не позиционируют в начало/конец списка + A. Для отображения списка используется объект TRxDBGrid + (прямой наследник TDBGrid) - в нём для позиционирования в + начало/конец списка клавиши Ctrl+Home/Ctrl+End \ No newline at end of file diff --git a/components/rx/docs/readmy.txt b/components/rx/docs/readmy.txt index ddaeca0a0..4d7bb8a76 100644 --- a/components/rx/docs/readmy.txt +++ b/components/rx/docs/readmy.txt @@ -1,51 +1,51 @@ -1. RxDbGrid ImageList - KeyList - " "=" " - .. 1,2,3 - 2,5,1 - : +1. Для использовании в RxDbGrid списка изображений ImageList + необходимо указать в свойстве KeyList правило выбора изображения + в формате "Значение поля"="Код изображения" + т.е. если поле принимает значения 1,2,3 а для этих значений необходимы + рисунки с номерами 2,5,1 то список необходимо заполнить следующим + образом: 1=2 2=5 3=1 -2. TPageManager - ( ) - , ( Format) - (%d) - - - - - : - ' . %d %d.' +2. TPageManager предназначен для построения мастеров + умеет отображать в заголовке формы (если установлена соответсвующая опция) + текст, который сформатирует из строк информациия (пропускается через функцию Format) + строка информации может содержать в себе два целочисленных параметра (%d) + первый - текущий шаг + второй - всего шагов + пример: + 'Мастер приёма. Шаг %d из %d.' - StatusControl - - . + StatusControl - если установлен то в заголовке также отображается эта же + информация. - OnCheckPageEnabled , - Next Prior + событие OnCheckPageEnabled служит для указания, что конкретная страница + запрещена при нажатии на кнопки Next и Prior эта страница пропускается -3. RxAppIcon - - "Load Icon" +3. RxAppIcon - для выбора иконки приложения в режиме разработки нажмите + правой кнопкой мышки по компоненте и выберите "Load Icon" - - - : + В ран-тайме тот-же эффект достигается кодом: RxAppIcon1.LoadFromFile('full-2.ico'); RxAppIcon1.ApplyIcon; - ^^^^^^^^^^^ - + ^^^^^^^^^^^ - путь к иконке -4. Lazarus - 0.9.19 (10151) - SVN 01.11.2006 +4. Для нормальной работы используйте последнюю версию Lazarus + сборкой не ниже 0.9.19 (10151) - появилась в SVN 01.11.2006 -5. RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT dgCancelOnExit +5. Замечание о RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT и флаге dgCancelOnExit в TRxDbGrid.Options - : - TRxDbGrid (TSpeedButton) - - - , TRxDbGrid - - Linux + в случае использования следующей схемы под линуксом: + В форму ложим список TRxDbGrid с открытым набором данных и отдельную кнопку (TSpeedButton) на + добавление новой записи в набор данных с вызовом другой модальной формы для редактирования + добовляемых значение + при открытии формы редактирования набор данных, связанный с TRxDbGrid переходит в состояние + редактирования + это поведени наблюдается только по Linux - TDbGrid - Cancel + объяснение заключается в том что при потере фокуса TDbGrid и его наследниеи вызывают + метод Cancel -6. FreePascal.ru () +6. Вопросы задавать мылом или на форуме FreePascal.ru (предпочтительней) diff --git a/components/rx/docs/todo.txt b/components/rx/docs/todo.txt index ada1fd2ec..38eb2a9b9 100644 --- a/components/rx/docs/todo.txt +++ b/components/rx/docs/todo.txt @@ -1,9 +1,9 @@ -1. - TPageManager - PageControl- +1. +в TPageManager необходимо обработать ситуация прямого изменения +закладки в PageControl-е -2. RxDBGrid - - : +2. В RxDBGrid + - планирую сделать объеденение заголовков в один групирующий: |-----------------| | | |-----------------| diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index 1eed89918..2cb0767dc 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -27,8 +27,8 @@ type TOptionRx = (rdgAllowColumnsForm, rdgAllowDialogFind, - rdgHighlightFocusCol, //TODO: - rdgHighlightFocusRow, //TODO: + rdgHighlightFocusCol, //TODO: + rdgHighlightFocusRow, //TODO: rdgDblClickOptimizeColWidth, rdgFooterRows, rdgXORColSizing, diff --git a/components/rx/rxhistory.pas b/components/rx/rxhistory.pas new file mode 100644 index 000000000..2f92a1f66 --- /dev/null +++ b/components/rx/rxhistory.pas @@ -0,0 +1,191 @@ +unit RXHistory; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, + rxtoolbar; + +type + TToolbarButtonStyleCntrl = (tbrcNotChange, tbrcDropDown, tbrcDropDownExtra); + + PNavigateRec = ^TNavigateRec; + TNavigateRec = packed record + Name:string; + Cond:string; + Next:PNavigateRec; + end; + + TOnNavigateEvent = procedure(Sender:TObject; const EventName, EventMacro:string) of object; + { TRXHistory } + + TRXHistory = class(TComponent) + private + FButtonNext: string; + FButtonPrior: string; + FButtonStyle: TToolbarButtonStyleCntrl; + FNextButton: TToolbarItem; + FNextButtonName: string; + FOnNavigateEvent: TOnNavigateEvent; + FPriorButton: TToolbarItem; + FPriorButtonName: string; + FToolPanel: TToolPanel; + function GetNextButtonName: string; + function GetPriorButtonName: string; + procedure SetButtonStyle(const AValue: TToolbarButtonStyleCntrl); + procedure SetNextButtonName(const AValue: string); + procedure SetPriorButtonName(const AValue: string); + procedure SetToolPanel(const AValue: TToolPanel); + function SetBtn(const ABtnName: string;var Button:TToolbarItem):boolean; + protected + procedure Loaded; override; + public + constructor Create(AOwner: TComponent); override; + property PriorButton:TToolbarItem read FPriorButton; + property NextButton:TToolbarItem read FNextButton; + published + property ToolPanel:TToolPanel read FToolPanel write SetToolPanel; + property PriorButtonName:string read GetPriorButtonName write SetPriorButtonName; + property NextButtonName:string read GetNextButtonName write SetNextButtonName; + property ButtonStyle:TToolbarButtonStyleCntrl read FButtonStyle write SetButtonStyle default tbrcNotChange; + property OnNavigateEvent:TOnNavigateEvent read FOnNavigateEvent write FOnNavigateEvent; + end; + +procedure Register; + +implementation +uses PropEdits, Componenteditors, TypInfo; + +type + + { TTRXHistoryBtnNameProperty } + + TTRXHistoryBtnNameProperty = class(TStringPropertyEditor) + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + +{ TTRXHistoryBtnNameProperty } + +function TTRXHistoryBtnNameProperty.GetAttributes: TPropertyAttributes; +begin + Result:=inherited GetAttributes; + Result:=Result + [paValueList, paSortList, paMultiSelect]; +end; + +procedure TTRXHistoryBtnNameProperty.GetValues(Proc: TGetStrProc); +var + ToolPanel:TToolPanel; + i:integer; +begin + ToolPanel := GetObjectProp(GetComponent(0), 'ToolPanel') as TToolPanel; + if Assigned(ToolPanel) then + for I := 0 to ToolPanel.Items.Count - 1 do + begin + if Assigned(ToolPanel.Items[i].Action) then + Proc(ToolPanel.Items[i].Action.Name); + end; +end; + +procedure Register; +begin + RegisterComponents('RX',[TRXHistory]); + + RegisterPropertyEditor(TypeInfo(string), TRXHistory, 'PriorButtonName', TTRXHistoryBtnNameProperty); + RegisterPropertyEditor(TypeInfo(string), TRXHistory, 'NextButtonName', TTRXHistoryBtnNameProperty); +end; + +{ TRXHistory } + +procedure TRXHistory.SetToolPanel(const AValue: TToolPanel); +begin + if FToolPanel=AValue then exit; + FToolPanel:=AValue; +end; + +function TRXHistory.SetBtn(const ABtnName: string;var Button:TToolbarItem):boolean; +var + i:integer; +begin + Result:=false; + if not Assigned(FToolPanel) then exit; + Button:=FToolPanel.Items.ByActionName[ABtnName]; + Result:=Assigned(Button); + if Result then + begin + case FButtonStyle of + tbrcDropDown:Button.ButtonStyle:=tbrDropDown; + tbrcDropDownExtra:Button.ButtonStyle:=tbrDropDownExtra; + end; + end; +end; + +procedure TRXHistory.Loaded; +begin + inherited Loaded; + if not SetBtn(FNextButtonName, FNextButton) then + FNextButtonName:=''; + if not SetBtn(FPriorButtonName, FPriorButton) then + FPriorButtonName:=''; +end; + +constructor TRXHistory.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FButtonStyle:=tbrcNotChange; +end; + +procedure TRXHistory.SetNextButtonName(const AValue: string); +begin + if FNextButtonName=AValue then exit; + if csLoading in ComponentState then + FNextButtonName:=AValue + else + begin + if SetBtn(AValue, FNextButton) then + FNextButtonName:=AValue + else + FNextButtonName:=''; + end; +end; + +procedure TRXHistory.SetButtonStyle(const AValue: TToolbarButtonStyleCntrl); +begin + if FButtonStyle=AValue then exit; + FButtonStyle:=AValue; +end; + +function TRXHistory.GetNextButtonName: string; +begin + if Assigned(NextButton) and Assigned(NextButton.Action) then + Result:=NextButton.Action.Name + else + Result:=''; +end; + +function TRXHistory.GetPriorButtonName: string; +begin + if Assigned(PriorButton) and Assigned(PriorButton.Action) then + Result:=PriorButton.Action.Name + else + Result:=''; +end; + +procedure TRXHistory.SetPriorButtonName(const AValue: string); +begin + if FPriorButtonName=AValue then exit; + if csLoading in ComponentState then + FPriorButtonName:=AValue + else + begin + if SetBtn(AValue, FPriorButton) then + FPriorButtonName:=AValue + else + FPriorButtonName:=''; + end; +end; + +end. diff --git a/components/rx/rxlookup.pas b/components/rx/rxlookup.pas index c6d7efa09..28c7d1c76 100644 --- a/components/rx/rxlookup.pas +++ b/components/rx/rxlookup.pas @@ -946,8 +946,11 @@ begin if FValue <> Value then begin FValue := Value; - FLocateObject.Locate(FLookupField, FValue, true, false); - KeyValueChanged; + if Assigned(FLookupDataLink.DataSet) and (FLookupDataLink.DataSet.Active) then + begin + FLocateObject.Locate(FLookupField, FValue, true, false); + KeyValueChanged; + end; end; end;