Доработки Rx

Модераторы: alexs, Модераторы

Re: Доработки Rx

Сообщение alexs » 30.07.2019 11:26:57

Доработал поиск в RxDBGrid - теперь есть возможность искать по всем колонкам.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение brick08 » 28.10.2019 14:03:22

Алексей, будет время, добавь пож-та в модуль rxdbgrid в функции
function TRxColumnGroupParam.GetGroupTotal: string;
function TRxColumnFooterItem.GetStatTotal: string;
формат поля ftFMTBcd для подсчета итоговых значений.
А то zeos усердно внедряет эти типы полей.
brick08
новенький
 
Сообщения: 12
Зарегистрирован: 05.09.2016 15:39:08

Re: Доработки Rx

Сообщение alexs » 28.10.2019 14:11:00

Готово - проверяй
ревизия 7173.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение kit » 06.12.2019 12:05:22

Чтоб уйти от проблеми с масштабированием помогает Application.Scaled := False

function TRxIniPropStorage.DoReadString(const Section, Ident,
DefaultValue: string): string;
var
S: String;
ASize: LongInt;
ASize1: Integer;
begin
Result := inherited DoReadString(Section, Ident, DefaultValue);
if not(Application.Scaled) then Exit;
{$IfNDef FIX_WIDTH_WIDE_STRING96}
S:=UpperCase(Ident);
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Доработки Rx

Сообщение alexs » 06.12.2019 14:16:41

Ну это совсем костыль :-)
В принципе идеи есть как победить - но надо проверять.
Как будет время - попробую позаниматься.
Там есть логика - когда надо перекодировать ширину/высоту для масштабирования, а когда нет.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение java73 » 06.12.2019 17:05:38

Я может глупость спрошу, но (просто не пользуюсь пакетом).
В пакете нет случайно компонентов, реализующих какой-нибудь интерфейс проверки корректности вводимых в них данных и визуально оповещающих об этом. Например, TEdit, горящий красным, если вводится ересь. Календарь без введенной даты тоже например. Лень писать, вдруг есть)
java73
постоялец
 
Сообщения: 257
Зарегистрирован: 21.11.2013 09:08:10

Re: Доработки Rx

Сообщение alexs » 06.12.2019 17:58:30

Есть компонент, который проверяет на заполненность данных (не пустые)
Особенно актуально для DBEdit-ов (да и вообще всех DBxxx) компонент.
В принципе там есть событие на ручную проверку - через обработчик
Сообщение об ошибке выдаётся при закрытии формы (форму не даст закрыть) и выборе элемента с ошибочным контролом.
В качестве бонуса понимает метки (TLabel), привязанные к контролам - берёт оттуда название контрола.
Выделение цветом - не делал. Давай код - добавлю.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение java73 » 06.12.2019 18:36:41

DB-компоненты не хочу. Ладно, подумаю, как лучше. Идея была такая: каждая форма (или фрейм), позволяющая редактировать данные, имеет свойство, например, valid, или nored, как нравится. При закрытии метод чтения этого свойства пробегается по всем контролам на форме (фрейме), которые реализуют обозначенный интерфейс, читает их аналогичное свойство-boolean функцию, если не true, то кидает фокус на этот контрол, вызывает у него хинт "неверное значение" и не дает закрыться, отправляя в result = false.
java73
постоялец
 
Сообщения: 257
Зарегистрирован: 21.11.2013 09:08:10

Re: Доработки Rx

Сообщение alexs » 06.12.2019 19:50:27

Так оно практически так и есть
Не визуальный контрол - в нем заполняешь коллекцию с контролами, которые надо валидировать.
По умолчанию валидация идёт на ввод значения в контрол.
Если надо более сложное - у каждого элемента коллекции есть событие - валидатор. Туда пишешь свою логику.
При закрытии не даёт закрыть если хотябы один из элементов не валидный. Фокус ввода устанавливаеся на нужный элемент и выдаётся сообщение. PageControl и фрэймы при валидации обрабатывается.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение zoltanleo » 02.03.2020 12:05:55

Леш, здесь на основном FP-форуме один перец выложил патч. Суть его проблемы в том, что нельзя напрямую редактировать ячейку грида, если соответствующее поле датасета пустое. Ну и там, по мелочи. Оригинал сообщения здесь
https://forum.lazarus.freepascal.org/in ... cseen.html

