2015-05-28 2 views
0

У меня проблема с ручной установкой для этих макетов флажка в первых столбцах сетки, где все создано в объекте класса.Невозможно правильно установить флажок в сетке

Я могу выбрать успех в первом ряду, но он не будет отображаться при нажатии второй строки.

Флажок во всей колонке кажется неудачным в случайном порядке и не может выбрать одинаковое для каждой строки.

Кодирование:

define class chk_sel as checkbox 
name = "chk_sel" 

procedure init 

this.value = 0 
this.caption = "" 
this.readonly = .f. 
this.tabstop = .f. 

endproc 

enddefine 

Define class frmpurc As Form 

procedure init 

For frm in _screen.Forms 
if frm.name == "MyForm" 
select "" as pick,supcode,item_desc,inv_no,po_no,line,acc_qty, ; 
taxcode,acc_amt,net_tax,gros_amt from purc ; 
into cursor tmpcur ; 
where alltrim(inv_no) = alltrim(this.txt_search.value) 

If NOT USED('tmpcur_') 
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_ 
else 
USE IN 'tmpcur_' 
USE DBF("tmpcur") in 0 AGAIN alias tmpcur_ 
endif 

sele tmpcur_ 

frm.grid_list.recordsource = SPACE(0) 
frm.grid_list.recordsource = "tmpcur_" 
frm.grid_list.deletemark = .f. 
frm.grid_list.readonly = .f. 

frm.grid_list.column1.width = 25 
frm.grid_list.column1.bound = .f. 
frm.grid_list.column1.controlsource = "tmpcur_.pick" 
frm.grid_list.column1.readonly = .f. 

frm.grid_list.column1.text1.visible = .t. 
frm.grid_list.column1.removeobject("text1") 
frm.grid_list.column1.addobject("pick","chk_sel") 

frm.grid_list.column1.currentcontrol = "pick" 
frm.grid_list.column1.pick.visible = .t. 
frm.grid_list.column1.pick.readonly = .f. 
frm.grid_list.column1.pick.tabstop = .t. 
frm.grid_list.column1.sparse = .f. 


endif 
endfor 

endpro 

enddefine 

Спасибо кто-то может помочь мне решить эту проблему.

ответ

0

Немного корректировок для вас ... Ваш цикл for должен быть FOR EACH, в противном случае у меня была ошибка компиляции.

For EACH frm in _screen.Forms 

Другой ярлык для вас на открытии таблицы в виде редактируемых является пункт READWRITE ... и вы можете убедиться, курсор закрывается до запрашивая с контекстного синтаксиса

*/С SELECT («someAlias») будет возвращать либо рабочую область, которую он открывает в */или ноль, если псевдоним не используется, USE IN заявляет, чтобы ЗАКРЫТЬ таблицу/псевдоним */в данной рабочей области.

use in select("tmpcur") && pre-close your read-only cursor result 
use in select("tmpcur_") && pre-close your read-write version of cursor 

*/Теперь, запрос ... FIRST, изменить столбец «PICK» до логичного, как это */основа привязки к элементу управления CheckBox, а не символ пробела ... */Затем измените INTO п ...

select ; 
     .f. as pick,; 
     AllOtherFields ; 
    from ; 
     purc ; 
    where ; 
     alltrim(inv_no) = alltrim(this.txt_search.value) ; 
    into ; 
     cursor tmpcur 

*/Теперь, просто откройте результат еще раз, как это было предварительно закрыто */если уже открыта до запроса

USE DBF("tmpcur") in 0 AGAIN alias tmpcur_ 

Теперь все, что вам не хватает, это привязка вашего элемента управления флажком. Измените свой

frm.grid_list.column1.bound = .T. 

Установив TRUE, вы заявляете, что хотите, чтобы он привязывался к каждой отдельной записи.

+0

Большое спасибо за помощь, и я могу это исправить. – koklimabc

+0

Для последних упомянутых вещей я не могу поставить предложение readwrite за моим курсором, так как я использую Visual foxpro 6.0, который до сих пор его не поддерживает. – koklimabc

+0

@koklimabc, исправленный код для реализации VFP 6 ... все еще упрощает код для вас. Также нажмите ссылку вверху для справки -> Тур для этикета сайта. Не ставьте ответ на основании предоставленного ответа, но отметьте ответ, который помог вам решить ваш вопрос ... Комментарий к ответу, такой как ... Bound = .T. исправил его ... спасибо. против совершенно нового ответа, отправленного назад. – DRapp

0

Огромное спасибо за помощь, и я могу это исправить. Проверка, наконец, привязана к отдельной строке.

Существует только 2 модификации сделано в мой последний код:

If NOT USED('tmpcur_') 
      USE DBF("tmpcur") in 0 AGAIN alias tmpcur_ 
else 
      USE IN select('tmpcur_') /*Change*/ 
      USE DBF("tmpcur") in 0 AGAIN alias tmpcur_ 
endif 

frm.grid_list.column1.bound     = .t. /*It is bound to .f. in before */ 

Для последних упомянутых вещей, я не могу поставить READWRITE положение в позади моего курсора, так как я использую Visual FoxPro 6.0, который так далеко не поддерживают его.

Смежные вопросы