Снова не работающий RxDbGrid

Вопросы программирования и использования среды Lazarus.

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

alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Снова не работающий RxDbGrid

Сообщение alexmai »

Добрый день господа!
Помогите одолеть горбатости в RXDbGrid, совсем нет времени городит огород на Stringgrid, а RxDBGrid ну уж слишком горбато
делает элементарные вещи
На скрепке картинка (цифры затерты, так как слепок с живой проги), верхняя - моя реализация через StringGrid, нижняя попытка использовать RxDbGrid, которая даже по рисунку видно
ну ни в какие ворота не лезет ибо не функциональна
1.Итоговая строка допускает вывод не полных строк основной сетки
2.Высота заголовка последнего уровня - гигантская, хотя ничего ей не предвещает таковой быть
3.После ресайза заголовка в меньшую сторону в правом углу, выстраиваются ступеньки внутрь сетки , что совершенно для меня необъяснимо
4.Никак не получается выделить строку в гриде кроме как тупым нажатием мышки, на все остальные манипуляции со свойствами dataset и неоднократном рефреше не приводят ни к каким действиям.
Большая просьба если кто нашел место для рихтовки , маякните пожалуйста .
Lazarus 28.2
fpc 2.2.4
rxfpс ревизия 21694, последняя не ставиться из-за отсутствия файлов юнитов указанных в rxVersInfo, судя по осбуждениям требует версию fpc 2.4
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

последняя не ставиться из-за отсутствия файлов юнитов указанных в rxVersInfo, судя по осбуждениям требует версию fpc 2.4


Да именно так, требует версию fpc 2.4(этот грид должен был сильно уже поменятся все таки попробуйте поднять версии инструментов до актуальных, возможно часть горбов уйдет)
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

alexmai
Горбатости №№ 1 и 2 присутствуют.
Горбатость № 3 уже ликвидирована.
С горбатостью № 4 ниче не понял...

Сам сижу жду исправлений. А вообще по этому компоненту лучше сюда писать viewforum.php?f=18
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

dunin писал(а):alexmai
Горбатости №№ 1 и 2 присутствуют.
Горбатость № 3 уже ликвидирована.
С горбатостью № 4 ниче не понял...

Сам сижу жду исправлений. А вообще по этому компоненту лучше сюда писать viewforum.php?f=18


4 - горбатость не возможно сделать выделение строки в гриде при получении им фокуса, на моей картинке я находясь в stringgrid не могу выделить никакую строку RxDbGrid программно
1 и 2 горбатость именно отбивает желание использовать компонент ибо он становиться неуправляемо горбат при многострочном заголовке
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

alexmai
Я конечно сильно звиняюсь, НО: что мешает забыть на неделю о лазаре и попробывать альтернативу - мсе... Я давненько на лазаре ничего не делал (кроме пыталсо из сорцов ДК собрать, оох и "гемор" его создать). Но это не по теме. В мсе есть сетка которая может многое и приблизительно похожа на ЕШ (кажись так). Да мсе сложнее "приручить" чем лазаря но результат может этого стоит.?
Это сугубо мое мнение и коментов не хочу (кто круче мсе или лазарь). Дело в том что не раз вижу подобное сообщение. Решил влезть :))
П.С. Вопрос немного не в ту ветку...
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

alexmai писал(а):4 - горбатость не возможно сделать выделение строки в гриде при получении им фокуса, на моей картинке я находясь в stringgrid не могу выделить никакую строку RxDbGrid программно

Все равно не понял. На кой ляд "выделить строку RxDbGrid программно", когда в конечном счете вы с источником данных работаете? Просто встать локейтом на нужную запись в таблице/селекте не достаточно?
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

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

Ну надеюсь понятно что заказчик хочет чтобы выбранная в верхней сетке строка StrinGrid , была синхронизирована с такой же строкой в нижней сетке RxDbGrid, в StringGrid (верхняя сетка) я выделяю строки самостоятельно, в том числе и продолжение строки в зоне фиксированных столбцов.
Мне нужно двигаться по любой из сеток, но выделение одноименных строк должно быть синхронным.
Но классический способ установки dataset на нужную запись и рефреш с установкой фокуса ничего не дают, только когда тупо стаю мышей на RxDbGrid выделяется строка.
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

alexmai, посмотри мое сообщение тут (на данный момент по времени последнее) viewtopic.php?t=4743&view=unread#unread
Надеюсь, поможет
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

amateur писал(а):alexmai
Я конечно сильно звиняюсь, НО: что мешает забыть на неделю о лазаре и попробывать альтернативу - мсе... Я давненько на лазаре ничего не делал (кроме пыталсо из сорцов ДК собрать, оох и "гемор" его создать). Но это не по теме. В мсе есть сетка которая может многое и приблизительно похожа на ЕШ (кажись так). Да мсе сложнее "приручить" чем лазаря но результат может этого стоит.?
Это сугубо мое мнение и коментов не хочу (кто круче мсе или лазарь). Дело в том что не раз вижу подобное сообщение. Решил влезть :))
П.С. Вопрос немного не в ту ветку...


