powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Связать класс и форму TForm
39 сообщений из 39, показаны все 2 страниц
Связать класс и форму TForm
    #39532711
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

Какие есть решения для MVC в делфи?
Есть класс
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  TDocument = class
  private
    FDatabase: TDatabase;
    FDataset: TDataSet;
    FId: Integer;
    FLastDate: TDateTime;
    FLastUser: String;
    FIdAuthor: Integer;
    FIdReciever: Integer;
    FIdTypeDocument: Integer;
    FDateCreated: TDate;
    FLinkDocument: TDocument;
    FLinkType: String;
    FTitle: String;
    FNumber: String;
    FAuthor: TEmployee;
    FReceiver: TEmployee;
    FText: String;


и есть форма для отображения/редактирования данных. Как правильно связать этот класс, заполнить поля в форме данными из класса и потом после редактирования их передать для сохранения? Сохраняет класс в БД данные.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532713
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinКак правильно связать этот класс, заполнить поля в форме данными из класса...
Правильно ручками. Или, например, назвать компоненты по полям класса+приставка и написать процедуру заполнения.
Если класс от TComponet, то перебираем все публикуемые поля и для каждого ищем компонент на форме для заполнения
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532714
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
ручками это типа ReadDocument и там
edtNumber.TExt:= FDocument.Number;
edtDateDoc.Value:= FDocument.DateDoc...

И на кнопке Save - SaveDocument, где делать обратное и вызывать FDocument.Save?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532717
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinИ на кнопке Save - SaveDocument, где делать обратное и вызывать FDocument.Save?

Да. Надеюсь, ты не боишься стереть пальцы до основания, набирая десять строк примитивного
кода?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532721
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы хоть расскажите человеку про DB-aware и LiveBinding-и.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532722
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

пользовался этим столько лет. На каждую форму положить dbaware - компонент или в дб=модуле запихнуть их 100?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532733
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinГаджимурадов Рустам,

пользовался этим столько лет. На каждую форму положить dbaware - компонент или в дб=модуле запихнуть их 100?

Для начала попытаться выяснить, что есть "dbaware - компонент" в данном контексте?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532736
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чччД,

TDataset, TDbEdit, TDataSource
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532747
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin> На каждую форму положить dbaware - компонент или в дб=модуле запихнуть их 100?

Это зависит от архитектуры программы и её модулей и подхода разработчика к ним.
Можно на каждую форму, можно на датамодуль, датамодулей может быть несколько,
в т.ч. на каждую форму по одному. И т.д.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532772
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть отличный подход: не усложняй простое решение без необходимости.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532800
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать интерфейсы
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532802
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ziv-2014,

можно подробнее?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532809
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinziv-2014,

можно подробнее?
Реализовываете интерфейс для сохранения в базу + используете атрибуты и rtti.
Реализовываете интерфейс для отображения на форме.
Конкретная реализация зависит от вкуса.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532835
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014,

Только сказал "не усложняй без нужды" и вот...
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532849
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014> используете атрибуты и rtti.

Ну, интерфейсы при наличии готового класса ещё ладно.
Но что такое в данном контексте "атрибуты" и зачем rtti?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532857
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот нафига в Delphi эта MVC? Неужели действительно собираемся оперативно тасовать компоненты (MVC)?

Ну, ради чего периодически кто-то пытается натянуть старую сову на глобус?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532882
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что умеют, то и пытаются натянуть.
В конце концов, MVC это стильно,
модно и молодежно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532885
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кое где тем временем до сих пор работают программы написанные на коболе :) Ох уж мне все эти новомодные технологии :))
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532948
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

а вы попробуйте Django на питоне. Удобно и "стильно"
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39532987
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНу, интерфейсы при наличии готового класса ещё ладно.
Но что такое в данном контексте "атрибуты" и зачем rtti?

Атрибуты нужны для того, чтобы указать какие поля связывать и сохранять.
Rtti - нужен для того, чтобы сделать все автоматом.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533015
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinГаджимурадов Рустам,

а вы попробуйте Django на питоне. Удобно и "стильно"

Ну ты разберись, какие инструменты в Delphi имеются, как люди работают, а не лезь буром.
MVC реализовать совсем несложно, только ты не знаешь самых основ, судя по твоим сообщениям.

Ну а ты попробуй на питоне кодить "в стиле Delphi". И на каком-нибудь форуме питоноидов рассказывай, что у них не так для быстрой и удобной работы.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533022
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014> Атрибуты нужны для

Я не спрашивал, для чего они нужны.
Я спрашивал, что под ними подразумевается.
Если затрудняешься объяснить - можно привести пример.

Что "rtti нужен для того, чтобы сделать все автоматом" и
ежу понятно, но непонятно как он поможет с БЛОБами, с
любым нестандартным выводом даже integer и string-полей.
Или надо будет "эти 10 полей автоматом, эти 5 полей вручную,
а здесь рыбу заворачивали" ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533045
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЧто "rtti нужен для того, чтобы сделать все автоматом" и
ежу понятно, но непонятно как он поможет с БЛОБами, с
любым нестандартным выводом даже integer и string-полей.
Или надо будет "эти 10 полей автоматом, эти 5 полей вручную,
а здесь рыбу заворачивали" ?

