EditBox в Grid'е | |
---|---|
Mavy Автор Сообщений: 246 Дата регистрации: 04.08.2004 |
Возникла необходимость сделать в гриде ячейку из нескольких строк текста. Включил в нужную колонку EditBox, и в связи с этим возникло несколько вопросов:
1. Как можно сделать автоматический подбор высоты строки грида (RowHeight), чтобы текст в поле едитбокса был виден полностью. 2. Если для грида HighlightStyle=2 (подсвечивается вся строка), то ячейка с едитбоксом не падсвечивается. Как побороть? 3. При перемещении по строкам грида текст в едитбоксе активной строки слегка смещается вниз и вправо. Это конено мелочь, но если это лечится, то как? (EditBox.Margin=0) WinXp, VFP8SP1 |
Re: EditBox в Grid'е | |
---|---|
And Сообщений: 901 Дата регистрации: 29.01.2001 |
> 1. Как можно сделать автоматический подбор высоты строки грида (RowHeight),
> чтобы текст в поле едитбокса был виден полностью. Думаю просто - никак. Мало того, высота строк грида меняется только для всех строк одновременно. Я написал класс, который сохраняет ширину колонок и высоту строки грида, т.е. при изменении значений запоминает в таблице значения, а при инициализации формы, эти значения берет из таблицы. > 2. Если для грида HighlightStyle=2 (подсвечивается вся строка), то ячейка с едитбоксом не > падсвечивается. Как побороть? У меня подсвечивается, но правда дедовским методов в VFP6: This.Grid1.SetAll("DynamicBackColor","IIF(ThisForm.recnogrid1=RECNO(),RGB(0,255,255),RGB(255,255,255))","Column") В AfterRowColChange грида: SELECT otch_detal ThisForm.recnogrid1=RECNO() ThisForm.Refresh >3. При перемещении по строкам грида текст в едитбоксе активной строки слегка смещается >вниз и вправо. Это конено мелочь, но если это лечится, то как? (EditBox.Margin=0) Вроде ничего не смещается, может потому, что у меня у объекта Edit BordeStyle=0? |
Re: EditBox в Grid'е | |
---|---|
Mavy Автор Сообщений: 246 Дата регистрации: 04.08.2004 |
Цитата:Это то ясно. Я имел ввиду установить высоту строки такую, чтобы поместилось поле с макс. длиной текста (понятно что эта высота будет для всех строк). Может как-то с помощью SYSMETRIC( ) или FONTMETRIC( )? Цитата:Таким методом подсвечивается вся колонка с едитбоксом, а не активная строка, хотя в колонках с текстбоксами все ок. Едитбокс не подсвечивается если даже в грид AllowCellSelection=F, хотя другие поля с текстбоксами имеют выделенный цвет фона и шрифта. Цитата:BordeStyle и у меня 0. Дерганье происходит если активная колонка именно с едитбоксом. |
Re: EditBox в Grid'е | |
---|---|
po2 Сообщений: 2864 Откуда: Иркутск Дата регистрации: 22.12.2001 |
|
Re: EditBox в Grid'е | |
---|---|
And Сообщений: 901 Дата регистрации: 29.01.2001 |
> Это то ясно. Я имел ввиду установить высоту строки такую, чтобы поместилось поле с макс.
> длиной текста (понятно что эта высота будет для всех строк). Может как-то с помощью > SYSMETRIC( ) или FONTMETRIC( )? Видимо если и можно, то только очень грубо рассчитывая количество символов (а их ширина разная для большенства шрифтов)... По моему, решение, когда пользователь сам задаст ширину/высоту колонок и эти значения запомняться вполне нормальное. >Таким методом подсвечивается вся колонка с едитбоксом, а не активная строка, хотя в колонках >с текстбоксами все ок. Как вся колонка? Все записи? Странно, у меня только у активной записи. Sparse у колонки на .f.? >BordeStyle и у меня 0. Дерганье происходит если активная колонка именно с едитбоксом. Странно, у меня стоит монолитом... |
Re: EditBox в Grid'е | |
---|---|
Mavy Автор Сообщений: 246 Дата регистрации: 04.08.2004 |
po2, спасибо за метод!
Я его немног переделал, и теперь с его помощью автоматически расчитываю и устанавливаю высоту стору грида в зависимости от ширины колонки с едитбоксом и максимально длинного текста в этой коленке. And, Цитата:Еще на VFP7 я таким же образом реализовывал подсветку строки в гриде и все работало, но только с едитбоксом в семерке не пробовал (только текстбоксы). А в восьмерке на текстбоксах работает (подсвечивается текстбокс только в активной строке), а на едитбоксе - нет (раскрашивается вся колонка). Sparse = F для этой колонки. В восьмерке от дедовского способа отказался т к есть штатный (Highlight), который отлично подсвечивает стороку грида из текстбоксов и чекбоксов (проверял), но если есть колонка с едитбоксом, то активная строка в ней не подсвечивается. Может кто проверит это не своем VFP8? Цитата:Думал, SpecialEffec=1 или 2 поможет, но нет... Все равно приперехоте по полям грида клавишей Tab при входе в ячейку с едитбоксом происходит как бы эффект нажатия на кнопку (вдавливается едитбокс). Аналогично ведет себя и чекбокс, хотя текстбоксы не дергаются. |
Re: EditBox в Grid'е | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Mavy!
BackStyle = 0 (Transparent) поможет. А против "дёргания" на 1 пиксел - увы, похоже есть только зверский способ - помести Edit в контейнер, контейнер - в колонку. в GotFocus edit-а пропиши This.Left = -1 и This.Top = -1 - соответственно в LostFocus - обратно на 0 - тогда совсем немного "подмаргивает" - но не смещается визуально. ------------------ WBR, Igor |
Re: EditBox в Grid'е | |
---|---|
Mavy Автор Сообщений: 246 Дата регистрации: 04.08.2004 |
Цитата:Да, Игорь, действительно помогло. Спасибо Только ForeColor едитбокса в активной строке не такой как HightlightForeColor и не на каие уговоры не поддается. Но это уже как-нибудь пережевем. ;) |
Re: EditBox в Grid'е | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Да именно с цветом у EditBox есть такой глюк
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: EditBox в Grid'е | |
---|---|
Mavy Автор Сообщений: 246 Дата регистрации: 04.08.2004 |
Кстати, в методе расчета количества строк текста в едитбоксе по ссылке forum.foxclub.ru формула для расчета максимальной длинны (в пикселах) текста, помещающегося в одне строку в едитбоксе:
|
© 2000-2024 Fox Club  |