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

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

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

Сообщение alexs »

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

Сообщение alexs »

Я знаю о не верном расчёте высоты ячейки. Но руки не доходят переделать.
Если есть желание - посмотри процедуру CalcTitle - это именно там.
Либо будем ждать - когда у меня появится время или срочный стимул для дописывания.

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

Сообщение dunin »

alexs писал(а):...
Либо будем ждать - когда у меня появится время или срочный стимул для дописывания.
...

Угу... То, что сообщество уже несколько месяцев хаит RxDbGrid только за один этот баг, типа того стимул не достаточный... :roll:
ОК. Ждемс...
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

Если кто не хочет ждать...
http://www.tkweb.eu/en/delphicomp/kgrid.html
Навороченный TStringGrid для Delphi & Lazarus, скриншоты присутствуют + демка в исходниках.
Из вкусностей:
- слияние(объединение) ячеек
- сортировка
- предварительный просмотр и печать грида
- выравнивание последней колонки
и многое другое...

PS. Рекомендуется скачивать KControls.zip, не KGrid*.zip, ибо в последнем отсутствуют некоторые нужные файлы, которые есть в первом архиве.

Помимо этого есть DataAware-ориентированная версия (TKDBGrid) - не юзал.
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

GrayEddy писал(а):Если кто не хочет ждать...
http://www.tkweb.eu/en/delphicomp/kgrid.html
Навороченный TStringGrid для Delphi & Lazarus, скриншоты присутствуют + демка в исходниках.
Из вкусностей:
- слияние(объединение) ячеек
- сортировка
- предварительный просмотр и печать грида
- выравнивание последней колонки
и многое другое...

PS. Рекомендуется скачивать KControls.zip, не KGrid*.zip, ибо в последнем отсутствуют некоторые нужные файлы, которые есть в первом архиве.

Помимо этого есть DataAware-ориентированная версия (TKDBGrid) - не юзал.

Спасибо GrayEddy, посмотрю обязательно, а на 28 lazarus становиться или какой там паскаль 2.2.4 или 2.4 ?
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

Ставился как на стабильном 28.3 (FPC 2.4.0), так и на свежем 0.29 с FPC 2.4.1.
Все нормально.
Демку соберешь с одного пинка - думаю, увиденное понравится.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

dunin писал(а):То, что сообщество уже несколько месяцев хаит RxDbGrid только за один этот баг

Библиотеку я пишу для себя... пока устраивает... но патчик от тебя на исправления этого бага очень жду :lol:
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

alexs писал(а):
dunin писал(а):То, что сообщество уже несколько месяцев хаит RxDbGrid только за один этот баг

Библиотеку я пишу для себя... пока устраивает... но патчик от тебя на исправления этого бага очень жду :lol:


Вот посмотрел на скору руку

В процедуре CalcTitle ИМХО перепутано желание получить (wrap) изменение высоты заголовка для разбора на строки, с максимальным количеством уровней загjловка, потом ведь идет присвоение
RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H);
Короче подправил у себя код процедуры и высота стала нормальной,
найти причину лестницы не успел, это наверно где-то на уровне ресайза ?

Код: Выделить всё

 Было ***********************
procedure TRxDBGrid.CalcTitle;
begin
....
  if H2>WordCount(MLRec1.Caption, [' ']) then
                  H2:=WordCount(MLRec1.Caption, [' ']);

                H1:=H1+H2;
              end
            end
            else
            begin
              H1:=Max((tmpCanvas.TextWidth(rxTit.Caption)+2) div W + 1, H);
              if H1>WordCount(rxTit.Caption, [' ']) then
                H1:=WordCount(rxTit.Caption, [' ']);
            end;
            H:=Max(H1, H);       
........
    RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H);
................
end;
Стало ..........
procedure TRxDBGrid.CalcTitle;
............
begin

     if H2>WordCount(MLRec1.Caption, ['|']) then
                  H2:=WordCount(MLRec1.Caption, ['|']);

                H1:=H1+H2;
              end
            end
            else
            begin
              H1:=Max((tmpCanvas.TextWidth(rxTit.Caption)+2) div W + 1, H);
              if H1>WordCount(rxTit.Caption, ['|']) then
                H1:=WordCount(rxTit.Caption, ['|']);
            end;
            H:=Max(H1, H);       
......
    RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H);
....................
end;


Добавлено спустя 2 минуты 8 секунд:
не думаю что идея сделать wrap при ресайзе столбца правильная, все кто делал подобное, укорачивают текст заголовка, а ширину стараются держать пропориональную
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

По многочисленным заявкам радиослушателей - тестируйте
вроде подправил расчёт высоты ячеек. Теперь высота меняется по необхоимости у всех ячеек, а не только самой последней. Код ещё сырой - в реальных проектах не обкатывал. Только тестирвание пока.
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

Спасибо aleks !
А в каких файлах были изменения, чтобы не качать все и не пересобирать, а то у меня на разных ОС и гемморойно всю либу RXfpc пересобирать ?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

rxdbgrid
а вобще юзай svn - это наш путь!
1 раз вытянул - а потом только изменения, заодно видно - что поменялось.
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

alexs писал(а):rxdbgrid
а вобще юзай svn - это наш путь!
1 раз вытянул - а потом только изменения, заодно видно - что поменялось.

Сдуру попытался юзать последний релиз, но наступил на очередные грабли, там freepascal 2.4 и уже нужно все пересобирать да еще на двух ОС. Я уже писал, добавили выравнивание в ячейке Stringrid, а в свойствах канвас убрали, в результате я сначала трахался из-за того что эттого свойства нет, заменяя его действие через канвас, а теперь должен трахаться что-бы переписывать весть код и всю идеологию, НАХРЕНА мне такие тупые улучшения,
как никак народ софт пишет не для игрушек.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

сделай себе индивидуальный патчик - каждйы раз при сборке автоматом натягивай его
а ещё лучше - поставь запрос для Дж. Рейса - пусть вернёт канвас на место...
Ответить