На всякий пожарный прикладываю его патч в аттаче
Вложения
TRxDBGridDateEditorEditChange.7z
(858 байт) Скачиваний: 768
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Доработки Rx

Сообщение alexs » 02.03.2020 12:37:59

Спасибо
Посмотрю

Добавлено спустя 14 минут 18 секунд:
Я не могу понять его проблему - всё прекрасно вводится на пустом датасете с пустыми полями.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение zoltanleo » 02.03.2020 13:21:50

Хм, лучше выяснить это у топикстартера по выше приведенной ссылке. Не парься насчёт буржуйского, я сам вовсю переводчиком пользуюсь ;)
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Доработки Rx

Сообщение alexs » 02.07.2020 11:19:52

В RxDBGrid для колонки добавил поле PopUpMenu - чтобы можно было индивидуально настраивать всплывающие меню для колонок таблицы
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Доработки Rx

Сообщение ssadragon » 12.04.2021 08:31:28

Приветствую!
Решил написать здесь, так как прикладываю как бы "доработку"
В общем проблема с поиском!
Решил исправить немного. При вызове формы поиска по Ctrl+F в форме каждый раз надо выставлять галочки, надоело, решил проставить их в зависимости от того как настроен грид.
Также при направлении поиска rsdAll поиск находя первый результат останавливался на нем и при нажатии на кнопку "искать далее" дальше ни чего не искал. Поправил как мог - вроде работает. Только не сообразил как бы сделать этот поиск по кругу, было бы ещё лучше!

Код: Выделить всё
Index: rxdbgrid_findunit.pas
===================================================================
--- rxdbgrid_findunit.pas   (revision 7987)
+++ rxdbgrid_findunit.pas   (working copy)
@@ -60,7 +60,9 @@
     procedure FormCreate(Sender: TObject);
     procedure FormShow(Sender: TObject);
     procedure RadioButton1Click(Sender: TObject);
+    procedure RadioGroup1SelectionChanged(Sender: TObject);
   private
+    FirstSearch: Boolean;
     FGrid:TRxDBGrid;
     FDataSet:TDataSet;
     procedure SetGrid(AGrid:TRxDBGrid);
@@ -121,6 +123,12 @@
   ComboBox1.Enabled:=RadioButton1.Checked;
end;

+procedure TrxDBGridFindForm.RadioGroup1SelectionChanged(Sender: TObject);
+begin
+  if RadioGroup1.ItemIndex = 0 then
+    FirstSearch:=True;
+end;
+
procedure TrxDBGridFindForm.BtnFindClick(Sender: TObject);
var
   FieldName, S:string;
@@ -152,6 +160,11 @@
       {$ELSE}
       P:=FDataSet.Bookmark;
       {$ENDIF}
+      If SearchOrigin = rsdAll Then
+        If FirstSearch then
+          FDataSet.First
+        else
+          FDataSet.Next;
       if SearchOrigin = rsdForward then
         FDataSet.Next
       else
@@ -180,6 +193,7 @@
       if not R then
         FDataSet.Bookmark:=P;
       {$ENDIF}
+      FirstSearch := False;
     end;
   end;
end;
@@ -200,6 +214,8 @@
     end;

     ComboBox1.ItemIndex:=ComboBox1.Items.IndexOf(AGrid.SelectedColumn.Title.Caption);
+    CheckBox1.Checked   := Not (loCaseInsensitive In AGrid.SearchOptions.QuickSearchOptions);
+    CheckBox2.Checked   := loPartialKey In AGrid.SearchOptions.QuickSearchOptions;
   end;

   FDataSet:=nil;

Код: Выделить всё
Index: rxdbutils.pas
===================================================================
--- rxdbutils.pas   (revision 7987)
+++ rxdbutils.pas   (working copy)
@@ -539,8 +539,6 @@
       try
         if SearchOrigin in [rsdAll, rsdForward] then
         begin
-          if SearchOrigin = rsdAll then
-            DataSet.First;
           while not DataSet.EOF do
           begin
             Result := CompareRecord;
Последний раз редактировалось ssadragon 12.04.2021 09:16:14, всего редактировалось 1 раз.
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: Доработки Rx

Сообщение alexs » 12.04.2021 09:11:31

Спасибо. Посмотрю.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.След.

Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru