2017-08-21 5 views
0

J'ai une datawindow avec des cases à cocher et un bouton 'OK'. Le bouton est désactivé jusqu'à ce qu'au moins l'une des cases à cocher soit cochée. Le problème est que si j'ai coché plus d'une case et que je veux décocher une case, le bouton est désactivé. J'ai écrit le code dans l'événement ItemChanged:Comment activer le bouton en fonction du nombre de cases cochées powerbuilder?

int li_ind 
long ll_row 

choose case dwo.name 
    case "ind" 
     for row = 1 to this.RowCount() 
      if data ='1' then  
       li_ind++ 
      end if 
     next 

     if li_ind <> 0 then 
      parent.cb_ok.enabled = true 
     else 
      parent.cb_ok.enabled = false 
     end if 

end choose 

Qu'est-ce que je fais mal?

Merci!

Répondre

0

Vous pouvez placer un champ calculé caché dans la bande de détails de votre fenêtre de données nommée cf_ind_count.

Définir cf_ind_count

sum(if(ind = '1', 1, 0)) 

remplacer votre script avec

long ll_count 
long ll_rows 
boolean lb_enable = false 

ll_rows = this.rowcount() 

if ll_rows < 1 then 
    lb_enable = false 
else 
    ll_count = long(this.object.cf_ind_count[1]) 
    if ll_count > 0 then 
     lb_enable = true 
    else 
     lb_enable = false 
    end if 
end if 

parent.cb_ok.enable = lb_enable 
0

La variable 'data' ne s'applique qu'à la ligne en cours. Vous devez utiliser getitemstring.