Delphi создать форму пользователя - PullRequest
0 голосов
/ 02 мая 2018

Я делаю пользовательскую форму в Delphi для приложения отслеживания документов. Меня интересуют функции ввод новой записи (записи) и просмотр списка по ... (дата, название документа, идентификатор, ...) .

Моя проблема в том, что я не знаю, как реализовать эти функции для более чем одного пользователя. В настоящее время у меня 5 пользователей. Каждый пользователь имеет уникальные поля ввода данных (записи) (столбцы) и поля просмотра (столбцы) каждого пользователя также являются уникальными. Там может быть больше пользователей.

Итак, как реализовать эти функции для этой формы? Как назначить разные данные (поля) для каждого отдельного пользователя для ввода и просмотра? Вот чего я не понимаю. Это распределенная функциональность приложения? Если да, то как этого добиться?

Обратите внимание, что я не хочу статического назначения пользователя в коде приложения, например:

if(username='user1') then {
input();
view();
}
else if (username='user2') then {...}
...

потому что каждый раз, когда появляется новый пользователь, разработчик должен вернуться к коду приложения и жестко его закодировать. Это неэффективно и является плохой реализацией. Скорее, я хочу, чтобы это было динамично (если это правильный термин). Как этого добиться?

Примечание: Я использую dbExpress с СУБД MySQL с RAD Studio XE7 Architect .

1 Ответ

0 голосов
/ 02 мая 2018

Если я правильно понимаю, что вы спрашиваете, кажется, что вы не знакомы с идеей таблиц / наборов данных, которые работают в так называемых отношениях Master-Detail. Их очень легко настроить в Delphi.

Как только вы познакомитесь с отношениями M-> D, я думаю, вы поймете, что вам следовало бы спросить о том, как настроить его в вашем приложении, а не о проблеме жесткого кодирования отдельных пользователей в Ваша форма.

В вашем случае в данный момент вам не хватает таблицы данных пользователей. Давайте назовем это таблицей Users. Обычно это будет содержать их имя, очевидно, и какой-то уникальный идентификатор (лучше всего это «Первичный ключ» в таблице базы данных пользователей), но НЕ , пожалуйста, их пароль для доступа к БД, особенно нет в текстовом формате.

После создания таблицы «Пользователи» вы можете создать сетку отображения (TDBGrid) и форму ввода / редактирования для нее.

Тогда, если у вас его еще нет, вы можете настроить сетку и форму редактирования для документов пользователей (которую я буду называть таблицей Документы).

Как только это будет сделано, главное, что осталось сделать, - установить в вашем проекте Delphi отношение Master-Detail между вашей таблицей Users (главной) и вашей таблицей Documents (подробной информацией).

Если вы предпочитаете, чтобы у вас была одна форма с двумя сетками, сеткой «Пользователи» и сеткой «Документы», и при прокрутке сетки «Пользователи» вы увидите, что сетка «Документы» показывает только записи их документов.

Подробная информация о том, как настроить Master-Detail, может несколько отличаться в зависимости от типа используемой таблицы / набора данных, поэтому вам нужно искать в Интернете подробности того, как это сделать. В общих чертах, это вопрос подключения TDataSource к вашей таблице Users и установки свойства DataSource (или MasterSource) вашей таблицы Documents, чтобы он указывал на TDataSource Users, а затем установки нескольких других, зависящих от типа таблицы свойств Documents. таблица.

Каждая редакция Delphi задолго до D7 поставлялась с демонстрационным приложением «MastApp», которое иллюстрирует, как вы используете отношения Master-Detail между несколькими таблицами. Я предлагаю вам взглянуть на MastApp для вашей версии Delphi, а затем изучить, как установить отношения M-> D для типа набора данных Delphi, который вы фактически используете.

...