Страница 3 из 3

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

Добавлено: 26.03.2010 20:14:22
alexs
ок.
посмотрю и включу в код.

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

Добавлено: 29.06.2010 16:57:52
alexmai

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

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

Ещё один баг, о котором я знаю с гридом - частичная отрисовка объединённой ячейки заголовка грида.

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

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

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

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

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

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

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

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

Добавлено: 30.06.2010 13:05:10
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 ?

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

Добавлено: 30.06.2010 13:36:22
GrayEddy
Ставился как на стабильном 28.3 (FPC 2.4.0), так и на свежем 0.29 с FPC 2.4.1.
Все нормально.
Демку соберешь с одного пинка - думаю, увиденное понравится.

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

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

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

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

Добавлено: 01.07.2010 19:58:38
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 при ресайзе столбца правильная, все кто делал подобное, укорачивают текст заголовка, а ширину стараются держать пропориональную

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

Добавлено: 08.07.2010 22:52:23
alexs
По многочисленным заявкам радиослушателей - тестируйте
вроде подправил расчёт высоты ячеек. Теперь высота меняется по необхоимости у всех ячеек, а не только самой последней. Код ещё сырой - в реальных проектах не обкатывал. Только тестирвание пока.

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

Добавлено: 12.07.2010 15:29:59
alexmai
Спасибо aleks !
А в каких файлах были изменения, чтобы не качать все и не пересобирать, а то у меня на разных ОС и гемморойно всю либу RXfpc пересобирать ?

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

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

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

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

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

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

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