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

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

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

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

Сообщение alexmai » 29.06.2010 14:46:24

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

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

Сообщение grigoreo » 29.06.2010 15:10:38

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


Да именно так, требует версию fpc 2.4(этот грид должен был сильно уже поменятся все таки попробуйте поднять версии инструментов до актуальных, возможно часть горбов уйдет)
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

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

Сообщение dunin » 29.06.2010 15:32:56

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

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

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

Сообщение alexmai » 29.06.2010 16:45:47

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

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


4 - горбатость не возможно сделать выделение строки в гриде при получении им фокуса, на моей картинке я находясь в stringgrid не могу выделить никакую строку RxDbGrid программно
1 и 2 горбатость именно отбивает желание использовать компонент ибо он становиться неуправляемо горбат при многострочном заголовке
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

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

Сообщение amateur » 29.06.2010 17:10:46

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

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

Сообщение dunin » 30.06.2010 08:30:12

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

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

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

Сообщение alexmai » 30.06.2010 12:05:25

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

Ну надеюсь понятно что заказчик хочет чтобы выбранная в верхней сетке строка StrinGrid , была синхронизирована с такой же строкой в нижней сетке RxDbGrid, в StringGrid (верхняя сетка) я выделяю строки самостоятельно, в том числе и продолжение строки в зоне фиксированных столбцов.
Мне нужно двигаться по любой из сеток, но выделение одноименных строк должно быть синхронным.
Но классический способ установки dataset на нужную запись и рефреш с установкой фокуса ничего не дают, только когда тупо стаю мышей на RxDbGrid выделяется строка.
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

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

Сообщение GrayEddy » 30.06.2010 12:12:53

alexmai, посмотри мое сообщение тут (на данный момент по времени последнее) viewtopic.php?t=4743&view=unread#unread
Надеюсь, поможет
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

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

Сообщение alexmai » 30.06.2010 12:50:01

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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

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

Сообщение amateur » 01.07.2010 10:43:56

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

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

Наворотов, конечно нет...
Выбрал токо из-за сетки (если сравнивать то она на равне с EhLib (ужо упоминал)). Потом и остальное нравицца стало :).
Но, на вкус и цвет ... :)
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

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

Сообщение alexmai » 01.07.2010 12:37:02

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

А можно скриншот и кусочек примера с навороченным гридом, можно на мыло
amaceyko@GMAIL.COM
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

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

Сообщение amateur » 01.07.2010 13:30:43

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

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

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

Добавлено спустя 8 минут 32 секунды:
упс, забыл: у мну свн версия мсе :) на старой могут сорцы не открыться...
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

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

Сообщение alexmai » 01.07.2010 17:32:27

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

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

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

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


Спасибо amateur за пример, симпачтично и правда :D
А где можно svn версию скачать и какую-то доку ?
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

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

Сообщение amateur » 01.07.2010 17:55:11

:) ветка по мсе - не заметили ??? и на оф сайте мсе ссылка на свн версию. Плюс пару статей есть и на freepascal.ru. :)
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

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

Сообщение alexmai » 01.07.2010 18:13:40

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;
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 35

Рейтинг@Mail.ru