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

Глюки rxDBGrid

СообщениеДобавлено: 12.12.2011 19:28:14
ronin
Поставил обработчик события RxDBGrid TitleClick, но при нажатии по шапке столбца левой кнопкой мыши возвращается всегда предыдущий столбец, а на первом столбце событие вообще не срабатывает, а при щелчке правой кнопкой мыши всё ок, почему так?

Добавлено спустя 5 минут:
UPD ещё какой то непонятный глюк - последний столбец не отображает данных, просто пустые ячейки, если добавляю пустой столбец то в предыдущем всё ок, данные показываются о_О

Добавлено спустя 16 минут 53 секунды:
UPD2 поставил стандартный грид, всё ок, все данные отображаются корректно, TitleClick отрабатывает на нажатие левой кнопки мыши как надо

автор ответь пожалуйста, очень надо использовать rxDBGrid

Добавлено спустя 16 часов 14 секунд:
с сортировкой разобрался, свойство AutoSort поставил в false и сразу стала работать сортировка по щелчку левой кнопкой...

Добавлено спустя 2 минуты 5 секунд:
остаётся вопрос по последнему столбцу, в desigtime режиме активировал набор данных, всё ок, последний столбец отображает данные... в рантайме не хочет :(

Добавлено спустя 41 минуту 30 секунд:
отключил индикатор, последний столбец стал показывать данные, буду разбираться

Добавлено спустя 33 минуты 3 секунды:
в общем времени разбираться нету добавил следующий код

Код: Выделить всё
procedure TGemsForm.RxDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.Index=TDBGrid(Sender).Columns.Count-1 then begin
    TDBGrid(Sender).Canvas.TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
    TDBGrid(Sender).Canvas.Font.Style:=[];
  end;

  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;


данные выводятся...

надеюсь автор объяснит данные недостатки, почему так :)

Добавлено спустя 1 час 35 минут 6 секунд:
ещё обнаружил ошибку: если вызвать диалог изменения видимости и расположения столбцов (TrxDBGridColumsForm) и попытаться нажать кнопку смещения столбца вниз, при этом не выделив в листбоксе ни одной строки, генерируется ошибка Out of bounds

вот в этом месте кода:

Код: Выделить всё
procedure TrxDBGridColumsForm.SpeedButton2Click(Sender: TObject);
var
  S:string;
  i:integer;
begin
  if CheckListBox1.Items.Count > 1 then
  begin
      if CheckListBox1.ItemIndex<CheckListBox1.Items.Count-1 then
      begin
        i:=CheckListBox1.ItemIndex+1;
        S:=CheckListBox1.Items[CheckListBox1.ItemIndex];
        CheckListBox1.Items[CheckListBox1.ItemIndex]:=CheckListBox1.Items[i];
        CheckListBox1.Items[i]:=S;
        CheckListBox1.ItemIndex:=i;
      end;
  end;
end;

Re: Глюки rxDBGrid

СообщениеДобавлено: 24.12.2011 09:56:44
alexs
ronin писал(а):ещё обнаружил ошибку: если вызвать диалог изменения видимости и расположения столбцов (TrxDBGridColumsForm) и попытаться нажать кнопку смещения столбца вниз, при этом не выделив в листбоксе ни одной строки, генерируется ошибка Out of bounds

Не понял, как можно не выделять строку - там она по умолчанию выделена. Но вставил код для проверки ситуации.

Re: Глюки rxDBGrid

СообщениеДобавлено: 24.12.2011 18:13:46
ronin
Не понял, как можно не выделять строку - там она по умолчанию выделена


ну я же врать не буду :) нажимаю пункт меню сетки, открывается окно столбцов грида, нажимаю кнопку "сместить вниз", вылетает исключение

спасибо за ответ

Re: Глюки rxDBGrid

СообщениеДобавлено: 25.12.2011 22:47:13
alexs
Ошибка ушла?

Re: Глюки rxDBGrid

СообщениеДобавлено: 29.12.2011 10:16:59
grigoreo
потверждаю глюк есть лечится только выключением индикатора, указатель в обработчике при включеном индикаторе всегда смещен на один...

