1

Konu: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Programda menüden bir form açıldıktan sonra ikinci bir formu yine menüden açmak mümkün müdür?..Çünkü bir form açıldıktan sonra menü aktif olmuyor..Ayrıca eğer iki veya daha fazla form açmak ve bunlar üzerine çalışmak mümkün ise (aynı tabloları ve verileri kullanan formlarda update vb. den dolayı) bunun bir sakıncası var mıdır?
Cevaplarınız için şimdiden teşekkürler..

2

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

oralozden yazdı:

Programda menüden bir form açıldıktan sonra ikinci bir formu yine menüden açmak mümkün müdür?..Çünkü bir form açıldıktan sonra menü aktif olmuyor..Ayrıca eğer iki veya daha fazla form açmak ve bunlar üzerine çalışmak mümkün ise (aynı tabloları ve verileri kullanan formlarda update vb. den dolayı) bunun bir sakıncası var mıdır?
Cevaplarınız için şimdiden teşekkürler..


modal form kullanmazsan mumkun,private datasession-buffermode kullanirsan herhangi bir sakıncasi yok ancak orn.stok formu aciksa 2. bir stok formu acmamak eger aciksa aktif etmek daha akılllıcası ve yaygın kullanılanı...

ilgili kod benim kullandigim

Visual Fox Pro
&& form load event code

Local ix,nFormCount
nFormCount=0
&& form name mutlaka doldurulmali
&& form tekcalis property mutlaka olmalı ve degeri .T. olmali
If This.tekcalis
    For ix=1 To _Screen.FormCount
        If _Screen.Forms(m.ix).Name==This.Name
            nFormCount=nFormCount+1
        Endif
        If nFormCount>1
            _Screen.Forms(m.ix).Show()
            Return .F.
        Endif
    Next
Endif

3

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Sayın Özçelik cevabınız için teşekkürler..Ancak ben iki adet aynı formdan yani iki adet STOK formundan değil bir adet stok formu açıkken bir de firmalar formunu menüden açabilmek mümkün müdür diye sormak istemiştim..Ya da başka bir anlatımla bir form açıldığında menü seçenekleeri disable olmamalı...Saygılar..

4

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

formun modal olmamasi gerekiyor bunun icin yani formun windowtype property si 0-Modeless olmali

5

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Eğer Formun ShowWindow özelliğini 2 yaparak formu oluşturursan herbir forma ayrı menü yerleştirebiliyorsun.

Formun Init bölümüne
DO menu\mymenu.mpr WITH this, .T., .T.

MENU için
Menu oluştururken Menu Designer açıkken View menüsünde General options var Top-Level Form işaretleyerek menuyü generate ediyorsun.

6

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Formların windowtype property si 0-Modeless olunca menü deki disable durumu ortadan kalkıyor...Ancak aynı viewi,tabloyu kullanan bir kaç formun açılması ve de dolayısı ile formalarla birlikte çok sayıda CURSOR un açılması ve kullanılması UPDATE vb. işlemlerde bir sıkıntı ortaya çıkarır mı?

7

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Ayni tabloyu kullanan cok kullanicili birsey yaparsan, "cok sayidaki kullanicinin" aslinda yalnizca sen ya da gercekten N tane farkli kullanici olmasi farketmez. Isin sirri sonucta "private datasession".

8

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Sayın Çetin BAŞÖZ işin sırrının "private datasession" da olduğunu yazmışsınız..Formları tasarlarken DataSession.. 2-Private Datasession mu yapılmalı..Ayrıca birbirleri ile illişkili ve aynı tabloların kullanıldığı formlarda kayıt ekledikten veya bir işlem yapıldıktan sonra formda aynı işlemi yinelediğinizde "Cannot access the selected table.odeme.odemeturu" (odeme : tablo adı) şeklinde bir hata mesajı veriyor..İşin ilginç yanı bu hatayı bir kez veriyor ve daha sonraki çalıştırmalarda tekrar etmiyor...Ayrıca bir formun ya da tablonun o an açık veya kullanılıyor olup olmadığını denetleyen kod nedir?...Benim gibi VFP ye yeni başlamış birisine bu konudalarda yardımcı olursanız sevinirim..

9

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Private Datasession yapmani tavsiye ederim.
Cannot access the selected table'in birden fazla nedeni var. Combo/listbox'ta rowsource olarak kullanilmalari, exclusive acilmalari vs.
Exclusive kullanma. Combo/listboxlarda SQL rowsource tercih et.

10

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Çetin Bey cevap için tekrar teşekkürler...Combo ve Listboxlarda RowSource Type olarak 6-Fields kullanıyordum..Yazdıklarınızdan SQL i tercih etmenin daha iyi olacağı sonucu çıkıyor...Umarım doğru anlamışımdır.."Ayrıca bir formun ya da tablonun o an açık veya kullanılıyor olup olmadığını denetleyen kod nedir?..." diye sormuştum..Eğer form/tablo kullanımdaysa ..... değilse .....şeklinde bir koda ihtiyacım var...İyi çalışmalar..

11

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

aused()
asession()

ornek:
CLEAR
PUBLIC oSess1,oSess2
oSess1=createobject('mySession','customer,orders')
oSess2=createobject('mySession','customer,orders,orditems')

ListTablesInUse()
RELEASE oSess1, oSess2
? "After release"
ListTablesInUse()


Function ListTablesInUse
  Local oObj, lnInUse, ix, jx
  Local array arrInUse[1], aSessList[1]
  FOR ix = 1 TO ASESSIONS(aSessList)
      ? "Session ID", m.ix
      FOR jx=1 TO AUSED(arrInUse, aSessList[m.ix])
          ? "   Cursor:", arrInUse[m.jx,1]
      endfor
  endfor

Define class mySession as Form
  DataSession = 2
  Procedure init
    Lparameters tcTableList
    Local lnTables,ix
    lnTables = ALINES(arrTables,CHRTRAN(tcTableList,',',CHR(13)))
    For m.ix=1 TO m.lnTables
      Use (arrTables[m.ix]) IN 0
      SELECT * from (arrTables[m.ix]) INTO CURSOR (SYS(2015))
    Endfor
  Endproc
Enddefine


Kullanimdaysa ne olur? Ona gore dusun. Exckusive'e ihtiyacin var ise on error ile exclusive kullanmayi dene, ISExclusive() ile kontrol et.

12

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

Çetin bey yardımlarınız için çok çok teşekkürler..

13

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

cetinyasar yazdı:

Eğer Formun ShowWindow özelliğini 2 yaparak formu oluşturursan herbir forma ayrı menü yerleştirebiliyorsun.

Formun Init bölümüne
DO menu\mymenu.mpr WITH this, .T., .T.

MENU için
Menu oluştururken Menu Designer açıkken View menüsünde General options var Top-Level Form işaretleyerek menuyü generate ediyorsun.

Herbir forma ayrı menü yerleştirebiliniyorsa toolbarda yapılabilir mi? Bu konuda yardımcı olabilir misiniz?

14

Re: Birden Fazla Form Açmak Ve Bunlar Üzerinde Çalışmak

tamer061966 yazdı:

...
Herbir forma ayrı menü yerleştirebiliniyorsa toolbarda yapılabilir mi? Bu konuda yardımcı olabilir misiniz?

her forma ayrı menü ya da ayrı toolbar tavsiye etmem. forma girerken göster ya da enable et, çıkarken sil ya da disable et.

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