| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Контролы Контролы являются далеко не самыми часто используемыми компонентами Фокса. set notify off this.text1.controlsource=this.controlsource this.text1.width=this.width this.text2.width=this.width this.text2.value=dtoc(this.text1.value) Its refresh event has code this.text2.value=dtoc(this.text1.value)Формат видимой коробки - DMY Первоначальное значение Dateformat-D В valid запишем: Local oo If type('this.value')='C' and this.format='D' If len(alltrim(substr(this.value,7,4)))=2 yi=int(val(alltrim(substr(this.value,7,4)))) If yi<90 This.value=alltrim(stuff(this.value,7,2,'20'))+alltrim(str(yi)) Else This.value=alltrim(stuff(this.value,7,2,'19'))+alltrim(str(yi)) Endif Endif oo=this.value IF EMPTY(ALLTRIM(substr(oo,7,4))) AND EMPTY(ALLTRIM(SUBSTR(oo,4,2))) AND EMPTY(ALLTRIM(substr(oo,1,2))) this.parent.text1.value=ctod(this.value) Return 1 Endif Local dd, mm,yy,nn, local k Dimension nn[12] nn[1]=31 nn[2]=28 nn[3]=31 nn[4]=30 nn[5]=31 nn[6]=30 nn[7]=31 nn[8]=31 nn[9]=30 nn[10]=31 nn[11]=30 nn[12]=31 yy=val(substr(oo,7,4)) If (len( alltrim(substr(oo,7,4)))!=4 or yy=0 ) =messagebox('Неверный год ','Предупреждение) Return 0 Endif mm=val(substr(oo,4,2)) dd=val(substr(oo,1,2)) ******************************* If mm=0 or mm>12 =messagebox('Неверный месяц','Предупреждение ') Return 0 Endif ************************************ If dd=0 =messagebox('Неверный день ','Предупреждение') Return 0 Endif ****************************** If mm<=12 and mm>0 k=yy-4*int(yy/4) If k!=0 and dd>nn[mm] =messagebox('Неверный день ','Предупреждение') Return 0 Endif If k=0 and dd>nn[mm] and mm!=2 =messagebox('Неверный день ','Предупреждение') Return 0 Endif If k=0 and dd>nn[mm] and mm!=2 =messagebox('Неверный день ','Предупреждение') Return 0 Endif If k=0 and dd>nn[mm]+1 and mm=2 =messagebox('Wrong day ','Alarm') Return 0 Endif Endif Endif this.parent.text1.value=ctod(this.value) return 1Теперь смело можем класть контрол на формы , присваивать его controlsource нужным полям и все будет говорить по Русски. Как это работает? Невидимый текст2 на самом деле привязывается к данным, а видимый все отражает. Цветная кнопка и кнопка с картинкой Вы наверное замечали, что в кнопках нельзя изменять цвет. Еще есть другая проблема: this.label1.forecolor=rgb(0,0,255) this.specialeffect=1 Init event has the following code This.label1.forecolor=this.forecolor This.label1.backcolor=this.backcolor If not empty(this.caption) This.label1.caption=alltrim(this.caption) This.label1.top=2+int((this.height-20)/2) If not this.notsiz This.width=int(this.label1.FontSize*TXTWIDTH(alltrim(this.label1.caption),this.label1.FontName,this.label1.FontSize ))+1 Endif Endif *!* this.width=this.label1.width+1 This.command1.width=this.width-3 This.command1.height=this.height-2 This.refresh
Две картинки Заведем контролу два свойства picture1, picture2 Init контрола присваивает из этих свойств свойства картинок. Заведем теперь метод переключения видимой картинки и смело можно класть контрол в грид Я обычно кладу в грид два разных контрола , и переключаю их с помощью setall dynamiccurrentcontrol Итого получается уже четыре возможности показать разные картинки-открытые и закрытые папки, доступные и недоступные кнопки. Vaszil Besneyee поставил задачу показать в гриде чекбокс, чей текст зависит от одного поля таблицы, а статус от другого. Я предложил следующее решение. Заведем контрол и положим туда чекбокс с пустым caption Добавим туда текстовую коробку рид онли. Заведем в контроле два свойства- controlsource, и controlsource1 В Init контрола присвоим эти свойства controlsource чекбокса и текстовой коробки. this.check1.controlsource=this.controlsource this.text1.controlsource=this.controlsource1 Все - кладите контрол в грид, цепляейте его к двум полям и текст тестбоксах покажет значения поля. Вообще контрол обладает удивительным свойством решать кучу проблем, связанных с гридом, которые по другому никак не решаются. Приведенные коды грязноваты, но я надеюсь, если кто ими воспользуется , сделает их такими, какими нужно. |
|
| ||||||||||||||||
|