Sola Dayalı Yazabilen TEdit Öğesi
TEdit öğesi
normalde sadece sola dayalı olarak veri girişi kabul eder. Fakat bazı durumlarda bunun
tam tersinin olması gerekir. Örneğin Sayısal bir değeri girerken sağdan sola
yazılırsa yazılan sayı daha okunaklı olur. Bunu sağlamanın en iyi yolu TEdit
kökenli ve Hizalama özelliğini sağlayan TAlignment sınıfının TEdit'ten türeyen
yeni öğeye eklenmesidir. Bunu eklemek için yeni bir component oluşturup bunun kök
sınıfını TEdit vermeliyiz.Daha sonra aşağıdaki kodu girmeliyiz:
unit AlignEdit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TAlignEdit = class(Tedit)
private
protected
f_iAlign: TAlignment;
procedure SetAlignment(iAlign: TAlignment);
procedure CreateParams(var aParams: TCreateParams); override;
public
constructor Create(aOwner: TComponent); override;
published
property Alignment: TAlignment
read f_iAlign write SetAlignment default
taLeftJustify;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Kahwe', [TAlignEdit]);
end;
constructor TAlignEdit.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
//Sola dayalıyı varsayılan yap
f_iAlign := taLeftJustify;
end;
procedure TAlignEdit.CreateParams(var aParams: TCreateParams);
const
AlignmentArray: array[TAlignment] of DWord =
(ES_LEFT, ES_RIGHT,
ES_CENTER);
begin
inherited CreateParams(aParams);
aParams.Style := aParams.Style AND (NOT 0) OR
(ES_MULTILINE)
OR
(AlignmentArray[f_iAlign]);
end;
procedure TAlignEdit.SetAlignment(iAlign: TAlignment);
begin
if iAlign <> f_iAlign then
begin
// Veriyi Kaydet
f_iAlign := iAlign;
// Pencereyi yeni hizalama sitili ile tekrar yarat.
RecreateWnd;
end;
end;
end.
yukarıdaki kodda gördüğünüz gibi TAlignment sıfı
bir property olarak tanımlanıp TEdit'in Createparams yordamı kullanılarak style
değişkenine ekleniyor.Her hizalama değişikliğinde mutlaka pencereyi tekrar
yaratmalıyız. Aksi taktirde ypılan değişiklik edit nesnesinde görünmez. Bu tıpkı
Refresh yapmak gibi birşey.
Acemiler
için:Eğer bu kodu çalışmasını istiyorsanız önce bir Öğe Paketi
yaratmalısınız. Bunun için File/New komutunu çalıştırın. Karşınıza
çıkan listeden package itemini seçin ve ok tuşuna basın.
Paketi bir dizinin altına kaydedin.
İkinci olarak yeni bir öğe yaratacağız. Component/New
component komutunu çalıştırın. Buraya Ancestor Type
sahasına TEdit girin. Class Name sahasına TAlignEdit girin ve üç
nokta ile nitelenmiş düğmeye tıklayarak istediğiniz yere kaydedin. Dikkat ClassName
ile aynı olmalıdır fakat başında T olmayacak.Buradan install
butonunu seçip daha önce kaydettiğiniz paketin içerisine atabilirsiniz. Daha sonra
yukarıdaki kodu girip paketi kurun.

Umarım bu kod yardımcı olmuştur. Bana her
konuda soru sorabilirsiniz. Soru sormak için lütfen Soru Formunu
doldurun.