Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Множество одинаковых процедур, хочу научиться избавляться 
V
    Опции темы
Palladin
Дата 24.5.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Здравствуйте, К примеру на форме n-edit-ов для каждого нужно разрешить ввод тольо цифр,точку и запятую(к примеру), в обработчике onKeyPress пишу:
Код

 if not (Key in ['0'..'9',#8,#13,'.',',']) then 
      Key := #0; 


Но проблема, у меня едитов 1000 штук(к примеру), получится что 1к раз я должен прописывать в он кейпресс один и тот же код, наверняка есть какойнить способ это обойти... и написать подобные код в одном месте, или нет?


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Данкинг
Дата 24.5.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Выдели все Edit'ы и повесь на них все одну и ту же процедуру onKeyPress... Ещё вот такой цикл для поиска нужных компнентов не забывай (т.е. в данном случае он, вероятно, и не нужен, но в принципе пригодится):
Код

for i := 0 to ComponentCount - 1 do if (Components[i] is TEdit) then
 begin
 .....
 end;



Это сообщение отредактировал(а) Данкинг - 24.5.2009, 11:09


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kami
Дата 24.5.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(Palladin @  24.5.2009,  10:56 Найти цитируемый пост)
наверняка есть какойнить способ это обойти

Назначить один обработчик события всем 1к edit-ам
PM MAIL WWW   Вверх
Palladin
Дата 24.5.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Про цикл знаю, недавно наччился делать массив компонентов smile 
Про выделение не совсем понял, что зажать Shift и все повыделять? или как-то программно, если не программно, то только что попробовал, кинул 10 едитво на форму, выделил, потом в евентсе выбрал онкейпресс, но он создался лишь для первого...

Добавлено через 19 секунд
2Ками вот это-то мне и надо, как?


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
kami
Дата 24.5.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(Palladin @  24.5.2009,  11:13 Найти цитируемый пост)
вот это-то мне и надо, как

Создаешь OnKeyPress для одного эдита.
Выбираешь другой эдит, в его OnKeyPress нажимаешь кнопочку комбобокса "вниз" и выбираешь событие, созданное для первого эдита.

Если надо программно, т.е. в рантайме - пример тебе показал Данкинг
PM MAIL WWW   Вверх
Данкинг
Дата 24.5.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(Palladin @  24.5.2009,  12:13 Найти цитируемый пост)
что зажать Shift и все повыделять?

Кстати, вроде бы и так можно - попробуй.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Palladin
Дата 24.5.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Ок, спс, разобрался


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
CodeMonkey
Дата 24.5.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



1000-а edit-ов?  smile 
А вы уверены, что всё правильно делаете? Я бы повесился, если бы мне пришлось иметь дело с окнов с 1000 edit-ов...


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 24.5.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



CodeMonkey, не преувеличивай. Если они все вместе служат чем-то типа грида (то есть используются однотипно) и выстроены в столбик (два столбика), и оно все прокручивается, то не такой уж ужасный интерфейс. 
Но сточки зрения пожирания ресурсов - все равно не феншуй.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
xfoby
Дата 27.5.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.2.2009
Где: Анапа

Репутация: нет
Всего: нет



а может проще было бы в цикле всем Edit'ам добавить флаг ES_NUMBER, чем постоянно обрабатывать?
PM MAIL WWW ICQ Skype Jabber   Вверх
Rrader
  Дата 27.5.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



xfoby, ES_NUMBER не позволит вводить точку или запятую (см. первое сообщение в теме).

Цитата(xfoby @  27.5.2009,  19:44 Найти цитируемый пост)
чем постоянно обрабатывать? 

А думаешь Винде охота постоянно гонять CInputLimiter (реализует стиль ES_NUMBER)? smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Frees
Дата 27.5.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Цитата(xfoby @  27.5.2009,  15:44 Найти цитируемый пост)
а может проще было бы в цикле всем Edit'ам добавить флаг ES_NUMBER, чем постоянно обрабатывать?


похоже что там не плохо было бы сами едиты в цикле создавать


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Palladin
Дата 29.5.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



С чего вы взяли что у меня едитов 1000? Я ж к примеру привел smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1367 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.