• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Delphi İpuçları !

Üyelik Tarihi
7 Ocak 2015
Konular
4,091
Mesajlar
4,274
MFC Puanı
40
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 Torry's Delphi Pages 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 : jrsoftware.org // Jordan Russell's Software , istool : ISTool | Free System Administration software downloads at SourceForge.net

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-****phors.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 : Login to customers control panel | FastReports

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 : Login to customers control panel | FastReports

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 : Torry's Delphi Pages

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.Crea te('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 ****file'ı (.wmf) bitmap'e (.bmp) çevirme

procedure ConvertWMF2BMP (const WMFFileName, BMPFileName: TFileName);
var
****File : T****file;
Bitmap : TBitmap;
begin
****file := T****File.Create;
Bitmap := TBitmap.Create;
try
****File.LoadFromFile(WMFFileName);
with Bitmap do
begin
Height := ****file.Height;
Width := ****file.Width;
Canvas.Draw(0, 0, ****File);
SaveToFile(BMPFileName);
end;
finally
Bitmap.Free;
****File.Free;
end;
end;


Kullanımı : ConvertWMF2BMP('c:\mypic.wmf', 'c:\mypic.bmp')

Bitmap'i (.bmp) Windows ****file'a (.wmf') çevirme

procedure ConvertBMP2WMF (AImage: TImage; FileName: String);
var
Wmf : T****file;
WmfCanvas: T****fileCanvas;
begin
Wmf := T****file.Create;
try
//Must set width + Height before creating the canvas
Wmf.Width := AImage.Picture.Bitmap.Width;
Wmf.Height := AImage.Picture.Bitmap.Height;

WmfCanvas := T****fileCanvas.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 FTDI Chip Home Page

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. jrsoftware.org // Jordan Russell's Software

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 : Torry's Delphi Pages 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. k.gelsin iyi çalısmalar
 
Üst