![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
![]()
Здравствуйте!
Есть кнопка A, по нажатию которой из процедуры A_OnPress нужно вызвать у поля для ввода B событие-процедуру установленное на OnChange - B_OnChange. Заковырка в том, что в обработчике B_OnChange используются Self,Sender, то есть нельзя просто вызвать процедуру B_OnChange из кода A_OnPress, нужно чтобы процедуру вызвал сам объект B! (как будто данные действительно изменились) Пробовал кучу разных вариантов - либо ничего не происходит, либо критическая ошибка. Можно конечно i:=B.Text,B.Clear,B.Text:=i - но это как-то тупо. Как же вызвать процедуру OnChange от имени того объекта без Change??? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
B_OnChange(B)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
![]()
Спасибо. То есть нужно обязательно точно указать "якобы отправлявшего запрос"? Просто процедура B_OnChange на самом деле универсальная и стоит на множестве объектов, поэтому гораздо лучше бы подошло нечто типа: Bx.OnChange(Self); - но такая строка при вызове из другой процедуры (A_OnPress) другого объекта (A) вызывает ошибку
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
В вашем случае Self - указатель на форму. А какой может быть более универсальный способ? Если в B_OnChange значение параметра Sender актуально, то надо и актуальное значение ему передавать. Если Sender в B_OnChange не используется - спокойно nil передавайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
![]()
Всё, заработало вот так TField(Sender).OnChange(Sender). Спасибо за наводку!
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
![]()
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
![]()
Там сложная связка, очень долго объяснять. Но в общем заработало как написано.
Спасибо! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C# Вызов метода без создания объекта. Предотвращение изменения фокуса. | Colder M | Помощь студентам | 3 | 03.05.2011 23:42 |
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene | DomKr@t | Мультимедиа в Delphi | 0 | 14.12.2008 01:52 |
Диассемблиравание для изменения строковых данных без знания ассемблера | GanGSISoft | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 8 | 06.10.2008 20:35 |
Как запустить на выполнение шаблон класса FTemplate? | unwanted | Общие вопросы Delphi | 3 | 14.08.2007 11:44 |
Как уменьшить картинку быстро но без изменения палитры | Joker_kpi | Общие вопросы Delphi | 2 | 04.06.2007 23:49 |