powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Белые прямоугольники вместо Grid
25 сообщений из 43, страница 1 из 2
Белые прямоугольники вместо Grid
    #33275566
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леди и джентельмены!
Объясните мне, пожалуйста, в чем дело.
Имеются 4 немодальные формы с гридами ReadOnly=.t.
В Forma1 используются 3 таблицы, которые прописаны по отдельности источниками у гридов в 3 остальных формах. Я спокойно могу работать со всеми четырьмя открытыми формами. Но стоит мне закрыть Forma1, как в трех оставшихся вместо гридов остаются пунтые прямоугольники. Я уже прописала на GotFocus в каждой из этих форм grid.Refresh - не помогает. Как можно исправить положение?
Благодарю.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275597
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделать так, чтобы первая форма не закрыва/уничтожала те таблицы, которыми пользуются остальные формы.
Боле подробно можно ответить после получения информации о способе открытия/закрыти таблиц.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275632
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каждой форме DE. Все. По клике на кнопке срабатывает THISFORM.RELEASE() либо форма стандартно закрывается при нажатии на "красную кнопку" в углу окна.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275641
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лисонька, извини, но ты ответила не на тот вопрос, который я задал, а на совершенно другой. Я писАл про открытие/закрытие таблиц , а не форм . На эту тему надо внимательно изучить DE Forma1.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275658
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.Лисонька, извини, но ты ответила не на тот вопрос, который я задал, а на совершенно другой. Я писАл про открытие/закрытие таблиц , а не форм . На эту тему надо внимательно изучить DE Forma1.
Значит, моих знаний здесь недостаточно, я просто не знаю как ответить на поставленный вопрос. При создании формы в через конструктор нажимаю кнопку DE, там Add..., выбираю нужные мне таблицы или представления. Все, на этом мое участие закачивается. Попробовать проследить через Debugger, что где открывается/закрывается?
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275689
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DE не пользуюсь, но всетаки - посмотри свойство DE AutoCloseTables - по умолчанию оно .T., что значит закрывать таблицы при закрытие формы или формсета. Поставь его в .F.
А закрывать нужные таблицы ручками, по выходу из формы
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275724
Komissar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А DataSession у форм какая?
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33275974
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лисонька! Попробуйте в кажой из этих форм пставить DataSession Private. VFP будет создавать для каждой формы свою новую ДЕ. Проблема путсых grid должна решиться. Но такой шаг чреват пследствиями. Если в одной из форм вносятся в таблицу А новые записи, тогда в другой форме в этойже таблице А эти запписи наверняка окажутся не по order, а в конце грида. Да плюньте наконец на талицы, сделайте источником курсор. Судя по Вашему топику насчет алфавитного порядка к этому дело и идет
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33276745
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лисонька!
Попробуйте перед закрытием формы1 оключать recordsource Gridов,
а потом включать его снова.
Я использую такую методику:

1. Отключаю источник данных thisform._grid1.recordsource=''
2. Делаю выборку Select ..... into cursor XXX или SQLEXEC(.....)
3. Подключаю источник thisform._grid1.recordsource='XXX'

Если не сделать п.1, то получим белые прямоугольники.
Правда у меня не используется DE и выставлена приватная сессия данных.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33277023
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxLamer2Лисонька!
Попробуйте перед закрытием формы1 оключать recordsource Gridов,
а потом включать его снова.
Я использую такую методику:

1. Отключаю источник данных thisform._grid1.recordsource=''
2. Делаю выборку Select ..... into cursor XXX или SQLEXEC(.....)
3. Подключаю источник thisform._grid1.recordsource='XXX'

Если не сделать п.1, то получим белые прямоугольники.
Правда у меня не используется DE и выставлена приватная сессия данных.
Подход правильный, руками оно всегда надежнее, но... придется для всех колонок ControlSource восстанавливать. Что-то типа:
.Column1.ControlSource = "MyCursor.MyFiled1"
.Column2.ControlSource = "MyCursor.MyFiled2"
....
и так для всех столбцов

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

