powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать правильнее?
4 сообщений из 4, страница 1 из 1
Как сделать правильнее?
    #32737417
Sas_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Прошу помощи, чтобы разобраться в следующем вопросе:
Имеется форма с Grid имеются кнопки "Новая" "Редактирование"
Grid построен на основе курсора с опцией readwrite, используется табличная буферизация
При нажатии кнопки "Новая" реализован следующий подход:
- активизируется форма с с несколькими textbox контролами у которых в качестве источника данных Controlsourse подключены соотвествующие поля курсора, причем свойство Value = имеет пустое значение
- производится контроль вводимых данных
- при нажатии кнопки "Записать" делаю append blank
- Tableupdate ()
- replace на введенные значения в исходной таблице
- гашу texbox
- активизирую Grid

Вопрос собственно в следующем, если делать append blank при нажатии кнопки "Новая", то Grid нормально отображает значения новой записи (если в данном случае пользователь нажмет кнопку "Отмена" пустая запись останется в курсоре, поэтому вариант не подходит), если делать добавление при нажатии кнопки "Записать" - меняет значения для текущей строки Grida

Как сделать правильнее, имея целью видеть добавленную запись в Grid, причем не засоряя курсор новыми записями, появившимися в случае кнопки "Отмена" пользователем - первый вариант или по второму варианту -втавка записи только, когда пользователь нажал кнопку "Записать" что в принципе на мой взгляд логичнее, только еще бы добавленную запись нормально в Gride отобразить
...
Рейтинг: 0 / 0
Как сделать правильнее?
    #32737454
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sas_NДоброго времени суток!
Прошу помощи, чтобы разобраться в следующем вопросе:
Имеется форма с Grid имеются кнопки "Новая" "Редактирование"
Grid построен на основе курсора с опцией readwrite, используется табличная буферизация
При нажатии кнопки "Новая" реализован следующий подход:
- активизируется форма с с несколькими textbox контролами у которых в качестве источника данных Controlsourse подключены соотвествующие поля курсора, причем свойство Value = имеет пустое значение
- производится контроль вводимых данных
- при нажатии кнопки "Записать" делаю append blank
- Tableupdate ()
- replace на введенные значения в исходной таблице
- гашу texbox
- активизирую Grid

Вопрос собственно в следующем, если делать append blank при нажатии кнопки "Новая", то Grid нормально отображает значения новой записи (если в данном случае пользователь нажмет кнопку "Отмена" пустая запись останется в курсоре, поэтому вариант не подходит), если делать добавление при нажатии кнопки "Записать" - меняет значения для текущей строки Grida

Как сделать правильнее, имея целью видеть добавленную запись в Grid, причем не засоряя курсор новыми записями, появившимися в случае кнопки "Отмена" пользователем - первый вариант или по второму варианту -втавка записи только, когда пользователь нажал кнопку "Записать" что в принципе на мой взгляд логичнее, только еще бы добавленную запись нормально в Gride отобразить

А зачем тебе использовать связи текст-боксов с курсором? Не проще ли сделать свободные текст-боксы. При нажатии кнопки "Записать" сделать что-то типа insert into ... (это, кстати, удобнее, чем делать append blank, а затем replace...) и перенести данные в таблицу/курсор. При нажатии же кнопки "Отмена" - не делать сохранения. При этом данные, введенные в текст-боксы, естественно, нигде не сохранятся и потеряются...
...
Рейтинг: 0 / 0
Как сделать правильнее?
    #32737492
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я использую следующий вариант: делаю одну форму, как уже было сказано, какбы со свободными контролами (тестовыми полями и пр.), в обработке события INIT прописываю параметр для передачи, например, tlEditFlag, который и передаю в форму при вызове режимов "Новая запись" и "Редактирование записи" - соотвественно .F. или .T.. Таким образом, я знаю, что я должен сделать в дальнейшем - толи append blank с последующием replace и tableupdate (insert into ...) для добавления новой записи или же просто replace (update ....) для режима редактировоания текущей записи - инифиализация соотвесвующих текстовых полей и пр. происходит соотвеснно в init в зависимости от tlEditFlag, значение этих же контролов и использую в replace (update)......Почему использую такой подход? - как правило, формы для редактирования (добавления новой записи) подразумевают редактирование (добавление) не конкретной записи из какой-дибо таблицы, а совокупности данных в разные таблицы, т.е. работы с конкретной сущностью проекта, документом......, а тут соотвеснно и отношения 1:M и доп. обработки данных на valid и пр....


С уважением
duШes
....return ThisForm.exGrid1.p_oColumns("COLUMN1").M_AddHeader("header4",4)
...
Рейтинг: 0 / 0
Как сделать правильнее?
    #32737753
Sas_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за советы
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать правильнее?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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