Diğer İpuçları
Açılış ekranı
(Splash Form) oluşturma
Açılış ekranı için bir form oluşturun. Formun
BorderStyle özelliğini bsNone yapın. Project Options kısmından formu Auto-Create
değil, Avaible forms yapın. Daha sonra Project->View Source ile proje dosyanıza(.dpr
uzantılı) aşağıdaki kodları ekleyin.
begin
SplashForm := TSplashScreen.Create(Application); //bu 3 satır eklendi. Formu
oluştur
SplashForm.Show;
//formu göster
SplashForm.Update;
//formu yenile
Application.Initialize;
Application.Title := 'Application Title';
Application.CreateForm(TForm1, Form1);
SplashForm.Hide;
//bu 2 satır eklendi. Formu gizle
SplashForm.Free;
//Formu yok et
Application.Run;
end.
3 boyutlu yazı
3 boyutlu yazı yazmak için piyasada bir sürü bileşen
bulabilirsiniz. Ancak bu işi kendinizde hem de tek satır kod yazmadan yapabilirsiniz.
Bunun için;
1. Form üzerine bir label koyun ve caption kısmına
istediğiniz yazıyı yazın.
2. Sonra bu label üzerine tıklayın ve Edit menüsünden Copy komutunu verin.
3. Sonra form üzerinde bir yere tıklayın Edit menüsünde Paste komutunu verin ve bu
label'ın Transparent özelliğini True yapın. Left ve Top özelliklerini ilk
label'dan ikişer eksik verin.
3 boyutlu yazımız hazır. Label'ların renkleriyle ve
yerleriyle oynayarak çeşitli efektler verebilirsiniz.
Türkçe Mesajlar
Delphinin Professional ve Client/Server versiyonlarına
sahipseniz, uygulamanızın verdiği mesajları Türkçeleştirebilirsiniz. Mesela
MessageDlg fonksiyonuyla gösterdiğiniz mesajların başlıklarını ve düğmelerin
başlıklarını değiştirebilirsiniz. Sonra "Invalid Date" gibi bir hata
mesajı yerine "Geçersiz tarih, lütfen girdiğiniz tarihi kontrol edin!" gibi
mesaj verdirebilirsiniz.
Bunun için Delphi'nin Source kodunda yer alan consts.pas
(...\Delphi\Source\Vcl\) ve sysconst.pas (...\Delphi\Source\Rtl\Sys) dosyalarını
Delphi ile açın ve mesajları Türkçeleştirin. Sonra bu dosyaları derleyin. Yalnız
biraz dikkatli olmalısınız ve orjinal dosyaların mutlaka yedeğini alın.
Derleme sonucunda oluşan consts.dcu ve sysconst.dcu
dosyalarını Lib (...\Delphi\Lib) ve Slib (...\Delphi\Slib) klasörlerine kopyalayın.
Yine orjinal dosyaların birer yedeğini almanız menfaatiniz icabıdır. Artık
mesajlarınız değiştirdiğiniz şekilde çıkacaktır.
Delphi'nin Süprizleri
Help menüsünden About kısmına girin. Alt tuşuna
basarak aşağıdakileri yazın.
Alt+TEAM
Alt+DEVELOPERS
Alt+QUALITY (Sadece Delphi 3 ve 4'ün Client/Server versiyonlarında)
Alt+AND (SAdece Delphi 1'de)
Alt+CHUCK
Alt+VERSION (Sadece Delphi 2'de)
Database Desktop'tada Help menüsünden About kısmına
girin ve delphi yazın.
Quick Report'ta preview
ekranında simgeler gözükmüyor
Bu sisteminizde bulunan Comctl32.dll dosyasının eski
olmasından kaynaklanıyor. Eğer bu dosyayı yenilerseniz hata düzelecektir. Bu
dosyayı Delphi CD'sinin "Info\Updates" klasörü
altında bulabilirsiniz. Ayrıca aşağıdaki linkten Microsoft'un sitesinden de dosyayı
çekebilirsiniz.
ftp://ftp.microsoft.com/softlib/mslfiles/40comupd.exe
Programs (Programlar) altındaki
grupların listesi
Form üzerine bir tane listbox, bir tane Button ve bir
tane de DdeClientConv bileşeni koyun. DdeClientConv bileşeninin DDEService ve DDETopic
özelliklerini "Progman" (tırnaklar yok) olarak değiştirin ve aşağıdaki
kodu yazın.
procedure TForm1.Button1Click(Sender: TObject);
var
P: PChar;
begin
ListBox1.Items.clear;
P := DDEClientConv1.RequestData('Groups');
ListBox1.Items.SetText(P);
StrDispose(P);
end;
Hint'leriniz ekranda daha uzun süre
kalsın
Formunuzun OnCreate olayına aşağıdaki kodu yazın.
Buradaki değer milisaniye cinsindendir. 1 saniye=1000 milisaniye.
Application.HintHidePause := 4000;
Kayıtlarınızı Microsoft Excel
dosyasına kaydedin
1. YOL : Zaman zaman veritabanlarınızdaki veya programınızdaki
kayıtları Excel dosyasına aktarmanız gerekebilir. Bu iş için *.csv dosyasını
kullanabilirsiniz. Kayıtların arasına noktalı virgül ( ; ) koyarak uzantısı csv
olan bir text dosyasına kaydedin. Dosyanın üstüne çift tıkladığınızda Excel'de
açılacaktır.
Mesela No, Ad, Soyaddan oluşan bir tabloyu Excel'e
aktarmak istiyorsunuz. Kayıtlar şöyle olmalıdır.
1;Mustafa;Şimşek
2;Ahmet;Savaş
3;Buiş;bukadar
2. YOL : 3. parti grid bileşenlerinin
çoğu Excel'e veri aktarma özelliğine sahiptir. Bunlardan birini kullanarak
verilerinizi Excel'e aktarabilirsiniz. Piyasadaki en iyi grid bileşeni olan
Developer Express Quantum Grid bileşeni, bilgisayarınızda Excel olmasa dahi
verilerinizi Excel dosyası olarak kaydedebilimektedir.
Delphi'yi
tamamen kaldırıp sıfırdan kurmak
Delphi'yi komple silip sıfırdan kurmak için;
1. Önce tüm projelerinizi yedekleyin.
2. Eğer BDE'de alias kullanıyorsanız, idapi32.cfg dosyasını yedekleyin.
3. Denetim Masası Program Ekle/Kaldır'dan Delphi'yi kaldırın.
4. Geride kalan Delphi klasörünü sistemden silin.
5. Eğer Windows2000 ve Delphi 6 kullanıyorsanız, Delphi 6 CD'sindeki
"D6RegClean.exe" programını çalışıtırın.
6. Delphi'yi CD'sinden yeniden kurun.
7. Eğer idapi32.cfg dosyasını yedeklemişseniz, yeni dosyanın üzerine kopyalayın.
8. Eğer 3. parti bileşen kullanıyorsanız, onları kurun.
Team
Source nedir?
Team Source, birlikte yazılım geliştiren bir
grubun günlük iş akışını yönetmelerine yardımcı olan bir araçtır.
Programımın
simgesi (icon) yanlış gözüküyor
Windows Explorer ve kısayol'da programınızın
simgesi yanlış gözüküyor, ama taskbar'da ve ALT+TAB ile açılan listede düzgün
gözüküyor.
Delphi'de programınızın simgesi res uzantılı bir dosyada tutulur ve resource'un
ismi MAINICON'dur. Ancak eğer bu kaynak dosyasına birden fazla simge eklerseniz,
Windows kısayollarda ve Windows Explorer'da, Exe dosyadaki ilk simgeyi
kullandığında simge yanlış gözükebilir. Simgeler exe dosyaya alfabetik sırada
bağlanır. Ek simgelerin resource ismi M harfinden sonraki bir harfla başlarsa,
herhangi bir sorun çıkmayacaktır.
CD-Rom sürücüyü açmak ve kapamak
uses kısmına MMSystem unitini ekleyin.
mciSendString('Set cdaudio door open wait', nil, 0, handle); //aç
mciSendString('Set cdaudio door closed wait', nil, 0, handle); //kapa
Uygulamanızın Görev Çubuğundaki butonunu gizleme
Uygulamanızın Görev Çubuğundaki butonunu gizlemek
için; programınızın ana formunun OnCreate olayına aşağıdaki kodu yazın;
SetWindowLong(Application.Handle,GWL_EXSTYLE, WS_EX_TOOLWINDOW);
ico'dan bmp'ye çevirme
var
Icon : TIcon;
Bitmap : TBitmap;
begin
Icon := TIcon.Create;
Bitmap := TBitmap.Create;
Icon.LoadFromFile('c:\picture.ico');
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon );
Bitmap.SaveToFile('c:\picture.bmp');
Icon.Free;
Bitmap.Free;
end;
Programım sadece bir kez
çalışsın
Normalde kullanıcı programınızı istediği kadar
çalıştırabilir veya bazı sabırsız kullanıcılar program simgesine ard arda birkaç
defa tıklayıp, aynı anda birden fazla program penceresi açabilirler. Yani
kullanıcı aynı anda 2-3 tane
programı açabilir. Bazı durumlarda, programınızın sadece bir kez çalışmasını
isteyebilirsiniz :
Ana formunuzun Public kısmında şu tanımlamayı yapın :
Atom : Word;
Ana formun OnCreate olayına aşağıdaki kodu ekleyin:
if GlobalFindAtom('PROGRAM_RUNNING') = 0 then
atom := GlobalAddAtom('PROGRAM_RUNNING')
else
begin
MessageDlg('Program zaten çalışıyor!', mtWarning, [mbOK], 0);
Halt;
end;
ve formun OnDestroy olayına da aşağıdaki kodu
ekleyin. Hepsi bu kadar.
GlobalDeleteAtom(atom);
Listbox'a yatay kaydırma
çubuğu eklemek
Formunuzun OnCreate olayına aşağıdaki kodu ekleyin.
SendMessage(Listbox1.Handle, LB_SetHorizontalExtent,
1000, Longint(0));
Combobox'ın listesini kod
ile açıp kapatın
SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, 1, 0);
{listeyi açar}
SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, 0, 0);
{listeyi kapatır}
Listbox'ta kaydırma
çubuğunu kod ile aşağı çekme
Listbox'ta 11. öğeyi listenin en başına getirmek
için için aşağıdaki kodu yazın.
SendMessage(ListBox1.Handle, lb_SetTopIndex, 10, 0);
Eğer 25. öğeyi liste başı yapmak istiyorsanız
SendMessage(ListBox1.Handle, lb_SetTopIndex, 24, 0);
Enter tuşuna
bastığınızda bir sonraki kontrole geçme
Enter tuşuna bastığınızda Windows'un bir sonraki
kontrole geçmesi için (Tab tuşuna basılmış gibi) Formunuzun KeyPreview özelliğini
True yapın ve formun OnKeyPress olayına aşağıdaki kodu yazın.
procedure TForm1.FormKeyPress(Sender: TObject; var Key:
Char);
begin
if (Key = #13) then
begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
Dos
modunda yazı yazdırma
QuickReport ve benzeri raporlama araçları
grafik modda baskı yaptıkları için baskı yavaş olur. Dos modunda, hızlı yazı
yazdırmak için, bu iş için özel tasarlanmış, bedava olan ZReport isimli raporlama
bileşenini kullanabilirsiniz. Bileşeni
www.torry.net adresinden
aratarak bulun ve indirin.
Kurulum
(install) hazırlama
Delphi ile birlikte InstallShield Express'in
Borland kısıtlı sürümü de dağıtılıyor. Kurulum seti hazırlamak için bunu
kullanabilirsiniz, ancak bu program biraz hantal. Bunun yerine ben inno setup +
istool ikilisini kullanmanızı tavsiye ederim. inno setup çok kullanışlı, görsel yönden
güzel, bedava, source kodu açık bir kurulum programı. Script desteği de var.
istool ise inno setup script'lerini görsel ekranlarla hazırlayan bir inno setup
eklentisi. Sitelerinden bu programları indirebilirsiniz.
inno setup :
www.innosetup.com ,
istool :
www.istool.org
QuickReport
bıktırdıysa, alternatif raporlama araçları
Qr(Quick Report) Delphi içinde bundle
ettiği zaman piyasadaki en iyi raporlama araçlarından biri idi. Ancak Qr zamanla
kendini geliştiremedi. Mevcut hatalar düzeltilemedi, çok istenen eksikler
yapılamadı. Özellikle destek noktasında çok büyük sıkıntı oluştu ve gelişen
zaman içinde programcıların Delphi içindeki en büyük sorunu Qr oldu.
Borland'da bunu dikkate alarak Delphi 7'den itibaren Rave'i raporlama aracı
olarak dağıtmaya başladı. Bu karar ne derece doğru bilemiyorum. Bunu zaman
gösterecek. Ama piyasada çok tutulan ve ihtiyaç duyduğunuz eksikleri
tamamlayacak 2 raporlama aracı var. İkisi de ticari ürünler, yani para ile
satılıyorlar ve ikisinin de desteği çok iyi. Bunlar :
Report Builder :
http://www.digital-metaphors.com/
Gerçekten çok iyi bir raporlama aracı. Yıllar boyu yapılan anketlerde uzak ara
hep birinciliği alıyor. Çok iyi bir teknik desteği var. Verdiğiniz paraya
değecek bir ürün.
Fast Report :
www.fastreport.ru
Bu raporlama aracı da çok iyi. Çok iyi bir teknik desteği var ve fiyatı biraz
daha uygun.
Her ikisi de güzel araçlar. İkisininde deneme sürümlerini sitelerinden indirip
deneyebilirsiniz.
Bedava Raporlama Araçları
Free Report :
www.fastreport.ru
Bu da fast report'u üreten firmanın bedava ve source kodu ile dağıttığı bir
raporlama aracı. Fast Report kadar olmasa da gayet iyi. Qr'den bıktım diyenlere
ZReport :
www.torry.net
ZReport'ta yine bedava ve source kod ile dağıtılan, Dos modunda hızlı baskı
yapmak için özel bir raporlama aracı. Yazan kişinin web sayfası yok. Ancak
torry'den arattırıp indirebilirsiniz.
Seri
portlara erişim
Seri portlarla haberleşmek için bedava bir
bileşen olan TurboPower Async Pro'yu kullanabilirsiniz. Detaylar ve link için 3.
Parti Bileşenler bölümündeki TurboPower makalesine bakınız.
Programı
parametre ile açmak
Bu iş için ParamCount ve ParamStr'yi
kullanabilirsiniz.
ParamCount : verilen
parametre sayısını
ParamStr(x) : verilen parametreyi döndürür.
0 : exe'nin kendisini (path'i
ile birlikte) döndürür.
1 : birinci parametreyi döndürür
2 : ikinci parametreyi döndürür ...
ana formun OnShow olayına aşağıdaki gibi bir kod yazmalısınız.
if ParamCount<> 1 then {eğer parametre verilmemişse veya birden fazla ise kapat}
Close; {bu iki satır seçimlik, istersen yazmayabilirsin}
if ParamStr(1) = '0' then // parametre olarak 0 verilmişse
{şunları şunları yap}
else
if ParamStr(1) = '1' then // parametre olarak 1 verilmişse
{şunları şunları yap}
QuickReport'ta
toplam sayfa sayısını hesaplama
Qr'nin Prepare metodunu kullanırsanız, rapor
önizleme açılmadan ve yazdırılmadan oluşturulur. Prepare ile raporu
oluşturduktan sonra QrPrinter.PageCount ile sayfa sayısını alabilirsiniz. Örnek
kod :
QuickRep1.Prepare;
QuickRep1.ReportTitle := 'Bu rapor toplam : ' +
IntToStr(QuickRep1.QRPrinter.PageCount) + ' sayfadır.';
QuickRep1.QRPrinter.Free;
QuickRep1.QRPrinter := nil;
QuickRep1.Preview;
Programınızı koruma ve
demo olarak dağıtma
Bazen programınızı potansiyel müşterilerinizin
denemesi için demo olarak dağıtmak isteyebilirsiniz. Bunlarda genel mantık belli
bir süre veya belli bir sayıda programın çalışması, bu süre sonunda çalışmayı
kesmesidir. Artık bedava dağıtılan TurboPower OnGuard paketi ile dene-satın al
türü uygulamalar oluşturabilirsiniz. Kullanıcı kısıtlı sürümü kurduktan sonra,
sizden şifre alıp, aynı exe dosya ile limitsiz kullanıma ulaşabilir. Şifre kendi
bilgisayarına özgü olduğu için başkalarına programı dağıtamaz.
Bu paketi indirip kurun. İndirme detayları için
sitedeki 3. Parti bileşenler kısmındaki TurboPower yazısına bakabilirsiniz.
Outlook Express'i dosya
ekleyerek (attach) açma
uses kısmına mapi unitini ekleyin.
function SendMail(const Subject, Body, FileName,
SenderName, SenderEMail,
RecipientName, RecipientEMail: string): Integer;
var
Message: TMapiMessage;
lpSender, lpRecipient: TMapiRecipDesc;
FileAttach: TMapiFileDesc;
SM: TFNMapiSendMail;
MAPIModule: HModule;
begin
FillChar(Message, SizeOf(Message), 0);
with Message do
begin
if (Subject <> '') then
lpszSubject := PChar(Subject);
if (Body <> '') then
lpszNoteText := PChar(Body);
if (SenderEmail <> '') then
begin
lpSender.ulRecipClass := MAPI_ORIG;
if (SenderName = '') then
lpSender.lpszName := PChar(SenderEMail)
else
lpSender.lpszName := PChar(SenderName);
lpSender.lpszAddress := PChar(SenderEmail);
lpSender.ulReserved := 0;
lpSender.ulEIDSize := 0;
lpSender.lpEntryID := nil;
lpOriginator := @lpSender;
end;
if (RecipientEmail <> '') then
begin
lpRecipient.ulRecipClass := MAPI_TO;
if (RecipientName = '') then
lpRecipient.lpszName := PChar(RecipientEMail)
else
lpRecipient.lpszName := PChar(RecipientName);
lpRecipient.lpszAddress := PChar(RecipientEmail);
lpRecipient.ulReserved := 0;
lpRecipient.ulEIDSize := 0;
lpRecipient.lpEntryID := nil;
nRecipCount := 1;
lpRecips := @lpRecipient;
end
else
lpRecips := nil;
if (FileName = '') then
begin
nFileCount := 0;
lpFiles := nil;
end
else
begin
FillChar(FileAttach, SizeOf(FileAttach), 0);
FileAttach.nPosition := Cardinal($FFFFFFFF);
FileAttach.lpszPathName := PChar(FileName);
nFileCount := 1;
lpFiles := @FileAttach;
end;
end;
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
Result := -1
else
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM <> nil then
begin
Result := SM(0, Application.Handle, Message, MAPI_DIALOG or
MAPI_LOGON_UI, 0);
end
else
Result := 1;
finally
FreeLibrary(MAPIModule);
end;
if Result <> 0 then
MessageDlg('Mesaj gönderilemedi (' + IntToStr(Result) + ').',
mtError, [mbOK], 0);
end;
Kullanımı : SendMail ( 'Deneme', '',
c:\deneme.txt, '',
'aaa@bbb.com',
'',
'xyz@bbb.com'
);
QuickReport'taki
verileri text dosyaya kaydetmek
Qr ile hazır gelen export filtreleri var. Bunları kullanarak .txt, .csv (Excel)
vs. aktarım yapabilirsiniz.
ASCII (txt) olanı raporun olduğu forma koy, Ön izleme ekranında Save butonuna
bastığında (*.txt) de çıkacaktır artık. Koddan yapmak istersen :
QuickRep1.ExportToFilter(TQRAsciiExportFilter.Create('c:\rapor.txt'));
Auto-run (otomatik açılan)
CD'ler oluşturmak
Bu olayın direk olarak Delphi ile alakası yok ama
lazım olabilir. Notepad ile ismi "autorun.inf" olan ve aşağıdaki gibi bir metni
içeren bir text dosya oluşturun.
[autorun]
OPEN=myprogram.EXE
ICON=myicon.ICO
Burada Open kısmına
çalışacak olan programın ismini, icon kısmına da CD'yi takınca gözükecek simgeyi
yazmalısınız.
Windows Metafile'ı (.wmf) bitmap'e (.bmp) çevirme
procedure ConvertWMF2BMP (const WMFFileName,
BMPFileName: TFileName);
var
MetaFile : TMetafile;
Bitmap : TBitmap;
begin
Metafile := TMetaFile.Create;
Bitmap := TBitmap.Create;
try
MetaFile.LoadFromFile(WMFFileName);
with Bitmap do
begin
Height := Metafile.Height;
Width := Metafile.Width;
Canvas.Draw(0, 0, MetaFile);
SaveToFile(BMPFileName);
end;
finally
Bitmap.Free;
MetaFile.Free;
end;
end;
Kullanımı : ConvertWMF2BMP('c:\mypic.wmf',
'c:\mypic.bmp')
Bitmap'i (.bmp) Windows Metafile'a (.wmf') çevirme
procedure ConvertBMP2WMF (AImage: TImage;
FileName: String);
var
Wmf : TMetafile;
WmfCanvas: TMetafileCanvas;
begin
Wmf := TMetafile.Create;
try
//Must set width + Height before creating the canvas
Wmf.Width := AImage.Picture.Bitmap.Width;
Wmf.Height := AImage.Picture.Bitmap.Height;
WmfCanvas := TMetafileCanvas.Create(Wmf, 0);
try
WmfCanvas.Draw(0,0,AImage.Picture.Bitmap);
finally
WmfCanvas.Free;
end;
Wmf.SaveToFile(FileName);
finally
Wmf.Free;
end;
end;
Kullanımı : ConvertBMP2WMF(Image1,
'c:\mypic.wmf'); // bitmap resim image1'de yüklü.
TColor'u HTML Color'a çevirme
Bir ColorDialog, bir label ve bir buton koyup
aşağıdaki kodu yazın.
procedure TForm1.Button1Click(Sender: TObject);
function ColorToHtml(DColor:TColor):string;
var
tmpRGB : TColorRef;
begin
tmpRGB := ColorToRGB(DColor);
Result:=Format('#%.2x%.2x%.2x',
[GetRValue(tmpRGB),
GetGValue(tmpRGB),
GetBValue(tmpRGB)]);
end; {function ColorToHtml}
begin
if ColorDialog1.Execute then
Label1.Caption:=ColorToHtml(ColorDialog1.Color);
end;
Delphi 7'de Quick Report'u nasıl yüklerim
Quick Report, Delphi 7 ile birlikte
dağıtılıyor, ancak kurulu olarak gelmiyor. Quick Report'u Delphi 7'ye kurmak
için :
1. Component menüsünden Install Packages
komutunu verin.
2. Add butonuna tıklatın ve Delphi7\Bin klasöründeki dclqrt70.bpl isimli dosyayı
seçin.
SMS Göndermek
Bu iş için bir kaç yöntem var :
1.
Dahili modemi
olan bir cep telefonunu kablo ile bağlayıp göndermek. Normal SMS ücreti
ödersiniz. Bu iş için TurboPower Async Pro veya TOxygenSMS bileşenini (http://www.oxygensoftware.com)
kullanabilirsiniz.
2.
Dahili SMS modemler
var. Bunu bilgisayarınıza takıyorsunuz ve SIM kart takıyorsunuz üstüne. Yine SMS
ücreti ödersiniz.
3. Internet üzerinden
bedava SMS hizmeti veren siteleri http ile kullanarak gönderebilirsiniz
ancak
bunlar Türkiye için pek kullanışlı değil. Çok sık takip etmeniz lazım. Ya servis
kapanıyor ya da firmalar (Turkcell, Telsim vb.) bu tip servislerden gelen
mesajları iletmeyebiliyor.
4. Yüklü miktarda SMS
gönderecekseniz ve iletilmesi önemli ise Turkcell ve Telsim gibi hizmet
aldığınız firmalarla anlaşma yapıp, http kullanarak daha uygun fiyatlı SMS
gönderebilirsiniz. Bu durumda firma size gönderme bilgilerini verecektir.
Az mesaj gönderiyorsanız 1 veya 2'yi, Şirket
için ve
yüklü miktarda SMS gidecekse 4'ü, kişisel bir çalışma ise 3'ü seçin.
Fax Gönderme ve Alma
Fax gönderme ve
alma işini bedava olarak dağıtılan TurboPower Async Pro ile yapabilirsiniz. Examples klasöründe örnekleri var
Barkod Bileşenleri
Artık bedava olarak dağıtılan Turbopower
SysTools paketi içinde barkod bileşenleri var. Barkod işlemleriniz için bu
bileşenleri kullanabilirsiniz.
USB Porttan
Bilgi Okuma
1. USB/Serial dönüştürücüler var. Bunları kurduğunuz zaman
USB potta, serial (COM) portlarda yapabildiğin şeyleri yapabilirsin.
Mesela
http://www.ftdichip.com/
2. Turbopower Async Pro USB serial cihazlarla haberleşebiliyor. Onu
kullanabilirsiniz.
ICQ'ya
Mesaj Gönderme
Turbopower iPro (Internet Pro) paketi içinde pager
bileşenleri vardı. Bu bileşen ile mesaj atabilirsiniz.
Office XP Tarzı Menüler Oluşturmak
1. Güzel bir menü
bileşeni olan Toolbar 2000 ve
eklentisi TBX ile de yapabilirsiniz. İkisi de bedava.
www.jrsoftware.org
2. XP menu bileşeni ile yapabilirsiniz. O da bedava. Normal menu ve
formlarla tasarımı yapıp, bu bileşeni forma koyduğunuz anda çalışma anında herşey
XP tarzı oluyor.
Show ile ShowModal
Arasındaki Fark
Show ile açarsanız formu kapatmadan başka formlara
ulaşabilirsiniz, mesela ana form. Ama ShowModal ile açarsanız, arka planda kalan
diğer formlara ulaşamazsınız.
Netmaster Paketinde Yer Alan NMSMTP Bileşenini Delphi 7'de
Bulamıyorum?
Netmaster paketi artık Delphi ile dağıtılmıyor ve
Delphi 7 ile de gelmiyor. Yeni kullanacaklar için, ileriye doğru sıkıntı
olmaması için Indy kullanmanızı öneririm. Yarın birgün Delphi'nizi yenilerseniz,
kodları değiştirmeniz gerekmez.
.mp3 Dosyalarını
Çalma
Windows'un çalabildiği tüm ses dosyalarını System tabındaki MediaPlayer
bileşeni ile çalabilirsiniz. Ayrıca PlaySound API'si ile de çalma işlemini
gerçekleştirebilirsiniz.
Ağ üzerinde Mesaj Gönderme (net send, winpopup gibi)
Windows işletim sistemlerinde ağ üzerindeki bilgisayarlar birbirlerine mesaj
atabilirler. Windows NT/2000/XP'de bunun için "net send" komutu kullanılır.
Windows 9x'te ise Winpopup isimli program kullanılır.
Delphi'de yazacağınız program içersiniden bu tarz
mesaj atmak için, bedava olarak dağıtılan
TurboPower
SysTools paketi içerisindeki stNetMessage isimli bileşeni kullanabilirsiniz.
Farklı Ekran Çözünürlüklerinde Formların Düzgün Gözükmesi
Align ve Anchors özelliklerini kullanarak
formlarınızın farklı ekran çözünürlüklerinde en iyi şekilde görünmesini
sağlayabilirsiniz. Form
üzerine birkaç bileşen koyup, bu özellikleri değiştirerek görsel olarak olayı
anlayabilirsiniz.
Align : bileşenin duracağı yeri belirler. Mesela bir panelin Align özelliğini
alBottom verirseniz, pencereyi naparsanız yapın, panel hep ekranın altında kalır.
Anchors : bileşenin hangi kenara göre kendini ayarlayacağını belirler. Mesela
sadece [akRight] derseniz, sağ kenara göre aradaki uzaklık sabit kalacak şekilde
kendini ayarlar. Mesela sağ kenardan 100 birim uzakta ise, formu büyütünce ve
küçültünce yine
sağ kenardan 100 birim uzakta kalır.
System.pas not found
Hatası
Delphi'de programı derlemek için gerekli olan unitlerin Library Path'te
tanımlı olması gerekir. Delphi uniti proje klasöründe bulamazsa bu klasörlere
bakarak uniti bulur ve programı derler.
Bazen bu Library Path tanımı silinebiliyor. Buna da genellikle bozuk
ayarlanmış bileşenleri kurmak neden oluyor. Delphi'nin eski sürümlerinde eğer bu Library Path tanımı çok uzunsa yine
problem çıkıyordu. Bunu sonraki sürümlerde düzelttiler.
Bu hatayı düzeltmek için ilgili unitin bulunduğu klasörleri Library Path'e
eklemeniz gerekir. Örneğin system.pas not found hatası almışsanız :
1. Diskinizde "system.dcu" dosyasını aratın ve bulunduğu klasörü tespit edin.
2. Tools -> Environment Options komutunu verin.
3. Library sekmesine geçin.
4. Library Path'in yanındaki ... butonuna tıklatın.
5. Açılan pencerede yine ... butonuna basıp, system.dcu dosyasının bulunduğu
klasörü seçin.
6. Add butonuna tıklatıp klasörü listeye ekleyin.
7. OK'leyerek pencereleri kapatın.
Bu hatanın önüne geçmek içinde birkaç önerimiz var :
1. Her önünüze gelen bileşeni yüklemeyin. Bozuk bileşenler Delphinizin
düzenini ciddi manada bozabilir.
2. Yüklediğiniz ve kullanmadığınız bileşenler varsa silin ve klasörünü Library
Path'ten kaldırın.
3. Bileşen kurmadan önce Library Path bilgisini
copy-paste ile bir text dosyaya kaydedin. Problem çıkarsa, tekrar copy-paste ile
yapıştırsınız, tek tek seçmek için uğraşmazsınız.
4. $Delphi alias'ını kullanabilirsiniz. Bu Library Path'te kullanabileceğiniz
geçerli bir yazımdır ve Delphi klasörünü gösterir. Yani $Delphi = C:\Program
Files\Borland\Delphi7'dir. Tabi bu kurduğunuz klasöre göre değişebilir.
Banker (parasal) Yuvarlaması
Parasal değerlerde bazen normal yuvarlama yerine 3-4 basamak birden yuvarlama
yapmanız gerekebilir. Mesela 15.557.850 TL tutan bir ücreti 100 binlik bir
hassasiyet ile yuvarlayarak 15.600.000 TL yapmak isteyebilirsiniz. İşte bunu
RoundTo fonksiyonu ile yapabilirsiniz :)
Ekranları XP Görünümlü Yapmak
Delphi 7 içinde XP Manifest diye bir component var.
Onu ana forma koyarsanız herşey XP görünümü çıkar. XP Manifest'in herhangi bir
ayarı yok. Bileşeni ana forma koyun. Programı
Windows XP'de çalıştırırsanız, program XP arayüzü ile açılır. Eğer diğer
işletim sistemlerinde çalıştırırsanız, normal arayüzle çalışır.
Eğer daha önceki bir Delphi sürümü kullanıyorsanız, bedava olarak dağıtılan XP
Menu isimli bileşen ile bu işi yapabilirsiniz :
www.torry.net ten indirebilirsiniz.
Delphi'de zip
Sıkıştırma Formatını Kullanma
Turbopower Abbrevia
ile zip, Microsoft CAB, tar ve gzip formatlarını kullanabilirsiniz.
.exe Dosyaların Boyutunu Küçültmek
Eğer sık sık program güncelliyorsanız ve bunuda internet gibi bir ortamdan
dağıtıyorsanız .exe dosyanın boyutu bazen sıkıntı olabilir. .exe dosyanın
boyutunu %99'lara varan oranda küçültme için .bpl'leri kullanabilirsiniz. Bir
denememde 4 MB'lık bir dosyayı 40 KB'ye düşürdü.
Project - Options - Packages kısmındaki Built with
runtime packages seçeneğini işaretleyin ve bu şekilde derleyin. Bir de bu seçeneğin hemen altında ismi yazan
bpl'leri programı yüklediğiniz bilgisayarın Windows\System32 klasörüne bir sefer
kopyalamanız yeterli.
QuickReport'ta sayfaların
altına sayfa numarasının yazdırılması
1. Eğer sadece sayfa numarasının gösterilmesini
istiyorsanız QrSysData isimli bileşen ile yapabilirsiniz. Bu bileşeni Qr üzerine
koyun ve Data özelliğinden qrsPageNumber'ı seçin.
2. Eğer sayfa numaralarını sayfa/toplam sayfa
sayısı şeklinde yazdırmak istiyorsanız, sayfa numarasını yazdırmak için yine
QrSysData'yı kullanın. Yanına bir QrLabel koyup, raporu yazdırmadan önce toplam
sayfa sayısını hesaplatıp, başına / işaretini de koyarak yazdırın. Toplam sayfa
sayısını hesaplatmakla ilgili kod bu sayfada yukarlarda var.
bimeks borland component database delphi delphi.net delphi dersleri firebird help interbase makale oracle
seminer software sybase veritabanı web