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

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

Логическое поле в grid`е [D7, Access]


Yurikon ©   (2007-08-31 14:33:00) 

Здраствуйте!

Подскажите плиз, как в grid`е отобразить логическое поле в виде checkbox`а?
А то ерунда получается - все на русском, а в таблице юзеру предлагается ввести True или False, да и писать долго.


sniknik   (2007-09-01 18:57:00) [1]

не, не правильно, работает если только в поле первый раз тыкать, если он уже создался при редактировании другого поля то вызывается... надо вызов перекрывать.


sniknik   (2007-09-01 18:53:00) [2]

> но курсор все равно появляется. ((
верно, блин...

ну всегда можно убрать создание InplaceEditor-а, для нужного поля...

type
 TMyDBGrid  = class(TDBGrid)
 protected
   function  CreateEditor: TInplaceEdit; override;
 end;

 TDBGrid  = class(TMyDBGrid);

 TForm1 = class(TForm)
....

function TMyDBGrid.CreateEditor: TInplaceEdit;
begin
 if SelectedField.FieldName='Name'
   then Abort
   else result:= inherited CreateEditor;
end;


Yurikon   (2007-09-01 17:58:00) [3]


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


Sniknik, поставить ридонли например для Колонки можно, делал так. Проблема в том, что хотя  ничего ввести нельзя, но курсор все равно появляется. ((

Johnmen, поясни плиз, как "убрать" ввод?


sniknik   (2007-09-01 12:44:00) [4]

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


Johnmen   (2007-09-01 12:20:00) [5]


> Yurikon   (01.09.07 11:58) [8]
> Но если два раза кликнуть мышью, ...

Обработай клик от мыши, "убери" ввод.
А вообще, если интересно, посмотри, как это делается в TDBGridEh из EhLib.


Yurikon   (2007-09-01 11:58:00) [6]


> sniknik


Сорри, конечно в режиме редактирования. Поставить рид онли этому полю нельзя, так как оно должно изменяться по клику мыши. Сделал пустой обработчик onGetText - избавился от текста. Но если два раза кликнуть мышью, то появляется курсор для ввода, а это уже косяк. Как подавить режим редактирования с курсором для ввода??


> Германн

Да;Нет - без извратов, не спорю. Но не удобно! Мы не ищем легких путей ;).


Германн   (2007-09-01 01:00:00) [7]


> А то ерунда получается - все на русском, а в таблице юзеру
> предлагается ввести True или False

А может просто в свойстве TBooleanField.DisplayValues поставить 'Да;Нет' ? Всё будет на русском и логично и без извратов?


sniknik   (2007-08-31 19:06:00) [8]

> если ячейка получает фокус - то там опять отображается True\False.
наверное всетаки не фокус, а в режиме редактирования? когда появляется поле InplaceEditor-а, ну так поставь у этого поля "ридонли" в труе. и все.

если всетаки при фокусе (там что перерисовкой делается? и "флаг фокуса" не учитывается) то проще сделать полю пустой обработчик onGetText тогда нечего рисовать будет, в любом режиме.


Yurikon   (2007-08-31 17:40:00) [9]


> Johnmen

Спасибо, за ссылку!

Единственный косяк в этом примере, если ячейка получает фокус - то там опять отображается True\False. Без фокуса я закрасил белым прямоугольником эти значения, а вот как сделать, чтобы и с фокусом отображались только checkbox`ы не могу понять.


fd979   (2007-08-31 15:15:00) [10]

EhLiB -> DBGridEh там это реализовано


Johnmen   (2007-08-31 14:52:00) [11]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168


Jeer   (2007-08-31 14:51:00) [12]


> Yurikon   (31.08.07 14:33)


Сделать наследника grid с реализацией требуемого функционала.


Megabyte   (2007-08-31 14:44:00) [13]

Сделай ввод поля не вы гриде, а отдельно в DBCheckBox


Наверх

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