Если Вы работаете в Default DataSession (это настройка по умочанию) и оставлены опять же по умолчанию настройки DataEnvironment -

AutoOpen Tables = .T.
AutoClose Tables = .T.

То происходит примерно следующее:

В момент открытия формы DataEnvironent запоминает, какие именно таблицы он сам открыл из тех, что были включены внутрь DataEnvironent. В момент закрытия формы DataEnvironment закрывает все те формы, которые он сам же и открыл при открытии формы.

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

"Штатное" (наиболее распространенное) решение - это использовать для каждой формы Private DataSession.

Но тут есть ряд особенностей:

1. Часть настроек автоматически сбрасываются в значение по умолчанию при открытии Private DataSession. Список этих настроек можно посмотреть в описании к команде SET DataSession. Т.е. их нужно заново настраивать при открытии форм в Private DataSession

2. Изменения, сделанные в одной DataSession становяться "видны" в другой DataSession не сразу, а спустя некоторый интервал времени. По умолчанию - через 5 секунд.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33277357
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Aleksey-K
Подход правильный, руками оно всегда надежнее, но... придется для всех колонок ControlSource восстанавливать. Что-то типа:
.Column1.ControlSource = "MyCursor.MyFiled1"
.Column2.ControlSource = "MyCursor.MyFiled2"
....
и так для всех столбцов


Не обязательно, если в курсор выбирать только нужные поля в нужной последовательности...))
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33277653
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех, кто откликнулся!
Точно, в Private с добавлением новых записей ерунда получается.
Подключать вновь ControlSource попробую, но сейчас попытаюсь перевести все источники курсоры. Таблицы здесь на тысячу с небольшим записей, после добавления новой записи будет делаться заново выборка и обновление грида. Хотя... а наверно при этом тоже должен выходить пустой прямоугольник, ведь старый источник-курсор уничтожается... и все-таки указывать ControlSource опять...
Что ж, дети спят, впереди ночь - буду эксперементировать.
Еще раз огромное спасибо за советы!

З.Ы. А почему лучше не пользоваться DE, а открывать все строками кода?
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33277846
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А почему лучше не пользоваться DE, а открывать все строками кода?
Потомучто в этом случа можно полностью контролировать процесс открытия таблиц, их наличия на диске, наличие индексов и прочей фигни. Что через DE делается значительно сложнее или ваще не делается
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278228
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BurnПотомучто в этом случа можно полностью контролировать процесс открытия таблиц, их наличия на диске, наличие индексов и прочей фигни. Что через DE делается значительно сложнее или ваще не делается
Следует только иметь в виду, что для подавляющего большинства задача все это не требуется.

DE не используют либо полные ламеры, которые не знают, что такое вообще есть, либо сильно крутые профессионалы, которые предпочитают полную управляемость всеми процессами. Ну, и при определенных типах задача использование DE проблематично.

Т.е. использование DE в большинстве случаев вполне оправдано и целесообразно. Надо только понимать их ограничения.
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278299
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
замечание для локальных данных

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

я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)

и все, данные живут,
я не задумываюсь где их брать и как открывать
приучился писать без паков и запов и эксклюзива
для локальных данных стараюсь использовать только реляции
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278306
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
замечание для локальных данных

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

я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)

и все, данные живут,
я не задумываюсь где их брать и как открывать
приучился писать без паков и запов и эксклюзива
для локальных данных стараюсь использовать только реляции
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278373
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ! тогда скажите, а не прощ ли открыть единую для всех и вся DE в топ форме и не использовать ни каких DE в формах ин топ левел - все, что надо уже открыто? А для конкретных ситуаций использовать курсоры. :-)
Лажа или сойдет для проекта?
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278381
AKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100

я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)



когда у Вас слетят заголовки открытых таблиц, вы так не будете делать
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278383
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100я не понимаю вообще для чего люди
вообще передергивают открытые таблицы
(открывают, а затем закрывают таблицы)
Объясняю. Если объект не используется в данный момент - его логично закрыть. Накладные расходы на открытие/закрытие таблиц настолько ничтожны, что об этом можно вообще не думать

