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..
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Kodlama ve Komutlar » 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..
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
& yardımı ile string haldeki bir ifadeyi objecte dönüştürmek mümkün
nObjectNo = 3
for ii=1 to nObjectNo
cObject = "thisform.miktar"+transform(ii)
oObject = &cObject
oObject.value = 10
endfor
*** Konuyla ilgili bir form örneği
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
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..
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.
Benim gerekmedigi yerlerde & kullanimina allerjim var:)
for ix = 1 to 100
with Eval( "thisform.text" + ltrim(str(m.ix)) )
.Value = m.ix && her ne ise
* .BackColor = 0xffff00
endwith
endfor
Çetin evet biliyorum & kullanımını pek sevmiyorsun ama son bir değişik kullanımı göstermek istedim
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 zaman bu fırsatta daha iyisi:)
for ix = 1 to 100
with GetPem( thisform,"text" + ltrim(str(m.ix)) )
.Value = m.ix && her ne ise
* .BackColor = 0xffff00
endwith
endfor
fox4um » Kodlama ve Komutlar » Döngü