1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
||||||
1 | ||||||
Програмное назначение обработчиков событий26.03.2017, 13:23. Показов 5090. Ответов 49
Метки нет (Все метки)
Всем привет.
Надувается голова от вопроса: "Как назначить обработчик события созданному объекту в консольном приложении ?" Стало быть создаётся форма. Нужно этой форме назначить обработчик на событие её закрытия.
0
|
26.03.2017, 13:23 | |
Ответы с готовыми решениями:
49
Создание обработчиков событий Написание своих обработчиков событий Назначение событий на динамически создаваемое меню mainitem Програмное назначение принтера для печати |
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
27.03.2017, 02:38 | 21 |
Не. Нифига не помнишь откуда взял тот код, который когда-то работал. Ну естественно и сам код не помнишь.
Добавлено через 2 минуты У него ж "чёрти что и сбоку бантик".
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
|
27.03.2017, 02:40 [ТС] | 22 |
Утечек памяти так же нету, а значит все переменные удаляются из стека корректно. А я стало быть люблю извращаться в коде. И мои извращения-ухищрения пока неплохо живут. Странный вопрос "нафига" от "специалиста". Не стану таить, все ради производительности и экономии ресурсов. И не надо мне рассказывать на счёт этой экономии и производительности. Это не тема обсуждения.
0
|
27.03.2017, 02:50 | 23 |
Не по теме: Он специалист. Настоящий. Уровнем повыше большинства. Вы используете TApplication и TForm. Значит вы точно так же тянете за собою тот же VCL. Никакой экономии вы не получаете. А на производительность VCL не влияет. Как корректнее - я показал. Только не забывайте что Self использовать нельзя.
1
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
27.03.2017, 02:54 | 24 |
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
|
27.03.2017, 03:24 [ТС] | 25 |
GoodWeather, вот это уже дельные ответы. А не "Покажи да расскажи, а я подумаю стоил ли пальцем шевелить."
На счёт производительности: Когда много форм, вернее много разных окон, в одном приложении. Незачем ведь создавать сразу все и чтоб они висели в памяти. Можно их по мере надобности какие то создавать динамически, а какие то удалять за ненадобность. Можно создать одну стандартно, а остальные создавать динамически. Так и так их согласовывать. Хочу однообразия. Чтоб с любой из форм обращаться по одному и тому же принципу. Понадобилось какое то окошко, создал его, передал этому окну управление, не нужно больше это окно, в топку, вернул управление предыдущему. На и напрягает меня настройки форм и объектов менять через палитру параметров. А так в коде, больше нравится. Добавлено через 11 минут Сделай милость, избавь от ненужных вопросов.
0
|
27.03.2017, 03:28 | 26 |
Незачем. Но обычный VCL это и не заставляет. Да, по умолчанию он суёт все добавляемые формы между
Application.Initialize(); и Application.Run(); . Но никто не запрещал их оттуда убрать и создавать/удалять по мере надобности. Единственное - главную (первую создаваемую) нельзя закрывать - это обозначает закрытие программы.Но с другой стороны - хоть они заранее созданы и висят в памяти, но зато когда понадобятся - открываются быстрее. эм... Как бэ можно и не трогать "палитру" (или точнее инспектор объектов) а задавать из кода в OnCreate или где надо. Я если пишу студентам примеры программ обязательно только так и делаю, чтоб они не запутались.
1
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
27.03.2017, 03:34 | 28 |
Ещё один бред троешника. Ибо консольное приложение тут вообще ни при чём.
P.S. Ты можешь сколько тебе угодно называть меня неспециалистом. Я не обижусь. Но суть то не изменится. Твой код бредовый.
0
|
27.03.2017, 03:39 | 29 |
Кстати да, у вас абсолютно точно не консольное приложение. У вас Win32-GUI-приложение.
Консольное приложение это когда директива {$APPTYPE CONSOLE} перед uses и консольное окно открывается перед тем как программа начнёт выполняться...
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
|
27.03.2017, 03:54 [ТС] | 30 |
Был вопрос изначально в теме, ответа дать не можете или не хотите (пример кода в частности), мне не важно. А на ваши характеристики моего кода мне тем более с высокой колокольни. Ещё раз переформулирую. Ответа дать не можете или не хотите, идите по другим темам, "дерите мозг" своими вопросами в другой теме. Не надо мне в мозг впиваться. Добавлено через 7 минут Оно явно гласит "Программное назначение обработчиков событий - Delphi" Чего вы прицепились к консольному или не консольному. Под словами "Как назначить обработчик события созданному объекту в консольном приложении ?" имелось в виду, что приложение не имеет статической формы. Что у приложения есть свой отдельный поток, который передаёт управление тому или иному динамически созданному объеку/форме.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
27.03.2017, 04:03 | 31 |
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
|
27.03.2017, 04:14 [ТС] | 32 |
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
27.03.2017, 04:18 | 33 |
Ну раз ты просишь не стараться тебе помогать, то пожалуйста. Я с лёгким сердцем пойду спать.
А ты оставайся один на один со своими глюками.
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
|
27.03.2017, 04:23 [ТС] | 34 |
Это вы пытаетесь мне доказать что они есть, а показать, продемонстрировать не можете. Приятного сна, я скучать по вам не буду.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
27.03.2017, 04:32 | 35 |
Пока нету.
А насчёт показать. Тебе мало разницы в количестве параметров? Или ты эту разницу не понял?
0
|
27.03.2017, 10:17 | 36 | |||||
можно заливать что угодно, но вот эта конструкция синтаксически правильна, компилируется и замечательно работает
читайте же доки OnClose :TCloseEvent; TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object; OF OBJECT! это переменная типа МЕТОД класса с указанными параметрами то что все указатели равны и позволяют жесткое кастование, не делает равными типы, которые вы кастуете в pointer путем добавления @
1
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
|
19.05.2017, 03:48 [ТС] | 37 |
Продолжим тему.
В многопоточном приложении, потоки создают на одной и той же форме компоненты (TImage). К примеру 10 потоков и каждый создаёт свой компонент. На все эти объекты назначается одна и та же процедура обработчика (OnClick). Можно ли при создании TImage, прикрутить ему собственный параметр? Чтоб в дальнейшем, при клике по TImage, в процедуре обработчика можно было узнать к примеру, идентификатор потока создавшего этот компонент.
0
|
19.05.2017, 09:00 | 38 | |||||
во-первых создание TImage в потоке бессмысленно и беспощадно. Вся работа с VCL и с экраном вообще должна проходить в главном потоке. Если вы используете Synchronize, то это собсно так и происходит. все создается в главном. Если нет, ждите глюков.
А в процедуре обработчика вам и так передают, какой объект этот обработчик вызвал. Это параметр Sender чтобы не нужно было добавлять TButton(Sender) везде, можно применить сильное колдунство:
компоненты должны ОТРАЖАТЬ данные, которые структурированно хранятся в вашей программе, а не хранить эти данные "на экране"
1
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 41
|
||||||||||||||||
19.05.2017, 11:39 [ТС] | 39 | |||||||||||||||
За место строкового
0
|
19.05.2017, 12:57 | 40 | ||||||||||
0
|
19.05.2017, 12:57 | |
19.05.2017, 12:57 | |
Помогаю со студенческими работами здесь
40
Несколько обработчиков событий Создание обработчиков событий Несколько обработчиков событий Удаление обработчиков событий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |