Страница 1 из 1

rxdbGrid

СообщениеДобавлено: 23.12.2011 10:33:30
grigoreo
Алексей подправь плиз кусок кода в процедуре TRxDBGrid.CalcTitle;

там переменая H отвечающая за высоту титлов, вычисляется 2 раза причем второй затирает результат первого (сразу вопрос на кой там лишний код), мне как раз нужен первый алгоритм я использую в Query запрос select * from <какая нить таблица>, и заранее не определяю ни ширину колонок ни ее какпции, все приходит с представлением а настройки колонок с самой базы, т.е у меня все динамически, поэтому я постоянно ремирую второй алгоритм,

поставь уже плиз проверку на то когда использовать первый а когда второй...

Re: rxdbGrid

СообщениеДобавлено: 24.12.2011 09:45:01
dunin
Алексей, помоги разобраться пожалуйста

Добавил вот такой обработчик
Код: Выделить всё
procedure TMainForm.GridReDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  //var FontText:TColor;
begin

  //FontText := tDBGrid(Sender).Canvas.Font.Color;
    if (not (gdFocused in State)) and (not (gdSelected in State)) then begin
      if (tDBGrid(Sender).DataSource.DataSet.FieldByName('id_status').AsInteger in [1,6])
        then tDBGrid(Sender).Canvas.Font.Color := clRed else
      if (tDBGrid(Sender).DataSource.DataSet.FieldByName('id_status').AsInteger in [5,8])
        then tDBGrid(Sender).Canvas.Font.Color := clGray else
      if (tDBGrid(Sender).DataSource.DataSet.FieldByName('id_performer').AsInteger = UserID)
        then tDBGrid(Sender).Canvas.Font.Color := clMaroon else
      if (tDBGrid(Sender).DataSource.DataSet.FieldByName('id_client').AsInteger = UserID)
        then tDBGrid(Sender).Canvas.Font.Color := clNavy else
     end;

  tDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
  //tDBGrid(Sender).Canvas.Font.Color := FontText;

end;   

В результате последняя колонка не отрисовывается.
Изображение Изображение
Куда копать? Или бага?

Добавлено спустя 7 часов 28 минут 41 секунду:
Если сделать так:
Код: Выделить всё
GridRe.Options:= GridRe.Options - [dgindicator];

То первая колонка (индикатор), понятное дело, пропадает, но последняя отображается корректно.
Все таки баг? Не?

Re: rxdbGrid

СообщениеДобавлено: 24.12.2011 18:14:53
ronin
я в соседней теме тот же баг описал

решил проблему TextOut для последней колонки (костыль) :)

p.s. причём в данном случае и ортировка глючит, щелчок по первому столбцу не отрабатывает вообще, а щелчок по шапке второго отрабатывает как по шапке первого и т.д.

Re: rxdbGrid

СообщениеДобавлено: 24.12.2011 19:29:25
dunin
ronin писал(а):p.s. причём в данном случае и ортировка глючит, щелчок по первому столбцу не отрабатывает вообще, а щелчок по шапке
второго отрабатывает как по шапке первого и т.д.

Да. подтверждаю. Есть такое. :(

Re: rxdbGrid

СообщениеДобавлено: 24.12.2011 20:48:34
Ism
Об этом надо писать в багтрекер с примером проекта воспроизводящего ошибку
Ну или в личку автору.

Re: rxdbGrid

СообщениеДобавлено: 25.12.2011 16:27:56
dunin
Блин... Весь моск сломал - судя по исходникам RxDBGrid-а все должно без ошибки отрисовываться... :shock:

Добавлено спустя 6 часов 17 минут 47 секунд:
Нашел неожиданное решение.
Код: Выделить всё
procedure TMainForm.GridReDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  ...
  TRxDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol - 1 ,Column,State);
end;

Хотя почему так и почему "DataCol минус один" - так и не разобрался. :(

Re: rxdbGrid

СообщениеДобавлено: 06.06.2012 09:47:25
dunin
Господа, подскажите, что надо включить-выключить, чтобы быстрый поиск по первым символам с клавитуры работал?
Вроде раньше работало - на пойму какое(ие) свойства неправильно поставил... :| не могу найти.

Re: rxdbGrid

СообщениеДобавлено: 24.07.2012 12:58:21
OberonAR
dunin писал(а):Господа, подскажите, что надо включить-выключить, чтобы быстрый поиск по первым символам с клавитуры работал?
Вроде раньше работало - на пойму какое(ие) свойства неправильно поставил... :| не могу найти.


Присоединяюсь к вопросу. Как заставить это работать?

Re: rxdbGrid

СообщениеДобавлено: 24.07.2012 18:27:44
svk12
OptionsRx - rdgAllowQuickSearch ?

Но, похоже, не работает для полей с русским текстом.

Re: rxdbGrid

СообщениеДобавлено: 24.07.2012 22:00:53
alexs
Проверю

Re: rxdbGrid

СообщениеДобавлено: 24.07.2012 22:18:17
dunin
dunin писал(а):06.06.2012 09:47:25
...чтобы быстрый поиск по первым символам с клавитуры работал?
Вроде раньше работало...

alexs писал(а):24.07.2012 22:00:53
Проверю

Ну нормально так чо... и двух месяцев не прошло... :roll:
ОК. Ждемс...

Re: rxdbGrid

СообщениеДобавлено: 25.07.2012 00:35:11
alexs
dunin писал(а):Ну нормально так чо... и двух месяцев не прошло... :roll:

Ну за два месяца можно и самому разобраться, и патчик сделать :lol:

Добавлено спустя 10 минут 21 секунду:
Всё работает.
Lazarus 1.1 r38033M FPC 2.7.1 x86_64-linux-gtk 2
rx также последний
Fedora Linux 16 x 64.

Из замечаний:
Запретить редактирование грида
Код: Выделить всё
ReadOnly = true
Option = Options - [dgEditing]
OptionsRx = OptionsRx + [rdgAllowQuickSearch]

После этого поиск активируется прямым набором текста в гриде.

Re: rxdbGrid

СообщениеДобавлено: 25.07.2012 09:28:09
dunin
alexs писал(а):...
Из замечаний:
Запретить редактирование грида
...

ОК. Искренне спасибо.