Спасибо, конечно же я смотрел его -примитивненький интерфейс самой ИДЕ никак не вселяет надежды на то что можно сделать что-то лучше, пробовал и wxWidgets под devC++, но и одно и второе не способствует кроссплатформенности- я в лазаре, гоняю файлы проект из винды в линукс и обратно, и только пересобираю лазарем, в результате работающие бинарники и там и там ибо кодировка UTF8.
Java мне как конкурент просто рядом не стоит, кишка тонка даже в 6 версии с навороченным мною под лазарем интерфейсом соревноваться, они там к кнопке прикрутить действие не могут, не говоря о сетке, а у меня на Lazarus драйвера под кассовый аппарат под линуксом работают на ура.

Добавлено спустя 8 часов 33 минуты 7 секунд:
Удалось победить 2 и 3 горбатости
Код процедуры CalcTitle пока не правил, не было времени,
но смысл ошибки понятен - если заголовок имеет пробелы то процедура делит на количество строк по принципу wrap, потом почему - то
всю эту прибаку в высоте со всех вышестоящих хидеров лепит к самому нижнему заголовку в иерархии.
Заменил пробелы в title.caption подчеркиваниями и высота стала на место в разумных пределах

Добавлено спустя 6 минут 51 секунду:
А вот на установку 28.2 версии lazarus угробилпочти весь день, но так и не разобрался в глюках и в stringrid и в rxdbgrid
В stringrid добавили свойство Alignment в ячейке , а в канвасе убрали, так продолбался с заменой в уже существующем коде.
Народ так же никто не делает, ну добавили , озвучили, но нахрена работающую альтарнативу убивать.
Я выкручивался таким кодом

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

procedure TMainForm.headernizDrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
begin
 (Sender as TStringGrid).Canvas.TextStyle.Alignment := taRightJustify;
     if  (acol=3 ) then     (Sender as TStringGrid).Canvas.TextStyle.Alignment :=  taRightJustify;
     if  (acol=4 ) then     (Sender as TStringGrid).Canvas.TextStyle.Alignment :=  taLeftJustify;
end;

А теперь надо править работающий софт.
Пришлось снести версию 28.2 и fpc 2.4
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

я смотрел его -примитивненький интерфейс самой ИДЕ никак не вселяет надежды на то что можно сделать что-то лучше

у мну тоже было подобное мнения первым делом :))))

Наворотов, конечно нет...
Выбрал токо из-за сетки (если сравнивать то она на равне с EhLib (ужо упоминал)). Потом и остальное нравицца стало :).
Но, на вкус и цвет ... :)
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

amateur писал(а):у мну тоже было подобное мнения первым делом :))))
Наворотов, конечно нет...
Выбрал токо из-за сетки (если сравнивать то она на равне с EhLib (ужо упоминал)). Потом и остальное нравицца стало :).
Но, на вкус и цвет ... :)

А можно скриншот и кусочек примера с навороченным гридом, можно на мыло
amaceyko@GMAIL.COM
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

А можно скриншот и кусочек примера с наворочееным гридом, можно на мыло

Ну почему сразу навороченый :)))))))))) Просто грид смахивает на EhLib и в лазаре подобного нет.

По поводу примера :) Уделил ему минут 5. Данные нуно в ютф заганять но так как у мну на работе нет возможности сделал базу в "sqliteadmin.exe" отсюда и анг. Сделал базовую красоту но мона и краше (выделеную ячейку в другом цвете - к примеру).

Добавлено спустя 8 минут 32 секунды:
упс, забыл: у мну свн версия мсе :) на старой могут сорцы не открыться...
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

amateur писал(а):
А можно скриншот и кусочек примера с наворочееным гридом, можно на мыло

Ну почему сразу навороченый :)))))))))) Просто грид смахивает на EhLib и в лазаре подобного нет.

По поводу примера :) Уделил ему минут 5. Данные нуно в ютф заганять но так как у мну на работе нет возможности сделал базу в "sqliteadmin.exe" отсюда и анг. Сделал базовую красоту но мона и краше (выделеную ячейку в другом цвете - к примеру).

Добавлено спустя 8 минут 32 секунды:
упс, забыл: у мну свн версия мсе :) на старой могут сорцы не открыться...


Спасибо amateur за пример, симпачтично и правда :D
А где можно svn версию скачать и какую-то доку ?
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

:) ветка по мсе - не заметили ??? и на оф сайте мсе ссылка на свн версию. Плюс пару статей есть и на freepascal.ru. :)
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

amateur писал(а)::) ветка по мсе - не заметили ??? и на оф сайте мсе ссылка на свн версию. Плюс пару статей есть и на freepascal.ru. :)

Спасибо за инфу!

Добавлено спустя 1 час 40 минут 16 секунд:
В процедуре CalcTitle мне кажется перепутано желание получить (wrap) изменение высоты заголовка для разбора на строки, с максимальным количеством уровней заголовка, потом ведь идет присвоение
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;
Ответить