![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.10.2011
Сообщений: 33
|
![]()
Доброго времени суток!
Возник вопрос для упрощения работы с кодом, после долгого поиска в сети, не смог найти ответов, наверно из-за того что не знаю как правильно спросить и поиск не умеет читать мои мысли. Вообщем... Мне нужна то ли процедура то ли функция которая выполняет одно и тоже действие, одно только НО! это действие должно выполнятся для разных объектов на форме, то есть я укажу переменную которая в теле процедуры(функции) будет подставлятся к ИМЕНИ объекта (как-то так Edit[x], где x это переменная которая будет входящим значением в процедуре(функции). Если Вам непонятно можете задать вопрос, Я постораюсь конкретезировать. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А Sender: TObject чем не устраивает? Анализируйте в процедуре какой класс, имя или значение TAG (в нем можно прописать любое int-значение) и делайте соответствующие действия
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 05.10.2011
Сообщений: 33
|
![]() Цитата:
Допустим на форме три кнопки(button1, button2, button3), три эдитполя(edit1, edit2, edit3) и три лэйбла(label1, label2, label3). Надо сделать так чтоб на нажатие кнопки текст в эдитполе копировался в лэйбл соответственно последней цифре в имени) Просто примерно такой код, у меня в проге будет повтрятся раз 15, и чтобы поменять его мне приходится меня во всем коде. Помогите пожалуйсята на примере. |
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 02.04.2011
Сообщений: 48
|
![]()
Можно к примеру так:
Код:
|
![]() |
![]() |
![]() |
#5 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
![]()
Я нередко решаю такую проблему без динамического поиска компонентов.
Завожу разные массивы контролов со сквозной индексацией. В них складываю (обычно в FormCreate) нужные контролы, потом просто работаю по единому индексу. Складывать в массивы можно тем же findcomponent/ controls, а можно и вручную(если не оч много их) Код:
Последний раз редактировалось Stilet; 07.10.2011 в 08:12. |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
К проекту добавляется новый модуль (новый Frame).(file New Frame) на котором размещается 1 button 1 Edit 1 Label для них описывается нужный функционал. (OnKeyPress и т.д.). На нашу форму добавляется нужное количество таких фреймов.(компонент frame на вкладке Standart из предложенного списка выбрать наш (созданный на предыдущем шаге скорее всего он будет там один). Это можно делать как в дизайн так и программно. Все! Из плюсов. При изменении функционала во фрейме (новые control's) никаких действий на форме (настройки массивов, тегов, соответствия имен и т.п.) проводить не требуется. Достаточно скорректировать функционал собственно фрейма. единообразное размещение контролов на форме получается автоматически.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 07.10.2011 в 09:42. |
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
К проекту добавляется новый Frame. на котором размещается 1 button 1 Edit 1 Label для них описывается нужный функционал. (OnKeyPress и т.д.). На нашу форму добавляется нужное количество таких фраймов. Это можно делать как в дизайн так и программно. Все!
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 05.10.2011
Сообщений: 33
|
![]()
Asinkrit - Этот вариант не решает как бы проблему глобально, мне так же придется копировать код во все процедуры кнопки ОнКлик. Просто я перехожу с ПБэйсика на Дэльфи, там решалась эта проблема, тем что созданные ГАДЖЕТЫ, а по Дэльфийски КОМПОНЕНТЫ(или ОБЪЕКТЫ) имеют свое ИД, то есть прям в коде можно вместо ИМЕНИ использовать ЧИСЛО(интеджер), которое выполняет абсолютно все функции ГАДЖЕТА к которому оно прикреплено. С помощью не хитрых сложений-вычитаний можно было создать универсальную процедурку в начале кода, и вставлять ее куда угодно, со входящим переменным ИД-значением, то есть я мог свободно одну и туже процедуру использовать как для кнопки1, которая копировала Эдит1 в Лэйбл1, как для кнопки2, которая копировала Эдит2 в Лэйбл2. Примерно так(схематично)
... Процедура ПроцедураДляКнопок (х) вставить из Эдит+х в Лэйбл+х КонецПроцедуры ... Если нажали на Кнопка1, то ПроцедураДляКнопок (1) Если нажали на Кнопка2, то ПроцедураДляКнопок (2) Если нажали на Кнопка3, то ПроцедураДляКнопок (3) ... Если нажали на Кнопка15, то ПроцедураДляКнопок (15) Может быть есть подобное в Дэльфи? ___________________________________ _________________________________ phomm Разбираю Ваш пример) ___________________________________ _________________________________ evg_m Прикольно, но я не представляю себе это, можете предоставить примерчик простенький, желательно с комиентариями Последний раз редактировалось abzhapparovmaxat; 07.10.2011 в 11:43. |
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 02.04.2011
Сообщений: 48
|
![]() Цитата:
Последний раз редактировалось Asinkrit; 07.10.2011 в 13:20. |
|
![]() |
![]() |
![]() |
#10 | ||||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
комментировать там нечего. Моего кода всего одна строка Код:
Цитата:
Цитата:
Цитата:
я добавил 3 раза.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 07.10.2011 в 17:51. |
||||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Плагин для Windows или действия с контекстным меню при выборе опр. типа файла | Человек_Борща | Общие вопросы Delphi | 7 | 02.10.2011 21:09 |
Рекурсивная процедура или функция | Homutova_Julia | Общие вопросы Delphi | 1 | 29.05.2011 00:57 |
Нужна функция или процедура для того чтобы программа стала резидентной! | star007 | Помощь студентам | 3 | 22.03.2010 08:59 |
Универсальная функция для действия над матрицами | devl | Общие вопросы C/C++ | 10 | 30.01.2010 18:49 |
Одна функция для нескольких объектов | Salomon | Помощь студентам | 2 | 25.11.2008 16:32 |