Delphi создать форму пользователя

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

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

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

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

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

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

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

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

MartynA 02.05.2018 11:16

@MartynA, не могли бы вы показать конкретный образец кода или дать ссылку на него? Я действительно не знаю, как это сделать.

user300048 02.05.2018 11:19

Здесь, на SO, есть десятки примеров Delphi. Попробуйте поискать их.

MartynA 02.05.2018 11:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
270
1

Ответы 1

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

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

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

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

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

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

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

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

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

Другие вопросы по теме