powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release формы
44 сообщений из 44, показаны все 2 страниц
Release формы
    #36421152
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Вот слепил класс в дизайнере наследующий класс form. Так и не понял как можно в project manager
добавить форму являющуюся объектом класса производного от form.... создаю такую форму вызовом
createobject(....), в дизайнере класса леплю кнопку с командой thisform.release, ну а Unload и Destroy
формы так и не наступают....

Всем читающим: мож кто подскажет
...
Рейтинг: 0 / 0
Release формы
    #36421447
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать файл SCX на базе собственного класса можно указав в настройках:

Tools \ Options \ закладка Forms \ группа объектов "Template classes" \ поставить птичку рядом с "Form" и в появившемся окне указать собственный класс.

После этого при создании новой формы (файла SCX) она будет создана на базе указанного класса.

Однако можно написать приложение и без создания файлов SCX. Используя только CreateObject() или NewObject(). Это просто другой стиль написания приложения. Вопрос личных предпочтений.

Насчет Unload и Destroy - не понял. Что Вы хотите получить в результате? Надеюсь, Вы в курсе, что вернуть значение в переменную, по аналогии с DO FORM MyForm.scx TO MyVar если Вы используете CreateObject() - невозможно? При этой технологии используются другие приемы программирования.
...
Рейтинг: 0 / 0
Release формы
    #36421956
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОднако можно написать приложение и без создания файлов SCX. Используя только CreateObject() или NewObject(). Это просто другой стиль написания приложения. Вопрос личных предпочтений.

это не вопрос личных предпочтений,
а приученность работать в "старой манере".

создание scx влечет:
1. невозможность дальнейшего наследования,
огромное количество форм в больших проектах
и как следствие - трудносопровожаемость,
невозможность быстрой доработки
2. избыточность в виде доп.объектов - ДЕ формы,
абсолютно ненужного при определенных приемах ООП
и использовании абстрактных классов для работы с таблицами
3. невозможность обыграть поведение (загрузку) ,
как следствие некоторые проблемы в виде разрушений
4. невозможность "нормального" масштабирования приложений
и вызова форм в сложных проектах, состоящих из множества
приложений (необходимость создания процедур-оберток)
6. scx-форма - это хлам, который перекочевал
из ранних версий в старшую

автор ну а Unload и Destroy
формы так и не наступают....
приведите пример, демонстрирующий проблему,
возможно не убивается какая-то циклическая ссылка
на какой-то объект

как работать с класс-формами и создавать
некоторые абстрактные загрузчики класс-форм
(для того чтобы не писать в коде createObject)
можно посмотреть здесь:
http://www.sql.ru/forum/actualthread.aspx?tid=618865&hl=%ea%eb%e0%f1%f1%fb
...
Рейтинг: 0 / 0
Release формы
    #36422106
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

obj=createobject('myform',....)

в дизайнере классов, в классе myform наследуюсь от form и вешаю кнопку в обработчике click которой
CLEAR EVENTS
thisform.release

запускаюсь, при нажатиии кнопки форма не уничтожается...
...
Рейтинг: 0 / 0
Release формы
    #36422180
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 _usa__83_

сделайте минимальный проект, включите в него свою библиотеку и другте модуле,
упакуйте и положите сюда

в миним. варианте у вас должно быть в проекте
- библиотека: класс формы, класс наследник от нее
- какой то главный модуль, стартующий все это дело
в виде

Код: plaintext
1.
2.
3.
4.
5.
set classlib to ...

* код создание объекта

read events

у формы у вас кнока,
в которой нужен только код
Код: plaintext
1.
release thisform


clear events
нужно написать в деструктор самого класса
(в реальных приложениях такого не пишут, т.к. приложение не состоит из одной формы)

я Вам указал ссылку, там имеются примеры,
Вы посмотрели?
...
Рейтинг: 0 / 0
Release формы
    #36422401
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоэто не вопрос личных предпочтений,
а приученность работать в "старой манере".
А разве это не есть "личные предпочтения"?

