Delphi ile class helper denemeleri yapmaya başladım ve ilk denememi yazayım dedim. Delphi XE sürümlerinden sonra class ve record lar için helper özelliği koymuş. Bu özellik gerçekten harika bir yaklaşım olmuş delphi için. Neden mi? Bu özellik sayesinde ana kodları değiştirmeden faklı classlara istediğiniz function ve procedure leri ekleyebiliyorsunuz.
Bende bir deneme yaptım ve geçekten çok hoşuma gitti. Bu işi öğrendikten sonra eminim bir çok uygulamanızda bu yöntemi uygulayacaksınız. Şimdi gel gelelim nasıl uygulanıyor ne gibi artıları var. Benim yaptığım uygulamayı kısaca anlatacak olursak panel üzerindeki bileşenleri control etmenize yarıyor. Bu ne demek peki. Forma bir panel koydunuz ve bu panelde keşke şu özellikte olsaydı dediniz. O zaman ne yapıyoruz bu istediğiniz özelliği panele helper ile ekliyoruz.
Öncelikle nasıl yapacağımızı göstereyim. Bunun için öncelikle helper kod bloğumuzu ekliyoruz.
TPnlControl = class helper For TPanel
private
public
end;
Herşey bu kadar basit. Artık TPanel bileşenimize istediğimiz özellikleri ekleyebiliriz.
implementation dan önce yazılacak kodlar
FItems = (sEdit,sComboBox,sRichEdit,sListBox,sListView,sTreeView);
TItems = set of FItems;
FEnabled = (eEnabled,eDisabled);
TErisim = set of FEnabled;
FClear = (tClear,tNotClear);
TTemizle = set of FClear;
TPnlControl = class helper For TPanel
private
public
function ToStringCount(Items:TItems) : String;
procedure PnlEditCrossControl(Enable : TErisim ; Clear:TTemizle);
procedure PnlComboboxCrossControl(Enable : TErisim ; Clear:TTemizle);
procedure PnlRichEditCrossControl(Enable : TErisim ; Clear:TTemizle);
procedure PnlListBoxCrossControl(Enable : TErisim ; Clear:TTemizle);
procedure PnlListViewCrossControl(Enable : TErisim ; Clear:TTemizle);
procedure PnlTreeViewCrossControl(Enable : TErisim ; Clear:TTemizle);
Function PnlEditsSelected(Index:Integer) : TObject ;
Function PnlComboboxsSelected(Index:Integer) : TObject ;
Function PnlRichEditsSelected(Index:Integer) : TObject ;
Function PnlListBoxsSelected(Index:Integer) : TObject ;
Function PnlListViewsSelected(Index:Integer) : TObject ;
Function PnlTreeViewsSelected(Index:Integer) : TObject ;
procedure PnlAllItemCrossControl(Enabled,Clear : Boolean);
procedure PnlClearAllItems;
procedure PnlSelectIs(ComponentName:String);
function PnlItemCounts(Items:TItems) : Integer;
function PnlAllItemCounts : Integer;
end;
Ben Panel üzerindeki bazı bileşenlerin görünmesi, temizlenmesi, seçilmesi ve sayısını ekledim. Aynı özellikleri TForm içinde siz yapabilirsiniz. Edit için yazdığım seçme temizleme ve erişme kodları
procedure TPnlControl.PnlEditCrossControl(Enable: TErisim; Clear: TTemizle);
var Index : Integer;
begin
For Index := 0 to self.PnlItemCounts([sEdit])-1 do
Begin
If eEnabled in Enable Then
Begin
(Self.PnlEditsSelected(Index) As TEdit).Enabled := True;
if tClear in Clear then (Self.PnlEditsSelected(Index) As TEdit).Clear
Else Continue;
End
Else
Begin
(Self.PnlEditsSelected(Index) As TEdit).Enabled := False;
if tClear in Clear then (Self.PnlEditsSelected(Index) As TEdit).Clear
Else Continue;
End
End;
end;
Function TPnlControl.PnlEditsSelected(Index: Integer):TObject;
var
Items : Array of TObject;
i,i2 : Integer;
begin
SetLength(Items,self.PnlItemCounts([sEdit]));
i2 := 0;
For i := 0 to self.ControlCount-1 Do
Begin
If Self.Controls[i] is TEdit Then
Begin
Items[i2] := Self.Controls[i] as TEdit;
Inc(i2);
End;
End;
Result := Items[Index];
end;
Böylece TPanel üzerindeki istediğimiz her bileşeni control edebiliriz. Kullanımı ise
Merhaba, paylaşımınız için teşekkürler güzel bir konu olmuş. Fakat ben öğrenmek adına şunu sormak isterim Mesela bir panele arka plan resmi atama özelliği eklemek istedim. Gösterdiğini bu yolla nasıl ekleyeceğim anlayamadım. Bu konuyu biraz daha açık anlatabilirmisiniz.
YanıtlaSilTeşekkürler.