Обратиться к кантролу вызывающей формы. | |
---|---|
vodaic Автор Сообщений: 188 Откуда: Киев, Украина Дата регистрации: 24.02.2009 |
Есть экранная форма 1. Из нее вызывается форма2. Можно ли из кантрола формы 2 обратиться к кантролу формы 1, то есть, к кантролу вызывающей формы?
|
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Можно.
Теперь уточняющий вопрос: с какой целью, что в итоге хочется получить? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Передать через параметры, например, сам объект форма 1 в форму 2
Можно через Public-переменную, что считается не камильфо, можно через Private, через св-во _screen'a |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
На этом сайте есть статьи.
Люди писали, пытались помочь начинающим. Советую их прочесть. Там ОЧЕНЬ подробно разобран ваш случай. Делается все просто в коде вызывающего контрола do SomeForm with thisform В SomeForm свойство - LinkFrm = .null. В Init SomeForm
Далее в любом контроле SomeForm
Это принцип работы с объектами. При чем практически для все языков) ------------------ |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
+100500 А это то зачем? ((( ------------------ |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Те же яйца, но в профиль
|
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет, не те же. Даже совсем другие. И даже не яйца, а большая и волосатая Ж**А.
Автору вопроса. Не следует связывать формы на уровне контролов. Следует связать их на уровне собственно форм (т.е. передать из одной в другую, и запомнить в свойстве ссылку именно на форму). И следует сделать в форме свой метод (с параметрами, если надо данные передавать), который и вызывать из другой формы (или не формы - это уже не будет иметь значения) - а уже из этого метода и манипулировать визуальным объектом на ЭТОЙ же форме. P.S. Всё же более привычно писать в транскрипции control как кОнтрол, а не кАнтрол, несмотря на произношение близкое к безударному а, или даже к э ------------------ WBR, Igor |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
vodaic Автор Сообщений: 188 Откуда: Киев, Украина Дата регистрации: 24.02.2009 |
Трудно ответить на этот вопрос. Но я постараюсь. На форме есть 2 Command, каждый из которых выполняет свои функции. Возникла надобность, чтобы оба Command выполнялись последовательно друг за другом без вмешательства пользователя. Но в Command1 строится своя экранная форма и там выполняются действия. По выполнению этих действий желательно запустить Command2 начальной формы. Но для активной формы Command2 уже не является Thisform.Command2. Вот и спрашиваю, как же мне запустить Command2? |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
vodaic Автор Сообщений: 188 Откуда: Киев, Украина Дата регистрации: 24.02.2009 |
Спасибо за ссылку. Но по анонсам статей я не смог определить интересующую меня. Может Вы сможете написать мне ссылку на подобный моему случай? Заранее благодарен. |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
vodaic Автор Сообщений: 188 Откуда: Киев, Украина Дата регистрации: 24.02.2009 |
Спасибо за ответ. Но не смог полностью "въехать" в предлагаемый Вами механизм. А нет ли у Вас статьи на подобную тему? Или может быть есть фрагмент кода с подобными передачами параметров? Спасибо! |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Для начала убрать всю логику из Click кнопок (лучше вообще из форм). Потом смотреть ЧТО нужно для этой самой логики, и каким образом можно это что-то (данные из текстбокса, или из некоторой записи некоторой таблицы) передать в обрабатывающий код НЕ завязываясь на том что "они там в text1456 на frm9654 введены".
Формы могут вызвать такую логику, НЕ формы, а твой "автомат" может вызвать эту же логику - всё просто, прозрачно и очевидно. ------------------ WBR, Igor |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Добавьте в свою форму такой метод:
В кнопках в Click оставьте только вызовы типа: THISFORM.DoCommand('Command1') И морока с кнопками и контролами у вас навсегда пропадет. Для вызова методов первой формы из второй добавьте во вторую форму свойство вроде 'oParentForm'. В коде вызова второй формы из первой форму добавьте еще строку: loForm2.oParentForm = THISFORM И тогда из второй формы вызывайте нужный вам метод из первой формы: THISFORM.oParentForm.DoCommand('Command1') Примерно так. Исправлено 1 раз(а). Последнее : lulgu, 03.03.18 15:41 |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
А то что я привел в первом своем посте, чем то не устраивает? Или что то не поняли? Спрашивайте что не ясно))) Чем плох этот способ. Он предполагает жесткую связь, Т.е. вызывающая форма, знает о вызываемой, больше чем ей требуется. Не буду описывать порочность данного метода, легко нагуглить кучу рекомендация. Ясно что иногда приходится поступаться "принципами" Но в этом случае, у данного способа нет ни одного достоинства, по сравнению, с передачей параметра при вызове. ------------------ |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Опять вы со своим бла-бла без конкретики. Не нравится вам этот способ - так способов передавать параметры наберется десятка полтора, можете выбирать себе любой. |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Посмотрите что я предложил. 4й пост. Вы то же самое, но... Я и написал свое отношение. Впрочем, о чем я, и главное с кем. Послание было адресовано не вам. ------------------ |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Вот видите - оказывается, вы еще один способ в 4-м посту освоили, поэтому его и хвалите. |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Как уже писал Игорь, лучше вообще попробовать убрать всю логику с формы. Но коли в лоб, решать эту задачу. Делаешь Command2 невидимой. Еще лучше, вообще выкидываешь ее, и вместо нее, создаешь метод. Например Method2 далее примерно как писал выше. В Command1
MyParent
------------------ Исправлено 1 раз(а). Последнее : Аспид, 03.03.18 18:54 |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Вo вторую форму добавьте св-во ParentForm, и на Init-методе
lpara toForm this.ParentForm = m.toForm Зная 1-ю форму в любом месте (методе) 2-й формы можете обратится к любому объекту 1-й формы, например, thisform.Text1.Value = Thisform.ParentForm.grid1.Column1.text1.Value ... Thisform.ParentForm.grid1.Column1.text1.Value = thisform.Text1.Value |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Игорь, не пугай насмерть. 1. Не большая 2. Волосатая у животных (даже не у всех пород обезьян), но они не программисты. Исправлено 2 раз(а). Последнее : Ydin, 05.03.18 03:07 |
Re: Обратиться к кантролу вызывающей формы. | |
---|---|
vodaic Автор Сообщений: 188 Откуда: Киев, Украина Дата регистрации: 24.02.2009 |
Уважаемые товарищи!
Большое спасибо всем отозвавшимся! С вашей помощью получил то, чего хотел. |
© 2000-2024 Fox Club  |