alex11100поработал в мск 3 мес в одной конторе
там постоянные use в коде
и понял, что так нельзя никогда писать !!!!
(голова кругом идет проверять открыта или нет таблица)
вспоминаю как страшный сон (еще в сети и паковали когда хотели)
я пишу на фоксе 11 лет, такого не видел и за это ...
извините потом холодным обливался, когда пак в сети писал
(мне странно когда люди не умеют работать при наличии удаленных записей)
тем более извините когда форма тащит данные,
ну это .... я не понимаю такой подход
Вы сделали неверный вывод на основании "криво" написанной программы. FoxPro очень снисходительно относиться к ошибкам программистов. Как следствие, огромное количество программ имеет настолько "кривой" код, что просто диву даешся, как это вообще работает.

alex11100я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)
А смысл. Это как раз совершенно бессмысленная растрата ресурсов.

alex11100и все, данные живут,
я не задумываюсь где их брать и как открывать
Уверяю Вас, при использовании DE все происходит абсолютно также. Не надо задумываться где брать и как открывать (при грамотной настройке, разумеется). DE сам все откроет и сам же закроет, когда надобность отпадет

alex11100приучился писать без паков и запов и эксклюзива
для локальных данных стараюсь использовать только реляции
А вот это уже чистое "извращение". Это значит, отказаться от memo-полей (они требуют PACK), отказаться от триггеров, от целой кучи команд, которые могут автоматически создавать записи. Т.е. Вы сознательно отбросили массу возможностей FoxPro.

Другое дело, что команды PACK не надо использовать непосредственно в рабчей проге. Это должно быть вынесено в отдельную служебную процедуру. Также как создание резервных копий, переиндексация, проверка целостностности базы данных
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278398
AKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О_В_ДНарод! тогда скажите, а не прощ ли открыть единую для всех и вся DE в топ форме и не использовать ни каких DE в формах ин топ левел - все, что надо уже открыто? А для конкретных ситуаций использовать курсоры. :-)
Лажа или сойдет для проекта?

я бы Вам посоветовал глянуть в сторону КС технологий...
сделали селект из таблицы.. и работайте себе с курсором.. и так далее...
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278443
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akiя бы Вам посоветовал глянуть в сторону КС технологий...
Пардон, КС - это клиент-сервер или что-то другое?
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278466
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ
DE не используют либо полные ламеры, которые не знают, что такое вообще есть, либо сильно крутые профессионалы, которые предпочитают полную управляемость всеми процессами. Ну, и при определенных типах задача использование DE проблематично.


DE не используют еще и те, кто не использует за основу в своих программах конструкцию DO FORM..
В форме, созданной на основе класса, DE просто нет.

Я, наверное, ламер, который знает, что есть DE, но не использую ее, так как мне больше нравится другая конструкция запуска формы:



Lparameters tcClass, tcClassLib, tcParamString

Local loForm

loForm = .NULL.

If EMPTY(tcParamString)
loForm = NEWOBJECT(tcClass,tcClassLib,'')
Else
loForm = NEWOBJECT(tcClass,tcClassLib, '', &tcParamString)
Endif

if vartype(loForm) == 'O'
loForm.Show
Endif
Else
Return loForm
EndIf
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278572
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вы ребят наверное для одного компа и одного стола и делаете
а если б для локальных сетевых задач -
то и писали б по другому
и придумали б чего

а так лано - юзайте

от того что юзер по сети отвалится от открытой таблицы
я за 10 лет ни разу не увидел разрушения
и ресурсов не перекушивает даже открывающийся в 500 метров табл

все выше сказанное для локальных данных !!!!
...
Рейтинг: 0 / 0
Белые прямоугольники вместо Grid
    #33278592
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вы ребят наверное для одного компа и одного стола и делаете
а если б для локальных сетевых задач -
то и писали б по другому
и придумали б чего

а так лано - юзайте

от того что юзер по сети отвалится от открытой таблицы
я за 10 лет ни разу не увидел разрушения
и ресурсов не перекушивает даже открывающийся в 500 метров табл

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


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