  Ŀ
  Ŀ
                                                                          
                      FoxPro for Windows Yaz Dizisi 2                    
                                                                          
  ٳ
                                                    Memik Yank             
  




                   FOXPRO LE WINDOWS PROGRAMLARI YAZMAK
                   



  Geen Blmde rendiklerimizin zeti

 FoxPro ile program yazmaya balamak iin nce Command penceresinde MODIFY
  COMMAND komutu ile program yazm ortamna geilir. Program yazm ortamnda
  FoxPro'nun kurallarna gre yazlan program diske PRG uzants ile kayt
  edilir. Diske kayt edilen PRG uzantl FoxPro program komut penceresinde
  DO deyimi ile altrlr.

 Windows uyumlu program yazma konusunda ok nemli olan Pencere-Window ve
  FONT kavramlar bir nceki yazda aklanmt. Herhangi bir Windows uyumlu
  program aracl ile bilgisayara kurulan btn Fontlar FoxPro programlar
  dahilinde kullanlabilir. Kullanlacak Fontlar, ekrana veya yazcya SAY
  deyimi ile yazma ilemi yaplrken seilir.

 Windows uyumlu btn programlar ekrana belli zellikleri olan bir pencere
  iinde sunulurlar. FoxPro ile program yazlrken Windows uyumlu pencere
  kullanm iin nce DEFINE WINDOW deyimi ile pencerenin tanm yaplr.
  Tanmlanan pencere istendii zaman ACTIVATE WONDOW deyimi ile aktive edilir
  veya ekrana getirilir. Tanmlanp aktive edilen pencerenin iine SAY deyimi
  ile istenen bilgiler yazlabilir.





                               DEKEN TANIMLAMAK
                               

 Konu programclk olunca hangi program gelitirme arac kullanlrsa
  kullanlsn, deiken tanmlama ve kullanm hakknda en banda bilgi
  sahibi olunmaldr. Deiken tanmla konusunda FoxPro ve dier xBASE textine
  bal dier program gelitirme aralar gibi programcya kolaylklar
  salamaktadr.

 Bir ok program gelitirme aracnda deikenler nce deklare edilip sonra
  kullanlr. FoxPro programcy deikenleri deklare etme zorunda brakmyor.
  Programcnn deiken tanmlarken tek yapmas gereken, deikene bir deer
  atamaktr. Deikene atanan bu deer karaktersel bilgilerden meydana
  geliyorsa, deikenin tipi karaktersel, saysal bilgi atanrsa deikenin
  tipi saysal olur. Tanmlanan deikene deer aktarma ilemi ilk kez
  yaplyorsa aktarlan bu deere "ilk deer" ad verilir. rnek olarak bir
  FoxPro programnn herhangi bir satrnda "PC World Trkiye" karaktersel
  bilgisini aktarmak ve saklamak zere bir  deikene gerek duyulmas
  halinde, programa;

        DergiAdi = "PC WORLD Trkiye"

  eklinde bir satr eklenince hem DergiAdi adl deikeni tanmlanm, hem de
  bu deikene deer aktarlm olunur. Daha sonra programn ileri
  satrlarnda bu DergiAdi adl karaktersel deikenin ierii ekrana veya
  yazcya yazdrlabilir veya bu deikenin ierii deitirilebilir.
  Tanmlanmak istenen karaktersel deikenin ierii henz belli deilse
  deikene boluk atanabilir.

        DergiAdi = SPACE(20)

  Bu deiken tanmlama satr ile DergiAdi deikenine ilk deer olarak 20
  adet boluk atand ve tanmland. Hazr FoxPro fonksiyonlarndan biri olan
  SPACE() fonksiyonu ald saysal parametre kadar boluk deeri retir.

        SAYI =  0

  0 saysal deeri atanan SAYI deikeni artk saysal deikendir. Bu
  deikene programn ileri satrlarnda baka saysal bilgiler atanabilir.
  FoxPro programlar dahilinde Saysal ve Karaktersel bilgilerin dnda
  Tarihsel, Mantksal ve Memo tipli bilgileri kullanma ve deikenlere aktarma
  imkan var. imdi satr satr aklamas ile birlikte verilecek rnek FoxPro
  programnda hem deiken tanmlama hem de tanmlanp bilgi aktarlan
  deikenleri kullanma rnekleri var.

Ŀ
 FOXO-01.PRG 
