Delphide bir URL Etiketi Oluşturmak


Bir URL etiketi normal bir delphi etiketi gibidir,fakat HTML sayfasındaki bir bağlantı gibi görünür ve davranır. Varsayılan rengi Mavi ve tabiki altı çizilidir.bir kez tıklandığında,kullanıcının varsayılan web tarayıcısı etikette bulunan adresi kullanarak açılır.Kullanışlı ve genel kullanımı "hakkında" penceresinde doğrudan sizin web sayfanıza gitmesi için bir tane bulundurmaktadır. Dikkatinizi çekmişse YazıPro1.1'de de Hakkında penceresini açtığınızda karşınıza URL etiketi çıkar.Ayrıca varsayılan mail programına mail yollamak için de kullanabilirsiniz. Önerim mutlaka her programınızın bir "Hakkında" penceresi olmalı ve size nasıl ulaşmalarını istiyorsanız (mail,web sayfası) bunu URL etiketi kullanarak belrtmelisiniz. Bu kullanıcıların kendini güvende hissetmesini sağlar.

Yeni bir nesne ile başlamak
Standart TLabel öğesinin içerdiği tüm özelliklere ihtiyacımız olmadığı için baist bir Etiket öğesinden başlamak gerekir. Eğer TCustomLabel'dan başlayacak olursak TLabel öğesinde ihtiyacımız olmayan özellikleri kolayca saklayabiliriz. Gerçekte pek saklayamayız ama sadece göstermeye biliriz.İlk yapamamız gereken yeni bir öğe yaratmak. Bunu Component menüsünde bulunan new component sekmesini kullanarak yapabiliriz. Dialog kutusunda öğe için bir isim girmelisiniz (ben genellikle TURLabel kullanıyorum)ve Ata sınıfını TCustomLabel olarak atayın. yeni bir Unit yaratın ve tüm konuyu dikkatle irdeleyin.
Yeni sınıfımızı tanımlamak
URL adresimizi saklayacağımız sadece bir yeni özellik ekleyeceğiz. private bölümü yeni öğe için öngörülen yeni özellikleri ve yordamları içerir. Create yordamı public bölümünde override olarak yer alır. öğemize yeni özellikleri ekleyeceğimiz zaman varsayılan değerlerini değiştirmemizi sağlar. Published bölümünde URl string sahasınna özellik editöründen ulaşmak için yeni bir özellik tanımladık. diğer özellikler TCustomLabel sınıfında var fakat bunlar gizli. burada tekrar tanımlarsak kullanılabilir yapmış oluruz. Ben hepsini tanımlamadım çünkü hepsine ihtiyacm yok.eğer gösterilmeyen bazı özellikleri kullanmak istiyorsanız aşşağıda gördüğünüz gibi tanımlayabilirsiniz.
TURLabel = class(TCustomLabel)
private
{ Private declarations }
fURL : String;
procedure SetURL(value : string);
procedure CMTextChanged(var Message: TMessage);Message CM_TextChanged;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create (AOwner : TComponent); override;
procedure Click; override;
published
{ Published declarations }
Property URL : String Read fURL write setURL;
Property Align;
Property Alignment;
Property AutoSize;
Property Color;
Property Cursor;
Property Caption;
Property Font;
Property ParentFont;
end;
TURLabel Yordamları
Burada yaptığımız tek şey Shellexecute komutunu dosya ismimiz olan fURL stirng'i ile birlikte (URL de olabilir) uygulamayı işletmektir. bu öğeyi tabiki Notepad'i kullanarak bir metin dosyasını açmak içinde kullanabiliriz. Buradaki mantık dosyanın yada yolun hangi program kullanarak açılacağıdır.
Diğe yordam yeni URL katarı girlmiş mi diye kotrol ediyor. Tabiki Caption değiştiğinde eğer bu bir URL'yi gösteriyorsa yeni bir değer olarak algılanır.
CM_TextChanged mesajının cevabı,caption özelliği ne zaman değişirse bzi haberdar eder.Caption eğeri boş iken değerinin URl'ye eşit olmasını sağlar.
procedure TURLabel.Click;
begin
ShellExecute(Handle, 'open', PChar(fURL), nil, nil, SW_SHOWNORMAL);
inherited;
end;
procedure TURLabel.SetURL(value : string);
begin
if fURL <> Value then
begin
if (Caption = '') or (Caption = fURL) then
Caption := Value;
fURL := Value;
end;
end;
procedure TURLabel.CMTextChanged(var Message: TMessage);
begin
inherited;
if Caption = '' then
Caption:= fURL;
end;
constructor TURLabel.Create(AOwner: TComponent);
begin
inherited ;
Font.Color := clBlue;
Font.Style := [fsUnderline];
Cursor := crHandPoint;
end;
procedure Register;
begin
RegisterComponents('KahveBahane', [TURLabel]);
end;
Mutlaka sizinde eklemek istediğiniz ek yordamlar olacaktır örneğin üzerine geldiği zaman TURLabel nesnesinin renginin değişmesi gibi. Bunları size daha önce anlattığım derslerdeki kaynaklardan bulabilirsiniz.

Yorum Gönder

xxxxxx