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 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;
3 boyutlu yazımız hazır. Label'ların renkleriyle ve yerleriyle oynayarak çeşitli efektler verebilirsiniz. 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. Help menüsünden About kısmına girin. Alt tuşuna basarak aşağıdakileri yazın. Alt+TEAM 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); 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. 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. 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. 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); 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 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); 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. 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. 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. Bu iş için ParamCount ve ParamStr'yi kullanabilirsiniz.
ParamCount : verilen
parametre sayısını 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; 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, 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] 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); Kullanımı : ConvertWMF2BMP('c:\mypic.wmf', 'c:\mypic.bmp') Bitmap'i (.bmp) Windows Metafile'a (.wmf') çevirme procedure ConvertBMP2WMF (AImage: TImage;
FileName: String); Kullanımı : ConvertBMP2WMF(Image1, 'c:\mypic.wmf'); // bitmap resim image1'de yüklü. Bir ColorDialog, bir label ve bir buton koyup aşağıdaki kodu yazın. procedure TForm1.Button1Click(Sender: TObject); 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. 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 işini bedava olarak dağıtılan TurboPower Async Pro ile yapabilirsiniz. Examples klasöründe örnekleri var 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.
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/ 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 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. 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.
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.
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. 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 :)
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. 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.
|
|||||||||||||||||||||||||||||||