|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Ограничения на динамически созданные Edit-ы
Здравствуйте!
Пишу программу, в которой динамически создаю 20 Edit-ов (массивом). Задаю основные свойства, местоположение на форме и т.п. И всё бы ничего, но надо ограничить ввод данных в эти Edit-ы. (надо только цифры и десятичный разделитель). Где-то здесь на форуме нашел код, но там общий вид... т.е. после описания предлагается писать OnKeyPress := а затем то, что мы хотим сделать... но чё-т как-то не догоняю... не пашет и всё тут. Подскажите как написать это для всех объектов сразу? Заранее Спасибо! П.С. Относительно объекта, созданного заранее на форме в процессе проектирования - всё понятно. Зашёл в инспектор объектов, задал событие и написал ограничение на ввод. А тут - просто как застопорился. |
#2
|
|||
|
|||
В private пишешь:
Код:
Procedure MyEditKeyPress(Sender: TObject; var Key: Char); Код:
Edit[i].OnKeyPress:=form1.MyEditKeyPress; Код:
Procedure Tform1.MyEditKeyPress(Sender: TObject; var Key: Char); Begin //Здесь пишешь свой код, обращаясь к Edit ' ам как (Sender as Tedit) end; |
#3
|
||||
|
||||
LSK, спасибо! )
Ток вот попытался аналогичное провернуть с OnChange (хочу там написать что-то вроде проверки на наличие знака десятичного разделителя (в кейпрессе явно получается ток запретить... или разрешить, но тогда их можно ввести n-ое кол-во))... вобщем, это не суть... провернул по аналогии - не получилось. Если не сложно - как объявлять процедуры для динамически создаваемых объектов в общем виде? (объявлять, вызывать и назначать на события) Заранее спасибо! ) П.С. Соррри, если вопрос во истину туп. |
#4
|
||||
|
||||
В общем виде:
Чем мне нравится Делфи - в ней исходники почти всех компонентов. Если немного полазить то можно увидеть мого интересного. Про события: Бросим на форму TEdit дойдем до TCustomEdit там есть свойство property OnChange: TNotifyEvent read FOnChange write FOnChange;Если нажать Ctrl и кликнуть на TNotifyEvent то увидим TNotifyEvent = procedure(Sender: TObject) of object; TNotifyEvent - это самый распространенный тип для обработки событий но в некоторые события передаются дополнительные параметры TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object; Чтобы динамически создать (изменить) обработчик на событие необходимо прописать обработчик соответствующий этому событию. Самый легкий путь в TForm Procedure MyEditKeyPress(Sender: TObject; var Key: Char); Procedure MyEditChange(Sender: TObject); и соответственно написать саму обработку и привязать ксобытию Если один обработчик обрабатывает события нескольких объектов то удобно пользоваться параметром Sender который указывает на объект в котором произошло событие например так procedure TForm1.MyEditChange(Sender: TObject); begin (Sender as TEdit).Text := 'Ненадо менять мой текст'; end; |
#5
|
||||
|
||||
s0Creator, Спасибо Большое! )
|