Доработки Rx

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

kit
постоялец
Сообщения: 156
Зарегистрирован: 29.09.2016 08:39:07

Сообщение kit »

TRxIniPropStorage = class(TIniPropStorage)
...
protected
function DoReadString(const Section, Ident, DefaultValue: string): string; override;

implementation

function TRxIniPropStorage.DoReadString(const Section, Ident, DefaultValue: string): string;
begin
Result := inherited;
if (Pos('Width', Ident) > 0) or (Pos('Height', Ident) > 0) then begin
Result := IntToStr(Application.MainForm.Scale96ToForm(StrToInt(Result)))
end;
end;
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

kit
Пошу прощения за задержку. Давайте пробовать.
Немного переработал код. Но в целом идея стоящая.
brick08
новенький
Сообщения: 12
Зарегистрирован: 05.09.2016 14:39:08

Сообщение brick08 »

Можно ли сделать в RxDBGrid фиксированные колонки, которые бы были как обычные (возможность менять ширину, редактировать и т.д.), но не прокручивались влево (по типу Закрепить области в Excele)? Стандартное FixedCols не дает менять размеры и делать невидимыми.

Добавлено спустя 14 минут 15 секунд:
И еще в rxdbutils в функции DataSetLocateThrough при поиске по нескольким полям не выполнялся код.

Код: Выделить всё

  function CompareRecord: Boolean;
  var
    I: Integer;
  begin
    if FieldCount = 1 then
      Result := CompareField(TField(Fields.First), KeyValues)
    else begin
      Result := True;
      for I := 0 to FieldCount - 1 do
        Result := Result and CompareField(TField(Fields[I]), KeyValues[I]);
    end;
  end; 

Нужно:

Код: Выделить всё

  function CompareRecord: Boolean;
  var
    I: Integer;
  begin
    if FieldCount = 1 then
      Result := CompareField(TField(Fields.First), KeyValues)
    else begin
      Result := False;
      for I := 0 to FieldCount - 1 do
        if not Result then
          Result := CompareField(TField(Fields[I]), KeyValues[I])
        else
          Break;
    end;
  end; 
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Сообщение alexs »

Не понял предложения
Там же получается - что если 1-е поле - истина - то сразу на 2-й итерации выскочет

Текущий код верно работает. В качестве оптимизации просто можно добавить чтобы цикл прерывался - если есть не совпадение.
kit
постоялец
Сообщения: 156
Зарегистрирован: 29.09.2016 08:39:07

Сообщение kit »

Можна в TRxDBGridPrint добавить собитие OnAfterPrint из FReport : TfrReport; ?
brick08
новенький
Сообщения: 12
Зарегистрирован: 05.09.2016 14:39:08

Сообщение brick08 »

alexs писал(а):Не понял предложения

Это я по невнимательности :oops: .
Когда то давно переделал этот код для поиска одного значения по нескольким полям, и если находилось совпадение, то выходил из цикла. А тут попалось на глаза, и почему-то подумал, что исправил баг.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

kit писал(а):Можна в TRxDBGridPrint добавить собитие OnAfterPrint из FReport : TfrReport; ?

А чем не устраивает событие OnAfterExecute?
kit
постоялец
Сообщения: 156
Зарегистрирован: 29.09.2016 08:39:07

Сообщение kit »

Надо зафиксировать что таблица распечатана на принтере
Или добавить опцию непосредсвенной печати после формирования:

function TRxDBGridPrint.DoExecTools: boolean;
...
FReport.PrepareReport;
if rxpoPrint in Options then
FReport.PrintPreparedReport
else
FReport.ShowPreparedReport
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Посмотри ревизию 6749.
Добавил новый флаг rxpoShowPreview - оно?
Также новая демка
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Смотрим ревизию 6752.
Переписал RxToolbar
В основном совместимость осталась
Добавил поддержку масштабирования интерфейса на больших мониторах - в том числе и иконок на кнопках.
Переработал код сохранения/восстановления состояния для поддержки в будущем настройки по всему списку акшенов на форме. Сохраняется позиция разделителей.
Теперь нет возможности кнопки располагать в произвольном порядке - всегда прижаты либо к левому краю, либо к правому
Доработал окно настройки тулбара из программы - правильно отображаются разделители. Окно стало модальным - расположение кнопок на панели изменяется напрямую из окна.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Доработки RxToolbar
Исправлено добавление разедлителя. Улучшен редактор. Добавлен редактор по умолчанию в IDE
kit
постоялец
Сообщения: 156
Зарегистрирован: 29.09.2016 08:39:07

Сообщение kit »

alexs писал(а):Посмотри ревизию 6749.
Добавил новый флаг rxpoShowPreview - оно?

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

Сообщение alexs »

Вынес функции логирования из модуля rxAppUtils в отдельный модуль rxLogging и включил его в пакет rxTools
Обусловлено желанием использовать данные функции в приложениях без GUI.
S_Gur
постоялец
Сообщения: 133
Зарегистрирован: 30.12.2018 21:17:42

Сообщение S_Gur »

Господа, извините, если не в тему, но никак не могу найти, где можно скачать текущую версию Rx под Lazarus
Ответить