прошелмимосоздание scx влечет:
1. невозможность дальнейшего наследования,
огромное количество форм в больших проектах
и как следствие - трудносопровожаемость,
невозможность быстрой доработки
Напрямую наследование невозможно. Это да. Но немного поработав, сделать наследника можно.

Только, когда выдвигают подобный аргумент, как-то упускают из вида, что создание наследника от законченной формы (пусть и в виде класса) - исключительно редкая задача. Более того, даже в виде класса - это тоже очень трудоемкая и невозможная в быстрой доработке.

прошелмимо2. избыточность в виде доп.объектов - ДЕ формы,
абсолютно ненужного при определенных приемах ООП
и использовании абстрактных классов для работы с таблицами
Это действительно так.

Только когда выдвигают этот аргумент скромно умалчивают о том факте, что для класса приходится писать некий самописный аналог DE-формы. Плюс дополнительный код по привязке ControlSource-объектов к полям таблицы.

прошелмимо3. невозможность обыграть поведение (загрузку) ,
как следствие некоторые проблемы в виде разрушений
Почему же. Очень даже возможно. Стандартное ветвление кода в Init-формы. А проблемы с разуршением возможны и при использовании классов.

прошелмимо4. невозможность "нормального" масштабирования приложений
и вызова форм в сложных проектах, состоящих из множества
приложений (необходимость создания процедур-оберток)
Не аргумент. При использовании классов процедура-обертка также необходима для запуска из внешних APP/EXE.

прошелмимо6. scx-форма - это хлам, который перекочевал
из ранних версий в старшую
Сама терминология и аргументация уже говорит исключительно о личном отношении. "В своем глазу бревна не замечаешь"
...
Рейтинг: 0 / 0
Release формы
    #36422410
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ,

Код: plaintext
Сама терминология и аргументация уже говорит исключительно о личном отношении. "В своем глазу бревна не замечаешь" 
,

не пойти-бы на фоксклаб Вам, сударь?
...
Рейтинг: 0 / 0
Release формы
    #36422414
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_ВладимирМ,

obj=createobject('myform',....)

в дизайнере классов, в классе myform наследуюсь от form и вешаю кнопку в обработчике click которой

CLEAR EVENTS
thisform.release

запускаюсь, при нажатиии кнопки форма не уничтожается...
Вообще-то, так не делают. Т.е. команда CLEAR EVENTS не дается при закрытии формы, а выносится во вне.

А где Вы даете команду READ EVENTS? Надеюсь, не в методах самой формы? Это как раз и может вызвать подобный эффект.
...
Рейтинг: 0 / 0
Release формы
    #36422419
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 _usa__83_

смотрите пример, котрый я указал и пробуйте
каким-то образом понимать некоторые механизмы,
приведенные там, понимать некий абстрактный подход.

для оказания Вам конкретного совета по Вашим проблемам
необходим от Вас какой-то пример, который можно будет
отсюда взять и воспроизвести(посмотреть) у нас.
...
Рейтинг: 0 / 0
Release формы
    #36422498
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ , прошелмимо

Прошу прощения за оффтоп. Но касательно Вашего спора.
У меня в проекте, порядка 70 формсетов, в каждем формсете в среднем 4-6 форм, все данные получаются из веб-сервиса(тоже
написанного на фокспро). Привязку данных к елементам управления на форме произвожу кодом. Хотел-бы попробовать
задействовать DE, но не совсем понимаю как это можно сделать. Это первый вопрос, и второй прошелмимоscx-форма -
это хлам, который перекочевал
из ранних версий в старшую а что использовать вместо визуальных форм?

З.Ы. Не холивара ради, хочу понять как можно более эффективно использовать VFP9.

З.Ы.Ы Если нужно, давайте перейдем в новую тему. И я могу сделать пример проектов для показа как
делаю сейчас и выслушать критику и предложения по улучшению.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36422533
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе холивара ради, хочу понять как можно более эффективно использовать VFP9.

