Главная страница
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.03 c
14-94096
DeMoN-777
2004-02-05 22:04
2004.02.29
Беспредел...


1-93943
Прямой
2004-02-18 05:22
2004.02.29
Какую библиотеку надо TClientSocket


3-93780
Esed
2004-02-03 16:42
2004.02.29
Где - ошибка.


1-93977
ALEIIIKA
2004-02-17 10:34
2004.02.29
Excel&Delphi


1-93861
Maxio
2004-02-16 16:33
2004.02.29
После точки