Re: Глюки rxDBGrid

СообщениеДобавлено: 29.12.2011 19:16:41
alexs
А это точно глюк - а не фича?
И, как мне кажется, это стандарное поведение базового DBGrid-а.

Re: Глюки rxDBGrid

СообщениеДобавлено: 30.12.2011 09:06:19
ronin
дело в том что указатель смещён не с учётом индикатора, что кажется логичным, а именно на 1 меньше, т.е. при включённом индикаторе щёлкая по шапке столбца Column ссылается на предыдущий столбец, таким образом при щелчке по шапке первого столбца (после индикатора) событие вообще не отрабатывает, дальше со сдвигом на 1 столбец, т.е. при щелчке по шапке второго столбца Column ссылается на первый столбец и т.д.

данное поведение меняется либо при отключении индикатора, либо как я писал выше при установке свойства Autosort в false

в стандартном гриде такого нет

Re: Глюки rxDBGrid

СообщениеДобавлено: 30.12.2011 20:45:39
alexs
ronin писал(а):в стандартном гриде такого нет

Хорошо - поглядим.

Re: Глюки rxDBGrid

СообщениеДобавлено: 20.01.2012 08:14:46
ronin
ещё заметил один небольшой недостаток. у меня главная форма приложения имеет свойство FormStyle=fsNormal, остальные формы fsStayOnTop, для того чтобы при работе с главной формой остальные не прятались за главную и всегда были сверху. При открытии формы в модальном режиме и попытке открыть rxDBGridColumsForm (выбор видимых столбцов) данная форма оказывается за текущей формой, потому что свойство FormStyle=fsNormal для данной формы, я думаю это неправильно и по-умолчанию оно должно быть таким, чтобы обеспечить 100% появление окошка с выбором столбцов

Re: Глюки rxDBGrid

СообщениеДобавлено: 20.01.2012 20:53:18
alexs
ronin
Это особенности менеджера окон.
К RX это не относится.

Re: Глюки rxDBGrid

СообщениеДобавлено: 20.01.2012 21:23:22
ronin
почему тогда остальные гриды которые я использовал ранее ведут себя как надо? пришлось менять свойство данной формы в папке с библиотекой и перекомпилировать проект. раз уж вы считаете это стандартным поведением... чтож, прийдётся смириться

Re: Глюки rxDBGrid

СообщениеДобавлено: 03.02.2012 09:05:28
ronin
проверил тут ещё RXDBLookupComboBox тоже аналогичный баг, если форма в StayOnTop то выпадающий список не видно, он появляется за формой... или это тоже стандартное поведение? для сведения, стандартный DBLookupComboBox выпадает как надо, независимо от состояния формы, даже если она StayOnTop и в модальном режиме, как то так

Re: Глюки rxDBGrid

СообщениеДобавлено: 04.02.2012 01:38:14
alexs
RXDBLookupComboBox - для него конечно это не очень хорошо. Но там какие-то проблемы были изначально. Попробуй у его попап-окна выставить StayOnTop.

Я сам этот режим (StayOnTop) не признаю (абсолютно не нужная фича) - поэтому сейчас проверять не буду.
Потести - если всё будет нормально - то можно включить опционально такое поведение (готовь патчик).

Инетересует мнение других разработчиков - кому либо нужно это поведение?

Re: Глюки rxDBGrid

СообщениеДобавлено: 08.02.2012 09:21:13
ronin
Я сам этот режим (StayOnTop) не признаю (абсолютно не нужная фича)


тогда у меня вопрос как реализовать многооконный интерфейс в программе при условии что главная форма развёрнута на весь экран и чтобы остальные открытые формы приложения не пропадали при щелчке на главной или использовании меню главного окна? как например в фотошопе или paint.net (mdi режим не в счёт)

Re: Глюки rxDBGrid

СообщениеДобавлено: 08.02.2012 11:01:46
Mr.Smart
ronin поиграйте со свойством TForm.PopupParent