смотрите пример построения фрейма,
подход данный не терпит использование scx-форм,
это ООП, поэтому приходится некоторым образом
делить и оперировать с объемами различных сущностей.

автора что использовать вместо визуальных форм?
визуальные класс-формы:
- универсальные построители-видоизменители в случае возможности такового;
- либо разработка "влоб" визуальных класс-форм в случае невозможности динамики
(либо трудозатратности, либо ....)

scx подходит для каких-то не сложных (не объемных) проектов,
иначе - это обширное количество файлов с трудным(затратным) сопровождением,
+ проблемы в сложных(разбитых по архитектуре) проектах,
когда ко всем прелестям возникают проблемы со сборкой проектов.
...
Рейтинг: 0 / 0
Release формы
    #36422535
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
прошелмимоscx-форма -
это хлам, который перекочевал
из ранних версий в старшую а что использовать вместо визуальных форм?

В данном случае спор ведется не об использовании форм как таковых, а о способе создания экземпляра формы в рабочем приложении. Это можно сделать двумя способами:

1. Создать файл SCX и запускать его на исполнение DO FORM MyForm.scx
2. Создать класс на базе класса Form и запускать его на исполнение CreateObject('MyClass')

С точки зрения пользователя результат будет одинаковый. Пользователь увидит форму. Вопрос именно в способе создания этой формы "внутри" FoxPro.

Лично я считаю, что оба способа равнозначны. Что больше нравится и удобнее в данном конкретном случае, то и следует использовать.
...
Рейтинг: 0 / 0
Release формы
    #36422549
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторС точки зрения пользователя результат будет одинаковый.

Мужчина, Вы меня все больше удивляете.

А с точки зрения разработчика, который стремиться к минимизации
трудозатрат?
...
Рейтинг: 0 / 0
Release формы
    #36422556
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоавторС точки зрения пользователя результат будет одинаковый.

Мужчина, Вы меня все больше удивляете.

А с точки зрения разработчика, который стремиться к минимизации
трудозатрат?
Это зависит от самого разработчика. Язык программирования и используемые инструменты - не при чем.

FoxPro - это инструмент, который требует повышенной самодисциплины от разработчика. Если был "бардак" на стадии планирования, то получишь "бардак" на этапе разработки. И уж какими технологиями при этом пользоваться совершенно не важно. Просто FoxPro не "бьет по рукам" сразу.
...
Рейтинг: 0 / 0
Release формы
    #36422559
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос

Возможно, Вам имеет смысл посмотреть вот этот цикл статей (там все по русски, несмотря на английские заголовки)

Статьи о некоторых аспектах применения технологии MS VFP (Visual FoxPro).
...
Рейтинг: 0 / 0
Release формы
    #36422600
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМпрошелмимоавторС точки зрения пользователя результат будет одинаковый.

Мужчина, Вы меня все больше удивляете.

А с точки зрения разработчика, который стремиться к минимизации
трудозатрат?
Это зависит от самого разработчика. Язык программирования и используемые инструменты - не при чем.

FoxPro - это инструмент, который требует повышенной самодисциплины от разработчика. Если был "бардак" на стадии планирования, то получишь "бардак" на этапе разработки. И уж какими технологиями при этом пользоваться совершенно не важно. Просто FoxPro не "бьет по рукам" сразу.

Мужчина, Вы написали "словесный понос".

Итак, когда разработчик видит способы снижения трудозатрат,
он выбирает такие способы. А то, что для пользователь не видит
разницы на экране - это как раз будет результат, получаемый меньшми
трудозатратами.

А дисциплина и "бардак" это уже из другой "песни о главном".
...
Рейтинг: 0 / 0
Release формы
    #36422619
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мужчина, Вы меня вновь удивили.

При суждении о трудозатратах при разработке ПО,
реплика:
авторЯзык программирования и используемые инструменты - не при чем.
очень смелая.
...
Рейтинг: 0 / 0
Release формы
    #36422621
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: прошелмимо
> смотрите пример построения фрейма,

