Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Редактирование ячейки DBGridEh только кнопкой


TheEd ©   (2016-03-28 12:57:00) 

Добрый день, мастера!
Что-то голову словам, есть DBGridEh, одно из полей (числовое) надо редактировать только кнопкой. Так вот - кнопка есть, работает, занимает всю площадь поля, но если войти на ячейку с клавы и начать набирать текст, то ячейка переходит в режим текстового редактирования.
 Назначение свойства колонке TextEditing = false приводит к тому, что ячейка становится нередактируемой (т.е. EditButton не отображается).
 Есть ли простой способ запретить текстовое редактирование, но при этом чтобы эдитбаттон показывался при клике на ячейке?


Германн   (2016-04-03 02:23:00) [1]


> Юрий Зотов ©   (03.04.16 01:24) [8]

Юра, ты гораздо лучше меня знаешь что такое InplaceEditor. В навороченном гриде DBGridEh таких эдиторов море. Возможно и для числовых полей.


Германн   (2016-04-03 02:06:00) [2]


> Юрий Зотов ©   (03.04.16 01:24) [8]
>
> > Германн ©   (03.04.16 01:15) [7]
>
> Это не кнопка.
>

По опыту общения с новичками на киберфоруме для них это именно кнопка.


Юрий Зотов   (2016-04-03 01:24:00) [3]

> Германн ©   (03.04.16 01:15) [7]

Это не кнопка.


Германн   (2016-04-03 01:15:00) [4]


> Юрий Зотов ©   (31.03.16 11:14) [6]
>
> > одно из полей (числовое) надо редактировать только кнопкой
>
> А как можно КНОПКОЙ редактировать ЧИСЛО ?

TCombobox со стилем csDropDоwnList.


Юрий Зотов   (2016-03-31 11:14:00) [5]

> одно из полей (числовое) надо редактировать только кнопкой

А как можно КНОПКОЙ редактировать ЧИСЛО ?


Inovet   (2016-03-30 15:20:00) [6]

> [4] TheEd   (30.03.16 12:27)

Есть правильные пути:
Вычисляемое поле - вывод картинки по вычисляемому полю, GetText()/SetText() - ввод и вывод в нужном формате с хранением в этом домене, Лукап поле. Комбинации этого.


TheEd   (2016-03-30 12:27:00) [7]


> правильно делают, только лучше программиста, логика грида
> показывать данные, а не кнопки содержать. ИМХО, лучше бы
> исправить... например таки дать бедным юзерам править в
> гриде, раз уж пытаются (и это проще чем жать кнопку и только
> потом редактировать, сам попробуй), а вместо кнопки, что
> там у тебя делается (карточка товара на редактирование показывается)
> сделать по двойному клику. так оно будет хотя бы не забивать
> стандартное, а дополнять.
>
>

В целом, согласен - это есть общая логика ГУИ большинства распространённых АРМов. В моём случае кнопка отражает зубную формулу (число вида XY, где Х - 1..4, Y - 1..8), однако изначально в базе для данного поля был создан домен 1..32, что немного не правильно. В итоге, пока в программе где нужно используются преобразования "на лету". В частности, для обсуждаемого случая используются распространённые в стоматологии графические отображения зубной формулы а для редактирования вызывается графический редактор с изображением зубиков... Всё для юзверей :)
На будущее надо базу поправить полюбому.


sniknik   (2016-03-29 10:54:00) [8]

> начинаем набирать цифры, грид переходит в состояние редактирования.

type
 TMyDBGrid = class(TDBGrid);

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
 with TMyDBGrid(Sender) do
   if SelectedField.FieldName = 'Name' then  begin
     Key:= #0;
     if Assigned(InplaceEditor) then
       InplaceEditor.Hide;
 end;
end;


> зовут админа :()
правильно делают, только лучше программиста, логика грида показывать данные, а не кнопки содержать. ИМХО, лучше бы исправить... например таки дать бедным юзерам править в гриде, раз уж пытаются (и это проще чем жать кнопку и только потом редактировать, сам попробуй), а вместо кнопки, что там у тебя делается (карточка товара на редактирование показывается) сделать по двойному клику. так оно будет хотя бы не забивать стандартное, а дополнять.


TheEd   (2016-03-29 08:59:00) [9]


> > одно из полей (числовое) надо редактировать только кнопкой
> > но если войти на ячейку с клавы и начать набирать текст
> Как это понимать?

становимся в соседнюю ячейку (напр., правее), стрелками (<-) перемещаемся на ту, в которой кнопка нарисована, начинаем набирать цифры, грид переходит в состояние редактирования. При этом под прорисованной кнопкой происходит ввод чисел, которые частично перерисовывают кнопку. Естественно, как только пост пройдёт, кнопка затирает
число и прорисовывает себя поверх.
 Однако конечные юзеры не понимают что у них под кнопками творится, входят в ступор, зовут админа :()


Smile   (2016-03-28 16:17:00) [10]

> одно из полей (числовое) надо редактировать только кнопкой
> но если войти на ячейку с клавыи начать набирать текст
Как это понимать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо