Delphi

Delphi MS-DOS’un sıkıcı siyah-beyaz kıyafetlerini çıkartıp, o cıvıl cıvıl Windows kullanıcı arayüzünü giymesiyle Pascal’da kendine yeni bir imaj arayışına girişti. Pascal 7.0 ile gelen Object Pascal ve TWin kütüphanesi bu yeni pencereler dünyasında kendisine bir yer aradıysada Pascal bu yeni dünyadaki asıl patlamasını Delphi 1.0 ile gerçekleştirdi, bunu 32 bitlik sürümü Delphi 2.0 izledi ve daha sonra Windows 95/NT sürümü olan 3.0 ile bu yerini iyice sağlamlaştırdı. Şu anda piyasada en son olarak 4.0 sürümü bulunmakta. Bu alandaki en ciddi rakiplerinden biri olan Visual Basic’e göre piyasada yüzünü göstermekte biraz geç kalmasına rağmen bir çırpıda rakibinin önüne geçip bir çok uygulama geliştiricinin tercihi haline gelmeyi bildi. Delphi ders notları bu programlama dilini daha önceden hiç bilmeyenlere bir başlangıç şansı vermesi açısından yararlı olacaktır. Class Nesneye Dayalı (Object Oriented) programlamada belli bir işlevi yerine getirmesi için kurulmuş, fonksiyonlardan ve verilerden oluşan yapıya class(sınıf) denir. Property Bir class’ın belli özelliklerinin sakladığı ve kullanıcı tarafından değiştirilmesine veya kontrol edilmesine izin verilen değişkene property(özellik) denir. Event Programın çalışması sırasında dışarıdan girişlere göre değeri değişen özel property’lere event(olay) denir. Method Bir class üzerinde çalışan procedure ve fonksiyonlara method(metod) denir. Component Görsel bir programlama dilinde belli bir işlemi yapmak için tasarlanmış property, event ve methodlar içeren küçük program parçasına component(bileşen) denir. Form Görsel bir programlama dilinde program yazarken kullandığımız her türlü komponenti, üzerine yerleştirebildiğimiz ve programımızın kullanıcı ara yüzünü oluşturduğumuz pencerelere form denir. Delphi Sürümleri Delphi piyasaya üç sürüm halinde sunulmaktadır: Standart , Profesyonel ve Client/Server Suite. Borland (yeni adıyla Inprise) bu sürüm çeşitlerini her ürününde kullanmaktadır. Standart Sürüm: Bu sürüm Delphi ile yeni tanışanları hedefliyor. Bu sürüm Delphi ile Windows programları yazmak için gereken tüm özelliklere sahip.Standart sürümü kullanıyorsanız InstallShield, Database Explorer, Visual Query Builder gibi araçları kullanamazsınız. Profesyonel Sürüm: Bu sürüm profesyonel programcıları hedefliyor. Standart sürümün özelliklerinin yanında aşağıdaki özellikleri de içeriyor (Delphi 3 için): 1. VCL’nin kaynak kodu 2. InstallShield Express 3. Database Explorer 4. TChart bileşeni 5. ActiveX ve ActiveForm geliştirme desteği 6. Internet Solutions Pack 7. ODBC Bağlantısı 8. Open Tools API’si Client/Server Suite: Bu sürüm client/server (istemci/sunucu) uygulamaları geliştiren programcıları hedefliyor. Bu sürüm Profesyonel sürümün tüm özelliklerinin yanında aşağıdaki özellikleri de içeriyor. 1. Decision Cube CrossTab bileşeni 2. Çok Geniş bir Web hizmet birimi desteği 3. Doğal Client/Server BDE bağlantısı için SQL Links 4. BDE Driver Development Kit 5. SQL Monitor 6. Visual Query Builder 7. CASE Tool Expert 8. Data Pump Expert Delphi 5 · Delphi 5 Enterprise · Delphi 5 Professional · Delphi 5 Standart · Delphi 5 Yenilikler Delphi 5 Enterprise Delphi 5 Enterprise internet ve dağıtık hesaplama için yüksek üretkenlik çözümüdür. Delphi’nin InternetExpress’i, e-ticareti destekleyen, esnek, yayılabilen sistemleri oluşturmak için HTML 4 ve XML’i kullanan Web Client Page Wizard’ı, dağıtık HTML uygulamaları oluşturmak için MIDAS PageProducer ve WebBroker’ı içerir. ADOExpress ile her türlü bilgiye hızlı erişim kazanırsınız ve TeamSource ile bütün geliştirme takımınızın üretkenliğini arttırabilirsiniz. CORBA, COM ve MTS gibi bütün dağıtık hesaplama standartlarını kullanan MIDAS’ı kullanarak internet uygulamalarınızı arttırabilirsiniz. 200’ün üstünde tekrar kullanılabilen bileşenleri ve kaynağıyla birlikte Visual Component Library kullanan güvenilir uygulamaları oluşturabilir, hata ayıklayabilir ve programlarınızı yayabilirsiniz. Kilit veritabanı sistemleri oluşturmak için Interbase Express’i kullanabilirsiniz. Ayrıca bu paket InterBase, MS SQL, Informix, Sybase ve Oracle için Native SQL Link’leri içermektedir. Delphi 5 Professional Delphi 5 Professional, web ve veritabanı uygulamaları oluşturmak için en hızlı, en üretken Windows geliştirme aracıdır. Delphi 5 Professional , profesyonel IDE, WebBroker, Native Internet Components, InterBase Express ve güvenilir hata ayıklama araçlarını içerir. Project Browser, Code Explorer ve Data Module Designer görüntüleriyle kodunuzu anlayabilir ve araştırabilirsiniz.İşiniz için bileşenleri Frame’ler ile görsel olarak oluşturabilirsiniz. MS Office otomasyon kontrolcülerinin tamamını içeren COM nesne ve sunucularını oluşturup yeniden kullanın. Delphi 150 tekrar kullanılabilir bileşeni ile üretkenliği arttıtır ve bütün uygulama evresini yönetir. Güvenilir uygulamaları pazara daha hızlı getirmek için dünyanın en hızlı 32-bit derleyicisini ve Advanced Project Manager’ i kullanır. Delphi 5 Standard Delphi 5 Standard , sürükle ve bırak görsel programlama, örnekler ve 85’in üstündeki tekrar kullanılabilir bileşenli Visual Component Library ile Windows altında uygulama geliştirmeyi kolaylaştırır. Kolay ve çabucak Word, Excel, PowerPoint ve Outlook için MS Office bileşenleri gibi COM nesnelerini otomatikleştiren Windows uygulamaları oluşturabilir, hata ayıklayabilir ve yayabilirsiniz. Kodu sizin için tamamlayan CodeInsight Wizard’ı kullanabilir, Tek bir satır kod yazmadan tekrar kullanılabilir bileşenleri oluşturmak için Componenet Template’leri kullanabilirsiniz. Artı Microsoft Windows 95 ve Windows NT, Win32 API, COM, ActiveX ve OLE Automation’ı içeren endüstri standartları için tam destek hakkı kazanın. Geliştirme ortamınızı tamamen kişiselleştirmek için Dockable Toolbars ve Dockable Windows’u bu pakette kullanabilirsiniz. Delphi 5 Yenilikler XML: Delphi 5, veri dağıtımını ve değişimini kolaylaştırır! Verilerinizi web’e çabucak ulaştıran yüksek hızlı Internet uygulamaları geliştirebilirsiniz. Delphi’nin XML veri desteği esnek olduğu için internetteki e-ticaret’i desteklemek için genişletilebilir sistemleri kurmanızı sağlar. HTML 4 : Web için nitelikli Dynamic Thin-client Delphi 5, HTML 4 ve XML kullanan dinamik ultra-thin istemciler kurmanız için ihtiyacınız olan gücü getiriyor. Bu size nitelikli ve isteklerinize yanıt veren istemci uygulamalarını Internete hızlı yayma olanağı tanır. ADO: Bütün bilgi kaynaklarına hızlı erişim. Delphi 5 e-posta ve dosya sistemleri de dahil olmak üzere her türlü veri tabanına hızlı erişim sağlar. Microsoft’un ActiveX Veri Nesnesini ve OLEDB teknolojisini kullanarak son-kullanıcılarınızın daha iyi ticari karar vermeleri için ihtiyaç duydukları veri evrenine anında erişim kazanabilirsiniz. Delphi’nin açık veri bileşenlerini kullanarak, kısa zamanda ticari verilerinizi internette müşterilerinize, son kullanıcılarınıza ve bütün hedef kitlenize götüren sistemler kurabilirsiniz. ADO son kullanıcınızın istemci işletim sisteminin standart bir parçası haline geldiğinden, programlarınız kolayca yayılabilecek. InterBase Express: Yüksek performanslı sistemler InterBase Express ile, VAR’lar, SI’lar ve ISV’ler programları, çabuk dağıtılabilen yüksek performanslı sistemleri inşa edebilirsiniz. Delphi ve InterBase ile, yüksek üretkenlik, yüksek performanslı geliştirme yapabilirsiniz. Ayrıca yüksek hızlı, az bakım isteyen, small-footprint ilişkisel veri tabanı birleştirilmiştir. Interbase Express ile mükemmel gömülü sistemler oluşturmak için artık Borland Database Engine ile geliştirme ve dağıtma yapmanıza gerek kalmayacak. TeamSource: Bütün geliştirme takımınıza üretkenlikte cesaret verin Delphi 5 ile bütün takımınız, birlikte daha iyi ve daha hızlı çalışacak. TeamSource kaynak kodunuzu yönetim biçiminizde bir devrimdir. TeamSource, varolan kaynak kodu yönetiminizin ve sürüm motorunuzun üzerinde oluşturulur ve bunları büyük dağıtık takımlar için kaynak kodu yönetimini basitleştiren yüksek üretkenlikli iş akışı modeli ile yayar. Borland Çeviri Takımı: Dünya çapında yeni pazarları keşfedin! Delphi 5 ile, programlarınız için pazar bütün gezegeni kapsayacak şekilde büyümüştür. Borland Çeviri Takımında programlarınızı yeni dil ve kültürler için hızlı bir şekilde globalleştirmek veya yerelleştirmek için ihtiyacınız olan herşey mevcut. Programlarınızı daha hızlı pazarlayabilmek için aynı anda birden fazla bölge için geliştirebilirsiniz. Delphi, kaynakların tercümesini yönetir ve uluslarası geliştirmenizi ivmelendirmek için çevrilmiş nesnelerin bir örneğini tutar. MIDAS: Internet uygulamalarınız için ölçülebilirlik. MIDAS ile Internet tabanlı uygulamaların taleplerini karşılayan sistemler inşa edebilirsiniz. MIDAS işlem hacminizin ölçüsü programları dağıtmak için Delphi’nin yüksek üretkenliği üzerine inşa edilmiştir. Son kullanıcı sayısını arttırır. Çok sayıda web tarayıcısı istemcilerinin , internetteki veya intranet inizdeki Windows istemcilerinin kolaylıkla üstesinden gelebilecek Internet uygulamalarını oluşturabilirsiniz.MIDAS, varolan sistemleriniz ile e-ticaret uygulamalarının birleştirilmesini kolaylaştırmak için CORBA, COM ve MTS gibi bütün dağıtık hesap standartlarını kullanır. MIDAS’taki birçok yeni özellikten bazıları: · Mobil ve düşük bant genişliği durumlarında daha fazla kontrol için Stateless DataBroker · Programlarınızı firewall’un dışına güvenli bir şekilde taşıyabilmek için WebConnection bileşenleri · Geliştirilmiş ölçülebilirlik için sunucu nesne havuzlama IDE: Geliştirici için yüksek üretkenlik. Delphi 5 IDE, kodu okuma, yazma ve araştırma işlemini kolaylaştırarak geliştiricinin üretkenliğini yüksek ölçüde artırır. Kod editörü bir ünite içinde veya ilişkili üniteler arasında gezinmeyi kolaylaştırır. Proje yöneticisindeki Sürükle ve Bırak desteği herhangi bir açık projeden veya Windows Gezgini dosya diyalogundan projeye dosyaları eklemeyi kolaylaştırır. Proje yöneticisinin çoklu proje desteğini kullanarak, EXE ve DLL dosyaları gibi birden fazla hedefte kolay derleme yapabilirsiniz. Delphi’nin görsel form dizayncısı ile hızlı bir şekilde Internet, dağıtık hesap ve Windows uygulanmalarını görsel olarak bir panelden bileşenleri seçerek oluşturabilirsiniz. Delphi 5 birçok yeni özellik ve VCL’e artırımlar içerir: · Geliştirme ortamınızın daha fazla kontrolü için kişiselleştirilebilen Masaüstü Ayarları · Editörü çalışma şeklinize göre ayarlayabileceğiniz Editor Key mapping · Kodunuzu daha iyi anlamak ve VCL’i taramak için proje çapında araştırma · Programınızda verinin ayrıntılı anlatılabilirlik kazanması için Tree ve Data Diagram View ile DataModule Dizayncısı · Proje yöneticisi ve derleyicisi için bütünleşmiş RC Dosyaları · Uygulamanızın takvimini tutmak için Yapılacaklar listesi · Programınızın özelliklerini ayarlamak için Denetim Masası Visual Component Library: Kod tekrar kullanımında son nokta Delphi ile güvenilir ve verimli uygulamalar oluşturmak için nesne tabanlı uygulama gücünü, kendi yararınıza kullanırsınız. Delphi’nin ispatlanmış nesne tabanlı bileşen yapısı ile kendi bileşenlerinizi inşa edin. Delphi 5 (Delphi Enterprise’da) 200’ün üstünde Internet ve Windows uygulamalarınız için pazarlama hızını dramatik arttıran bileşenleri içeren Visual Component Library içerir. Yeni Frame özelliği ile işiniz için görsel olarak bileşenler inşa edeceğinizden üretkenliğiniz artacak. Kaynak koda açık erişim ile VCL’ in şıklığını keşfedeceksiniz. (Şimdi Decision Cube bileşenleri ve ek Property Editors için ek kaynak kod içerir). Delphi ile bileşen tabanlı geliştirme, Windows ya da Internet uygulamaları gibi en zor geliştirme görevlerini basitleştirir. Delphi 5 VCL ile ilgili birçok yeni özellik ve artırımlar içerir: · Karmaşık bileşenler derlemek ve inşa etmek için Frameler · Uygulamanızla HTML arattırmayı birleştirmek için WebBrowser bileşeni · Word, Excel ve Outlook gibi Office uygulamaları ile kendi programlarınızı hızlı bir şekilde entegre etmek için MS Office otomasyon bileşenleri kümesi · Öğrenme ve üretkenliği arttırmak için Property Category’ler · Özellik seçeneklerini basitleştirmek için Property Editor’ünde Owner Draw desteği · Windows API üzerinde daha fazla kontrol için Advanced Custom Draw fonksiyonlarına geliştirilmiş destek Karmaşık projeleri pazara daha hızlı taşımak için gelişmiş hata ayıklama Delphi ile, en karmaşık projelerde bile hataları bulmak ve ayıklamak daha önce hiç daha basit olmamıştı. Delphi’nin geliştirilmiş hata ayıklayıcısı kodunuzun ne yapacağını anlamanıza ve kontrol etmenize yardımcı olur. Breakpoint’ler ile kodda istediğimniz noktada yoğunlaşabilirsiniz. Şimdi breakpoint’te yapılması gereken işi ayarlayıp breakpoint’leri gruplayarak kodunuzun ilgilendiğiniz bölümlerini çabucak hata ayıklayabilirsiniz. Delphi 5 hata ayıklayıcısı için birçok yeni özellik ve artırımlar içerir: · Pano ve sürükle ve bırak desteği de dahil olmak üzere, editör ile hata ayıklama pencerelerinin entegrasyonu ve kolay kullanılabilirlik · Daha hızlı araştırma için Breakpoint ToolTip’leri · Hata ayıklama işlemi üzerinde daha fazla kontrol için Breakpoint Action’ları · Birden fazla breakpoint’i daha kolay kontrol için Breakpoint Groups · DCUlar ve Hata Ayıklama sembol arama yolları ile daha kolay hata ayıklama · Artırılmış düşük seviyeli hata ayıklama için MMX desteğiyle birlikte FPU görüşü · Çok-işlem hata ayıklama · Merkezileşmşt çok-işlemli hata ayıklama için Temporary Process Option’ları · İşlem sınırlarını geçmek için Çapraz işlem hata ayıklama · Üretilmiş işlemleri ayıklama · Çalışan işleme ekleme yapma ve hata ayıklama Kullanıcı Arayüzü Borland (Inprise) program yazılan ortamlarını, ürünlerinde IDE diye tanımlar. IDE: Integrated Development Environment (Tümleşik Geliştirme Ortamı) Delphi’de çalışma ortamı Menu Bar, SpeedBar, Component Palette, Form, Object Inspector ve Code Editor arayüzünden oluşur. Çalışma ortamını anlamadan iyi bir program yazılamaz. Bu yüzden IDE’yi iyi anlamak gerekir. Şekil 1. IDE Delphi Tümleşik Geliştirme Ekranı Ana Menü Tüm windows uygulamalarında olduğu gibi Delphi’de menü programcı için en önemli araçtır. Delphi ana menüsünü kullanarak neler yapacağımıza bir gözatalım. Şekil 1. Delphi Ana Menüsü Delphi Ana Menüsü kullandığınız sürüme göre farklılıklar gösterebilir biz örneğimizde Delphi 3 Client/Server sürümü kullandık. File File menüsü altında delphinin en temel işlemleri olan yeni proje yaratma, varolan bir projeyi çağırma, kaydetme veya kapatma bu menüden yapılmakta. Şimdi bu menüyü daha yakından inceleyelim. New New seçildiğinde ileride anlatacağımız Yeni Bileşenler (New Items) ekranı gelir. New Application, New Form, New Data Module Bunlar sırasıyla yeni bir uygulama, yeni bir form ve yeni bir Veri Kaynağı yaratmak için kullanılırlar. Save, Save As, Close, Print, Exit Temel windows uygulamalarında da sıkça kullanılan bu menü komutları Delphi’de benzer şekilde kullanılırlar. Save Project As Projeyi başka bir isimle kaydetmek için kullanılır. Save All, Close All Bunlar sırasıyla o anda açık olan proje, unit, form, vb. herşeyi kaydetmek veya kapatmak için kullanılırlar. Use Unit Bir unit’in başka bir unit’i tanıyabilmesi için o unit’e "uses unit_ismi" şeklinde bir satır ekler. Add to Project, Remove From Project Bu menü komutları bir projeye yeni bir unit eklemek veya projeden bir unit çıkartmak için kullanılırlar. Delphi İçin Buton Efektleri (Web Türü Buton) Web türü buton yapmanın amacı bildiğiniz gibi delphinin standart buttonları genellikle klasik programlar için kullanılır . Şimdi yapacağımız button kendi çizdiğimiz 3 resimden oluşuyor. Öncelikle 3 adet aynı boyda aynı textli button çizin. 1. Resim ; buttonun Sabit yani Form üzerindeki duruşudur 2. Resim ; Programımız çalışırken mouse ile aynı buttonun üzerine geldiğimize buttonun alacağı şekil olacaktır. 3.Resim ; Programımız çalışırken yaptığımız button tıklanınca alacağı şekildir. Dikkat ettiyseniz bu taktik HTLM (Web ) için button hazırlanması taktiği ile aynıdır. Şimdi bu taktiği kullanmaya başlayalım . Öncelikle Form üzerine Image kontrolünü ekleyelim ve resim olarak yaptığımız 1. resmi ekleyelim. Şımdi sıra Programımıza değişken tanımlayalım; SetMouse : boolean; Değişken tanımlama işimiz bitince Image Mouse Down olayına aşağıdaki kodları yazınız procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SetMouse := true; //Mouse Resmin üzerinde Basık olduğunu anlamamız için image1.Picture.LoadFromFile(’start-3.bmp’); //Mouse Click Durumunda end; Daha Sonra image Mouse Move Olayına aşağıdaki kodları yazınız procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin image1.Picture.LoadFromFile(’start-2.bmp’); //Mouse Buttonun üzerine gelince buttonun alacağı şekil if SetMouse then image1.Picture.LoadFromFile(’start-3.bmp’); //Mouse Click Durumunda Buttonun üzerindeki şekil end; Mouse button üzerinde click vaziyetinde olup olmadığını değişkene aktarmak için Image Mouse up olayına aşağıdaki kodu yazınız procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); begin SetMouse := false; //Mouse Click Durumunda Değil end; Button Görüntüleri Tamamlandı şimdi Click Yordamını yapalım. Image Click olayına aşağıdaki kodu yazınız . procedure TForm1.Image1OnClick(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin image1.Picture.LoadFromFile(’start-3.jpg’); ShowMessage(’Button Tıklandı ’); end; Buttonla olan işimiz bitti Mouse buttonumuzun üzerinde olmadığı zaman için mouse şeklini yapalım bunun için Form Mouse Move Olayına Aşağıdaki kodları yazınız. procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin image1.Picture.LoadFromFile(’start-1.jpg’); end; Ve işlemimiz bitti. Programınızda birden fazla Bu tür button koymanız için Bütün buttonlar için aynı işlemi yapınız. Form Mouse Move olayına her button için yukarıdaki program satırını yazınız. Örnek: procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin image1.Picture.LoadFromFile(’Connect-1.jpg’); image2.Picture.LoadFromFile(’DeConnect-1.jpg’); image3.Picture.LoadFromFile(’Atack-1.jpg’); image4.Picture.LoadFromFile(’Exit-1.jpg’); end; şeklinde yapınız . Bildiğiniz gibi Web’ de bu taktiği kullanmamız için Button için yaptığımız resimlerin HTLM de belirtilen Dizinde olması gerekir .Yani Bizim yukarıda yaptığımız olayda resim dosyalarının yerini belirtmememizin amacı resim Button Resim Dosyalarının Program ile aynı dizinde olmasıdır. Bu yüzden sorunun ne olduğunu anladınız galiba yani program bu açıktan dolayı kullanıcı tarıfından değiştirilebilir. Winamp MP3 çalıcıyı bilirsiniz . Winamp SKIN’nin ne olduğunu da biliyorsunuz sanırım , Yani demek istediğim Winamp SKIN’de de bu taktik kullanılmıştır . Aslında bu sorun değil , çünkü bu olayı IMAGE LIST Kontrolü de yapar. IMAGE LIST bir Olay için kullanılan birden fazla resim için kullanılan resim dosyaları olmadan programın bağımsız çalışması için kullanılır. IMAGE LIST Delphinin Win32 sekmesinde bulunur . Gif taktiğine benzer bir taktikle çalışır, biraz incelerseniz kolaylıkla kullanabilirsiniz. Bu arada Delphinin Additional sekmesinde bulunan BitBTN kontrolüyle de buna benzer ama kolay Button kullanabilirsiniz. Delphiye Yeni Bir Bileşen Delphi’ye yeni bir bileşen (component) ilave etmek için; eğer ilk kez ilave ediyorsak; Component | Install Component menüsünü kullanabiliriz. Bu işlem yapılıp onay verildikten sonra bileşen Delphi’ye derlenecek ve Dclusr30.dpk ismi ve "Delphi User Components" takma adı ile yeni component’lerinizi ilave edebilmeniz için bir component paketi oluşturulacaktır. Bundan sonra yeni bir component ilave etmek Component | Install Packages menü adımından yapılmalıdır. Bu adımı takip ettiğimizde karşımıza Delphi üzerinde bulunan component paketleri listelenecektir. Bu kısımda takma adı "Delphi User Components" yazan paketi işaretleyip Edit tuşuna basmalısınız. Çıkan pencerede "Compile, Add, Remove, Options, Install, Update" gibi button’lar göreceksiniz. Bu button’lardan "Add" button’u yeni bir component’i ilave edeceğimiz manasını taşır. Component’i ilave ettikten sonra Delphi’ye tanıtabilmemiz için Compile button’una basmamız gerekir. Delphi tam bu aşamada component’in "Register" procedure’ünün altında bulunan "RegisterComponents" in içindeki palet adını alarak component’inizi o sayfanın altına koyar. Ayrıca Dclusr30.Dpl adlı bir dosyayıda oluşturur. Bu pencerede gördüğümüz Options kısmından pek çok değişiklik yapılabilmektedir. Bunların başyıda "Delphi User Components" olan başlık bilgisi istediğiniz bir ifade ile değiştirilebilir. Windows API Windowsda hemen hemen her görsel bileşen bir penceredir ve her pencerenin Windows’un aklında tuttuğu bir tutacağı vardır.Buna programcılık ortamında "Handle" denir. Bu tutacak (Handle) vasıtası ile görsel olan tüm kontrollere erişebilirsiniz ve onları istediğiniz gibi kontrol edebilirsiniz. Esas problem bu penceresel denetimin tutacağını (handle) nasıl bulacağımızdadır. Bunun için Windows API’nin içinde FindWindow ve FindWindowEx adlı fonksiyonlar mevcuttur. Bu fonksiyonlar herhangi bir pencereye başlığı (caption) yada sınıf adı ile erişip geri dönüşte de pencere tutacağını döndürürler.Bu sayede penceresel denetimlere istenilen yaptırılabilir. Bazı penceresel denetimlere sınıf adı ile erişmek gerekir. Çünki bazılarının başlık bilgileri mevcut değildir.Örneğin TaskBar için bir başlık bilgisi yoktur. Öyleyse TaskBar ve onun gibi başlık bilgisi olmayan penceresel denetimlere nasıl erişeceğiz. Bunun için benim sizlere tavsiyem Borland Delphi ile gelen WinSight programını kullanmanızdır. Bu program vasıtası ile Windows altında o anda çalışan programların tutacaklarını, sınıf adlarını, çocuk pencerelerinin ad ve tutacakları gibi gerekli bilgileri elde edebilirsiniz. Windows mesajların gelip gittiği bir işletim sistemidir. Şimdi mesaj kavramını biraz açıklamak gerekir. Mesaj herhangi bir programın, görsel yada görsel olmayan tüm Windows kontrollerinin ne yapması gerektiğini yada ne yaptığını anlamamızı sağlayan bir yapıdır. Windows bir mesajlar hiyerarşisinden oluşmuştur. Windows’ta olup biten herşeyin bir mesajı vardır. Örneğin bir button’un üzerine gelmek, onun üzerinde mouse ile dolaşmak, sağ kliklemek, sol kliklemek, aktif pencereyi değiştirmek, herhangi bir tuşa basmak, herhangi bir tuşu bırakmak bunların hepsi aktif pencereye dolayısıyla İşletim sistemine gönderilen mesajlardır. Örneğin herhangi bir pencere üzerinde bir tuşa basarsanız Windows hemen bir Wm_Keydown, Wm_Char vb. mesajları uygulama penceresine gönderecektir. Yani bir mesaj oluşturacaktır. Bu mesaja bağlı bir kodunuz mevcut ise o olay oluştuktan (yani mesaj gönderildikten) sonra var olan kod çalıştırılacaktır. Windows’un API yardımında "Wm_" kelimesi arattığınızda mesajlar hakkında daha detaılı bilgi bulabilme imkanına sahip olursunuz. Bazı durumlarda Windows’u mesaj konusunda zorlamak gerekir. Gerçekte olmayan bir olayı Windows’a olmuş olarak nasıl gösterebiliriz...? Örneğin yaptığımız bir programın olay yöneticilerinden bir tanesinin tuşa basma olayına yönlendiğini düşünelim. Yani programımızın aktif formunun üzerinde klavye’nin herhangi bir tuşuna basılınca herhangi bir olayın gerçekleşeceğini düşünelim. Bu gibi bir durum sözkonusu iken başka bir uygulama aktif durumdayken acaba bu isteğimizi nasıl gerçekleştireceğiz..? Yine bu iş için Windows’un API fonksiyonlarından iki tanesini anlatmak isterim. Bunlardan birincisi SendMessage, ikincisi PostMessage fonksiyonlarıdır. Bu fonksiyonlar Windows ortamına harici mesajlar gönderebilmenizi sağlar. SendMessage fonksiyonu ile Windows ortamına gönderilen mesajlar "Message queue" adı verilen mesaj kuyruğunun en sonuna atılır ve en üstteki mesajdan en alttakine doğru işletim sistemince sıra ile işlenir. Bu fonksiyon vasıtası ile gönderilen mesajların aktivasyonunu görmek biraz geç olabilir ama daha sağlıklıdır. PostMessage fonksiyonu ise Windows Mesaj kuyruğunun en başına yerleşir. Yani mesaj gönderilir gönderilmez aktif hale geçer ve etkisini kısa bir zaman içinde görebilirsiniz. Şimdi kısa bir örnek verelim.. 1. Eğer winsight programınız var ise onu açın. 2. Windows’un Calculator (Hesap makinası) programını çalıştırın. 3. Winsight programında Hesap mkinasını bulunca onun sol tarafında sınıf adı olarak "sciCalc" göreceksiniz. 4. Şimdi WinSight programını kapatın. (Zira hafızada çok yer kaplar). 5. Şimdi hesap makinasının pencere tutacağını almamız gerekir. (Sınıf adını bildiğimiz için bu çok kolay..) 6. Bunun için H:=FindWindow(PChar(’SciCalc’),Nil); yazmak yeterlidir. (Burada H, HWND tipinde bir değişkendir.) 7. Bunu bulduktan sonra bu pencereye elimizde var olan tutacağı vasıtası ile istenilen mesaj gönderilebilir. Örneğin tuşa basma olayı, şöyleki programımızın OnKeyDown olay yöneticisinde PostMessage(H,WM_Keydown,Key,0); şeklinde bir kod yazarsak Hesap makinasında basılan tuşların aktive olduğunu göreceksiniz. TCP/IP Protokolünü Kullanarak Pingleme Delphi 3 ile TCP/IP kontrolünü kullanmak için Internet sekmesinden TCP/IP kontrolünü ve Standart sekmesinden de Button kontrolünü Form’unuza ekleyin. Daha Sonra Button1Click procedürüne şu komut dizisini yazın: procedure TForm1.Button1Click(Sender: TObject); var LocalName, LocalIp, RemoteIp, RemoteHost:string; begin {Değişkenlerimize TCP1 Kontrolünden Datalar Aktarılıyor} LocalName := TCP1.LocalHostName; LocalIp := TCP1.LocalIP ; RemoteIp := TCP1.RemoteHostIP ; RemoteHost:= TCP1.RemoteHost ; {Sıra Geldi Kullanıcıya Aktarmaya} Canvas.TextOut(20,20,’Local Name : ’+LocalName); Canvas.TextOut(20,50,’Local Ip : ’+LocalIp); Canvas.TextOut(20,80,’Remote Ip : ’+RemoteIp); Canvas.TextOut(20,120,’Remote Host :’+RemoteHost); end; Delphi ile MS Access Database’ine Bağlantı Delphi’den MS Access Databaseine ulaşabilmek için sırasıyla yapılması gerekenler aşağıdaki gibidir: 1. Windows Control Panel’i açın 2. ODBC simgesini çift tıklayın 3. User DSN tabına gelin ve Add butonuna basın 4. Driver olarak "Microsoft Access Driver (*.mdb)" yi seçin ve Finish butonuna basın 5. Data Source Name’i olarak kullanmak istediğiniz bir isim verin. Description kısmına isterseniz database’inizle ilgili bir açıklama yazabilirsiniz. 6. Daha sonra Select butonuna basarak database isminizi verin 7. Advanced butonuna basarak kullanıcı adı ve şifresi tanımlayabilirsiniz (zorunlu değil) 8. OK butonuna basıp ODBC ekranını kapatın 9. Şimdi programınıza bir TDatabase objesi ekleyin 10. AliasName olarak ODBC ayarlarında verdiğiniz (5) Data Source Name’i seçin 11. Database Name olarak istediğiniz bir isim yazın 12. Eğer 7. basamakta bir kullanıcı adı ve şifresi girmediyseniz login ekranın çıkmaması için LoginPrompt seçeneğini false yapın Eğer database’in bir kullanıcı adı ve şifresi varsa LoginPrompt seçeneğini False yapmanız durumunda database’e ulaşamazsınız. 13. Programınıza bit TTable ekleyin 14. Database Name kısmına TDatabase bileşeninde Database Name kısmına 11. adımda verdiğiniz ismi seçin 15. Programınıza bit TDataSource ekleyin 16. DataSet değeri olarak 13. adımda eklediğiniz TTable adını verin Artık MS Access Database’ine bağlı bir table’a sahipsiniz. Delphi Dosya Uzantıları Delphi tarafından yaratılan dosyaların uzantıları ne anlama geliyor ve bu dosyalar ne işe yarıyor biliyormusunuz? İşte size bu dosya uzantılarının açıklamalı bir listesi. DPR - Delphi Proje Dosyası. Programınızı derlediğinizde oluşan çalışabilir programın adı DPR uzantılı proje dosyasının adıyla aynı olur ~DP - Proje dosyasının en son kayıt işleminden önceki yedeği PAS - Bir unit veya form’a ait kaynak kod dosyası. ~PA - Bir .PAS dosyasının en son kayıt işleminden önceki yedeği. DFM - PAS uzantılı bir dosyayla aynı ismi taşır ve Bileşen(Component)’lerin binary olarak ilk değerlerini saklar. DFM uzantılı dosyalar kod ile belirttiğiniz ilk değerleri değilde daha çok tasarım modundayken belirttiğiniz değerleri içerir. DFM uzantılı dosyaları sıradan bir text editörü ile açarsanız içeriğini göremezsiniz, fakat delphi ile açarsanız içeriğini görebilirsiniz. ~DF - Bir .DFM dosyasının en son kayıt işleminden önceki yedeği. DCU - Derlenmiş Delpi unit. Kavram olarak OBJ dosyalarıyla aynı işe yarar. DSM - Sembol bilgi dosyası. Bu dosya delphi projesinin çalışabilir hali oluşturulurken dahili debugger tarafından oluşturulur. OPT - Proje Seçenekler dosyası. Derleyici(compiler) ve Bağlayıcı(Linker) ayarlarını, hangi formun ana form olduğunu, uygulamanızın hagi icon’u kullandığı gibi bilgileri içerir. RES - Windows Kaynak dosyası; Delph tarafından derleme esnasında otomatik olarak yaratılır. EXE - Çalışabilir uygulama dosyası. Açılış Formu Programlarınız açılırken bir form getirin. Splash Screen nasıl yapılır? Project Source’u açın. Eğer bir çok form kullanıyorsanız projenizde Application.CreateForm(TForm2, Form2); satırından sonra diğer formları da aynen form2 gibi yaratın. Ve bir alt satırına ekleyin: Application.CreateForm(Tform3, Form3); /gibi… name:form1 /SplashScreen olarak kullanılacak form name:form2 /Ana formumuz. View|Project Source (View menüsünden Project Source seçeneğini seçerek açabilirsiniz.) Daha sonra aşağıdaki kodu programınıza ekleyin. program Project1; uses Forms, Unit1 in ’Unit1.pas’ {Form1}, Unit2 in ’Unit2.pas’ {Form2}; {$R *.RES} begin form1:=TForm1.Create(application); form1.show; form1.update; Application.CreateForm(TForm2, Form2); form1.hide; form1.Free; Application.Run; end. Dolaştır! Herhengi bir nesneyi formun üzerinde sürükleyip dolaştırın. Nesnenizi Nasıl taşırsınız: Örnek: Name property’si "Button1" olan bir butonu form üzerinde sürükleyelim… Procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const sc_DragMove=$F012; begin ReleaseCapture; Button1.Perform(WM_SYSCOMMAND, sc_DragMove, 0); end; Transparan Form Herhengi bir nesneyi formun üzerinde sürükleyip dolaştırın. Nesnenizi Nasıl taşırsınız: Örnek: Name property’si "Button1" olan bir butonu form üzerinde sürükleyelim… Procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const sc_DragMove=$F012; begin ReleaseCapture; Button1.Perform(WM_SYSCOMMAND, sc_DragMove, 0); end; Transparan Form (2) Diğer transparan form oluşturma stilinden farklı olarak bu kodla transparan formlar üzerinde image nesnelerini de görebiliyorsunuz. Öncelikle formunuzun create eventine şu kodu yazın: procedure TForm1.FormCreate(Sender: TObject); begin Brush.Style:=bsClear; end; Daha sonra formunuza bir image nesnesi koyun ve bir resim yerleştirin. Resmin Transpan özelliğini True yapın. Formunuzun BordeStyle özelliğini bsNone yapın, BorderIcon özelliğini [ ] yapın. Programı çalıştırın. Transparan formlardan ne şekillerde yararlanabileceğinizi düşünün. İlerleyen zamanlarda nerelerde kullanabileceğiniz konusunda bilgiler vereceğiz. İşinize ne kadar çok yararlı olabileceğini göreceksiniz. Programınızı Uyutun Programınızı istediğiniz süre kadar Suspend yapabilirsiniz. Nasıl mı?: Örnek: Name property’si "Button1" olan bir butona basılınca programımız 10 saniye uyusun…. procedure TForm1.Button1Click (Sender: Tobject); begin sleep(10000); //Buradaki 10000 değeri milisecond olarak programın suspend olacığı zaman end; Windows Api’ leri İle Dosya Kopyalama Bilindiği üzere eski pascal’cılar hemen bir dosya mantığı kullanarak dosya kopyalama yoluna girerler gayette güzel olur ama biraz daha derine inmek gerekirse yani kullanıcı tarafından açık olan bir dosyayı kopyalamak istenirse eğer aşağıdaki (Klasik Pascal Kopya) kodu bir işe yaramaz bura da Windows’ un Api ’lerine ihtiyaç duyarız. Birinci Yol Kalıp : BOOL CopyFile( LPCTSTR lpExistingFileName, // Kaynak Dosya LPCTSTR lpNewFileName, //Hedef Dosya BOOL bFailIfExists // Dosyanın Var olup Olmadığı ve ne yapması Gerektiği True/False ); Ör : Result:=CopyFile(PChar(SrcTableName),PChar(DestName),True); Bu Kopyalama işlemi Çok hızlı olup Dosyanın aktif veya pasif olması önemli değil kopyalar. İkinci Yol Bu işlem Windows’un standart Kopya işlemini yapar. SehellApi Dosyasında Detaylı bir şekilde görebilirsiniz. Kalıp : TSHFileOpStructW = packed record Wnd: HWND; //Aktif Window Handle wFunc: UINT; // Yapılacak İşlem Koya,Silme vs.. pFrom: PWideChar; // Kaynak Dosya pTo: PWideChar; // Hedef Dosya fFlags: FILEOP_FLAGS; // Default 0 fAnyOperationsAborted: BOOL; // Olayı İptal Etmek yada Etmemek hNameMappings: Pointer; lpszProgressTitle: PWideChar; //Pencere Başlığı end; Ör : Var FO : TSHFileOpStruct; Aborted : Boolean; With Fo Do Begin Wnd:=Handle; WFunc:=FO_COPY; PFrom:=pchar(St1.Cells[0,F]); pTo:=pchar(St1.Cells[1,F]); FFlags:=0; fAnyOperationsAborted:=Aborted; End; try SHFileOperation(FO); finally end; Klasik Pascal Dosya Kopyalaması AssignFile(FromF, OpenDialog1.FileName); Reset(FromF, 1); { Record size = 1 } if SaveDialog1.Execute then { Display Save dialog box} begin AssignFile(ToF, SaveDialog1.FileName); { Open output file } Rewrite(ToF, 1); { Record size = 1 } Canvas.TextOut(10, 10, ’Copying ’ + IntToStr(FileSize(FromF)) + ’ bytes...’); repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); until (NumRead = 0) or (NumWritten NumRead); CloseFile(FromF); CloseFile(ToF); end; end; Açık Windows Uygulamalarının Gösterilmesi Burada EnumWindows API fonksiyonuyla bir window handle ve pointer parametreleri çağrılarak gizli ve görünür uygulamalar listelenir. //AnaForm üzerine bir ListBox1 ve Button1 ekleyin //implementation {$R *.DFM} altyna a?a?ydaki fonksiyonu yaz function EnumWindowsProc(Wnd : HWnd;Form : TForm1) : Boolean; Export; {$ifdef Win32} StdCall; {$endif} var Buffer : Array[0..99] of char; begin GetWindowText(Wnd,Buffer,100); if StrLen(Buffer) <> 0 then Form1.ListBox1.Items.Add(StrPas(Buffer)); Result := True; end; procedure TForm1.Button1Click(Sender: TObject); begin //Tüm gizli ve görünür uygulamalary listele EnumWindows(@EnumWindowsProc,LongInt(Self)); end; Delphide Yazılan Kodla Exe Çalıştırma Aşağıdaki örnek kod verilen web sitesini Internet Explorer’ ı çalıştırarak açar. procedure TForm1.Button1Click(Sender: TObject); begin winexec(’C:Program FilesInternet Exploreriexplore.exe wwww.programlama.com’,SW_MAXIMIZE); end; Enter Tuşu Kullanımı Windows programlarında bir alttaki alana geçmek için TAB tuşu kullanılır.Ancak DOS programlarından gelen alışkanlıkla kullanıcılar hep Enter ile alt alana geçmek ister ve bu bir tik olmuştur. Delphide Enter tuşu ile bir alt alana geçmek için bir yöntem; · Formun Keypreview olayını True yapılır. · Form üzerinde herhangiki tüm bileşenlere Default false yaplır. · formun onKeypres olayına aşağıdaki function ilave edilir. procedure TAdresformu.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; if (Sender is TDBGrid) then TDBGrid(Sender).Perform(WM_KeyDown,VK_Tab,0) else Perform(Wm_NextDlgCtl,0,0); end; Database’de Türkçe Problemi BDE administor programında configuration/dirvers/native/[kullandığın dosya türü] seçeneklerinde langdriver kısmını türkçe bir sürücü olarak değiştir. Bunu yaptıktan sonra delphi ile türkçe karakterleri görebilirsiniz Bu ayarı yaptıktan sonra Database Desktopta Türkçe karakterler yine görünmeyecek.

Döküman Arama

Başlık :

Kapat