Не понял какой пример смотреть


> визуальные класс-формы:
> - универсальные построители-видоизменители в случае возможности такового;
> - либо разработка "влоб" визуальных класс-форм в случае невозможности динамики
> (либо трудозатратности, либо ....)

Но это получается мы "зашиваем" весь специфический функционал в класс. Но использовать можем только для какого-то
узкоспециализированного места, ради которого и создавался класс. Я правильно понимаю?
И если да, то в чем выгода от класса. Разве что на его основе создать форму и включить в проект уже саму форму и что-то
в ней доизменить.

> scx подходит для каких-то не сложных (не объемных) проектов,
> иначе - это обширное количество файлов с трудным(затратным) сопровождением,
> + проблемы в сложных(разбитых по архитектуре) проектах,
> когда ко всем прелестям возникают проблемы со сборкой проектов.

с другой стороны если в какой-то форме нужно что-то доделать, я отдал форму коллеге, он сделал и я просто скопировал от
него измененную форму, если эта форма была с библиотеке классов, то это уже вызывает затруднения в случае изменения
другого класса из этой библиотеки. Если каждый класс в отдельном файле, то чем ситуация отличается от варианта с
формами?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36422622
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тобишь рассуждая о ...,
ну Вы меня поняли.
...
Рейтинг: 0 / 0
Release формы
    #36422661
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Игорь Горбонос ,
давайте вначале пример посмотрите,
не хочу я писать километры,
нет никакого желания + Мужчина утомит
("слышит звон, но не знает где он")

вот здесь, во 2-м и 3-м топике
http://sql.ru/forum/actualthread.aspx?tid=726331
лежит финал некоторого фрейма,
который как раз и показывает
каким образом сократить трудозатраты
при разработке проекта, рез-том выполнения
которого будет множество каких-то подобных экранных форм

вывод о возможности применения данного подхода(приема разработки)
при реализации поставленных перед Вами задач Вы сделаете самостоятельно
...
Рейтинг: 0 / 0
Release формы
    #36422704
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо это получается мы "зашиваем" весь специфический функционал в класс.

мы "зашиваем" в класс все общее для группы однотипных объектов,
которые затем будем создавать используя класс.

далее мы видоизменяем у такого класса то, что необходимо для каждого объекта
(набор данных, отображаемых контролов, логику выполнения и т.д.)

наивысшим пилотажем будет вариант использования
для такого видоизменния каких-то предзаготовленных настроечных сущностей,
создание этих настроек посредством абстрактных визуальных билдеров,
передача данных "преднастроек" классу, разбор и видоизменение класса
уже именно этими "преднастройками"
...
Рейтинг: 0 / 0
Release формы
    #36422886
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: ВладимирМ
> Статьи о некоторых аспектах применения технологии MS VFP (Visual FoxPro).

С этих статей и началось моё знакомство с веб-сервисами только в них не описывается использование DE. Поэтому у меня
привязка контролов происходит в коде программы, как показано в статье, а я хотел-бы попробовать задействовать DE, если
это возможно, но не знаю как. Например у меня процедуры на сервере могут возвращать как курсор в XML, так и просто
число, сигнализирующее об ошибке. Как обойти этот момент я не знаю, т.к. прописав вызов функций изменения данных прямо в
CursorAdapter у меня нет возможности контролировать получаемое значение, что бы как то влиять на поведение
CursorAdapterа в случае получения не XML с курсором, а числа, сигнализирующего об ошибке. Можно изменить поведение
процедуры на сервере, что бы всегда возвращать XML с курсором, но тогда не понятно как возвращать ошибку обработки на
клиента.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36422972
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
но тогда не понятно как возвращать ошибку обработки на 
клиента. 

непонятно какой у Вас сервер,
если это MySql, то я ничем не помогу

