Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release формы / 25 сообщений из 44, страница 1 из 2
20.01.2010, 17:38
    #36421152
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release формы
День добрый!

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

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

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

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

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

Насчет Unload и Destroy - не понял. Что Вы хотите получить в результате? Надеюсь, Вы в курсе, что вернуть значение в переменную, по аналогии с DO FORM MyForm.scx TO MyVar если Вы используете CreateObject() - невозможно? При этой технологии используются другие приемы программирования.
...
Рейтинг: 0 / 0
21.01.2010, 09:21
    #36421956
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release формы
авторОднако можно написать приложение и без создания файлов 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
21.01.2010, 10:42
    #36422106
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release формы
ВладимирМ,

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

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

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

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

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

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

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

read events

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


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

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

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

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

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

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

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

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

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

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

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

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

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

CLEAR EVENTS
thisform.release

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
21.01.2010, 14:57
    #36423024
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release формы
бд и пример здесь, нужен 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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release формы / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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