1

Konu: Döngü

Formlarda belkide yüzlerce "Thisform.text1.value=""" komutları var (Text1..text2..text3.. vb) bu komutlar bir döngü içinde sırayla nasıl verebilirim ? (döngünün her tekrarlayışında text1..text2.. için)

Teşekkür ederim..

2

Re: Döngü

PUBLIC a,b,c,d
a="Thisform.text"
b=".value"
c=1
FOR c = 1 TO 5
d = a+ALLTRIM(STR(c))+b
? d   
wait
loop
ENDFOR

D ye aktarılan değer aşağıda 
Thisform.text1.value
Thisform.text2.value
Thisform.text3.value
Thisform.text4.value
Thisform.text5.value

3 Son düzenleyen, altun (19.02.2007 00:13:37)

Re: Döngü

& yardımı ile string haldeki bir ifadeyi objecte dönüştürmek mümkün


Visual Fox Pro
nObjectNo = 3

 
for ii=1 to nObjectNo
    cObject = "thisform.miktar"+transform(ii)
    oObject = &cObject
                oObject.value = 10
endfor


*** Konuyla ilgili bir form örneği

Visual Fox Pro
frmMyForm = CREATEOBJECT('Form')  && Create a Form

 
frmMyForm.AddObject('miktar1',      'textbox')     
frmMyForm.AddObject('miktar2',      'textbox')     
frmMyForm.AddObject('miktar3',      'textbox')     
frmMyForm.AddObject('sonuc',      'textbox')     
 
frmMyForm.AddObject('btnTopla', 'btnMyHesapla')
frmMyForm.AddObject('btnKapat', 'btnMyKapat')
 
frmMyForm.miktar1.Visible = .T.
frmMyForm.miktar2.Visible = .T.
frmMyForm.miktar3.Visible = .T.
frmMyForm.sonuc.Visible = .T.
 
frmMyForm.miktar1.Top = 20
frmMyForm.miktar2.Top = 50
frmMyForm.miktar3.Top = 80
frmMyForm.sonuc.Top      = 80
 
frmMyForm.miktar1.Left = 20
frmMyForm.miktar2.Left = 20
frmMyForm.miktar3.Left = 20
frmMyForm.sonuc.Left   = 150
 
frmMyForm.miktar1.value = 5
frmMyForm.miktar2.value = 6
frmMyForm.miktar3.value = 4
frmMyForm.sonuc.value     = 0
 
frmMyForm.btnKapat.Visible =.T.
frmMyForm.btnKapat.Left = 20
frmMyForm.btnKapat.top  = 110
 
frmMyForm.btnTopla.Visible =.T.
frmMyForm.btnTopla.Left = 150
frmMyForm.btnTopla.top  = 110
 
 
frmMyForm.SHOW 
READ EVENTS 
 
 
DEFINE CLASS btnMyHesapla AS COMMANDBUTTON
   Caption = 'Topla'
   height  = 25
 
   PROCEDURE Click
 
*** form üzerindeki siralı objectlere ait değerlere parametretik
*** erişim sağlanarak değerleri okunuyor
 
    nGirilen  = 0
    nObjectNo = 3
 
    for ii=1 to nObjectNo
        cObject = "thisform.miktar"+transform(ii)
        oObject = &cObject
        nGirilen = nGirilen + oObject.value
    endfor
 
    thisform.sonuc.value = nGirilen
 
ENDDEFINE
 
 
DEFINE CLASS btnMyKapat AS COMMANDBUTTON
   Caption = 'Kapat'
   height  = 25
 
    PROCEDURE Click
        clear Events
 
ENDDEFINE





Gökçe Özçınar yazdı:

Formlarda belkide yüzlerce "Thisform.text1.value=""" komutları var (Text1..text2..text3.. vb) bu komutlar bir döngü içinde sırayla nasıl verebilirim ? (döngünün her tekrarlayışında text1..text2.. için)

Teşekkür ederim..

4

Re: Döngü

Gökçe Özçınar yazdı:

Formlarda belkide yüzlerce "Thisform.text1.value=""" komutları var (Text1..text2..text3.. vb) bu komutlar bir döngü içinde sırayla nasıl verebilirim ? (döngünün her tekrarlayışında text1..text2.. için)

Teşekkür ederim..


Text'lerin hepsini bir yerden inherit etsen ve 1 tanesinin initine bindevent ile formun bir Methoduna bağlasan bunu. Sonra formun method'unu çağırdığında tümüne istediğin i yapabilmen gerekiyor.
Döngülerden uzak durmuş olursun. Ayrıca aşağıdaki döngüler formun içinde başka container'lar (Container, PageFrame vb) olduğunda pek bir işe yaramayacak.
Bir Başka çözüm ise Daha önceden cetinbasoz'ün önderiği http://www.fox4um.com/viewtopic.php?id=202 içindeki çözüm.

5 Son düzenleyen, cetinbasoz (19.02.2007 12:19:20)

Re: Döngü

Benim gerekmedigi yerlerde & kullanimina allerjim var:)

Visual Fox Pro
for ix = 1 to 100

  with Eval( "thisform.text" + ltrim(str(m.ix)) )
      .Value = m.ix && her ne ise
*    .BackColor = 0xffff00     
  endwith
endfor

6

Re: Döngü

Çetin evet biliyorum & kullanımını pek sevmiyorsun ama son bir değişik kullanımı göstermek istedim smile

Visual Fox Pro
Local lnI As Integer, loObje As TextBox

 
For m.lnI = 1 to 10
    m.loObje = "ThisForm.Text" + Transform(m.lnI)
    &cObject..Value = m.lnI
EndFor
/o---------------------o\
     www.haser.com
\o---------------------o/

7

Re: Döngü

O zaman bu fırsatta daha iyisi:)

Visual Fox Pro
for ix = 1 to 100

  with GetPem( thisform,"text" + ltrim(str(m.ix)) )
      .Value = m.ix && her ne ise
*    .BackColor = 0xffff00     
  endwith
endfor