Текущий архив: 2004.02.29;
Скачать: CL | DM;
Вниз
как можно получить значения вводимые в TBDGRID Найти похожие ветки
← →
ALEX2 (2004-02-03 19:49) [0]У меня такой вопрос:как можно получить значения вводимые в TBDGRID.На одном форуме нашёл такой пример:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
I: integer;
begin
for I := 0 to DBGrid1.ControlCount - 1 do
if DBGrid1.Controls[I] is TInPlaceEdit then
with DBGrid1.Controls[I] as TInPlaceEdit do
Label1.Caption := "Text = "+ Text;
end;
end;
Мне кажется что значение DBGrid1.ControlCount может быть или 1 или 0,так что возможно решить перехват текста и без цикла.Если не так поправьте.Правда я ещё не понял до конца когда DBGrid1.ControlCount=0.
Вообще-то перехват текста при вводе мне нужен для того что-бы текст в определённые поля вводился в определённом формате.Например надо что-бы в одном поле после первых двух цифр можно было бы водить дальше только другие определённые символы и делать этот контроль при вводе а не при записи в кэш.Также нужно ограничить размер числовых полей при вводе.Все события наборов данных и их полей возникают не раньше запписи в кэш. Перехват вводимого текста в TDBGRID.OnKeyPress не слишком элегантен поскольку требует определения поля в фокусе. И если у меня 20 полей в наборе со своимми правилами форматирования каждый раз при нажатии клавиши в DBGrid-e придётся перебирать поля и в CASE-операторе назначить выполнение соответстующих проверок для данного поля.Короче говоря:Можно ли назначить для отдельнного столбца в гриде собственный обработчик нажатия клавиши и там вылавливать вводимый в грид текст? Как бы вы уважаемые мастера решили задачу форматирования при вводе ?
← →
sniknik © (2004-02-03 23:10) [1]> Вообще-то перехват текста при вводе мне нужен для того что-бы текст в определённые поля вводился в определённом формате.
TField.EditMask
← →
ALEX2 (2004-02-04 10:27) [2]TField.EditMask не срабатывает для ADO и Access.
← →
Mike Kouzmine © (2004-02-04 11:04) [3]onChange поля, Значение встроенного редактора
← →
sniknik © (2004-02-04 11:11) [4]> TField.EditMask не срабатывает для ADO и Access.
(?!!!!!)
ну надо же! сколько этим пользуюсь и не знал что оно не работает, срочно нужно клиентов обзванивать у них массовые глюки и помешательство (тоже думают что работает то что заказывали а оказывается это есть галюны).
спасибо что глаза открыл. буду вечно благодарен.
;о)))
← →
ALEX2 (2004-02-04 14:50) [5]
> TField.EditMask не срабатывает для ADO и Access.
Извини я ошибся. Я имел ввиду TFloatField.EditFormat. Просто я думал что EditFormat имеет ту же функциональность что и EditMask. Почему же EditFormat:="###" не ограничивает длину поля на три цифры. Не могу понять из справки для чего он.
А CustomConstraint у меня точно не работает с ADO, MIcrosoft Jet 4.0 и базой Access.
Но все-таки как решить задачи форматирования поля которые нельзя решит с использованием EditMask, а такие точно есть. Тут желательно использовать контроль при вводе каждого символа в грид а ни в событии ONCHANGE которое возникает лишь при вводе значения в кэш.
← →
sniknik © (2004-02-04 15:30) [6]> Тут желательно использовать контроль при вводе каждого символа в грид
контролируй
type
TMyDBGrid = class(TDBGrid);
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ["a", "b", "c", "A", "B", "C"] then Key:= #0;
Label1.Caption:= TMyDBGrid(Sender).InplaceEditor.Text;
end;
Страницы: 1 вся ветка
Текущий архив: 2004.02.29;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.017 c