Production document management with a plugin architecture for detail types. MVP controller, import/management/detail as independent frames, integrated FastReport printing and a label designer.
The first module developed with a full MVP pattern. The Controller handles the business logic; the Host orchestrates the frames through interfaces. The detail types (Type A, Type B) are separate BPLs that register automatically.
type IDtoDocView = interface ['{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}'] function GetSelectedCodart: string; function GetSelectedTipo: Integer; procedure RefreshGrid; procedure SetStatusText(const AText: string); function ConfirmAction(const AMessage: string): Boolean; end;
| Interface | BPL | Purpose |
|---|---|---|
IFrameGestione | DtoMes_Documenti | Main document grid |
IFrameImport | DtoMes_Documenti | File/scanner import |
IFrameWorkArea | DtoMes_Documenti | Document work area |
IFrameArticoli | DtoMes_Prodotti | Item master data |
IFrameDettaglioTipoA | DtoMes_DocTipoA | Category A detail |
IFrameDettaglioTipoB | DtoMes_DocTipoB | Category B detail |
IDtoDocView | DtoMes_Documenti | Controller → View communication |
The interfaces let the detail plugins be separate BPLs that register at runtime without modifying the module's code. Adding a new type = creating a new BPL with its own Registration.
Each module is an independent BPL, but they are part of the same ecosystem.