Страница 12 из 13

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

СообщениеДобавлено: 30.07.2019 11:26:57
alexs
Доработал поиск в RxDBGrid - теперь есть возможность искать по всем колонкам.

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

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

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

СообщениеДобавлено: 28.10.2019 14:11:00
alexs
Готово - проверяй
ревизия 7173.

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

СообщениеДобавлено: 06.12.2019 12:05:22
kit
Чтоб уйти от проблеми с масштабированием помогает 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);

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

СообщениеДобавлено: 06.12.2019 14:16:41
alexs
Ну это совсем костыль :-)
В принципе идеи есть как победить - но надо проверять.
Как будет время - попробую позаниматься.
Там есть логика - когда надо перекодировать ширину/высоту для масштабирования, а когда нет.

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

СообщениеДобавлено: 06.12.2019 17:05:38
java73
Я может глупость спрошу, но (просто не пользуюсь пакетом).
В пакете нет случайно компонентов, реализующих какой-нибудь интерфейс проверки корректности вводимых в них данных и визуально оповещающих об этом. Например, TEdit, горящий красным, если вводится ересь. Календарь без введенной даты тоже например. Лень писать, вдруг есть)

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

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

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

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

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

СообщениеДобавлено: 06.12.2019 19:50:27
alexs
Так оно практически так и есть
Не визуальный контрол - в нем заполняешь коллекцию с контролами, которые надо валидировать.
По умолчанию валидация идёт на ввод значения в контрол.
Если надо более сложное - у каждого элемента коллекции есть событие - валидатор. Туда пишешь свою логику.
При закрытии не даёт закрыть если хотябы один из элементов не валидный. Фокус ввода устанавливаеся на нужный элемент и выдаётся сообщение. PageControl и фрэймы при валидации обрабатывается.

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

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

На всякий пожарный прикладываю его патч в аттаче

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

СообщениеДобавлено: 02.03.2020 12:37:59
alexs
Спасибо
Посмотрю

Добавлено спустя 14 минут 18 секунд:
Я не могу понять его проблему - всё прекрасно вводится на пустом датасете с пустыми полями.

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

СообщениеДобавлено: 02.03.2020 13:21:50
zoltanleo
Хм, лучше выяснить это у топикстартера по выше приведенной ссылке. Не парься насчёт буржуйского, я сам вовсю переводчиком пользуюсь ;)

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

СообщениеДобавлено: 02.07.2020 11:19:52
alexs
В RxDBGrid для колонки добавил поле PopUpMenu - чтобы можно было индивидуально настраивать всплывающие меню для колонок таблицы

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

СообщениеДобавлено: 12.04.2021 08:31:28
ssadragon
Приветствую!
Решил написать здесь, так как прикладываю как бы "доработку"
В общем проблема с поиском!
Решил исправить немного. При вызове формы поиска по 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;

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

СообщениеДобавлено: 12.04.2021 09:11:31
alexs
Спасибо. Посмотрю.