Arkadaslar,
Affiniza siginarak, bu is hem cok daha basit hem de hic o kadar basit degil:)
Eger dogru anladiysam tum objelerde eger varsa MousePointer = 13 olacak. O zaman cok basit:
Visual Fox Pro
thisform.SetAll( "MousePointer", 13 )
Eger boyle degil de form uzerindeki objelerin dolasilmasi gerekiyorsa o zaman ne yazik ki foreach ... endfor ile yapilacak kadar basit degil. Neden degil derseniz, formun icerisinde bir cesit container olan objeler olabilir (container, grid, pageframe, commandgroup ...). O zaman onlarin da iceriginin dolasilmasi gerekecek ( diskteki dizinleri ve alt dizinleri dolasmak gibi ). Bunu yapmak icin temel iki yol var:
1) For ... endfor ile dolasip container tipi birsey buldukca onun da icini dolasmak ( FoxyClasses olanlar global.vcx'te udfObjCollector bu isi yapiyor ve bazi metodlari var ).
2) Onlari dolasmak yerine, eger kendi base classlarimizda bu tip isleri onceden dusunup bir 'dinleyici' yarattiysak formdan sadece bir emir yayinlamak. Bunu yontem ilginc ve bircok yerde isinize yarayabilir:
Visual Fox Pro
* Ornegin kendi textbox classimiz
define class myTextbox as textbox
TeleKulak = .F.
Procedure Telekulak_Assign( vNewVal )
if type( m.vNewVal ) <> 'C'
return
endif
local ix,lnMesaj
lnMesaj = alines(arrMesaj, m.vNewVal, 1+4, ',')
if m.lnMesaj % 2 <> 0 && mesaji ciftler halinde bekliyorduk, ugrasma don
return
endif
local lcProperty, lcValue
for ix=1 to m.lnMesaj / 2
lcProperty = arrMesaj[ (m.ix-1)*2 + 1 ]
lcValue = arrMesaj[ (m.ix-1)*2 + 2 ]
if PemStatus( this, m.lcProperty, 5 ) && readonly, hidden kontrolu yok
this.AddPropery( m.lcProperty, evaluate( m.lcValue) )
endif
endfor
endproc
enddefine
Diger class tiplerinin de bu procedure'e sahip oldugunu ve form'da bu classlarin kullanildigi dusunursek:
Visual Fox Pro
thisform.SetAll( 'TeleKulak', 'MousePointer,13')
seklinde bir 'yayina' cevap olarak tum o objeler kendi mousepointerlarini kendileri kurar:)
Not: Foxyclasses'ta ayni zamanda udfObjCollector icinde ExecAll() var, o metod tum objeleri dolasip beli ozelliktekilerde bir metod kodu calistirmak icin ( SetAll'un ExecuteAll karsiligi gibi - simdi FFC'de benzeri bir class var galiba).