Formu Boyutlandırma (form resize)

Ekim 15, 2008

Form Resize

Merhabalar arkadaşlar,

Bu dersimizde form resize olayından bahsedeceğiz. Peki, nedir form resize olayı? Bu olay formumuzun boyutlarını değiştirme olayıdır. Bir örnek yaparak bu olayı anlatacağım.

Bu örneğimizde formumuzda bulunan nesneler, formun boyutlarını küçülttüğümüzde küçülecek formun boyutlarını büyülttüğümüzde büyüyecek.

Ben formuma bir panel ,bir memo ve iki tanede buton ekledim.

Forumdaki her elemanın kendi arasında ve formla arasında 10 piksel boşluk olmasını istiyorum. Önce formun boyutlarını hesaplayalım.

Form’un Create olayına aşağıdaki kodu yazıyoruz.

———————————

form1.ClientHeight := panel1.Height + memo1.Height + button1.Height + 40;

form1.ClientWidth := panel1.Width + 20

———————————

Form’un Resize olayına ise aşağıdaki kodları yazalım.

——————————-

if form1.ClientWidth<200 then form1.ClientWidth:=200;

if form1.ClientHeight<200 then form1.ClientHeight:=200;

panel1.Left:=10;

panel1.Top:=10;

panel1.Width:=form1.ClientWidth-20;

panel1.Caption:=(inttostr(panel1.Width) +’ x ‘+ inttostr(panel1.height));

memo1.Left := 10 ;

memo1.top := panel1.Height + 20 ;

memo1.Width := form1.ClientWidth – 20;

memo1.Height := form1.ClientHeight – (40 + panel1.Height + button1.Height);

memo1.text:=(inttostr(memo1.Width) +’ x ‘+ inttostr(memo1.height));

button1.left := 10;

button1.Top := panel1.Height + memo1.Height + 30 ;

button1.Width := (form1.ClientWidth-30) div 2 ;

button2.left := button1.width + 20 ;

button2.Top := panel1.Height + memo1.Height + 30 ;

button2.Width := (form1.ClientWidth-30) div 2 ;

—————–

Artık uygulamamız hazır.

Son olarak nesnelerimizin üzerinde boyutlarının kaça kaç olduğunu yazdıralım. Bunun içinde aşağıdaki kodları form Resize olayına yazdığımız kodların altına ekliyoruz.

———————————-

form1.caption:= (inttostr(form1.ClientWidth) +’ x ‘+ inttostr(form1.ClientHeight));

panel1.Caption:=(inttostr(panel1.Width) +’ x ‘+ inttostr(panel1.height));

memo1.text:=(inttostr(memo1.Width) +’ x ‘+ inttostr(memo1.height));

button1.Caption:=(inttostr(button1.Width) +’ x ‘+ inttostr(button1.height));

button2.Caption:=(inttostr(button2.Width) +’ x ‘+ inttostr(button2.height));

————————————-


Veritabanı İşlemleri (3.Bölüm)

Eylül 24, 2008

Merhaba arkadaşlar,

Kaldığımız yerden dersimize devam ediyoruz. Önceki derslerde veritabanına bağlanma ve kayıt ekleme, kayıt silme… gibi işlemleri yapmıştık. Bu dersimizde ise raporlama işlemine geçiyoruz.

Raporlama işlemi için QReport bileşenini kullanacağız. Bu bileşeni nasıl kurulduğunu bu derste anlatmıştım.

http://mkeklik.wordpress.com/2008/09/24/delphiye-componentbilesen-ekleme/

Eğer sizde yüklü değilse bu dersimizden faydalanabilirsiniz. Eğer QReport bileşenini eklediğseniz raporlama işlemine başlayalım.

1 - File > New > Other menüse tıklıyoruz gelen pencereden Report u seçip Okeyliyoruz.

2 – Rapor sayfamız ekrana geldikten sonra rapor sayfamıza Componennt Palette bulunan QReport sekmesinden 2 tane QRBand ekliyoruz.

3 – Birinci Bandımızın Band Type özelliğini Title ikinci bandın Band Type özelliğini Detail olarak ayarlıyoruz.

4 – Rapor sayfamıza “Component Palette” bulunan “ADO ” sekmesinden AdoConnection ve AdoTable nesnelerini ekleyelim ve yine aynı şekilde “Component Palette” bulunan “Data Access ” sekmesinden DataSource nesnesini ekleyelim.

5 – İleri dedikten sonra karşımıza aşağıdaki gibi bir pencere geliyor. Bu pencerede bulunan “Veritabanı adını seçin veya girin:” bölümünden veri tabanını seçip Bağlantıyı Sına butonuna tıklıyoruz.

6 – Sınama bağlantısı başarılı oldu şeklindeki mesajı aldıysak sorun yok. Açık pencerelere Tamam / Okey dedikten sonra bir sonraki adıma geçebiliriz.

7 – AdoConnection1’ in Login Promt özelliğini False ve Connected özelliğini True yapıyoruz.

8 – Şimdi AdoTable’ ı seçelim ve sırasıyla Connection özelliğine AdoConnection1 girelim. TableName özelliğinden işlem yapacağımız tablomuzu seçelim ve Active özelliğini True yapalım.

9 – Bu adımda DataSource seçelim ve DataSet özelliğini AdoTable1 yapalım.

10 – Rapor Sayfamızda boş bir alanı tıklıyoruz ve rapor sayfamızın DataSet özelliğini ADOTable 1 yapıyoruz. Bu işlemle birlikte rapor sayfamızı veritabanına bağlamış olduk.

11 – Şimdi rapor sayfamızdaki Title bantına üç adet QRLabel nesnesi ekleyelim ve bunların captionuna sırasıyla isim, soyisim ve email yazalım.

12 – Şimdi de Detail bandına 3 adet QRDbText ekleyelim ve bunların DataSet’ini ADOTable1 yapalım sonrada sırasıyla DataField larını isim, soyisim, email olarak ayarlayalım.

Rapor sayfamızın son hali aşağıdaki gibi.

13 – Şimdi formumuza dönelim ve formumuza bir buton ekleyelim. Ben bu butonun caption’u Tüm Kayıtları Yazdır olarak değiştirdim.

14 – Butonun Click olayına aşağıdaki kodu yazalım.

QuickReport2.Preview; //sizin QuickReport’unuzun adı neyse onu yazın.

Uygulamamızı çalıştırıp Tüm Kayıtları yazdır butonuna tıkladığımızda aşağıdaki gibi bir sonuç elde edeceğiz.

Tüm kayıtların yazdırılmaya hazır bir halde önizleme penceresinde geldiğini gördük. Rapor sayfamıza ben hiç tasarım yapmadım. Tasarımında değişiklikler yaparak çok daha güzel rapor sayfaları elde etmek size kalıyor. Raporlarınıza tarih saat, sayfa numarası vs. gibi eklentiler yapmak size kalıyor ve yine isterseniz buradaki gibi tüm kayıtları değil de sadece seçilen kayıtları da yazdırabilirsiniz. Belki bu işlemleri de başka bir derste anlatırım.

Bu son sözlerle birlikte 3 bölümden oluşan Veritabanı işlemleri isimli dersin sonuna geldik. Hazırlamış olduğum örneği de sizlerle paylaşacağım.

Herkese kalay gelsin iyi çalışmalar.

 


Delphi’ye Component(Bileşen) Ekleme

Eylül 24, 2008

Delphi’ ye Dışarıdan Component(Bileşen) Ekleme

Merhaba arkadaşlar,

Bu dersimizde Delphi’ye dışarıdan component yani bileşen ekleme işlemini yapacağız. Örnek olarak ben QReport bileşenini ekleteceğim. QReport bileşeni raporlama işleminde kullanabileceğimiz, rapor sayfaları oluşturabileceğimiz bir bileşen.

Şimdi bileşenimizi ekleme işlemine geçelim.

1 – Component menüsünden Install Packeges e tıklıyoruz.

2 – Gelen pencerede Add butonuna tıklayıp karşımıza gelen dosya seçme penceresinden C:\Program Files\Borland\Delphi7\Bin konumuna gidip “dclqrt70.bpl” bileşenini seçiyoruz.

3 – Sırasıyla pencerelere “Aç” ve “Ok” diyoruz.

Artık Componentimiz kullanıma hazır.


Veritabanı İşlemleri (2.Bölüm)

Eylül 23, 2008

VERİTABANI İŞLEMLERİ – Kayıt ekle, sil, güncelle, ara…

Merhaba arkadaşlar,

Bir önceki dersimizde Delhi’de Access veritabanına bağlanma işlemini anlatmıştık. Bu derste ise Veritabanına kayıt ekleme, kayıt silme, kayıt düzeltme, kayıt arama ve kayıtlar arsında gezinme işlemini yapacağız.

