![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Логическое поле в 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