| Makale Tarihi : 05 Aralık 1999
Yazan:Can Kaynak |
|
Bir URL Etiketi Yaratmak
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.
|