Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-93992
Fridom
2004-02-17 10:27
2004.02.29
Как очистить содержимое папки без её удаления?


1-94008
Настенька
2004-02-17 08:45
2004.02.29
последний символ в label


1-93940
heady
2004-02-18 17:39
2004.02.29
Сменить иконку приложения


4-94225
dima_shapkin
2003-12-24 18:16
2004.02.29
Рамка


1-93938
Кен
2004-02-13 04:33
2004.02.29
Как можно в программе на Дельфи использовать перл-скрипт без само