относительно Ms Sql я приводил пример обработки
ошибки сгенерированной raiserror в ХП и полученной КАД
...
Рейтинг: 0 / 0
Release формы
    #36423002
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: прошелмимо
> относительно Ms Sql я приводил пример обработки
> ошибки сгенерированной raiserror в ХП и полученной КАД

Сервер MS SQL 2000, а ссылкой не поделишся?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36423024
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бд и пример здесь, нужен 2005 сервер
http://sql.ru/forum/actualthread.aspx?tid=726131&hl=2005

сервер возьми отсюда
http://www.microsoft.com/downloads/details.aspx?familyid=220549b5-0b07-4448-8848-dcc397514b41&displaylang=en

смотри на триггер
DocState_delete

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if exists (select * from deleted A where isnull(stateId, 0 )= 4 )
	begin
		declare @cMessage varchar( 100 )
		set @cMessage= char( 13 )+'Невозможно удалить документ!'+
					   char( 13 )+'Документу присвоен статус <заблокирован>!'
		raiserror( @cMessage,  16 ,  1 )
		return
	end

на клиенте увидишь обработку ошибки,
код ошибки и т.д. сможешь также передать доп параметром raiserror,
и разрулить на клиенте каким-то своим хитрым способом,
все зависит от фантазии.
...
Рейтинг: 0 / 0
Release формы
    #36423246
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимотобишь рассуждая о ...,
ну Вы меня поняли.
Да. Причем давно. Сценарий наших дискуссий всегда один и тот же. Такой же, как в данном случае:

- Вы высказали свои аргументы
- я высказал аргументированное сомнение в справедливости Ваших слов
- Вы перешли на личности...

Т.е. доказательствами Вы себя не утруждаете. С Вашей точки зрения "Существует два мнения: одно мое, другое - неправильное"

Ну, а заставляет меня вмешиваться именно безапеляционность и бездоказательность Ваших высказываний...

Цель моего вмешательства в дискуссии с Вашим участием - это показать то, что, как минимум, приводимые Вами аргументы не абсолютны и вызывают обоснованные сомнения. Не есть "истина в последней инстанции". Показать не Вам (Вы любые аргументы просто игнорируете). Показать участникам дискуссии.
...
Рейтинг: 0 / 0
Release формы
    #36423251
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: прошелмимо

У тебя пример двухзвенки, в которой получить это не представляет проблем, у меня трехзвенка, и получить эту информацию
от SQL-сервера я тоже могу и получаю и дальше формирую строку с признаком ошибки и отдаю на клиента, где проверяю
полученную строку на признак ошибки и если нахожу, вытаскиваю само сообщение для показа пользователю. Но клиент общается
с серверной частью при помощи SOAP, я не знаю какую структуру данных формировать в случае ошибки, что-бы она "пролезла"
через SOAP и на клиенте её можно было обработать нативными средствами, как это делается в моем веб-сервере и в твоем
примере при прямом общении с SQL-сервером.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36423285
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТ.е. доказательствами Вы себя не утруждаете.

Мужчина, мне нах не нужно что-то лично Вам доказывать,
идите на фоксклаб и там доказывайте.
...
Рейтинг: 0 / 0
Release формы
    #36423319
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ , прошелмимо

Вы оба классные специалисты. Читать Ваши ответы одно удовольствие. Вести дисскусию - ещё большее удовольствие. Но у Вас
различаются подходы к ответам.
Вы, ВладимирМ , даёте маленькую теоретическую вводную, с помощью которой, спрашивающий сам выбирает как ему
поступить в его случае. Что очень способствует пониманию того, как можно решать возникшие проблемы. Перейдя в VFP от
VB6, C++Builder, мне очень не хватало таких маленьких лекций и я их и сейчас внимательно читаю. Спасибо!
Вы, прошелмимо , даете пример и говорите делай как я. Что в итоге способствует решению вопроса, НО для
извлечения дополнительных бонусов, нужно иметь зачастую более высокую подготовку, чем имеет спрашивающий. Я кстати,
внимательно изучал некоторые Ваши примеры, когда начинал писать на VFP и перенимал опыт как правильно писать. Спасибо!
Я считаю что Вы, дополняете друг, друга. Так дополняйте, а не пикетируйтесь. От этого выиграют все.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36423322
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Игорь Горбонос

