Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web

1381
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.