Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не работает пример / 12 сообщений из 12, страница 1 из 1
06.11.2008, 05:56
    #35636424
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
Есть форма, на ней грид, тип формы модальный, всё стандартно
Есть программа которая запускает эту форму...

set deleted on
set multilocks on
close databases all

local lcDBC
lcDBC = 'C:\FOX\VFP9\SAMPLES\NORTHWIND\NORTHWIND.DBC'
open database (lcDBC)
oMyCAD = createobject('CursorAdapter')
with oMyCAD
.Alias = 'Myalias'
.DataSourceType = 'Native'
.SelectCmd = 'select ADDRESS, CITY, COMPANYNAME, CONTACTNAME'
.CursorSchema = 'ADDRESS C(60), CITY C(15), COMPANYNAME C(40), CONTACTNAME C(30)'
.Tables = 'CUSTOMERS'
.keyFieldList = 'CUSTOMERID'
.UpdatableFieldList = 'ADDRESS, CITY, COMPANYNAME, CONTACTNAME'
.updateNameList = 'ADDRESS CUSTOMERS.ADDRESS, CITY CUSTOMERS.CITY, COMPANYNAME CUSTOMERS.COMPANYNAME, CONTACTNAME CUSTOMERS.CONTACTNAME'
.cursorfill(.t.)
endwith
DO form form4
Форма запускается и грид показывает записи....
Но если я этот код полностью(кроме последней строчки) переношу в Load этой формы....то грид остаётся пустым...почему?
Почему в статусной строке показывается время выбора записей, а в окне "DataSession" видна только таблица CUSTOMERS, а курсора нет
...
Рейтинг: 0 / 0
06.11.2008, 07:30
    #35636464
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
Переменная oMyCAD разрушается при завершении события load - соответственно
разрушается объект КА, т.е. срабатывает деструктор класса, который и
подчищает за собой весь "мусор", к которому относится, в том числе, связаный
курсор.

Вариант - создать у формы пропертю oMyCAD и обращаться к ней как
ThisForm.oMyCAD. ...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.11.2008, 07:50
    #35636474
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
Блин, спасибо, я объявил её в Public и всё заработало...
...
Рейтинг: 0 / 0
06.11.2008, 08:10
    #35636486
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
ННовичокБлин, спасибо, я объявил её в Public и всё заработало...
А вот это напрасно.. Лучше последуйте совету Рината.
С уважением, Алексей
...
Рейтинг: 0 / 0
06.11.2008, 09:11
    #35636533
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
почему?.. например :-)), если в unload после того как отработало можно поставить release oMyCAD..
...
Рейтинг: 0 / 0
06.11.2008, 09:22
    #35636548
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
ННовичокпочему?.. например :-)), если в unload после того как отработало можно поставить release oMyCAD..
Почему?!
Ну, например, вы захотите несколько форм таких заускать одновременно (DataSession = 2).
С уважением, Алексей.
...
Рейтинг: 0 / 0
06.11.2008, 09:24
    #35636550
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
А я что-то говорил про PUBLIC ???

Да, действительно, в этом случае область видимости переменной не ограничена
методом load формы.

Но во первых это дурной тон - гадить туда, где нет необходимости.

А во вторых представим себе ситуцию, что запускаем дважды эту форму. У
каждой свои условия для КАДа. Что в итоге получим???

Или в первом unload делаем release этой переменной и вторая форма теряет
свой источник ???


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.11.2008, 09:54
    #35636601
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
Понял, спасибо..:-)
...
Рейтинг: 0 / 0
06.11.2008, 11:19
    #35636902
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
авторБлин, спасибо, я объявил её в Public и всё заработало...

Вам необходимо добавить форме новое свойство, к примеру
oCadCUSTOMERS

в лоаде написать к примеру
this.oCadCUSTOMERS = createobject('CursorAdapter')

подъем курсорадаптера
createobject('CursorAdapter')
лучше вынести в метод кастом класса и в методе кастом класса поднимать кады и проверять
успешность и т.д. ...

в реальном проекте Вам необходимо пронаследовать базовый класс
и создать собственный визуальный класс и использовать уже только этот класс.
...
Рейтинг: 0 / 0
06.11.2008, 11:45
    #35637033
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
извините, но что то сленг не догоняю....а что такое "касты", и ещё вопрос конечно полемический насчёт классов...но так сложился стиль, что сдал задачу и забыл, могут позвонить и через год и через два, попросят добавить кнопку или ещё что..., но если класс вдруг изменён, если на него будут ссылаться другие проекты, то явно вероятность его изменения не равна нулю...и он потянет за собой цепочку ошибок, т.е. проект после сдачи закрывается наглухо, без всяких внешних ссылок на библиотеки...классы удобно наверное когда много программистов ведут одну задачу...а тут например поднять кад есть же и другте варианты...например в prg-шном файле(я и стараюсь выносить по возможности всё из формы, оставляя только наобходимое для интерфейса, ведь мемо поля scx этой формы, гораздо тяжелее востановить чем prg)...но конечно же класс можно писать и в prg файле, только это те же процедуры...а наследование, полиморфизм и т.д....я могу вызвать PRG-файлом...конечно же я буду делать так как предлагают многие через классы...но интуитивно как-то не проникся ещё...:-((...да отвлёкся..что такое "касты"
...
Рейтинг: 0 / 0
06.11.2008, 12:45
    #35637262
homik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
ННовичокно если класс вдруг изменён, если на него будут ссылаться другие проекты, то явно вероятность его изменения не равна нулю...и он потянет за собой цепочку ошибок

По этому поводу почитайте "Совершенный код" Макконела.

ННовичок...да отвлёкся..что такое "касты"
"кастом класс" - это класс, который Вы создатите на основе базового класса CUSTOM.
...
Рейтинг: 0 / 0
07.11.2008, 05:44
    #35638984
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает пример
Чего-то я не улавливаю связь между "Проект закрывается наглухо" и "Этот
класс может быть модифицированн".

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

В чем проблема?


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

ХМ В данном случае, наверное, лучше день потерять, потом за пять минут
долететь!


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не работает пример / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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