авторя не знаю какую структуру данных формировать в случае ошибки

относительно строк все просто: анализировать по началу строки XML это или нет

если отработало нормально, то
отдаем строку: <?xml version ....
иначе(ошибка): EROR ..., ну или как-нить придумать

относительно:
автор Но клиент общается
с серверной частью при помощи SOAP, я не знаю какую структуру данных формировать в случае ошибки
это вопрос не ко мне, я с этим добром не работал
в сило того что нет необходимости.

относительно примера, то он демонстрирует
явный выигрышь и простоту абстрактной настройки некоторых
задуманных сущностей и механизм взаимодействия
настроек-абстрактных механизмов работы с данными-рисования интерфейса.
далее уже Ваше желание понять эти преимущества и каким-то образом
задуматься о необходимости использования такого способа разработки.
...
Рейтинг: 0 / 0
Release формы
    #36423337
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПоказать не Вам (Вы любые аргументы просто игнорируете). Показать участникам дискуссии.

Мужчина, уже есть прогресс.


авторЭто да.

2 года назад Вы писали только главы словесного поноса.

Возможно через пару лет мы договоримся.
...
Рейтинг: 0 / 0
Release формы
    #36423868
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоавторТ.е. доказательствами Вы себя не утруждаете.
Мужчина, мне нах не нужно что-то лично Вам доказывать,
идите на фоксклаб и там доказывайте.
При чем тут я? Я же прошу доказательств для тех, кому Вы что-то объясняете. Если Вы думаете, что Ваши оскорбления и хамство - это доказательства, то Вы очень сильно заблуждаетесь.

прошелмимо
авторЭто да
2 года назад Вы писали только главы словесного поноса.

Возможно через пару лет мы договоримся.
Как обычно, Вы читаете слова, а не текст. Если бы Вы прочитали следующее за вырванной фразой предложение, то увидели бы, что моя позиция не изменилась. Просто я делаю скидку на Ваше хамство и нетерпимость к чужому мнению. Пишу в доступной для Вас форме
...
Рейтинг: 0 / 0
Release формы
    #36423870
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
ВладимирМ , прошелмимо
Я считаю что Вы, дополняете друг, друга. Так дополняйте, а не пикетируйтесь. От этого выиграют все.

Так я тоже именно так и считаю. Я просто показываю, что есть и другие способы решений. Ничем не хуже предложенных им. Только он почему-то крайне нервно реагирует на ЛЮБОЕ сомнение в правильности его слов. Сразу начинает хамить. Видимо, это какие-то проблемы сугубо личного характера у прошелмимо .
...
Рейтинг: 0 / 0
Release формы
    #36423931
ВладимирМпрошелмимоавторТ.е. доказательствами Вы себя не утруждаете.
Мужчина, мне нах не нужно что-то лично Вам доказывать,
идите на фоксклаб и там доказывайте.
При чем тут я? Я же прошу доказательств для тех, кому Вы что-то объясняете. Если Вы думаете, что Ваши оскорбления и хамство - это доказательства, то Вы очень сильно заблуждаетесь.

прошелмимо
авторЭто да
2 года назад Вы писали только главы словесного поноса.

Возможно через пару лет мы договоримся.
Как обычно, Вы читаете слова, а не текст. Если бы Вы прочитали следующее за вырванной фразой предложение, то увидели бы, что моя позиция не изменилась. Просто я делаю скидку на Ваше хамство и нетерпимость к чужому мнению. Пишу в доступной для Вас форме

