Страница 2 из 3
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 24.02.2010 21:33:36
alexs
duninя именно и имел это ввиду, когда говорил про первую ошибку. жду следующих больших выходных, чтобы посвятить время на правку этого.
amateurНу и у нас потихоньку всё движется. Просто это не основная моя работа

и делаю я то, что мне нужно в первую очередь.
Шапка будет развиваться, подвал тоже уже есть (пока правада однострочный). Если есть желание - я всегда принимаю толковые патчики (именно так появились фильтрации в гриде, меню в левом вехнем углу).
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 04.03.2010 14:05:05
dunin
Немного не в тему, но близко. Вопрос к
alexs-у...
Закончил с экспортом во внешние офисные приложения. Все нормально, даже многострочные заголовки как и полагается отрисовываются.

Но... Дернуло меня привязать на экспорт ноткий сочетание
Ctrl+E (типа того Ctrl + Export). Как результат при нажатии оных клавиш грид переходит в режим совершенно мне не нужного автофильтра и приобретает какой-то совершенно унылый вид.
Вопрос:
Как отключить такое поведение грида? Как отключить автофильтр, чтобы не вызвался ни при каких обстоятельствах?
Спасибо.
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 04.03.2010 21:42:35
alexs
Посмотри опции - кажись там именно для отключения фильтра есть одна.
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 05.03.2010 09:18:18
dunin
alexs писал(а):Посмотри опции - кажись там именно для отключения фильтра есть одна.
Да в том то и дело, что все отключено...
Разрулили ситуацию так: в исходнике
rxdbgrid заремарил напрочь две процедуры, вешающие хоткей помимо желания кодера
procedure DoCreateJMenu;
procedure KeyDown(var Key : Word; Shift : TShiftState); override;
alexs, думаю гриду нужен фикс...
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 05.03.2010 10:59:11
alexs
Я посмотрел код, дествительно - фишка не отключается. Введу флажок в RxOptions для этого.
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 06.03.2010 09:08:26
dunin
Скачал новую версию в надежде на правильную отрисовку заголовков. Два часа плясал c бубном - откатился на предыдущую. Компиляция начинается с сообщения, что versionresource не найден и пошло-поехало. В предыдущей сборке получилось заремарить - здесь никак. Затык на AboutVersionForm, или что-то вроде...
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 06.03.2010 22:46:52
alexs
ну... как всё запущено...
возьми из новой версии модуль rxDBGrid
а вобще - возьми FPC и Lazarus свежие
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 10.03.2010 13:42:16
dunin
Любитель работать на официально-стабильных версиях лазаруса вновь вопрошает к alexs-у...

Долго не мог понять причину вот такой вот странной ошибки (см.рис) в собственной бета-проге. Естественно думал, что руки кривые...
Оно, конечно не исключено, но вот что обнаружил. Ошибка возникает рэндомно при закрытии-открытии датасета ТОЛЬКО если у связанного с датасетом
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; Это так... На будущее...
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 10.03.2010 22:15:47
alexs
dunin писал(а):Долго не мог понять причину вот такой вот странной ошибки (см.рис) в собственной бета-проге. Естественно думал, что руки кривые...
Слушай - сделай пример, чтобы я мог это проверить. Я с таким ещё не сталкивался...
dunin писал(а):TRxColumn(Columns).Footer.Font.Style:= fsBold; Это так... На будущее...
Т.е. ты хочеш сказать, что хочеш рулить начертанием в каждом отдельно взятом подвале столбца?
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 10.03.2010 22:28:38
dunin
alexs писал(а):Слушай - сделай пример, чтобы я мог это проверить. Я с таким ещё не сталкивался...
Попробую. Но вылет рэндомный и черт его знает от чего еще зависел/зависит... попробую...
alexs писал(а):Т.е. ты хочеш сказать, что хочеш рулить начертанием в каждом отдельно взятом подвале столбца?
Ну не обязательно в каждой колонке, а хотя-бы чтобы можно было шрифт футера сделать отличным от основного шрифта грида.
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 11.03.2010 19:21:53
alexs
dunin писал(а):Ну не обязательно в каждой колонке, а хотя-бы чтобы можно было шрифт футера сделать отличным от основного шрифта грида.
Посмотрим....
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 25.03.2010 15:14:37
dunin
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] на сортировку вообще в принципе не правильно. Это копирование в буфер - у всех уже в подкорке сидит. Эти клавиши лучше на копирование и перекинуть. Если ячейка в режиме редактирования, то копировать. Тут просить отключить ни кто не будет. ИМХО.
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 25.03.2010 22:54:15
alexs
Напиши патчик, я включу в исходники.
Насчёт хоткеев - это тоже присланный код - можно устроить голосование на то, какие хоткеии использовать, можно даже настраиваемые сделать...
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 25.03.2010 23:10:32
Padre_Mortius
Может стоит этот момент сделать настраиваемым? На всех все равно не угодить, а так каждый будет сам настраивать)
Re: Отрисовка многострочных заголовков и объеденение
Добавлено: 26.03.2010 08:25:45
dunin
alexs писал(а):Напиши патчик, я включу в исходники.
...
Вот:
Заработали флаги
rdgAllowFilterForm (Ctrl+T), rdgAllowSortForm (Ctrl+C).
Флаг
rdgMultiTitleLines по прежнему не используется и не работает. Его не трогал, так как теоретически он завязан на отрисовку многостраничных заголовков. Заработать-то заработали, но...
По большому счету все это временные костыли, т.к. флаги еще отвечают за включение/отключение
tMenuItem создаваемого для грида
tPopupMenu. Которое создается, а к
tRxDBGrid ни где и не как не привязывается. Зачем создается? Только память занимает. Вызвать/привязать к гриду его никак, потому и хоткей из меню работает на событии
TRxDBGrid.KeyDown...По логике надо бы какой-то флаг типа
rdgAllowRxGridPopupMenu сделать, который бы отключал стандартное свойство
tRxDBGrid.PopupMenu:= ... ну и, соответственно, привязывал встроенное меню. Если флаг в False - вообще меню не создавать. На кой ляд оно надо, если кодер свое привязал?
Короче, темный лес... флаги подключил, дальше ничего не трогал.
