Страница 4 из 8
Добавлено: 15.04.2008 19:39:23
alexs
Надо - сделаем

Добавлено: 16.04.2008 00:00:09
ViTality
alexs, всеже DropDownCount у RxDBLookupCombo не работает вообще. Какое значение не задавай всеравно одна и таже высота у выпадающего списка.
Да и у RxDBLookupEdit как-то криво отрабатывает - такое ощущуние что в это число(предположем 8 строк) входит кроме высоты списка (5 видимых строк) еще и высота самого едита(1 строка), плюс высота горизонтального скролла(1 строка).
Lazarus 0.9.25 svn rev14621
FPC 2.2.0
RxFPC из svn
Добавлено: 16.04.2008 01:00:54
alexs
Посмотрим
AutoFill - уже в svn
Добавлено: 16.04.2008 15:32:55
VAshot
AutoFill - уже в svn
В описании есть, в коде не обнаружил
Несколько вопросов:
- можно ли сделать расцветку границ (рамка) "Combo" как у стандартного Edit'а (верхняя и левая границы)?
- куда делся отступ от рамки до текста в "Combo", самому вернуть не сложно, но всё же?
- при установки на сегодняшний "снимок" Lazarus ругался на "LM_PASTE" и "procedure SetCaption(const AValue: TCaption); override;" в rxdbgrid.pas, кривая сборка лазаря (вернее fpc 2.3.1)?
предлагаю следующее небольшое изменение (можно с усложнением на опцию в свойствах):
Код: Выделить всё
***rxdbgrid.pas
// WA^[i]:=20; // del
begin // add
WA^[i]:=Canvas.TextWidth(TRxColumn(AColList[i]).Title.Caption) + 6; // add
if WA^[i] < 60 then WA^[i]:=60; // add
end; // add
И вопрос касаемый не только rx: при обновлении компоненты, стала показываться активность комбо (вновь созданного) даже если он ссылается на NULL - это хорошо, но как заставить это делать все комбо, которых в проекте куча, без их удаления/создания?
Добавлено: 17.04.2008 20:22:29
alexs
VAshot писал(а):- можно ли сделать расцветку границ (рамка) "Combo" как у стандартного Edit'а (верхняя и левая границы)?
Честно говоря - с менеджером тем ещё близко не возился. Как будет время - сделаю. Заодно и кнопки в тул-панели будут рисоваться с помощью его.
VAshot писал(а):- куда делся отступ от рамки до текста в "Combo", самому вернуть не сложно, но всё же?
Вроде я его не трогал. А какой отступ нужен? Сколько пикселей делать? Мне кажется это тоже от темы зависеть должно.
VAshot писал(а):- при установки на сегодняшний "снимок" Lazarus ругался на "LM_PASTE" и "procedure SetCaption(const AValue: TCaption); override;
Симтомы старой версии лазаря.
И по поводу оптимизации ширины колонки. Честно говоря я специально не стал учитывать ширину заголовка. Из-за многострочных заголовков. В принципе твой код можно включить в том случае, если многострочные заголовки запрещены.
Добавлено: 17.04.2008 22:00:59
VAshot
alexs писал(а):Вроде я его не трогал. А какой отступ нужен? Сколько пикселей делать? Мне кажется это тоже от темы зависеть должно.
Сейчас он прижимается к "лево" и "вверх" (в PopUp списке нормально)
вот тут для меня не совсем ясный код (TextMargin):
Код: Выделить всё
*** procedure TRxCustomDBLookupCombo.Paint;
TextMargin := 0;
if ClientWidth > 4 then
begin
SetRect(R, 2, 2, ClientWidth - 2, ClientHeight - 2);
if TextMargin > 0 then Inc(TextMargin);
X := 2 + TextMargin;
Про верхнюю границу сильно не разбирался, но при изменении величин, "Комбы", созданные до установки новой версии Rx и после, отображаются частично по разному, в частности верхней границы.
Поэтому повторю вопрос:
Как обновить существующие объекты (их свойства) в проекте согласно изменениям в компонентах?
Добавлено: 17.04.2008 23:23:29
alexs
А фиг его знает - код переписывался не раз - возможны и не такие ляпы.
Перепишу кончено и выложу на svn.
Добавлено: 17.04.2008 23:37:06
alexs
Всё залито на svn
TextMargin превратил в констатну, объявленную в начале модуля. Код почистил.
Насчёт того, что текст прижат вверх - это из-за того, что при расчёте высоты шрифта учитывается нижний "хвостик" символов (например у символа "у").
Код: Выделить всё
Canvas.TextRect(R, TextMargin, Max(0, (HeightOf(R) - Canvas.TextHeight('Wg')) div 2), AText);
Если врасчёт высоты делат только по "W" то смещение будет другим.
Добавлено: 18.04.2008 07:42:57
VAshot
А где всё-таки AutoFill? не ту версию на SVN залили?
Добавлено: 18.04.2008 08:58:57
alexs
В свойстве PopUpFormOptions
фактически оно даёт доступ к свойству AutoFillColumns rxDBGrid-а
Добавлено: 18.04.2008 09:59:29
ViTality
alexs, можно парочку вопросов:
1. Как задать или хотябы получить выбранное значение в RxDBLookupCombo программно? Просто проблемма в том что при добавлении новой записи(заполнение полей происходит в модальной форме), если не выбрать в Combo никакого значения, то этому полю(за которое отвечает Combo) присваиваеться значение записи под курсором в DBGrid. Как этого можно избежать?
2. Что делает LookupDisplayIndex все у тогоже RxDBLookupCombo? Опытным путем узнать не получилось - при задании значения отличного от нуля (1), вылетает при открытии формы
3. И как там DropDownCount у RxDBLookupCombo?
Добавлено: 18.04.2008 11:13:53
VAshot
alexs писал(а):фактически оно даёт доступ к свойству AutoFillColumns rxDBGrid-а
Это понятно.
Но вот "смотрю в книгу и вижу фигу", ну нету там такого свойства:
+ В свойстве PopUpFormOptions компоненты TRxDBLookupCombo добавлено поле AutoFillColumns - аналог одноимённого поля
из TDBGrid - используется в выпадающем списке
Источник:
https://lazarus-ccr.svn.sourceforge.net ... azarus-ccr
Качал прям сейчас.
Еще б туда возможность изменения типа отображения ScrollBar'ов:
Может просто расшарить свойства таблички для LookUp'ов?
Тогда это всё можно будет задавать напрямую.
И вопрос по RxBDBGrid.Colums[i].SizePriority, это для чего, оно работает?
Это всё для следующей задачи: есть несколько колонок в RxDBLookupCombo (тоже самое интересно и для DBGrid), надо оптимизировать ширину колонок, но, если они занимают меньше места чем ширина таблички - увеличить их ширину до полного заполнения пропорционально.
Добавлено: 18.04.2008 11:20:02
ViTality
VAshot
И вопрос по RxBDBGrid.Colums[i].SizePriority, это для чего, оно работает?
Вчера тоже разбирался с этим свойсвом у обычного DBGrid. В итоге:
- если поставить
0 то столбец размер менять не будет
- все столбцы со значением больше нуля занимуют все свободное пространство поровну независимо у кого больше SizePriority
Ну и действовать это начинает при AutoFillColumns=true
И MaxSize при этом на них не действует
Добавлено: 18.04.2008 11:29:47
VAshot
Ну тогда точно стоит расшарить свойства Грида, чтоб ширину и приоритет задавать.
Добавлено: 18.04.2008 11:30:25
alexs
ViTality
1. Чтобы дапрграмно задлать значени - присваивай значение полю из DataField. Насчёт пустого - есть тма глюк - очищается поле по ESC, а вот чтобы не портилось пустое - никак руки не дойдут сделать (у меня просто нет таких форм с пустыми полями).
2.Если в выпадающем списке ты отображаеш несколько полей, а DisplayAll = false - то это определяет значение какого поле будет отображаться в самом контроле. Защиту на переполнение этого свойства конечно надо сделать.
3. Ещё рукине дошли

.
VAshot
Сори - действительно не залил.