Снова не работающий RxDbGrid
Модератор: Модераторы
Снова не работающий RxDbGrid
Добрый день господа!
Помогите одолеть горбатости в RXDbGrid, совсем нет времени городит огород на Stringgrid, а RxDBGrid ну уж слишком горбато
делает элементарные вещи
На скрепке картинка (цифры затерты, так как слепок с живой проги), верхняя - моя реализация через StringGrid, нижняя попытка использовать RxDbGrid, которая даже по рисунку видно
ну ни в какие ворота не лезет ибо не функциональна
1.Итоговая строка допускает вывод не полных строк основной сетки
2.Высота заголовка последнего уровня - гигантская, хотя ничего ей не предвещает таковой быть
3.После ресайза заголовка в меньшую сторону в правом углу, выстраиваются ступеньки внутрь сетки , что совершенно для меня необъяснимо
4.Никак не получается выделить строку в гриде кроме как тупым нажатием мышки, на все остальные манипуляции со свойствами dataset и неоднократном рефреше не приводят ни к каким действиям.
Большая просьба если кто нашел место для рихтовки , маякните пожалуйста .
Lazarus 28.2
fpc 2.2.4
rxfpс ревизия 21694, последняя не ставиться из-за отсутствия файлов юнитов указанных в rxVersInfo, судя по осбуждениям требует версию fpc 2.4
Помогите одолеть горбатости в RXDbGrid, совсем нет времени городит огород на Stringgrid, а RxDBGrid ну уж слишком горбато
делает элементарные вещи
На скрепке картинка (цифры затерты, так как слепок с живой проги), верхняя - моя реализация через StringGrid, нижняя попытка использовать RxDbGrid, которая даже по рисунку видно
ну ни в какие ворота не лезет ибо не функциональна
1.Итоговая строка допускает вывод не полных строк основной сетки
2.Высота заголовка последнего уровня - гигантская, хотя ничего ей не предвещает таковой быть
3.После ресайза заголовка в меньшую сторону в правом углу, выстраиваются ступеньки внутрь сетки , что совершенно для меня необъяснимо
4.Никак не получается выделить строку в гриде кроме как тупым нажатием мышки, на все остальные манипуляции со свойствами dataset и неоднократном рефреше не приводят ни к каким действиям.
Большая просьба если кто нашел место для рихтовки , маякните пожалуйста .
Lazarus 28.2
fpc 2.2.4
rxfpс ревизия 21694, последняя не ставиться из-за отсутствия файлов юнитов указанных в rxVersInfo, судя по осбуждениям требует версию fpc 2.4
У вас нет необходимых прав для просмотра вложений в этом сообщении.
последняя не ставиться из-за отсутствия файлов юнитов указанных в rxVersInfo, судя по осбуждениям требует версию fpc 2.4
Да именно так, требует версию fpc 2.4(этот грид должен был сильно уже поменятся все таки попробуйте поднять версии инструментов до актуальных, возможно часть горбов уйдет)
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
alexmai
Горбатости №№ 1 и 2 присутствуют.
Горбатость № 3 уже ликвидирована.
С горбатостью № 4 ниче не понял...
Сам сижу жду исправлений. А вообще по этому компоненту лучше сюда писать viewforum.php?f=18
Горбатости №№ 1 и 2 присутствуют.
Горбатость № 3 уже ликвидирована.
С горбатостью № 4 ниче не понял...
Сам сижу жду исправлений. А вообще по этому компоненту лучше сюда писать viewforum.php?f=18
dunin писал(а):alexmai
Горбатости №№ 1 и 2 присутствуют.
Горбатость № 3 уже ликвидирована.
С горбатостью № 4 ниче не понял...
Сам сижу жду исправлений. А вообще по этому компоненту лучше сюда писать viewforum.php?f=18
4 - горбатость не возможно сделать выделение строки в гриде при получении им фокуса, на моей картинке я находясь в stringgrid не могу выделить никакую строку RxDbGrid программно
1 и 2 горбатость именно отбивает желание использовать компонент ибо он становиться неуправляемо горбат при многострочном заголовке
alexmai
Я конечно сильно звиняюсь, НО: что мешает забыть на неделю о лазаре и попробывать альтернативу - мсе... Я давненько на лазаре ничего не делал (кроме пыталсо из сорцов ДК собрать, оох и "гемор" его создать). Но это не по теме. В мсе есть сетка которая может многое и приблизительно похожа на ЕШ (кажись так). Да мсе сложнее "приручить" чем лазаря но результат может этого стоит.?
Это сугубо мое мнение и коментов не хочу (кто круче мсе или лазарь). Дело в том что не раз вижу подобное сообщение. Решил влезть
)
П.С. Вопрос немного не в ту ветку...
Я конечно сильно звиняюсь, НО: что мешает забыть на неделю о лазаре и попробывать альтернативу - мсе... Я давненько на лазаре ничего не делал (кроме пыталсо из сорцов ДК собрать, оох и "гемор" его создать). Но это не по теме. В мсе есть сетка которая может многое и приблизительно похожа на ЕШ (кажись так). Да мсе сложнее "приручить" чем лазаря но результат может этого стоит.?
Это сугубо мое мнение и коментов не хочу (кто круче мсе или лазарь). Дело в том что не раз вижу подобное сообщение. Решил влезть
П.С. Вопрос немного не в ту ветку...
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
alexmai писал(а):4 - горбатость не возможно сделать выделение строки в гриде при получении им фокуса, на моей картинке я находясь в stringgrid не могу выделить никакую строку RxDbGrid программно
Все равно не понял. На кой ляд "выделить строку RxDbGrid программно", когда в конечном счете вы с источником данных работаете? Просто встать локейтом на нужную запись в таблице/селекте не достаточно?
dunin писал(а):Все равно не понял. На кой ляд "выделить строку RxDbGrid программно", когда в конечном счете вы с источником данных работаете? Просто встать локейтом на нужную запись в таблице/селекте не достаточно?
Ну надеюсь понятно что заказчик хочет чтобы выбранная в верхней сетке строка StrinGrid , была синхронизирована с такой же строкой в нижней сетке RxDbGrid, в StringGrid (верхняя сетка) я выделяю строки самостоятельно, в том числе и продолжение строки в зоне фиксированных столбцов.
Мне нужно двигаться по любой из сеток, но выделение одноименных строк должно быть синхронным.
Но классический способ установки dataset на нужную запись и рефреш с установкой фокуса ничего не дают, только когда тупо стаю мышей на RxDbGrid выделяется строка.
alexmai, посмотри мое сообщение тут (на данный момент по времени последнее) viewtopic.php?t=4743&view=unread#unread
Надеюсь, поможет
Надеюсь, поможет
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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
я смотрел его -примитивненький интерфейс самой ИДЕ никак не вселяет надежды на то что можно сделать что-то лучше
у мну тоже было подобное мнения первым делом
Наворотов, конечно нет...
Выбрал токо из-за сетки (если сравнивать то она на равне с EhLib (ужо упоминал)). Потом и остальное нравицца стало
Но, на вкус и цвет ...
amateur писал(а):у мну тоже было подобное мнения первым делом)))
Наворотов, конечно нет...
Выбрал токо из-за сетки (если сравнивать то она на равне с EhLib (ужо упоминал)). Потом и остальное нравицца стало.
Но, на вкус и цвет ...
А можно скриншот и кусочек примера с навороченным гридом, можно на мыло
amaceyko@GMAIL.COM
А можно скриншот и кусочек примера с наворочееным гридом, можно на мыло
Ну почему сразу навороченый
По поводу примера
Добавлено спустя 8 минут 32 секунды:
упс, забыл: у мну свн версия мсе
amateur писал(а):А можно скриншот и кусочек примера с наворочееным гридом, можно на мыло
Ну почему сразу навороченый))))))))) Просто грид смахивает на EhLib и в лазаре подобного нет.
По поводу примераУделил ему минут 5. Данные нуно в ютф заганять но так как у мну на работе нет возможности сделал базу в "sqliteadmin.exe" отсюда и анг. Сделал базовую красоту но мона и краше (выделеную ячейку в другом цвете - к примеру).
Добавлено спустя 8 минут 32 секунды:
упс, забыл: у мну свн версия мсена старой могут сорцы не открыться...
Спасибо amateur за пример, симпачтично и правда
А где можно svn версию скачать и какую-то доку ?
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;
