Форум: "Базы";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
ВнизЛогическое поле в grid`е Найти похожие ветки
← →
Yurikon (2007-08-31 14:33) [0]Здраствуйте!
Подскажите плиз, как в grid`е отобразить логическое поле в виде checkbox`а?
А то ерунда получается - все на русском, а в таблице юзеру предлагается ввести True или False, да и писать долго.
← →
Megabyte © (2007-08-31 14:44) [1]Сделай ввод поля не вы гриде, а отдельно в DBCheckBox
← →
Jeer © (2007-08-31 14:51) [2]
> Yurikon (31.08.07 14:33)
Сделать наследника grid с реализацией требуемого функционала.
← →
Johnmen © (2007-08-31 14:52) [3]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168
← →
fd979 © (2007-08-31 15:15) [4]EhLiB -> DBGridEh там это реализовано
← →
Yurikon (2007-08-31 17:40) [5]
> Johnmen
Спасибо, за ссылку!
Единственный косяк в этом примере, если ячейка получает фокус - то там опять отображается True\False. Без фокуса я закрасил белым прямоугольником эти значения, а вот как сделать, чтобы и с фокусом отображались только checkbox`ы не могу понять.
← →
sniknik © (2007-08-31 19:06) [6]> если ячейка получает фокус - то там опять отображается True\False.
наверное всетаки не фокус, а в режиме редактирования? когда появляется поле InplaceEditor-а, ну так поставь у этого поля "ридонли" в труе. и все.
если всетаки при фокусе (там что перерисовкой делается? и "флаг фокуса" не учитывается) то проще сделать полю пустой обработчик onGetText тогда нечего рисовать будет, в любом режиме.
← →
Германн © (2007-09-01 01:00) [7]
> А то ерунда получается - все на русском, а в таблице юзеру
> предлагается ввести True или False
А может просто в свойстве TBooleanField.DisplayValues поставить "Да;Нет" ? Всё будет на русском и логично и без извратов?
← →
Yurikon (2007-09-01 11:58) [8]
> sniknik
Сорри, конечно в режиме редактирования. Поставить рид онли этому полю нельзя, так как оно должно изменяться по клику мыши. Сделал пустой обработчик onGetText - избавился от текста. Но если два раза кликнуть мышью, то появляется курсор для ввода, а это уже косяк. Как подавить режим редактирования с курсором для ввода??
> Германн
Да;Нет - без извратов, не спорю. Но не удобно! Мы не ищем легких путей ;).
← →
Johnmen © (2007-09-01 12:20) [9]
> Yurikon (01.09.07 11:58) [8]
> Но если два раза кликнуть мышью, ...
Обработай клик от мыши, "убери" ввод.
А вообще, если интересно, посмотри, как это делается в TDBGridEh из EhLib.
← →
sniknik © (2007-09-01 12:44) [10]> Поставить рид онли этому полю нельзя, так как оно должно изменяться по клику мыши.
как нельзя? меняешь то его ты сам, что с того что для контролов будет ридонли стоять? (ну может не у поля в датасете, а у колонки в гриде поставить, сам пробуй, где не будет мешать явной записи)
← →
Yurikon (2007-09-01 17:58) [11]
> как нельзя? меняешь то его ты сам, что с того что для контролов
> будет ридонли стоять? (ну может не у поля в датасете, а
> у колонки в гриде поставить, сам пробуй, где не будет мешать
> явной записи)
Sniknik, поставить ридонли например для Колонки можно, делал так. Проблема в том, что хотя ничего ввести нельзя, но курсор все равно появляется. ((
Johnmen, поясни плиз, как "убрать" ввод?
← →
sniknik © (2007-09-01 18:53) [12]> но курсор все равно появляется. ((
верно, блин...
ну всегда можно убрать создание 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;
← →
sniknik © (2007-09-01 18:57) [13]не, не правильно, работает если только в поле первый раз тыкать, если он уже создался при редактировании другого поля то вызывается... надо вызов перекрывать.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c