так и я Вам парирую в доступной форме.
в данном обсуждении мы выяснили, что Вам более интересно рассматривать
стратегию разработки с позиции пользователя.
О снижении трудозатрат Вы не задумываетесь.
Вы первый враг фокспро, о чем я неоднократно заявлял,
и попробую об этом позднее разъяснить
для разработчиков старше ясельной группы детсада.
...
Рейтинг: 0 / 0
Release формы
    #36424364
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_
Совсем вас забросили с перепалками :-)
Я сделал так:
в классе формы
в QueryUnload прописал Return .T.
в классе кнопок, для выхода с формы
IF thisform.QueryUnload()
_screen.ActiveForm.release()
ENDIF
Если при закрытии формы необходимо выполнить какой либо код, то его можно записать в
в QueryUnload формы, будь то сохранение данных или еще что.
Теперь при закрытии формы кнопкой или крестиком - у вас всегда будет отрабатывать нужный код.
...
Рейтинг: 0 / 0
Release формы
    #36424510
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoshaS,

авторСовсем вас забросили с перепалками :-)

ждемс очередного высеперла от Кулинара,
затем повеселимся вновь,
посетители фоксклаба - молчат,
верной дорогой идете, товарищи:
двое - в драке, третий цветочки собирает


покритикую ниваабидуканечно, может натолкнет на мысль
(не из-за злобы и выпендрежа, а на воблаго)
авторв QueryUnload прописал Return .T.
в классе кнопок, для выхода с формы
IF thisform.QueryUnload()
_screen.ActiveForm.release()
ENDIF

оригинально,
только этот метод совсем не для этого предназначен,
он предназначен для предотвращения выгрузки формы
посредством проверки каких-то условий
и в случае необходимости отмены этой выгрузки.

закрытие формы посредством скрина еще более оригинальное решение
именно для вызова непосредственно из кнопки самой формы,
так как форма находится через ссылку thisform.

согласен с теоретиком-кулинаром,
о том, что фокспро - это средство-мазохист,
которое удивляет своей устойчивостью к любым извращениям
...
Рейтинг: 0 / 0
Release формы
    #36424630
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот мой вариант.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
IF thisform.QueryUnload()
	IF TYPE("THISFORM.Parent") = "O"
		THISFORMSET.Release
	ELSE
		THISFORM.Release
	ENDIF
ENDIF 
Предложите свой. Критиковать легче простого.
...
Рейтинг: 0 / 0
Release формы
    #36424750
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoshaSВот мой вариант.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
IF thisform.QueryUnload()
	IF TYPE("THISFORM.Parent") = "O"
		THISFORMSET.Release
	ELSE
		THISFORM.Release
	ENDIF
ENDIF 
Предложите свой. Критиковать легче простого.

мои варианты Вы можете посмотреть в примере, указанном по ссылке

QueryUnload:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with this
	if !this.lInit and !.lPushExit
		local llEnabledSaveCmd, llEnabledExitCmd
		if pemstatus(thisform, "CmdSave",  5 ) 
	   		llEnabledSaveCmd = (.CmdSave.Visible and .CmdSave.Enabled)
		   	if llEnabledSaveCmd
		   		if !.checkSave()
			   		.lLock_msg_save = .f.
			   		nodefault 
					return
				else
					.lLock_msg_save = .t.
				endif			
			endif	
		endif
		if pemstatus(thisform, "CmdExit",  5 ) 
			llEnabledSaveCmd = (.CmdExit.Visible and .CmdExit.Enabled)
			if llEnabledExitCmd
				.CmdExit.Click()
			endif
		endif
	endif
endwith

ну и код класса-кнопочки закрывалочки
Код: plaintext
1.
2.
3.
4.
5.
6.
with thisform
	if PemStatus(thisform,"checkSave", 5 ) and .checkSave()
		.lPushExit = .t.
	EndIf
	.Release()
endwith

но это уже сложнее и предназначено не только для закрытия формы,
а для осуществления ряда дополнительных проверок на:
- наличие потроганности и несохраненности данных
- обработки различных "желаний"
- ну и т.д.

В классическом варианте:
THISFORM.Release() должна подавать откуда угодно, но не из QueryUnload.
QueryUnload сработает и по нажатию на крестик в заголовке.
Этот метод как раз и стартует перед анлоадом формы,
т.е. тем методом который инициализируется THISFORM.Release().

в QueryUnload посредством команды NODEFAULT
как раз отменять выгрузку формы в случае необходимости таковой
(недать потерять потроганные и не сохраненные данные или еще что-либо)
...
Рейтинг: 0 / 0
Release формы
    #36424803
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного подправлюсь:

QueryUnload сработает при нажатии на крестик закрытия формочки
перед методом Destroy, а затем уже метод Unload
...
Рейтинг: 0 / 0
Release формы
    #36424870
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я не так выразился.
QueryUnload в классе формы стоит по умолчанию
Код: plaintext
 return .T. 
- это для тех форм, где не надо ни каких проверок, отчетные и пр. Если все-же проверки нужны, то пишется что-то подобное
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
LOCAL l_release
l_release=MESSAGEBOX('Сохранить изменения?',  3 + 512 + 0 , '/К. Прутков/ - Бди!')
DO CASE 
	CASE  l_release= 6 
		IF thisform.custom_check1.data_update('t_predpr')= 1 
			RETURN .T.
		ENDIF
	CASE  l_release= 7 
		TABLEREVERT(.T., 't_predpr')
		RETURN .T.
	CASE l_release=	 2 
		NODEFAULT 
		RETURN .F.
ENDCASE 
А в классе кнопки на клик сейчас прописал/подправил вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
IF thisform.QueryUnload()
	IF TYPE("THISFORM.Parent") = "O"
		THISFORMSET.Release
	ELSE
		THISFORM.Release
	ENDIF
ENDIF
Т.е. у вас идет обращение к .checkSave() из QueryUnload и кнопки, у меня вызов процедуры сохранения таблицы прописан в одном месте: QueryUnload и он вызывается либо при нажании кнопки закрытия или на крестике формы.
Вот и все различия.
Ни о каком вызове уничтожения формы из QueryUnload - речи не идет.
...
Рейтинг: 0 / 0
Release формы
    #36425006
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНи о каком вызове уничтожения формы из QueryUnload - речи не идет.

тогда мир - дружба -жевачка.

но топикпастеру пока не до методов QueryUnload
там решение пока необходимо намного проще
в виде простого релиза самой формы
из объекта самой формы.
...
Рейтинг: 0 / 0
Release формы
    #36426458
Игорь Горбонос

З.Ы. Не холивара ради, хочу понять как можно более эффективно использовать VFP9.

З.Ы.Ы Если нужно, давайте перейдем в новую тему. И я могу сделать пример проектов для показа как
делаю сейчас и выслушать критику и предложения по улучшению.



2 Игорь Горбонос,
пожалуйста создайте свой топик,
там если возможно какой-то пример с инструкциями,
возможно мы совместно создадим какие-то абстрактные механизмы
применительно к таким задачам,
иначе Ваш опыт также будет всем полезен.
...
Рейтинг: 0 / 0
Release формы
    #36428309
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: прошелмимо_

Хорошо, я подготовлю тестовый проект и создам тему

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Release формы
    #36431034
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://forum.foxclub.ru/read.php?29,424083

топикпастера попросите сюда

дело в том, что грид имеет особенность привязываться
к любой текущей области, если у него пустые ссылки на источник.
инит контролов грида, затем самого грида проходит
раньше инита формы, поэтому происходит привязка контролов
не к тем источникам и полям,
соответственно контролам выставляется ридонли.

топикпастеру в рекордсоурсы необходимо написать
.null., либо правильно прописать рекордсоурсы,
а еще лучше обратить внимание на абстрактный механизм
настройки атрибутов колонок грида,
продемонстрированный ранее,
это избавит от анализа подобных ошибок,
сократит трудозатраты.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]