Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Уважаемые специалисты! Решил поиграться с CursorAdapter, создал на его основе класс. В методе Init формы пишу: o_Cursor = CreateObject("MyCursorAdapter") WITH o_Cursor .Alias = "AssortCurs" .SelectCmd = "Select * FROM Assort" o_Cursor.CursorFill ENDWITH This.Grid1.RecordSource = "AssortCurs" Грид выводится пустой. При замене последней строчки на: SELECT * From AssortCurs INTO CURSOR Curs1 This.Grid1.RecordSource = 'Curs1' всё работает. А как можно ли отобразить данные без этого промежуточного курсора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 11:23 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Добрый день! Код создания курсора-адаптера необходимо перенести в load формы после этого кода: select ('алиас курсора-адаптера') go top связывание с grid нужно оставить в init (или привязать визуально при создании grid на форме) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 16:28 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Может я неправильно создаю CursorAdapter? Перенёс его создание в Load, когда дохожу до Init курсора уже нету :(. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 17:08 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
В ВАШЕЙ ГОЛОВНОЙ ПРОГРАММЕ: PUBLIC O_CURSOR ИЛИ ДРУГИМ ДОСТУПНЫМ ВАМ СПОСОБОМ ОБЕСПЕЧИТЬ ОБЛАСТЬ ВИДИМОСТИ O_CURSOR В ПРЕДЕЛАХ НУЖНЫХ ВАМ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 08:09 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Public помог, извините, мог бы и сам дойти. Теперь работает даже без переноса создания курсора в Load. Только вот непонятно, почему он изчезает даже в пределах текущей формы :(. Ну да ладно, главное от дополнительного курсора избавился :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 08:27 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
В FoxPro если область видимости переменной не указана явно, то все новые переменные создаются с областью видимости PRIVATE (в командном окне - PUBLIC) Когда Вы написали строку o_Cursor = CreateObject("MyCursorAdapter") Вы создали переменную o_Cursor с областью видимости PRIVATE, которая и была благополучно удалена по окночании метода Init. Т.е. просто не осталось объекта CursorAdapter. Нет источника для Grid При работе с формами логичнее создавать не переменные, а свойства формы Работа с PUBLIC-переменными - требует повышенной бдительности от программиста. Если Вы начинающий, то ни в коем случае их НЕ ИСПОЛЬЗУЙТЕ. Получите кучу проблем, причем не зная из-за чего. Создать свойство формы можно в дезайнере через пункт Forms->Add Property или программно, через метод ThisForm.AddProperty() Например, Вы создали свойство ThisForm.CursorAdapter, тогда в методе Init так и пишите: Код: plaintext 1. 2. 3. 4. 5. 6. Правда, в последнем присовении (RecordSource) я не уверен. Надо поэкспериментировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 09:14 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
без переноса в load у Вас все работает ,так как Вы явно тут же связываете GRID и o_cursor если связывание выполнено в конструкторе формы, объявление o_cursor должно быть только в load. в общем случае все базы лучше открывать или ранее чем создается экземпляр класса для формы или в load этой формы.(init и activate не подходят для этого) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 09:21 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Замечательно, как раз то что надо. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 09:29 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
sar99в общем случае все базы лучше открывать или ранее чем создается экземпляр класса для формы или в load этой формы.(init и activate не подходят для этого) Проблема в том, что параметры переданные в форму попадают в нее в методе Init. Собственно, именно поэтому часть источников данных создается (модифицируется) именно в Init-формы. В зависимости от переданных параметров. Особой проблемы прицепить источник данных в Init-формы нет. Просто потребуется чуть больше кода. Хотя, конечно, при открытии таблиц в Load потребуется меньше кодить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 09:35 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Eще почему удобно в load: если в многопользовательской среде для формы открываем например 5 файлов и при открытии 4-го он занят то вариант инициализации формы очень удобен: contropen=0 wop1=createobject('wop') if contropen=0 wop1.show() else wop1.release endif в load организуем открытие и проверку(например вдруг тот же cursor_adapter почему-то сбой даст) в этом случае пользователю выдастся соответствующее сообщение contropen=1 (в load) - и форма даже не визуализируется!!! (при этом в unload организуется автоматическое закрытие файлов.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 11:04 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
Форму я открываю с параметрами, так что однозначно мне всё надо в Init делать. авторОсобой проблемы прицепить источник данных в Init-формы нет. Просто потребуется чуть больше кода. Хотя, конечно, при открытии таблиц в Load потребуется меньше кодить. Имеется в виду ThisForm.Grid1.RecordSource = '' Перед ThisForm.Grid1.RecordSource = 'AssortCurs'? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 11:11 |
|
||
|
CursorAdapter и Grid
|
|||
|---|---|---|---|
|
#18+
sar99в load организуем открытие и проверку(например вдруг тот же cursor_adapter почему-то сбой даст) в этом случае пользователю выдастся соответствующее сообщение contropen=1 (в load) - и форма даже не визуализируется!!! Надеюсь, Вы в курсе, что если дать команду RETURN .F. в методе LOAD-формы ИЛИ в методе INIT-формы, то процесс открытия формы будет прерван? Т.е. с точки зрения отказа в открытии формы эти 2 метода абсолютно равноправны. T0likФорму я открываю с параметрами, так что однозначно мне всё надо в Init делать. авторОсобой проблемы прицепить источник данных в Init-формы нет. Просто потребуется чуть больше кода. Хотя, конечно, при открытии таблиц в Load потребуется меньше кодить. Имеется в виду ThisForm.Grid1.RecordSource = '' Перед ThisForm.Grid1.RecordSource = 'AssortCurs'? Да. Для LOAD такой необходимости нет, поскольку Grid к этому моменту не инициализирован. А в INIT это необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 11:42 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32658097&tid=1595965]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 404ms |

| 0 / 0 |