А чтобы справиться с БЛОБАМИ и любыми нестандартными типами,
тута тебе в помощь атрибуты с необходимыми обработчиками для
не стандартных типов.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533097
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЯ не спрашивал, для чего они нужны.
Я спрашивал, что под ними подразумевается.
Если затрудняешься объяснить - можно привести пример.Так именно аттрибуты и подразумеваются. Смотри любой ОРМ для делфи
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533188
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinTDbEditесли юзать что-то вроде dblayoutview/dbcardview (от девэксов) то от россыпи подобных индивидуальных под каждое поле контролов возможно будет практически полностью отказаться
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533272
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinTDataset, TDbEdit, TDataSource

TDataSource на той-же форме, что и TDataset, или той, что содержит TDbEdit?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39533683
Уважаемый автор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не использую DB-Aware компоненты, использую обычные контролы, заполнение и сохранение все через select, update, insert.
Зато все контролируемо и гибко!
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39535150
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Много мнений, есть интересные идеи (rtti, автогенерация форм и т.д).
Ранее была программа для медицины. Вот проблемы почему написал пост. В случае использования DBAware (TDbEdit, TDataSource, TDataset) использовал модуль данных для сеток, справочников. Редактирование записи в форме со своим датасетом в каждой форме. Нужно редактировать данные пациента - весь набор данных с селектом и апдейтом в компоненте на форме редакторе пациента.
Справочники и выбор данных из справочников в отдельном модуле с передачей только датасета, всё остально ренерится автоматом вплоть до редактора справочника. Уникальные формы - да, ручные с одним датасетом, как выше писал.
Вот где самое интересное. Начинаем управлять назначениями на пациентов, есть сущность - пациент, его назначения. Назначения можно продлить, прекратить приём, переназначить и т.д. В каком месте это обрабатывать? В форме назначения или всё-таки писать класс для реализации, который вызовет хранимку в бд?
Один из вариантов это невизуальный класс, который возвращает датасет для грида и действительно всё обрабатывает по данным. И тогда в форме лишь вызываешь функции обработки.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39535637
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinВ форме назначения или всё-таки писать класс для реализации, который вызовет хранимку в бд?

Это путь к размазыванию логики между сервером и клиентом. Чем больше будет размазано, тем сложнее будет сопровождать.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39535663
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакое MVC не поможет плохому дизайну ПО. Я не говорю, что он у вас такой. Просто для информации. Стоит вначале хорошо продумать общий программный дизайн. А уже как его реализовать - используя MVC, или просто на уровне батонокидательства - дело не столь важное.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39535693
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonНикакое MVC не поможет плохому дизайну ПО...
"Да, но зато ты умрешь уставшим" -©.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39535717
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДmakhaonНикакое MVC не поможет плохому дизайну ПО...
"Да, но зато ты умрешь уставшим" -©.Ахаха. В точку.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536295
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stanilar,

и как тогда?
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536304
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для большинства не сложных задач достаточно обработки Button1Click.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536319
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatДля большинства не сложных задач достаточно обработки Button1Click.
Для более сложных подойдёт Action1Click
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536332
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinstanilar,

и как тогда?
Когда наступит "тогда", тогда и думать будешь.
Говнокодь, как бог на душу положит, пока проект не станет сложным. Потом проведешь рефакторинг.

...а в следующий раз все сделаешь сразу по уму, канешна.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536493
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinи как тогда?
Для себя принял что в учетках клиент нужен только для отображения/редактирования информации.
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536518
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinDimaBr,
ручками это типа ReadDocument и там
edtNumber.TExt:= FDocument.Number;
edtDateDoc.Value:= FDocument.DateDoc...

И на кнопке Save - SaveDocument, где делать обратное и вызывать FDocument.Save?
Если не использовать db-aware элементы управления, то я думаю, что да, примерно так. Если действия объемные и сложные, то можно какую-то часть вынести в отдельную процедуру. Ну это же здравый смысл, удобство повторного использования кода, удобство чтения, красота наконец)) .

А если использовать db-aware элементы управления, я, например, с БД написал несколько маленьких программ, а вот такую относительно большую - одну, переписывал написанную на Access когда-то другим человеком программу учета производства у нас в фирме. И по ходу её написания, понятное дело, учился. В частности, сначала кидал все датасаты, датасорцы на Датамодуль. Но когда их там стало несколько десятков и стало проблемой найти что-то, от решил, что это ерунда и теперь размещаю прямо на новых формах, если что-то новое добавлял. Можно, конечно заводить датамодули для отдельных форм, но это ведь тоже требует доп. действий - когда форма создается, создать датамодуль, пллюс создать его первым, чтобы не получить acess violation, когда при создании формы пытаешься открыть наборы данных. Потом удалить его вместе с формой. Ну то есть тут тоже нужно смотреть и выбирать, как удобнее.

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

Много мнений, есть интересные идеи Ну в общем, это как мебель подбирать и расставлять для квартиры - тут могут тебе надавать десятки советов самых разных, а выбирать и расставлять все равно тебе (и жене :) ).
...
Рейтинг: 0 / 0
Связать класс и форму TForm
    #39536825
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62, на всякий случай,
конечно же не всегда
выделить ее отдельно, а в OnClick добавить вызов процедуры
так тоже
достаточно обработки Button1Click
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Связать класс и форму TForm
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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