[РЕШЕНО]Base диалог Работа с элементом GridControl

Автор Ириминаге, 4 июля 2024, 16:33

0 Пользователи и 1 гость просматривают эту тему.

Ириминаге

Здравствуйте! Ай нид хелп! Есть форма в Base, с которой запускается диалог с вводом табличных данных. По завершении должна создаться таблица в базе.. или не создаться, если нажмут кнопку отмены. Так же возможно будет необходимо предусмотреть возможность коррекции введённых данных. Вопрос в том, как работать с элементом GridControl: добавлять ячейки и вносить в них данные. Почему нельзя в форме это сделать? Потому что на ней уже размещена другая таблица...
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

economist

В Форме может быть много GridControl, и Форм на Форме м.б. несколько (как слои в Фотошопе).

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

Но субформы - это другое, там задуманное  может не получиться. Хотя при правильной организации данных - должно.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ириминаге

Цитата: economist от  4 июля 2024, 17:31В Форме может быть много GridControl, и Форм на Форме м.б. несколько (как слои в Фотошопе).

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

Но субформы - это другое, там задуманное  может не получиться. Хотя при правильной организации данных - должно.

Так как работать с ним?
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

economist

Штатными методами, SQL, фильтрами и там где этого мало - макросами, привязанными к Событиям XGRID. См. Книжки и Документацию.

Помним что Форма и Эл-ты управления на ней могут быть связаны через SQL с разными, в т.ч. виртуальными таблицами. Для правки без макросов - все таблицы должны иметь Primary Key.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ириминаге

Цитата: economist от  5 июля 2024, 17:34Штатными методами, SQL, фильтрами и там где этого мало - макросами, привязанными к Событиям XGRID. См. Книжки и Документацию.

Помним что Форма и Эл-ты управления на ней могут быть связаны через SQL с разными, в т.ч. виртуальными таблицами. Для правки без макросов - все таблицы должны иметь Primary Key.

В том-то и дело, в книжках нет ничего. Есть только в вики. У Питоньяка только короткий абзац, что есть такой элемент и некоторые свойства. Курение интернета позволила понять одну штуку: в основе работы с ним используется базовая модель. Чтоб добавить в gridcontrol столбец или строку, их нужно сперва создать, но и это не явит нам их, потому как этим только открывается возможность работы с ними, чтоб они появились, надо их ещё и добавить. Мне кажется Питоньяк выпил весь коньяк. Зачем так всё организовывать?
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

Ириминаге

Экономист, спасибо за волшебный пендель! Помогает, как всегда) Решил плюнуть на диалог, а использовать субформу. Полагаю, придётся ещё помучиться с организацией работы форм, но свет в конце туннеля появился, спасибо!
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

Ириминаге

#6
В общем,ковырял-ковырял, да невыковырял... Выяснилось, что субформы мне не подходят, тем паче таблицы напрямую не связаны друг с другом. Xray подсказал как добавить ячейки.

DialogLibraries.LoadLibrary("Standard")
fForm = ThisComponent.Drawpage.Forms.getByName("FilMain") 'доступ к Форме
fDlg = CreateUnoDialog(DialogLibraries.Standard.FilKab) 'создание диалога
grid = fDlg.getcontrol("KabTab")
grid.model.GridDataModel.addrow(1, Array("test1","test2"))
fDlg.execute()

Тут в гридконтрол добавляются две ячейки. Сколько раз используешь эту строку, столько раз и добавляются. Казалось бы: "эврика!", но у столбцов имена выходят Cilumn1, Column2 и как их переименовать, подсказок нет. Как и методов CreateColumn, AddColumn. У кого-нибудь есть идеи, как всё провернуть?
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

economist

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ириминаге

Цитата: economist от 17 июля 2024, 16:40https://forumooo.ru/index.php?msg=70317
XRay, ваш комментарий и интернет дали такой результат:

DialogLibraries.LoadLibrary("Standard")
fForm = ThisComponent.Drawpage.Forms.getByName("FilMain") 'доступ к Форме
    fDlg = CreateUnoDialog(DialogLibraries.Standard.FilKab) 'создание диалога
    fGrid = fDlg.getcontrol("KabTab")

  fColumn1 = fGrid.model.ColumnModel.createcolumn()
      fColumn1.Title = "Номер"
    fColumn1.ColumnWidth = 120
    fColumn1.HorizontalAlign = 1
  fColumn2 = fGrid.model.ColumnModel.createcolumn()
      fColumn2.Title = "Название"
    fColumn2.ColumnWidth = 120
    fColumn2.HorizontalAlign = 0
 
      fGrid.model.ColumnModel.addColumn(fColumn1)
    fGrid.model.ColumnModel.addColumn(fColumn2)
   
  fGrid.model.GridDataModel.addrow(1, Array("test1","Test2"))

Очень помогла эта страничка:
https://python-ooo-dev-tools.readthedocs.io/en/latest/_modules/ooodev/dialog/dl_control/ctl_grid.html
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...