1

Konu: program exe olurken

sorunum şu programı exe haline cevirdiğimde fox penceresi açılıp yok oluyor ve proğram tabiki çalışmıyor. bir döngü oluşturuyor do while.t. döngüsünü kaldırırsamda hemen çıkıyor

*
on key labe f4 cancel
ON KEY LABE F2 BROWSE
ON KEY LABE F3 DO GIRIS.SPR
OLDCAPS=CAPSLOCK()
=CAPSLOCK(.T.)
OLDNUM=numlOck()
=numlOck(.t.)               
set date briti
IF USED("setup")
    SELECT setup
    SET ORDER TO 0
ELSE
    SELECT 0
    USE (LOCFILE("setup.dbf","DBF","Bu dosya nerede :setup?"));
        AGAIN ALIAS setup ;
        ORDER 0
ENDIF
*OPEN DATABASE d:\fpw26\zz\ZEK
MODIFY WINDOW SCREEN ;
    AT  0.000, 0.000  ;
    SIZE 50,150;
    TITLE SETUP.AD11 +"   HASTA TAKİP PROĞRAMI VER 3.00";
    FONT "MS Sans Serif", 8 ;
    STYLE "B" ;
    CLOSE ;
    MINIMIZE ;
    FILL FILE LOCFILE("BATHROOM.BMP","BMP|ICO|PCT|ICN", ;
        "Bu dosya nerede :bathroom?")
zoom WINDOW SCREEN max
DO WHILE.T.
IF USED("randevu")
    SELECT randevu
ELSE
    SELECT 0
    USE (LOCFILE("randevu.dbf","DBF","Bu dosya nerede :randevu?"));
        AGAIN ALIAS randevu ;
    ORDER TAG "no"
ENDIF
IF USED("hasta")
    SELECT hasta
ELSE
    SELECT 0
    USE (LOCFILE("hasta.dbf","DBF","Bu dosya nerede :hasta?"));
        AGAIN ALIAS hasta ;
    ORDER TAG "NO"        
ENDIF


IF USED("irklar")
    SELECT irklar
ELSE
    SELECT 0
    USE (LOCFILE("irklar.dbf","DBF","Bu dosya nerede :irklar?"));
        AGAIN ALIAS irklar;
    ORDER TAG "ADI"          
ENDIF

IF USED("asilama")
    SELECT asilama
ELSE
    SELECT 0
    USE (LOCFILE("asilama.dbf","DBF","Bu dosya nerede :asilama?"));
        AGAIN ALIAS asilama;
    ORDER TAG "ATAR" INDEX ASILAMA
ENDIF



IF USED("asilar")
    SELECT asilar

ELSE
    SELECT 0
    USE (LOCFILE("asilar.dbf","DBF","Bu dosya nerede :asilar?"));
        AGAIN ALIAS asilar ;
    ORDER TAG "ASI"        
ENDIF
IF USED("HASTALIK")
    SELECT HASTALIK

ELSE
    SELECT 0
    USE (LOCFILE("HASTALIK.dbf","DBF","Bu dosya nerede :HASTALIK?"));
        AGAIN ALIAS HASTALIK ;
    ORDER TAG "NO"        
ENDIF
IF USED("CINSLER")
    SELECT CINSLER

ELSE
    SELECT 0
    USE (LOCFILE("CINSLER.dbf","DBF","Bu dosya nerede :CINSLER?"));
        AGAIN ALIAS CINSLER
ENDIF
DO form form1
=capslock(oldcaps)
=numlock(oldnum)
close all
clea all
clea
quit
ENDD

2

Re: program exe olurken

&&Form1 formunun destroy event'ına veya çıkış butonuna Clear Events ekle. Daha sonra prg kodlarına aşağıda açıklama ile belirttiğim satırı ekle.
....
.......
....
do form form1
Rele Events &&Bu satır form1 penceresinden clear event gelene kadar beklenmesini sağlayacak.
=capslock(oldcaps)
=numlock(oldnum)
close all
clea all
clea
quit
ENDD

3

Re: program exe olurken

malesef olmuyor kendini sonduz döngüye soktu. form1 açılıyor ama işlem yapılamıyor. mause sürekli meşgul. döngüyü kapatıncada malesef olmuyor

4

Re: program exe olurken

do form form1 den sonra read events koy.
programdan çıkabilmek için de clear events çalıştır.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

5

Re: program exe olurken

pardon "read events" yerine ben "rele events" yazmışım sad

6

Re: program exe olurken

cevap veren arkadaşlar sağolun
metin hocam senin yöntem işe yaradı teşekkürler

7

Re: program exe olurken

Do while .t.
*...
enddo

VFP'de kullanilmayacak bir dongu. Cok cok nadir kullanilacagi yer cikabilir. Klasik ve en basit main.prg:

* varsa setup kodu
do form myForm
read events
wait window "Program sona eriyor..."
* cleanup kodu varsa

veya:

do menu myMenu
read events

read events eski read valid gibi. Ucurumun kenarindaki bariyer. Program 'read events' gordugu yerde o satira kadar olan bolumu 'calisir' halde tutar ve exenin hemen sonlanmasini onler. Kendisinden sonra gelen satirlar ancak herhangi bir yerde 'clear events' cagirilirsa calisir. Bu nedenle bir yerde de mutlaka 'clear events' olmali (menunun "Cikis" secenegindeki kodda, formda "Programdan Cik" gibi butonun klik kodunda ...).