—————————————————
Veritabanı Adı:
db1.mdb
Tablo Adı: Bilgiler
Tablodaki alanlar: isim, soyisim, email
—————————————————

Formumuzu yukarıdaki gibi hazırlıyoruz.

- 9 Buton,
- 3 DBedit,
- 3 Label
- 1 DBGrid (Kayıtları listelemek için) kullandım.

DBEdit1’i seçip DataSource:DataSource1 ve DataField:isim olarak ayarlayalım. Aynı işlemleri DBEdit2 ve DBEdit3 için yapıp datafield ları soyisim ve email olacak şekilde ayarlayalım. Yine aynı şekilde DBGrid nesnesininde DataSource’unu DataSource1 yapalım.

Şimdi kodlama kısmına geçelim aşağıdaki kodları ilgili butonun Click olayına yazalım.

Yeni Kayıt:
ADOTable1.Insert;

Kaydet:
ADOTable1.Post;

Düzelt:
ADOTable1.Edit;

Sil:
ADOTable1.Delete;

Ara: (Stiring türnde a adında değişken tanımlamayı unutmayın)
a:=inputbox(‘İsime Göre Arama’,'İsimi Girin’,”);
adotable1.Filter:=’isim =’+QuotedStr(a) ;
adotable1.Filtered:=true;

İlk Kayıt:
ADOTable1.First;

Önceki:
ADOTable1.Prior;

Sonraki:
ADOTable1.Next;

Son Kayıt:
ADOTable1.Last;

Uygulamamızın kodlama kısmını da tamamladık.

Uygulamamız sorunsuz bir şekilde çalıştığını gördük.

Veritabanı İşlemleri isimli dersimizin ikinci bölümünü de burada sonlandırıyoruz. Bir sonraki ve son bölüm olan dersimizde de raporlama işlemini yapacağız. Şimdilik bu kadar.

Herkese kolay gelsin.


VERİTABANI İŞLEMLERİ (1. Bölüm)

Eylül 23, 2008

VERİTABANI İŞLEMLERİ – Veri tabanına bağlanma

Merhabalar arkadaşlar,
Bu dersimizle birlikte veritabanı işlemlerine giriş yapacağız. Bu dersi 3 bölüme ayırdım.

1 – Access veri tabanına bağlanma
2 – Kayıt İşlemleri (Ekle, sil, düzelt, ara ve kayıtlar arasında gezinme)
3 – Raporlama

Zaman kaybetmeden ilk bölümümüze başlayalım ve Access veri tabanına bağlanalım. Hem de tek satır kod kullanmadan.

—————————————————
Veritabanı Adı:
db1.mdb
Tablo Adı: Bilgiler
Tablodaki alanlar: isim, soyisim, email
—————————————————

Formumuza, “Component Palette” bulunan “ADO ” sekmesinden AdoConnection ve AdoTable nesnelerini ekleyelim ve yine aynı şekilde “Component Palette” bulunan “Data Access ” sekmesinden DataSource nesnesini ekleyelim.

Şimdi sırsıyla aşağıdaki işlemleri takip edelim.

1 – AdoConnection nesnesini seçip, ConnectionString özelliğinde ki butona tıklayalım. Karşımıza aşağıdaki gibi bir pencere açılacak.

2 – Bu pencere de Build butonuna tıklıyoruz ve açılan pencereden “Microsoft Jet 4.0 OLE DB Provider” i seçip ileri diyoruz.

3 – İleri dedikten sonra karşımıza aşağıdaki gibi bir pencere geliyor. Bu pencerede bulunan “Veritabanı adını seçin veya girin:” bölümünden veri tabanını seçip Bağlantıyı Sına butonuna tıklıyoruz.

4 – Sınama bağlantısı başarılı oldu şeklindeki mesajı aldıysak sorun yok. Açık pencerelere Tamam / Okey dedikten sonra bir sonraki adıma geçebiliriz.

5 – AdoConnection1’ in Connected özelliğini True yapıyoruz.

6 – Şimdi AdoTable’ ı seçelim ve sırasıyla Connection özelliğine AdoConnection1 girelim. TableName özelliğinden işlem yapacağımız tablomuzu seçelim ve Active özelliğini True yapalım.

7 – Bu adımda DataSource seçelim ve DataSet özelliğini AdoTable1 yapalım.

Bu işlemle birlikte veritabanına bağlanmış olduk ve bu dersin sonuna geldik sonraki dersimizde veri tabanına kayıt ekleme, kayıt silme, kayıt düzelte, kayıt arama gibi işlemleri yapacağız.

Bir sonraki derste görüşmek dileğiyle.


Delphi’de Görsel Bir ToolBar Hazırlayalım

Eylül 23, 2008

Merhabalar arkadaşlar,

Bu dersimizde ToolBar nesnesini inceleyeceğiz. Bu derste toolbar a buton ekleme, butonlara resim ekleme, ToolBar da ki butonların boyutlarını ayarlama gibi işlemleri yapacağız.

Formumuza ”Component Palet” araç çubuğunda bulunan “Win32” sekmesinden bir adet toolbar ve bir adette yine aynı sekmede bulunan “ImageList” kontrolünü ekleyelim.

Ben toolbar da ki butonlarımın boyutlarının 32 x 32 olmasını istiyorum bunun için ToolBar nesnesini seçip sol tarafta bulunan “Object Inspector“ penceresinden “ButtonHight” ve “ButtonWidth” özelliklerine 32 girdim. ToolBar’ın Height özelliğini ise 40 yaptım.

Şimdi butonlarımı ekleyebilirim. ToolBar’a sağ tıklayıp New Button diyerek 4 tane buton ekledim.

Şimdi sırada butonlara icon ekleme işlemi var. İmageList nesnesini saçip İmages özelliğini İmageList1 yaptım.

Formuma eklediğim imagelist nesnesine çift tıklıyorum ve aşağıdaki gibi bir pencere açılıyor. Bu pencere den Add butonuna tıklayarak butonlarım için iconları seçtim.

Yukarıdaki resimde de gördüğünüz gibi resimlere sıfırdan başlayarak birer sayı atadı bu sayıları kullanarak hangi butonda hangi icon’un görüntüleneceğini seçeceğiz. Daha önce ToolBar a dört tane buton eklemiştik şimdi birinci butonu seçelim ve bu butonda hangi icon un görünmesini istiyorsak o resmin numarasını “imageindex” özelliğine girelim. Ben birinci butonum için 0, ikinci butona 2, üçüncü butona 1, ve dördüncü butona 3 girdim.

Şimdide butonların mause ile üzerine geldiğimizde bilgi yazısının çıkmasını sağlayalım. Bunun içinde ToolBarı seçip “ShowHint” özelliğini “True” yapalım. Şimdide sırayla butonların Hint özelliğine görüntülemek istediğimiz biligi yazısını girelim. Hepsi bu kadar.

Artık ToolBarımız hazır. ToolBarın kullanımı normal buton gibidir. İstediğimiz toolbar butonuna çift tıklayarak kod penceresini açarak çalıştırmak istediğimiz kodları yazabiliriz.


5 Soruyla SQL

Eylül 23, 2008

Soru1: Bir mesaj sisteminde gönderilen mesajlara yönetici tarafından onay verildikten sonra yayınlanacak. Onayı 1 olan mesajları gösteren kod nedir?

Select * from mesajlar where onay=1

Soru 2: Hasta tablosunda cinsiyeti bay olan hastaların isim listesi.

SELECT adi,cinsiyet

FROM doktor, hasta, muayene

GROUP BY hasta.adi, hasta.cinsiyet

HAVING (((hasta.cinsiyet)=”BAY”));

Soru 3:Şehirlere göre hasta boy ve kilo ortalamaları.

SELECT hasta.dogumyeri, Avg(muayene.boy) AS Ortalamaboy, muayene.kilo

FROM doktor, hasta INNER JOIN muayene ON hasta.kimlikno = muayene.hastano

GROUP BY hasta.dogumyeri, muayene.kilo;

Soru 4: İlk muayene olan hastanın adı ve soyadının bulunması.

SELECT First(muayene.muayenetarihi) AS İlkmuayenetarihi, hasta.adi, hasta.soyadi

FROM doktor, muayene INNER JOIN hasta ON muayene.hastano = hasta.kimlikno

GROUP BY hasta.adi, hasta.soyadi

ORDER BY First(muayene.muayenetarihi);

Soru 5: Kahramanmaraştan gelen hastaların kaç kere muayene olduklarının bulunması.

SELECT hasta.dogumyeri, hasta.kimlikno, Count(muayene.Kimlik) AS SayKimlik, hasta.adi

FROM hasta INNER JOIN muayene ON hasta.kimlikno = muayene.hastano

GROUP BY hasta.dogumyeri, hasta.kimlikno, hasta.adi

HAVING (((hasta.dogumyeri)=”Kahramanmaraş”));


Delphi‘ de Girilen Metnin Tersini Yazdırma

Eylül 17, 2008

Merhabalar arkadaşlar,

Bu dersimizde girilen metnin tersini yazdırma işlemini yapacağız. Bu işlemi yaparken iki fonksiyondan yardım almamız gerekiyor. Bu fonksiyonlar;

- copy
- length

fonksiyonları.

Formumuza bir  edit, bir buton ve bir de label ekliyoruz.

 

Formumuzu oluşturduktan sonra şimdi kodlama kısmına geçelim. Butonumuzun Click olayına aşağıdaki kodları yazıyoruz.

—————————————————————————————-
var tersmetin:string;

    i:integer;

    //Değişkenlerimiz tanımladık.

 

begin

for i:=1 to length(edit1.text) do

//Edit1 e Girilen metnin uzunluğu kadar döngümüzü çalıştırdık.

  tersmetin:=copy(edit1.text,i,1)+tersmetin;

  //copy fonksiyonuyla edit1′in i. karakterinden başlayarak 1 karakter kopyalattık

  label1.caption:=tersmetin  ;

end;
—————————————————————————————-


ListBox

Eylül 5, 2008

ListBox

Bu dersimizde ListBox nesnesinin genel özeliklerinden bahsedeceğiz.

Alt alta satırların girilebildiği, birçok özelliği bulunan bir kontroldür. Bu kontrolü formumuza component palette bulunan system sekmesinden ekleyebiliriz.

· Listbox1.Items : Listbox nesnesiyle ilgili tüm işlemlerin yapabildiğimiz en temel özelliğidir.

· ListBox1.Items.Add: Listbox’ a satır eklemek için kullanılır. Eklenen satır string türünde olmalıdır.

Örnek:

——————————————————————
procedure TForm1.Button1Click(Sender: TObject);
begin
listbox1.Items.add(Edit1.text);
end;
——————————————————————

· ListBox1.Items.Clear: Listbox’ da ki tüm satırları silmek için kullanılır.

——————————————————————
procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.Items.delete;
end;
——————————————————————

Listbox.Items.Count: Listbox içerisinde bulunan satırların sayısını verir. Aşağıdaki kod bloğu derlendiğinde listbox da bulunan satır sayısını hesaplayıp mesaj olarak verecektir.

——————————————————————
procedure TForm1.Button1Click(Sender: TObject);
var
sayi:Integer;
begin
sayi:= ListBox1.Items.Count;//kaç satır var
Showmessage(‘Listbox da ’ + sayi + ‘satır var. ’);
end;
——————————————————————

· ListBox1.Items.Delete: İstenilen satırı silmek için kullanılır. Öreneğin 3. Satırı silmek için listbox1.items.delete(2) kodu yazılır. 2 yazmamızın sebebi ise ilk satır numarasının “0” olmasıdır.

——————————————————————
procedure TForm1.Button6Click(Sender: TObject);
begin
ListBox1.Items.Delete(2);//3. satırı sil
end;
——————————————————————

• ListBox1.Items.LoadFromFile: Parametre ile belirtilen adresteki dosyanın içeriğini listeye kopyalayan methoddur.

——————————————————————
procedure TForm2.Button2Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile(‘c:\egitim.txt’);
end;
——————————————————————

• ListBox1.Items.SaveToFile: ListBox’ ın içeriğini parametre ile belirtilen adrese kopyalayan methoddur.

——————————————————————
procedure TForm2.Button2Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile(‘c:\egitim.txt’);
end;
——————————————————————


ProgressBar & Timer

Eylül 5, 2008

Merhaba arkadaşlar,

Bu dersimizde progressbar ve timer nesnelerini kullanarak basit bir uygulama yapacağız.

Formumuza bir adet progressbar ile bir adet timer nesnesi ekliyoruz. Önce Object Inspector penceremizden timer nesnemizin interval özelliğini 100, enabled özelliğini true yapıyoruz. Daha sonra progressbar nesnesinin min özelliğini 0 ve max özelliğini 100 yapıyoruz.

———————————————————————

procedure TForm1.Timer1Timer(Sender: TObject);
begin
progressbar1.Position:=progressbar1.Position+1
if progressbar1.Position=100 then
begin
timer1.Enabled:=false;
showmessage (‘Süre doldu’);
end;
end;
———————————————————————–

Ardından yukarıdaki kodları timer nesnemizin OnTimer bloğuna yazıyoruz. Uygulamamızı çalıştırınca progressbar dolduğunda süreniz doldu şeklinde mesaj veriyor.