Отрисовка многострочных заголовков и объеденение

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

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 24.02.2010 22:33:36

dunin
я именно и имел это ввиду, когда говорил про первую ошибку. жду следующих больших выходных, чтобы посвятить время на правку этого.
amateur
Ну и у нас потихоньку всё движется. Просто это не основная моя работа :-) и делаю я то, что мне нужно в первую очередь.
Шапка будет развиваться, подвал тоже уже есть (пока правада однострочный). Если есть желание - я всегда принимаю толковые патчики (именно так появились фильтрации в гриде, меню в левом вехнем углу).
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 04.03.2010 15:05:05

Немного не в тему, но близко. Вопрос к alexs-у...

Закончил с экспортом во внешние офисные приложения. Все нормально, даже многострочные заголовки как и полагается отрисовываются.
Изображение

Но... Дернуло меня привязать на экспорт ноткий сочетание Ctrl+E (типа того Ctrl + Export). Как результат при нажатии оных клавиш грид переходит в режим совершенно мне не нужного автофильтра и приобретает какой-то совершенно унылый вид.
Изображение

Вопрос:
Как отключить такое поведение грида? Как отключить автофильтр, чтобы не вызвался ни при каких обстоятельствах?

Спасибо.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 04.03.2010 22:42:35

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

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 05.03.2010 10:18:18

alexs писал(а):Посмотри опции - кажись там именно для отключения фильтра есть одна.

Да в том то и дело, что все отключено...

Разрулили ситуацию так: в исходнике rxdbgrid заремарил напрочь две процедуры, вешающие хоткей помимо желания кодера

procedure DoCreateJMenu;
procedure KeyDown(var Key : Word; Shift : TShiftState); override;

alexs, думаю гриду нужен фикс...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 05.03.2010 11:59:11

Я посмотрел код, дествительно - фишка не отключается. Введу флажок в RxOptions для этого.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 06.03.2010 10:08:26

Скачал новую версию в надежде на правильную отрисовку заголовков. Два часа плясал c бубном - откатился на предыдущую. Компиляция начинается с сообщения, что versionresource не найден и пошло-поехало. В предыдущей сборке получилось заремарить - здесь никак. Затык на AboutVersionForm, или что-то вроде...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 06.03.2010 23:46:52

ну... как всё запущено...
возьми из новой версии модуль rxDBGrid
а вобще - возьми FPC и Lazarus свежие
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 10.03.2010 11:30:40

Любитель работать на официально-стабильных версиях лазаруса вновь вопрошает к alexs-у... :oops:

Изображение
Долго не мог понять причину вот такой вот странной ошибки (см.рис) в собственной бета-проге. Естественно думал, что руки кривые...

Оно, конечно не исключено, но вот что обнаружил. Ошибка возникает рэндомно при закрытии-открытии датасета ТОЛЬКО если у связанного с датасетом RxDBGrid-а включена опция rdgFooterRows. При этом сам сначала отрисовка самого грид "замораживается" (полностью, сплошной белый фон), а после и прога отказывается работать.

RxDBGrid:
- мультизаголовки включены и по прежнему глючат;
- футер включен (1 строка);
- TRxColumn(Grid.Columns[j]).Footer.ValueType:= fvtStaticText; (все колонки)
- ошибка не завит от того пишу что-то в футер или нет.
- "возьми из новой версии модуль rxDBGrid" выполнено. Версия rxDBGrid последняя.

Добавлено спустя 3 часа 11 минут 36 секунд:
Ошибку победил корявейшим образом. Отписываюсь alexs-у для информации...

Сначала сделал так:
Код: Выделить всё
unit rxdbgrid;
...
procedure TRxDBGrid.CalcStatTotals;
var
  P:TBookmark;
  DS:TDataSet;
  i:integer;
//  J:integer;
begin
  if (not ((rdgFooterRows in OptionsRx) and DatalinkActive))
    or (Columns.Count = 0)
    //or (TRxColumn(Columns).Footer.ValueType = fvtStaticText) // попытался воткнуть проверку, дабы отменить лишнее не нужное вхождение в процедуру, но, понятное дело, не работает. Не знаю как правильно воткнуть - не я автор юнита
      then Exit;
  inc(FInProcessCalc);
  DS:=DataSource.DataSet;;
...
и т.д.


Понятно дело, что ничего не получилось и не могло получиться. Сделал так:
Код: Выделить всё
unit rxdbgrid;
...
procedure TRxDBGrid.CalcStatTotals;
var
  P:TBookmark;
  DS:TDataSet;
  i:integer;
//  J:integer;
begin

exit; // все равно футер у меня статиктекст - ничего подсчитывать не надо - лишний пробег по источнику данных отменен

  if (not ((rdgFooterRows in OptionsRx) and DatalinkActive)) or (Columns.Count = 0)
      then Exit;
  inc(FInProcessCalc);
  DS:=DataSource.DataSet;;
...
и т.д.


Все заработало как часы. Прими к сведению плз. Спасибо.

