Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Есть форма (forma2), для редактирование и добавления записей, в методе Load хочу прописать такой код
Вот код в методе Load (это просто пример)
Вопрос: правильно ли я делаю, и как закрыть форму из метода LOAD, то есть прекратить выполнения и запуск формы? |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Taran Сообщений: 13623 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Return false
Про load не помню, а в init работает. |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Переменные, упомянутые в Load (T_edit, T_forma_menu_ok), не будут видны в Init и в других методах. Надо создавать свойства формы и в них хранить эти детали работы формы.
|
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Странная конструкция. Для решения какой задачи выбран такой способ? Почему все это делается в Load?
------------------ Лень - это неосознанная мудрость. |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Извиняюсь, не весь код написал. Там еще должна быть пара SQL запросов, которые отображаются в Grid на форме. Вот чтоб не прописывать в ручную колонки Grid я и решил использовать Load (и теперь мучаюсь, тому и решил спросить совета у Гуру) Раньше этот код выполнялся до вызова формы, но это очень неудобно, так как форма вызывается из разных мест, и при малейшем изменении приходилось исправлять код в разных местах. А на счет переменных, я в курсе, они создаются перед вызовом формы, форма МОДАЛЬНАЯ Исправлено 2 раз(а). Последнее : ZenTigra, 16.10.17 10:22 |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
PaulWist Сообщений: 14614 Дата регистрации: 01.04.2004 |
У меня сделано так: 1. В Init формы редактирования передаётся параметр первичного ключа (справочника, документа итп). 2. Если PK is null, то делается вывод, что запись новая и надо провести insert 3. Если PK is not null, то запись (на момент вызова существувовала) и по значению PK заполняется форма редактирования. 4. те для ввода и редактирования используется ОДНА форма. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
еще помнить что то что передаем в форму - получаем в ней только в Init, в Load эти параметры еще не получены .. ну это так, на всяк случай )))
Мне удобно было в Load запросить необходимые мелкие доп.справочники (если нужно), и в нем же добавить курсорадаптер с параметризированным основным запросом (чего отображать будем) и с установленным сво-вом .... .NoData = .T. .FetchSize = -1 .... а затем в ините уже получив сии параметры просто делал .CursorRefresh() - и вся недолга ))) грид созданный/раскрашенный в дизайне не разрушается и данные в нем в соотвествии с полученными в инит параматрами Исправлено 2 раз(а). Последнее : AndyNigmatec, 16.10.17 11:08 |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет, рано ещё тебе заниматься "писать по новому"... Абсолютно не понимаешь ключевых концепций... 1) НЕ НАДО использовать для передачи информации PUBLIC или PRIVATE переменные. Ни как "входные", ни как "выходные" параметры. А по другому в Load ничего не передать -> всё что связано с общением формы со внешним миром (приём параметров из точки вызова) следует делать в Init, а не в Load. 2) НЕ НАДО работать напрямую с таблицей, даже буферизованой. Тем более не надо задавать ей режим буферизации в коде Load. 3) Ещё раз - НЕ НАДО использовать Private переменную для общения между формами. Хороший шаблон - создать объект с нужными свойствами (в т.ч. тем который отвечает за T_forma_menu_ok - хотя это неинтуитивное, а значит плохое название для переменной/свойства), передать его в дочернюю форму (да, в её init - там запомнить в свойстве этой дочерней формы, и по надобности обращаться к свойствам этого объекта-параметра, в т.ч. менять их). Если дочерняя форма модальная, то после DO FORM в принципе можно из этого объекта взять все те данные которые эта дочерняя форма там наизменяла. 4) Как по мне так интерфейс когда для создания чего либо открывается сначала форма выбора чего-то иного, и лишь затем, после выбора этого чего-то открывается форма создания того что мне надо было - ущербный и неинтуитивный. Переведя на "прикладной" язык - если пользователь решил ввести новый заказ, нажал кнопку "Создать заказ", и вместо формы заказа перед ним появляется, к примеру, форма выбора клиента, потом ещё появляется форма выбора товара, и лишь затем, если в первых двух всё было выбрано "как надо" появляется собственно сама форма ввода заказа - это плохо. Кстати, такой подход диктует работу со справочниками в виде "полного списка" - т.е. вместо того чтобы в собственно форме ввода заказа ввести первых 3-4 символа названия клиента, и получить в качестве "списка для выбора" весьма небольшое подмножество справочника, мы открываем форму со 100500 записями, и потом бодро занимаемся Пока что очень многое - совершенно неправильно. RETURN .F. Точно так же можно "отменить показ формы" и из init - где, собственно говоря, и должен быть помещён код "взаимодействия с вызывающей формой". ------------------ WBR, Igor |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Добавлю на всякий случай - есть ещё параметр BindControls который тоже вполне себе позволяет "отложить" создание/открытие курсоров-источников данных до Init или даже ещё позже, не вызывая "разрушений" контролов (прежде всего Grid). Это неплохо работает и совместно с указанной техникой - создания NoDataOnLoad курсора (хоть адаптером, хоть по старому - представлением) и его последующим перезапросом - когда будут "прояснены" все требуемые для такого перезапроса параметры. ------------------ WBR, Igor |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
А Вас не затруднить показать как правильно, хотя бы привести простой примерчик, или ткнуть носом.... |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Попробуйте человеческим языком описать что вы хотите сделать.
Может нарисовать картинки. А далее воспользуйтесь языком VFP. Попробуйте не писать на VFP, а использовать его. (Путано сказал?) Еще совет. Наберите несколько однотипных проблем, и попробуйте их решить одинаково. Появится некая абстракция данного решения. Показывать код, просто нет смысла. Тогда вам придется переключиться на "мышление" автора кода. Вот Паша описал, типичный подход к редактированию. Без единой строки кода. Пока не сможете человечески описать, рано прогаммировать. ------------------ |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Правильно - через курсорадаптер. И ещё более правильно - НЕ используя dbf в качестве конечного хранилища информации (но тут уж сложно бывает убедить клиента что сами данные гораздо важнее примитивности и мега-дешевизны "решения на dbf-ах". Впрочем, бывает и так что данные имеют минимальную ценность - типа слетело всё к едрене-фене, ну и ладно, новые навводим ). ------------------ WBR, Igor |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Посмотрите, при большом количестве форм может удобнее такие процедурки-обертки выбора или вызова выносить в отдельный глобальный объект класса CUSTOM, или добавлять этот объект на форму, или собирать процедурки в главном процедурном файле .prg., а формах оставлять только работу с данными. Тогда они будут доступны отовсюду, и из колонок Grid. Вообще-то, способов возвращения значений наверное наберется с добрый десяток. Также возможно, что в коде DO FORM можно заменить на MESSAGEBOX(). Код вызова модальной формы практичнее писать полностью: LOCAL loName, luRetVal DO FORM FormName NAME loName LINKED WITH lcParameterList TO luRetVal Исправлено 1 раз(а). Последнее : lulgu, 16.10.17 21:56 |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
И что там есть такого страшного в этих PRIVATE-переменных? |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Grin Сообщений: 1083 Откуда: Kiev Дата регистрации: 05.12.2000 |
Например попробуй создать переменную с именем аналогичным имени поля. И поиграйся как будет себя вести твоя форма. Если писать аккуратно (использовать нотацию, добавлять "m."), то паблик\приват переменные не будут мешать. Со временем обрастешь переменными так, что сам будешь путаться какая переменная для каких целей создана. Рано или поздно наступишь на грабли, когда программа из одноименного поля и переменной будет брать не то чего ты ожидаешь. Где-то на форуме были очень хорошие статьи Володи Максимова (если не изменяет склероз), поищи их, потрать пару часов на их разбор, там очень много полезной информации, обойдешь много "граблей". Учись на чужом опыте. |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Освойте нотацию, упорядочьте имена, не обрастайте - глядишь, и наберетесь своего опыта. |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Grin Сообщений: 1083 Откуда: Kiev Дата регистрации: 05.12.2000 |
Дружище, не надо дерзить, у тебя есть рецепт успеха - пользуйся им. Никто здесь тебя ни к чему не принуждает. Никто тебе ничего не обязан. Считаешь свой подход более правильным\оптимальным - на здоровье. У каждого свой путь, тебе показывают всего-лишь другие, возможно более оптимальные направления. Выбор всегда за тобой. |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Ну и лозунги у вас - прям красота! Бывшего парторга видно сразу. По делу можете хоть что-то сказать? |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Grin Сообщений: 1083 Откуда: Kiev Дата регистрации: 05.12.2000 |
Мил человек, я в садик ходил во времена парторгов. Нравиться тебе юзать переменные - да на здоровье, этого никто тебе не запрещает. Не вижу смысла что-либо далее обсуждать. Каждый кузнец своего пи....ца. |
Re: Переучиваюсь писать по новому или помогите разобраться с CURSORSETPROP и Load | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Grin
Не стоит обращать на роботов внимания) Лучше вообще не общаться. Он провоцирует... Кто то его уже разоблачил (Леонид?). Это "исследователь" реакций) ------------------ |
© 2000-2024 Fox Club  |