rxdbGrid
Модераторы: alexs, Модераторы
rxdbGrid
Алексей подправь плиз кусок кода в процедуре TRxDBGrid.CalcTitle;
там переменая H отвечающая за высоту титлов, вычисляется 2 раза причем второй затирает результат первого (сразу вопрос на кой там лишний код), мне как раз нужен первый алгоритм я использую в Query запрос select * from <какая нить таблица>, и заранее не определяю ни ширину колонок ни ее какпции, все приходит с представлением а настройки колонок с самой базы, т.е у меня все динамически, поэтому я постоянно ремирую второй алгоритм,
поставь уже плиз проверку на то когда использовать первый а когда второй...
там переменая H отвечающая за высоту титлов, вычисляется 2 раза причем второй затирает результат первого (сразу вопрос на кой там лишний код), мне как раз нужен первый алгоритм я использую в Query запрос select * from <какая нить таблица>, и заранее не определяю ни ширину колонок ни ее какпции, все приходит с представлением а настройки колонок с самой базы, т.е у меня все динамически, поэтому я постоянно ремирую второй алгоритм,
поставь уже плиз проверку на то когда использовать первый а когда второй...
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
Алексей, помоги разобраться пожалуйста
Добавил вот такой обработчик
В результате последняя колонка не отрисовывается.

Куда копать? Или бага?
Добавлено спустя 7 часов 28 минут 41 секунду:
Если сделать так:
То первая колонка (индикатор), понятное дело, пропадает, но последняя отображается корректно.
Все таки баг? Не?
Добавил вот такой обработчик
Код: Выделить всё
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];То первая колонка (индикатор), понятное дело, пропадает, но последняя отображается корректно.
Все таки баг? Не?
я в соседней теме тот же баг описал
решил проблему TextOut для последней колонки (костыль)
p.s. причём в данном случае и ортировка глючит, щелчок по первому столбцу не отрабатывает вообще, а щелчок по шапке второго отрабатывает как по шапке первого и т.д.
решил проблему TextOut для последней колонки (костыль)
p.s. причём в данном случае и ортировка глючит, щелчок по первому столбцу не отрабатывает вообще, а щелчок по шапке второго отрабатывает как по шапке первого и т.д.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
ronin писал(а):p.s. причём в данном случае и ортировка глючит, щелчок по первому столбцу не отрабатывает вообще, а щелчок по шапке
второго отрабатывает как по шапке первого и т.д.
Да. подтверждаю. Есть такое.
Об этом надо писать в багтрекер с примером проекта воспроизводящего ошибку
Ну или в личку автору.
Ну или в личку автору.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
Блин... Весь моск сломал - судя по исходникам RxDBGrid-а все должно без ошибки отрисовываться... 
Добавлено спустя 6 часов 17 минут 47 секунд:
Нашел неожиданное решение.
Хотя почему так и почему "DataCol минус один" - так и не разобрался.
Добавлено спустя 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 минус один" - так и не разобрался.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
Господа, подскажите, что надо включить-выключить, чтобы быстрый поиск по первым символам с клавитуры работал?
Вроде раньше работало - на пойму какое(ие) свойства неправильно поставил...
не могу найти.
Вроде раньше работало - на пойму какое(ие) свойства неправильно поставил...
dunin писал(а):Господа, подскажите, что надо включить-выключить, чтобы быстрый поиск по первым символам с клавитуры работал?
Вроде раньше работало - на пойму какое(ие) свойства неправильно поставил...не могу найти.
Присоединяюсь к вопросу. Как заставить это работать?
OptionsRx - rdgAllowQuickSearch ?
Но, похоже, не работает для полей с русским текстом.
Но, похоже, не работает для полей с русским текстом.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
dunin писал(а):06.06.2012 09:47:25
...чтобы быстрый поиск по первым символам с клавитуры работал?
Вроде раньше работало...
alexs писал(а):24.07.2012 22:00:53
Проверю
Ну нормально так чо... и двух месяцев не прошло...
ОК. Ждемс...
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
dunin писал(а):Ну нормально так чо... и двух месяцев не прошло...![]()
Ну за два месяца можно и самому разобраться, и патчик сделать
Добавлено спустя 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]
После этого поиск активируется прямым набором текста в гриде.
- Вложения
-
- demo_33_RxDBGrid.tar.bz2
- Пример быстрого поика в RxDBGrid
- (78.54 КБ) 792 скачивания
