Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Здесь решение, а не вопрос. Вдруг кому-то пригодится.
Итак, вызов функции (prg), выше кот. стоит With Something Надо определить объект, заданный с помощью With. И форму этого объекта Цитата: Исправлено 2 раз(а). Последнее : Ydin, 03.09.22 20:45 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Не совсем понял назначение этого кода.
Когда мне нужно было одновременно и использовать WITH, и где-то внутри WITH иметь ссылку на WITH-объект, я сначала получал ссылку на объект, а потом использовал её в WITH. И никакая функция для этого не нужна. Или я чего-то не понял?
Вторую функцию можно упростить и не привязываться к уровню вложенности объекта:
Исправлено 2 раз(а). Последнее : akvvohinc, 04.09.22 01:32 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Это реальная ситуация, с кот. столкнулся пару дней назад.
Мне нужно было на смене строки грида обращаться к объектам формы Фреймворка. Смена строки в этой форме - событие. И вызывается в разных местах, тоже событиях. При этом код этих событий везде обрамляется With/Endwith, но с разными объектами этой формы. Мне важно определить сам объект форму. У нас все формы в Фрейворке, программисты вообще не используют Modi Form, т.к. все программирование происходит в Рантайме. |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Ну, вот как я понимаю эту проблему: Где-то в коде формы стояло
Внутри WITH понадобилось получить ссылку на WITH-объект (например, для передачи объекта в какую-то функцию или для получения ссылки на его родительскую форму). Есть по крайней мере 3 способа как этого достичь: 1) вы добавляете строку с вызовом вашей функции
2) просто повторить внутри WITH ссылку на объект, заданную в WITH (функция не требуется)
3) сначала присвоить ссылку на WITH-объект переменной, а затем просто ею пользоваться (функция не требуется)
Третий вариант (наиболее предпочтительный, на мой взгляд) отличается от второго только тем, что в нём не приходится дублировать ссылку на WITH-объект, которая может быть достаточно длинной, - она пишется только 1 раз. Поэтому я и спросил, почему вы выбрали 1-й вариант с вызовом UDF - наиболее сложный из этих трёх и требующий написания функции? Что же касается функции определения ссылки на родительскую форму некоторого объекта, то она вообще никак не связана с WITH - она работает для любого переданного объекта, каким бы способом он не был определён. |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Нет, не понадобилось получить ссылку на WITH-объект. Это по-детски, у нас программисты работают больше 20 лет с моим Framework'ом. А я лет 30 Там куски программы, где они знают и объект и форму. Все они знают. У них есть "Thisform" и есть "This" моими средствами!! Только одна из стандартных форм - работа с первичными документами не очень стандартная. Она работает через Pageframe с разными формами и ее объектами. А вот тут и понадобилось это... Akvvohinc, я тут на Форуме самый старый, мне 73 года. В сентябре 1988 года Ashton-Tate подала в суд иск о нарушении её авторских прав на язык dBase в продуктах Fox Software. Я из того времени, чуть раньше. Мне приятно, что Вы предлагаете решения. И так жалко, что я это уже знал... Но мне трогательно, и большое спасибо! Я очень рад, что Вы любите VFP! Исправлено 2 раз(а). Последнее : Ydin, 04.09.22 16:48 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Я может там не совсем прав!
Исправлено 5 раз(а). Последнее : Ydin, 04.09.22 20:27 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я помоложе, но тоже из того времени - начал работать с FoxBase в 1989. Цитата:В общем случае объект не обязан находиться на форме, ссылку на которую можно получить по Thisform. Исправлено 1 раз(а). Последнее : akvvohinc, 04.09.22 20:32 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
В том и дело, что нет там Thisform!Нет THIS!
Это код, кот. выполняется по Execscript или как .fxp файл. Не в самом методе Исправлено 2 раз(а). Последнее : Ydin, 04.09.22 22:15 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Ну, и отлично - код, который я приводил выше, из этого и исходит. |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Если учесть, что я могу только, условно говоря, писать prg, не трогая исходники Framework (это exe-файл), то ...
Одна команда всего! Исправлено 1 раз(а). Последнее : Ydin, 05.09.22 10:41 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
У тех, кому, как написано в первом сообщении, это может пригодиться, вашего фреймворка нет, а следовательно, нет и таких ограничений - поэтому они могут достичь той же цели проще. |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Какой цели? В этой ветке, вообще, цели нет... Так, пообщаться... В курилке ремонт |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я понял, что цель есть:
|
Re: Определить объект и его форму (Thisform) под With | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
"" Мне важно определить сам объект форму.
№ синтаксических понятия вспоvgнил - This, ThisForm, WITH обьект ... что еще забыл... > Надо определить объект, заданный с помощью With. И форму этого объекта К сожалению, указатель из верхушки стека (WITH обьект ...ENDWITH) разрабы фокса не сделали возможности считать |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
* Ссылка на объект, заданный WITH EVALUATE('.Parent.' + .NAME) Исправлено 3 раз(а). Последнее : Ydin, 10.09.22 03:02 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Потому что в нём обычно нет необходимости. А если такая необходимость появилась, то ничто не мешает сначала сохранить ссылку на объект в переменной, а потом написать эту переменную в WITH:
Исправлено 1 раз(а). Последнее : akvvohinc, 10.09.22 00:53 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
"Parent"-обьект может отсутствовать принципиально, и часто отсутствует. Это CREATEOBJECT("Empty"), или SCATTER NAME переменная-обьект Да, в переменную можно записать [копию] указателя Пива, давно, такой пример привел, в котором и переменной нет с обьектом, чтобы с ней обратиться в какую-то функцию. В фоксе не хватает (забыли скорее всего) оператора "точка", например, было бы GETPEM(. , свойство):
Исправлено 1 раз(а). Последнее : of63, 10.09.22 18:50 |
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
|
Re: Определить объект и его форму (Thisform) под With | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
.objects(1) - на что указывает? в обьекте "Empty" ?
|
Re: Определить объект и его форму (Thisform) под With | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Для Empty - не пиши. Можешь проверить на класс или еще на что-то
Писал для адекватных, но ты проверь на всяк Исправлено 1 раз(а). Последнее : Ydin, 13.09.22 21:29 |
© 2000-2024 Fox Club  |