Ĵ
 1 SET SYSMENU OFF                                                      
 2 DEFINE WINDOW KUTU1 FROM 1,10 TO 12,72 SYSTEM;                       
       MINIMIZE GROW ZOOM TITLE "Pencere 1"                             
 3 DEFINE WINDOW KUTU2 FROM 16,10 TO 28,72;                             
      SYSTEM MINIMIZE GROW ZOOM TITLE "Pencere 2"                       
 4 ACTIVATE WINDOW Kutu1                                                
 5 ADI=SPACE(15)                                                        
 6 SOYADI=SPACE(20)                                                     
 7 ADRES=SPACE(40)                                                      
 8 YASI=0                                                               
 9 CLEAR                                                                
10 @2,3 SAY "ADI GIRIN....:" GET ADI PICTURE "@15!";                    
        FONT "Arial",14                                                 
11 @4,3 SAY "SOYADI GIRIN.:" GET SOYADI;                                
        PICTURE "@20!" FONT "Arial",14                                  
12 @6,3 SAY "ADRESI GIRIN.:" GET ADRES PICTURE "@40!";                  
        FONT "Arial",14                                                 
13 @8,3 SAY "YASI GIRIN...:" GET YASI PICTURE "99",                     
        FONT "Arial",14                                                 
14 READ                                                                 
15 ACTIVATE WINDOW KUTU2                                                
16 @2,3 SAY "ADI .......:" + ADI PICTURE "@15!";                        
        FONT "Arial",14 STYLE "B"                                       
17 @4,3 SAY "SOYADI.:" + SOYADI PICTURE "@20!";                         
        FONT "Arial",14 STYLE "B"                                       
18 @6,3 SAY "ADRESI.:" + ADRES PICTURE "@40!";                          
       FONT "Arial",14 STYLE "B"                                        
19 @8,3 SAY "YASI......:" FONT "Arial",14 STYLE "B"                     
20 @8,14 SAY YASI PICTURE "99" FONT "Arial",14 STYLE "B"                
21 @10,3 SAY "Programdan kmak  in Bir Tua Basn"                   
22 BEKLE=INKEY(0)                                                       
23 DEACTIVATE WINDOW KUTU1                                              
24 DEACTIVATE WINDOW KUTU2                                              
25 RETURN                                                               


 Bu rnekte ok kullanlan bir ka FoxPro deyimi var. imdi bu rnek program
  satr satr aklamak istiyorum. Aklamay kolay yapabilmek iin programn
  her satrna numara verdim. Program yazarken verilen satr numaralarn
  kaldrn.

 Ŀ
 1. Satr         
 Ĵ
 SET SYSMENU OFF  
 
  Bu satrda SET SYSMENU deyimi "OFF" durumuna getiriliyor. SET SYSMENU deyimi
  "OFF" durumunda iken FoxPro programlar alrken FoxPro'nun sistem
  menleri ekrandan kaldrlr. Programn almas bitince sistem menleri
  otomatik olarak tekrar ekrana getirilir. SET SYSMENU deyimi komut
  penceresinde "OFF" durumuna getirilecek olunursa o andan itibaren
  altrlan btn FoxPro programlar iin varsaym olarak sistem menleri
  ekranda grnmez. Ancak komut penceresinde SET SYSMENU deyimi "OFF" durumuna
  getirilmi olsa bile program iinde SET SYSMENU deyimi "ON" durumuna
  getirilebilir.

 Ŀ
 2.Satr                                          
 Ĵ
 DEFINE WINDOW KUTU1 FROM 1,10 TO 12,72 SYSTEM;   
         MINIMIZE GROW ZOOM TITLE "Pencere 1"     
 
  Bu program satrnda DEFINE WINDOW deyimi ile KUTU1 adndan bir pencere
  tanmlanyor. Pencerenin koordinatlar 1. Satr 10. stun ve 12. satr 72.
  stun eklinde. Pencere tanmlama satrna eklenen SYSTEM parametresi ile
  tanmlanan pencerenin Windows uyumlu pencere olmas salanr. MINIMIZE
  parametresi ile pencereye simge durumuna gelebilme zellii kazandrlrken,
  ZOOM parametresi ile pencereye ekran kaplayabilme zellii verilir. TITLE
  parametresi ile pencereye balk bilgisi verilir.

  GROW parametresi ile tanmlanan pencerenin boyutlar fare veya ok tular
  ile deitirilebilir. Bu pencere bilgi giriinde kullanlmak zere
  tanmlanyor.

 Ŀ
 3. Satr                                            
 Ĵ
 DEFINE WINDOW KUTU2 FROM 16,10 TO 28,72 SYSTEM;     
         MINIMIZE GROW ZOOM TITLE "Pencere 2"        
 
  Bu program satr ile 2. Satrda olduu gibi pencere tanmlama ilemi var.
  Bu KUTU2 adnda ve "Pencere 2" balndaki pencere bilgi knda
  kullanlacaktr.

 Ŀ
 4. Satr                   
 Ĵ
 ACTIVATE WINDOW Kutu1      
 
  DEFINE WINDOW deyimi ile tanmlanan bir pencerenin ilevsel olabilmesi iin
  ayrca ACTIVATE WINDOW deyimi ile aktive edilmesi gerekir. Bir pencere
  aktive edilmedii srece yalnzca bellekte kalr.

 Ŀ
 5. Satr          
 Ĵ
 ADI=SPACE(15)     
 
  Bu program satr ile uzunluu 15 karakter olan alfasaysal bir deiken
  tanmland. Deikene balang deeri olarak 15 adet boluk verildi.

 Ŀ
 7. Satr          
 Ĵ
 ADRES=SPACE(40)   
 
  Uzunluu 40 karakter olan alfasaysal deiken tanmlamas. Burada
  alfasaysaldan kastmz, deikene alfabetik karakterlerle saysal
  karakterleri bir arada veya ayr ayr atayabileceimiz eklinde. Ancak bu
  tr deikenlere atanan saysal bilgilerin hepsi rakamlardan meydana gelse
  bile matematiksel ilemlerde kullanlamaz.

 Ŀ
 8. Satr          
 Ĵ
 YASI=0            
 
  Saysal deiken tanmlamas. lk deer olarak 0 deeri verilmi.

 Ŀ
 9. Satr          
 Ĵ
 CLEAR             
 
  Tanmlanan ve aktive edilen pencerenin ii CLEAR deyimi ile temizleniyor,
  siliniyor. CLEAR deyimi srekli olarak en son aktive edilin pencere zerinde
  etkili olur. Clear deyiminin kullanld srada ekranda FoxPro penceresi
  dnda baka pencere yoksa, yalnzca FoxPro penceresi temizlenir.

 Ŀ
 10, 11, 12, 13ve 14. Satrlar                             
 Ĵ
 10 @2,3 SAY "ADI GIRIN....:" GET ADI PICTURE "@15!";     
         FONT "Arial",14                                  
 11 @4,3 SAY "SOYADI GIRIN.:" GET SOYADI PICTURE;         
        "@20!"  FONT "Arial",14                           
 12 @6,3 SAY "ADRESI GIRIN.:" GET ADRES PICTURE;          
        "@40!"  FONT "Arial",14                           
 13 @8,3 SAY "YASI GIRIN...:" GET YASI PICTURE "99";      
         FONT "Arial",14                                  
 14 READ                                                  
 
  Bu satrlarda kullanlan deyimler ve kullan ekilleri olduka nemli. 10.
  satrda bulunan SAY deyiminin grevini biliyoruz. Aktif pencerenin 2. satr
  ve 3. stununa "ADI GRN...." mesajn yazmaya yaryor. Bunun ardndan
  kullanlan GET deyimi ise kendisinden sonra yazlan ADI deikenine
  dardan deer okutmaya yaryor. PICTURE yardmc deyimi, deiken iin
  okutulup aktarlacak bilginin tipini ve uzunluunu belirtmeye yaramaktadr.

  Dardan bir deikene deer aktarmak iin GET deyimi tek bana yeterli
  deildir. Bu ilem iin ayrca GET deyimini aktif yapan READ deyiminin de
  kullanlmas gerekiyor. Her GET iin ayr bir READ kullanmak mmkn olmakla
  birlikte birbirini takip eden btn GET'leri aktif yapmak iin tek bir READ
  yeterlidir. Bizim rneimizde drt adet GET iin yalnzca bir tek READ
  deyimi kullanld.

  Bu durumda ADI deikenine en fazla 15 karakter uzunluunda bilgi okutulup
  aktarlabilinir. Yine ayn ekilde SOYADI deikenine 20 ve ADRES
  deikenine 40 karakterlik alfasaysal bilgi aktarlabilinir. YAS
  deikenine ise iki haneli tam saysal bir deer aktarlabilinir.

  Programn iletimi 10-14. satrlara geldiinde FoxPro penceresine aada
  verilen ekran grnts gelir. Bu ekran grntsnde kullancdan bilgi
  girii beklenmektedir.

               Ŀ
               Ŀ
                    Resim 13       
                                   
                    FOXPRO13.GIF   
               ٳ
               

  Ekran grntsnde de tespit edilecei gibi bilgi girii yaplabilecek her
  biri farkl uzunlukta 4 adet satr var. Bilgi girii yaplabilecek yerler
  gri renge boyanm durumda. Program ilk altrldnda ADI deikeni iin
  bilgi girii yaplr. SOYADI deikeni iin bilgi girii yapabilmek iin ya
  enter tuuyla ya da aa ok tuuyla bir alt satra gidilir. Yine istenirse
  yukar ok tuuyla bilgi girii yaplan bir nceki satra gidilebilir. Bilgi
  girilen en son satrda iken enter tuuna baslacak olunursa bilgi giri
  ilemi sonlandrlr.

 Ŀ
 15. Satr                 
 Ĵ
 ACTIVATE WINDOW KUTU2     
 
  Bilgi knda kullanlmak zere daha nce tanmlanan pencere
  aktive ediliyor.

 Ŀ
 16. Satr                                       
 Ĵ
 @2,3 SAY "ADI .......:" + ADI PICTURE "@15!";   
          FONT "Arial",14 STYLE "B"              
 
  Bu satrn art iaretine kadar olan ilk ksm daha nce verilen
  satrlardaki ile ayn. Satrn bu ksm o anda aktif olan KUTU2 adl
  pencerenin 2 satr 3. stununa "ADI......:" mesajn yazyor. Satrn
  art iaretinden sonraki ksm ise daha nce tanmlanp deer aktarlan ADI
  deikeninin ierii mesaja eklenip pencerenin iine yazlyor. Dikkat
  edilirse mesaja ierii eklenilen ADI deikeninin PICTURE yaps tekrar
  belirtilmi. ADI deikeninin ierii ile trnak iinde verilen sabit bilgi
  "+" operatr ile birletiriliyor.

 Ŀ
 17 ve 18. Satrlar                               
 Ĵ
 @4,3 SAY "SOYADI.:" + SOYADI PICTURE "@20!";     
                  FONT "Arial",14 STYLE "B"       
 @6,3 SAY "ADRESI.:" + ADRES PICTURE "@40!";      
                  FONT "Arial",14 STYLE "B"       
 
  Yine 16. satrdaki gibi aktif pencerenin belirtilen satrlarna
  SOYADI ve ADRES deikenlerinin ierikleri yazlyor.

 Ŀ
 19. ve 20. Satrlar                                     
 Ĵ
 @8,3 SAY "YASI......:" FONT "Arial",14 STYLE "B"        
 @8,14 SAY YASI PICTURE "99" FONT "Arial",14 STYLE "B"   
 
  Burada btn programlama dillerinde geerli olan bir kuraldan sz
  edeceim: Ancak benzer ierikli deiken ve bilgiler birbirlerine
  eklenebilir. Tipleri ayn olmayan bilgileri ve deikenlerin
  ieriklerini birbirlerine ekleyebilmek iin deiken veya bilgiden
  birinin dier tipe dntrlmesi gerekir.

  Bu satrda dikkat edilirse karakter tipli "YASI.....:" mesaj ve YASI
  saysal deikenin ierii ekrana yazlyor. Burada deikenlerin
  tiplerini dntrme yerine ayr SAY deyimlerinden yararlanlm.
  YASI deikeninin PICTURE yapsna baklrsa iki haneli saysal
  bir bilgi var. Saysal deikenler iin PICTURE deyimini kullanrken her
  hane iin ayr bir dokuz "9" rakamn kullanmak gerekiyor.

 Ŀ
 21. Satr                                                 
 Ĵ
 @10,3 SAY "PROGRAMDAN IKMAK N BR TUA BASINIZ"       
 
  Aktif pencerenin 10. satr, 3. stununa SAY deyimi yardmyla
  "PROGRAMDAN IKMAK N BR TUA BASINIZ" mesaj yazlyor.

 Ŀ
 22. Satr               
 Ĵ
 BEKLE=INKEY(0)          
 
  INKEY() fonksiyonu ile bir tua baslncaya dein programn bekletilmesi
  salanyor. INKEY() fonksiyonuna parametre olarak verilen sfr "0" saysal
  deeri INKEY() fonksiyonunun program durdurmas konusunda bir zaman
  ayrmnn yaplmadn gstermektedir. INKEY() ile birlikte kullanlacak
  sfrdan farkl deerler programn saniye olarak durdurulaca zaman
  belirtir.  Yani INKEY(0) yerine INKEY(5) yazlrsa INKEY() fonksiyonundan 5
  saniye sonra, INKEY(10) yazlrsa 10 saniye sonra klr. Programn ilemi
  INKEY() fonksiyonun bulunduu satra geldiinde ekrana aada verilen
  grnt gelir.

               Ŀ
               Ŀ
                    Resim 14       
                                   
                    FOXPRO14.GIF   
               ٳ
               


 Ŀ
 23. ve 24. Satrlar          
 Ĵ
 DEACTIVATE WINDOW KUTU1      
 DEACTIVATE WINDOW KUTU2      
 
  Bu program satrlar ile daha nce tanmlanp aktive edilen KUTU1 ve KUTU2
  adl pencereler pasif duruma getirilmektedir. Pasif duruma getirilen pencere
  ekrandan silinir.