1

Konu: _screen siz bir formun exede çalışması ?

arkadaşlar merhaba
sorumda belki kavramları yanlış kullanmış olabilirim.
benim sorunum projede bir form var ve exe çalıştığında bu form çalışacak.
yani, menü yok arka planda bir mdi form olmayacak.
projede bir form ve bir prg var.
projede prg set main yapılmış durumda çalıştığında sadece o form çalışsın istiyorum.
ama o formun arkasında bir form daha açılıyor. yani _screen komutuyla kullandığımız ekranı kaldıramadım.
yardımcı olursanız sevinirim.

2

Re: _screen siz bir formun exede çalışması ?

_screen.visible=.f.

3

Re: _screen siz bir formun exede çalışması ?

teşekkür ederim. sağol

4

Re: _screen siz bir formun exede çalışması ?

Bir config.fpw dosyasi yarat ve icine:
screen = off
koy. Bu en rahat yontem.

5

Re: _screen siz bir formun exede çalışması ?

Mrb.

_screen.visible=.f. veya config.fpw dosyasına screen=off komutu konulduğu durumda
exe ye dönüştürülmüş bir form hiç açılmıyor.
Başka birşey dahamı yapmak gerekiyor acaba.


Birde Fom'un Load'ına;
DECLARE SetWindowLong In Win32Api AS _Sol_SetWindowLong Integer, Integer, Integer
DECLARE SetLayeredWindowAttributes In Win32Api AS _Sol_SetLayeredWindowAttributes Integer, String, Integer, Integer
_Sol_SetWindowLong(THISFORM.hWnd, -20, 0x00080000)
_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, 0, 2)


Activate' sine;
LOCAL lnValue
DECLARE SetWindowLong In Win32Api AS _Sol_SetWindowLong Integer, Integer, Integer
DECLARE SetLayeredWindowAttributes In Win32Api AS _Sol_SetLayeredWindowAttributes Integer, String, Integer, Integer
_Sol_SetWindowLong(THISFORM.hWnd, -20, 0x00080000)
_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, 0, 2)

for lnvalue=0 to 255 step 10
String, Integer, Integer
_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, lnValue, 2)
next

konulduğunda güzel bir efekt oluşuyor. Bilgilerinize

6 Son düzenleyen, cetinbasoz (30.04.2007 17:57:20)

Re: _screen siz bir formun exede çalışması ?

Visual Fox Pro
define class TekFormProgram as Form

ShowWindow = 1
 
Procedure init
this.Show
read events
endproc
 
Procedure QueryUnload
clear events
endproc
enddefine

Verdigin kodda activate de yeniden declare'e gerek yok. Efekti gormek icin de yavas bir makine lazim:) ActiveX olan formlarda da kullanmamani tavsiye ederim.

7

Re: _screen siz bir formun exede çalışması ?

Malesef olmadı.
Dediğiniz gibi Form'un İnit ve QueryUnload'ına ilgili kodları girdim.
Read events tamam. Ancak Formdan çıkmak istediğimde (Thisform.release)
tekrar init procedure ye dönüyor ve formdan çıkılamıyor.
Bunu set step on komutu ile görebiliyorum.
Acaba bir döngü kontrolümü koymak gerekiyor.

8

Re: _screen siz bir formun exede çalışması ?

Hayir bu calisiyor. Benim tek hatam ShowWIndow'a 2 yerine 1 yazmak olmus.

9

Re: _screen siz bir formun exede çalışması ?

Malesef  yine init'e dönüyor ve release olamıyor.
showwindow=2 yi formda load'a koyuyorum.
Ayrıca,
Desktop=.t.
Window Type=Modal
Bunlar etkilermi?

10

Re: _screen siz bir formun exede çalışması ?

Showwindow = 2 loadda olamaz. Yukarıda ornek kod var iste, exe yap calıstır. Showwindow = 2 iken zaten modal olamaz.

11

Re: _screen siz bir formun exede çalışması ?

Modal'ı kaldırdım oldu.
Çok teşekkürler.

12

Re: _screen siz bir formun exede çalışması ?

OK. Bu arada Modal ile ilgili ufak bir uyari. Senin yasadigin olayla da ilgisi var sanirim. Release etmene ragmen gercekten release olmamasi ve kodun devam etmemesi. Ben modal formlari release etmeden once (aslinda release bile etmiyorum da edersem) hide cagiriyorum.

this.hide()
this.release()

veya sadece:
this.Hide()

Hide(), .Visible = .f. gibi islemler modal formu cagiran kodun devam etmesini sagliyor, boylece o formdan deger okunabilir, eger referans varsa referansin birakilmasi saglanir vs (referans nedeniyle release olamiyor yoksa). Ornegin:

local oModal
do form myModalForm name oModal && modal form release yerine hide() ediliyor cikista
* bu satir ve sonrasina modal hide() cagirilana kadar ulasilmiyor
* burada hala form memoryde ve referansimiz var
luHerhangiBirdeger = oModal.HerhangibirTextBox.Value && dogrudan formdan deger okuduk
oModal.release()
release oModal && gerekli degil local tanimi nedeniyle keyfe keder - kod burada bitmiyorsa uzunsa

13

Re: _screen siz bir formun exede çalışması ?

şimdi tam olarak hatırlamıyorum ama, galiba şöyle bir durum vardı: modal form as top leve form olursa. bir türlü release ile release olmuyordu. ben bunu bug olarak düşündüm. ama ut dekiler bug değil dedi...

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