Bu aşamada her modül için bir uXxxDisplayer.pas ve bir View.Xxx.pas unit'lerini oluşturacağız.
Önce View.Customers.pas'ı oluşturalım. Boş bir VCL Frame oluşturalım. Bunun üzerine 2 adet TPanel koyalım, Panel2'nin Align özelliği alBottom, Caption boş, Panel1'in Align özelliği alClient Caption boş olsun. Panel1 üzerine bir DBGrid koyalım, özelliklerini şu şekilde değiştirelim;
Align=alClient
DataSource=DataSource1
ReadOnly=True
Options.dgEditing=False
Options.RowSelect=True
Frame adını TframeCustomers yapalım.
Create yapılandırıcısını ekleyelim
constructor TframeCustomers.Create(AOwner: TComponent);
var
aConnection: IMyConnection;
begin
inherited;
aConnection := GlobalContainer.Resolve<IMyConnection>('connection', []);
DataSource1.DataSet := aConnection.GetQuery('select * from Customer order by CustomerId');
end;
Şimdi uCustomerDisplayer.pas'ı oluşturalım.
unit uCustomersDisplayer;
interface
uses System.Classes, uInterfaces, Vcl.Controls, Vcl.ExtCtrls, View.Customers;
type
TCustomersDisplayer = class(TInterfacedObject, IDisplayOnPanel)
public
procedure DisplayOnPanel(const aPanel: TPanel);
end;
implementation
{ TInventoriesDisplayer }
procedure TCustomersDisplayer.DisplayOnPanel(const aPanel: TPanel);
var frm : TframeCustomers;
begin
frm := TframeCustomers.Create(aPanel);
frm.Parent := aPanel;
frm.Align := alClient;
end;
end.
Son olarak uRegistration.pas ve View.MainForm.pas'ta eklemeler yapmamız gerekli.
uRegistration.pas şu şekli alacak.
unit uRegistration;
interface
uses
Spring.Container, uInterfaces;
procedure RegisterInterfaces(aMyConnection : IMyConnection);
implementation
uses
uInventoriesDisplayer
, uCustomersDisplayer
;
procedure RegisterInterfaces(aMyConnection : IMyConnection);
begin
GlobalContainer.RegisterType<IDisplayOnPanel, TInventoriesDisplayer>('inventories');
GlobalContainer.RegisterType<IDisplayOnPanel, TCustomersDisplayer>('customers');
GlobalContainer.RegisterInstance<IMyConnection>(aMyConnection, 'connection');
GlobalContainer.Build;
end;
end.
MainForm'da Müşteriler butonunun OnClick event'ine şunları ekleyeceğiz.
Bu işlemlerden sonra artık Müşteriler butonuna tıkladığımızda veritabanındaki Customer tablosunu View.Customers.pas'ta frameCustomers üzerindeki dbgridde görüntülenecektir.
Bu şeklinin kodlarını şu linkten indirebilirsiniz : DITest-2.rar
Hiç yorum yok:
Yorum Gönder