Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2008, 22:56
Аватар для Ромео
Ромео Ромео вне форума
Прохожий
 
Регистрация: 21.02.2008
Сообщения: 15
Репутация: 10
Вопрос Ограничения на динамически созданные Edit-ы

Здравствуйте!
Пишу программу, в которой динамически создаю 20 Edit-ов (массивом). Задаю основные свойства, местоположение на форме и т.п. И всё бы ничего, но надо ограничить ввод данных в эти Edit-ы. (надо только цифры и десятичный разделитель). Где-то здесь на форуме нашел код, но там общий вид... т.е. после описания предлагается писать OnKeyPress := а затем то, что мы хотим сделать... но чё-т как-то не догоняю... не пашет и всё тут. Подскажите как написать это для всех объектов сразу?
Заранее Спасибо!

П.С. Относительно объекта, созданного заранее на форме в процессе проектирования - всё понятно. Зашёл в инспектор объектов, задал событие и написал ограничение на ввод. А тут - просто как застопорился.
Ответить с цитированием
  #2  
Старый 22.02.2008, 06:23
LSK LSK вне форума
Прохожий
 
Регистрация: 14.02.2008
Сообщения: 5
Репутация: 10
По умолчанию

В private пишешь:
Код:
Procedure MyEditKeyPress(Sender: TObject; var Key: Char);
При созданнии Edit 'ов:
Код:
Edit[i].OnKeyPress:=form1.MyEditKeyPress;
Затем в Implementation ' е :
Код:
Procedure Tform1.MyEditKeyPress(Sender: TObject; var Key: Char);
Begin
//Здесь пишешь свой код, обращаясь к Edit ' ам как (Sender as Tedit)
end;
Ответить с цитированием
  #3  
Старый 22.02.2008, 15:27
Аватар для Ромео
Ромео Ромео вне форума
Прохожий
 
Регистрация: 21.02.2008
Сообщения: 15
Репутация: 10
По умолчанию

LSK, спасибо! )
Ток вот попытался аналогичное провернуть с OnChange (хочу там написать что-то вроде проверки на наличие знака десятичного разделителя (в кейпрессе явно получается ток запретить... или разрешить, но тогда их можно ввести n-ое кол-во))... вобщем, это не суть... провернул по аналогии - не получилось.
Если не сложно - как объявлять процедуры для динамически создаваемых объектов в общем виде? (объявлять, вызывать и назначать на события)
Заранее спасибо! )
П.С. Соррри, если вопрос во истину туп.
Ответить с цитированием
  #4  
Старый 23.02.2008, 11:36
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

В общем виде:
Чем мне нравится Делфи - в ней исходники почти всех компонентов.
Если немного полазить то можно увидеть мого интересного.

Про события:
Бросим на форму 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  
Старый 26.02.2008, 12:54
Аватар для Ромео
Ромео Ромео вне форума
Прохожий
 
Регистрация: 21.02.2008
Сообщения: 15
Репутация: 10
По умолчанию

s0Creator, Спасибо Большое! )
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter