powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release формы
25 сообщений из 44, страница 1 из 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
25 сообщений из 44, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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