:: Архив конференции по VFP до 2005 года
EditBox в Grid'е
Mavy
Автор

Сообщений: 246
Дата регистрации: 04.08.2004
Возникла необходимость сделать в гриде ячейку из нескольких строк текста. Включил в нужную колонку EditBox, и в связи с этим возникло несколько вопросов:

1. Как можно сделать автоматический подбор высоты строки грида (RowHeight), чтобы текст в поле едитбокса был виден полностью.
2. Если для грида HighlightStyle=2 (подсвечивается вся строка), то ячейка с едитбоксом не падсвечивается. Как побороть?
3. При перемещении по строкам грида текст в едитбоксе активной строки слегка смещается вниз и вправо. Это конено мелочь, но если это лечится, то как? (EditBox.Margin=0)

WinXp, VFP8SP1
Ratings: 0 negative/0 positive
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?
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
Mavy
Автор

Сообщений: 246
Дата регистрации: 04.08.2004
Цитата:
высота строк грида меняется только для всех строк одновременно
Это то ясно. Я имел ввиду установить высоту строки такую, чтобы поместилось поле с макс. длиной текста (понятно что эта высота будет для всех строк). Может как-то с помощью SYSMETRIC( ) или FONTMETRIC( )?
Цитата:
У меня подсвечивается, но правда дедовским методов в VFP6
Таким методом подсвечивается вся колонка с едитбоксом, а не активная строка, хотя в колонках с текстбоксами все ок.
Едитбокс не подсвечивается если даже в грид AllowCellSelection=F, хотя другие поля с текстбоксами имеют выделенный цвет фона и шрифта.
Цитата:
Вроде ничего не смещается, может потому, что у меня у объекта Edit BordeStyle=0?
BordeStyle и у меня 0. Дерганье происходит если активная колонка именно с едитбоксом.
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
po2

Сообщений: 2864
Откуда: Иркутск
Дата регистрации: 22.12.2001
По первому пункту:
По ссылке:forum.foxclub.ru,
плюс уточнения www.sql.ru
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
And

Сообщений: 901
Дата регистрации: 29.01.2001
> Это то ясно. Я имел ввиду установить высоту строки такую, чтобы поместилось поле с макс.
> длиной текста (понятно что эта высота будет для всех строк). Может как-то с помощью
> SYSMETRIC( ) или FONTMETRIC( )?
Видимо если и можно, то только очень грубо рассчитывая количество символов (а их ширина разная для большенства шрифтов)... По моему, решение, когда пользователь сам задаст ширину/высоту колонок и эти значения запомняться вполне нормальное.

>Таким методом подсвечивается вся колонка с едитбоксом, а не активная строка, хотя в колонках
>с текстбоксами все ок.
Как вся колонка? Все записи? Странно, у меня только у активной записи. Sparse у колонки на .f.?

>BordeStyle и у меня 0. Дерганье происходит если активная колонка именно с едитбоксом.
Странно, у меня стоит монолитом...
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
Mavy
Автор

Сообщений: 246
Дата регистрации: 04.08.2004
po2, спасибо за метод!
Я его немног переделал, и теперь с его помощью автоматически расчитываю и устанавливаю высоту стору грида в зависимости от ширины колонки с едитбоксом и максимально длинного текста в этой коленке.

And,
Цитата:
Как вся колонка? Все записи? Странно, у меня только у активной записи. Sparse у колонки на .f.?
Еще на VFP7 я таким же образом реализовывал подсветку строки в гриде и все работало, но только с едитбоксом в семерке не пробовал (только текстбоксы). А в восьмерке на текстбоксах работает (подсвечивается текстбокс только в активной строке), а на едитбоксе - нет (раскрашивается вся колонка). Sparse = F для этой колонки.
В восьмерке от дедовского способа отказался т к есть штатный (Highlight), который отлично подсвечивает стороку грида из текстбоксов и чекбоксов (проверял), но если есть колонка с едитбоксом, то активная строка в ней не подсвечивается. Может кто проверит это не своем VFP8?
Цитата:
BordeStyle и у меня 0. Дерганье происходит если активная колонка именно с едитбоксом.
Думал, SpecialEffec=1 или 2 поможет, но нет... Все равно приперехоте по полям грида клавишей Tab при входе в ячейку с едитбоксом происходит как бы эффект нажатия на кнопку (вдавливается едитбокс). Аналогично ведет себя и чекбокс, хотя текстбоксы не дергаются.
Ratings: 0 negative/0 positive
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
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
Mavy
Автор

Сообщений: 246
Дата регистрации: 04.08.2004
Цитата:
BackStyle = 0 (Transparent) поможет.
Да, Игорь, действительно помогло. Спасибо
Только ForeColor едитбокса в активной строке не такой как HightlightForeColor и не на каие уговоры не поддается. Но это уже как-нибудь пережевем. ;)
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Да именно с цветом у EditBox есть такой глюк




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: EditBox в Grid'е
Mavy
Автор

Сообщений: 246
Дата регистрации: 04.08.2004
Кстати, в методе расчета количества строк текста в едитбоксе по ссылке forum.foxclub.ru формула для расчета максимальной длинны (в пикселах) текста, помещающегося в одне строку в едитбоксе:
nMaxLenString=.Width -.Margin - sysm(5) - 2*sysm(10) - 5
более правильно должна звучать так:
nMaxLenString=.Width -.Margin - IIF(.ScrollBars=0,0,sysm(5)+1) - IIF(.BorderStyle=0,0,2*sysm(10)+2)
Только для едитбокса в греде надо не .Width, а .Parent.Width (ширина колонки)
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 7 (Гостей: 7)

© 2000-2024 Fox Club 
Яндекс.Метрика