Bu örneği çalıştırabilmek için MS SQL ve Delphi 10 ya da üzeri sürümler kullanmanız gerekmektedir.
Öncelikle Delphi'de File - New - Windows VCL Application Delphi 'ye tıklayın. Bunun sonucunda yeni bir VCL uygulaması açılacaktır. Bunu DITest adlı bir klasöre yine aynı adlı proje olarak kaydediyoruz. Form'a View.MainForm adını vererek kaydediyoruz.
Formun üzerine Tool Palette'den Toolbar, StatusBar ve 2 adet TPanel bırakıyoruz. Bunlardan bir panelin Alignment'ı taLeft yapıyoruz, sonra Tool Palette'den bir TSplitter bırakıyoruz formun üzerine ve bunun Alignment'ını da taLeft yapıyoruz.
2. panelin Alignment'ını taClient yapıyoruz.
Her iki panelin de Caption özelliğini boş yapıyoruz, yani yazan Panel1 ve Panel2'yi siliyoruz. Ayrıca ben BevelOuter özelliğini de None yapıyorum.
Soldaki panel üzerine ToolPalette'den TCategoryPanelGroup bırakıyorum. Bunun üzerinde sağ klik yapıp New Panel'e basarak yeni grupçuklar yaratıyorum. Bunları da adlandırıyorum:
- Stok İşlemleri
- Alım Siparişleri
- Alım İşlemleri
- Satış Siparişleri
- Satış İşlemleri
MainForm |
unit uInterfaces;
interface
uses Vcl.ExtCtrls;
type
IDisplayOnPanel = interface
['{F2D7E53B-5EB3-4A8F-A12D-E9C9A3F56874}']
procedure DisplayOnPanel(const aPanel: TPanel);
end;
implementation
end
unit uInventoriesDisplayer;
interface
uses System.Classes, uInterfaces, Vcl.Controls, Vcl.ExtCtrls;
type
TInventoriesDisplayer = class(TInterfacedObject, IDisplayOnPanel)
public
procedure DisplayOnPanel(const aPanel: TPanel);
end;
implementation
{ TInventoriesDisplayer }
procedure TInventoriesDisplayer.DisplayOnPanel(const aPanel: TPanel);
var frm : TframeInventories;
begin
frm := TframeInventories.Create(aPanel);
frm.Parent := aPanel;
frm.Align := alClient;
end;
end.
unit uRegistration;
interface
uses
Spring.Container, uInterfaces;
procedure RegisterInterfaces;
implementation
uses
uInventoriesDisplayer
;
procedure RegisterInterfaces;
begin
GlobalContainer.RegisterType<IDisplayOnPanel, TInventoriesDisplayer>('inventories');
GlobalContainer.Build;
end;
end.
procedure TMainForm.FormCreate(Sender: TObject);
begin
RegisterInterfaces;
end;
procedure TMainForm.btnStoklarClick(Sender: TObject);
begin
ViewClientFrame('inventories');
end;
procedure TMainForm.ViewClientFrame(const aFrameName: string);
var
iScr : IDisplayOnPanel;
i : integer;
begin
for i:=pnlForClientFrames.ControlCount-1 downto 0 do
if pnlForClientFrames.Controls[i] is TFrame then
pnlForClientFrames.Controls[i].Free;
iScr := GlobalContainer.Resolve<IDisplayOnPanel>(aFrameName);
iScr.DisplayOnPanel(pnlForClientFrames);
end;
IMyConnection = interface
['{3AD307A1-E323-4A65-9AE7-B25436A5DC1F}']
function GetQuery(aSql : String) : TDataset;
end;
unit uMyADOConnection;
interface
uses DB, ADODB, uInterfaces;
type
TMyADOConnection = class(TInterfacedObject, IMyConnection)
private
fConnection : TADOConnection;
public
constructor Create(aConnection : TADOConnection);
function GetQuery(const aSql : String) : TDataset;
end;
implementation
{ TMyADOConnection }
constructor TMyADOConnection.Create(aConnection : TADOConnection);
begin
inherited Create;
fConnection := aConnection;
fConnection.LoginPrompt := False;
fConnection.Connected := True;
end;
function TMyADOConnection.GetQuery(const aSql: String): TDataset;
var
aQuery : TADODataset;
begin
aQuery := TADODataset.Create(fConnection);
aQuery.Connection := fConnection;
aQuery.CommandText := aSql;
aQuery.Open;
Result := aQuery;
end;
end.
unit uRegistration;
interface
uses
Spring.Container, uInterfaces;
procedure RegisterInterfaces(aMyConnection : IMyConnection);
implementation
uses
uInventoriesDisplayer
;
procedure RegisterInterfaces(aMyConnection : IMyConnection);
begin
GlobalContainer.RegisterType<IDisplayOnPanel, TInventoriesDisplayer>('inventories');
GlobalContainer.RegisterInstance<IMyConnection>(aMyConnection, 'connection');
GlobalContainer.Build;
end;
end.
procedure TMainForm.FormCreate(Sender: TObject);
begin
myConnection := TMyAdoConnection.Create(ADOConnection1);
RegisterInterfaces(myConnection);
end;
unit View.Inventories;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Grids,
Vcl.DBGrids, Vcl.ExtCtrls,
Spring.Container,
uInterfaces;
type
TframeInventories = class(TFrame)
Panel1: TPanel;
Panel2: TPanel;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
private
{ Private declarations }
public
constructor Create(AOwner : TComponent); override;
end;
implementation
{$R *.dfm}
{ TframeInventories }
constructor TframeInventories.Create(AOwner: TComponent);
var
aConnection: IMyConnection;
begin
inherited;
aConnection := GlobalContainer.Resolve<IMyConnection>('connection', []); //<IMyConnection>;
DataSource1.DataSet := aConnection.GetQuery('select * from InventoryItem order by InventoryItemId');
end;
end.
Hiç yorum yok:
Yorum Gönder