И еще... не помешало бы добавить что-то вроде
TRxColumn(Columns).Footer.Font.Style:= fsBold; Это так... На будущее...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 10.03.2010 23:15:47

dunin писал(а):Долго не мог понять причину вот такой вот странной ошибки (см.рис) в собственной бета-проге. Естественно думал, что руки кривые...

Слушай - сделай пример, чтобы я мог это проверить. Я с таким ещё не сталкивался...
dunin писал(а):TRxColumn(Columns).Footer.Font.Style:= fsBold; Это так... На будущее...

Т.е. ты хочеш сказать, что хочеш рулить начертанием в каждом отдельно взятом подвале столбца?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 10.03.2010 23:28:38

alexs писал(а):Слушай - сделай пример, чтобы я мог это проверить. Я с таким ещё не сталкивался...

Попробую. Но вылет рэндомный и черт его знает от чего еще зависел/зависит... попробую...
alexs писал(а):Т.е. ты хочеш сказать, что хочеш рулить начертанием в каждом отдельно взятом подвале столбца?

Ну не обязательно в каждой колонке, а хотя-бы чтобы можно было шрифт футера сделать отличным от основного шрифта грида.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 11.03.2010 20:21:53

dunin писал(а):Ну не обязательно в каждой колонке, а хотя-бы чтобы можно было шрифт футера сделать отличным от основного шрифта грида.

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

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 25.03.2010 16:14:37

alexs, в гриде по Ctrl+C и Ctrl+T выскакивают какие-то совершенно не нужные формы сортировки/фильтрации. Как их отключить? (Привык все делать через правильно составленный select)

в FAllowedOperations все в False
в FOptionsRx все в False, кроме rdgMultiTitleline, которых все жду когда правильно заработают...

Я так понимаю вот здесь еще надо какие-то флаги прикрутить:
Код: Выделить всё
unit rxdbgrid;
...
procedure TRxDBGrid.KeyDown(var Key: Word; Shift: TShiftState);
var
  FTmpReadOnly:boolean;
begin
...
    ord('T'):begin
               if ssCtrl in Shift {(СЮДА ФЛАГ in FOptionsRx)} then
               begin
                 OnFilterBy(Self);
                 exit;
               end;
             end;
    ord('E'):begin
               if (ssCtrl in Shift) and (rdgAllowQuickFilter in FOptionsRx) then
               begin
                 OnFilter(Self);
                 exit;
               end;
             end;
    ord('Q'):begin
               if ssCtrl in Shift {(СЮДА ФЛАГ in FOptionsRx)} then
               begin
                 OnFilterClose(Self);
                 exit;
               end;
             end;
    ord('C'):begin
               if ssCtrl in Shift {(СЮДА ФЛАГ in FOptionsRx)} then
               begin               
...

Сделай плз. А то чужой юнит править - или целиком ношу поддержки на себя взваливать (не осилю) или до первого обновления...

Спасибо.

зы. Связка [Ctrl+C] на сортировку вообще в принципе не правильно. Это копирование в буфер - у всех уже в подкорке сидит. Эти клавиши лучше на копирование и перекинуть. Если ячейка в режиме редактирования, то копировать. Тут просить отключить ни кто не будет. ИМХО.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Отрисовка многострочных заголовков и объеденение

Сообщение alexs » 25.03.2010 23:54:15

Напиши патчик, я включу в исходники.
Насчёт хоткеев - это тоже присланный код - можно устроить голосование на то, какие хоткеии использовать, можно даже настраиваемые сделать...
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Отрисовка многострочных заголовков и объеденение

Сообщение Padre_Mortius » 26.03.2010 00:10:32

Может стоит этот момент сделать настраиваемым? На всех все равно не угодить, а так каждый будет сам настраивать)
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Отрисовка многострочных заголовков и объеденение

Сообщение dunin » 26.03.2010 09:25:45

alexs писал(а):Напиши патчик, я включу в исходники.
...

Вот:
rxdbgrid20100326.zip
(20.3 КБ) Скачиваний: 528

Заработали флаги rdgAllowFilterForm (Ctrl+T), rdgAllowSortForm (Ctrl+C).
Флаг rdgMultiTitleLines по прежнему не используется и не работает. Его не трогал, так как теоретически он завязан на отрисовку многостраничных заголовков. Заработать-то заработали, но...

По большому счету все это временные костыли, т.к. флаги еще отвечают за включение/отключение tMenuItem создаваемого для грида tPopupMenu. Которое создается, а к tRxDBGrid ни где и не как не привязывается. Зачем создается? Только память занимает. Вызвать/привязать к гриду его никак, потому и хоткей из меню работает на событии TRxDBGrid.KeyDown...

По логике надо бы какой-то флаг типа rdgAllowRxGridPopupMenu сделать, который бы отключал стандартное свойство tRxDBGrid.PopupMenu:= ... ну и, соответственно, привязывал встроенное меню. Если флаг в False - вообще меню не создавать. На кой ляд оно надо, если кодер свое привязал?

Короче, темный лес... флаги подключил, дальше ничего не трогал. :?
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Пред.След.

Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru