2012-02-15 8 views
6

Ho alcuni campi nel mio modulo d'ordine di vendita (SalesTable) che devono essere disabilitati se un altro campo è impostato su un valore specifico. Per fare questo ho scavalcato i metodi enter e focus sul campo del modulo (ho fatto entrambe le prove per testarlo). Il codice viene compilato e non presenta problemi.gotFocus e immettere metodi nel campo Modulo non viene chiamato

Il mio problema è che nessuno di questi metodi sovrascritti vengono chiamati quando faccio clic su un campo nella colonna della griglia appropriata. Cosa potrebbe causare l'immissione e i metodi gotFocus non essere chiamati su un campo di griglia?

+0

Hai inserito il tuo codice prima o dopo la chiamata a super()? –

+0

Ho provato sia prima che dopo. Qual è quella giusta da fare? Ho pensato prima. Inoltre, i miei metodi vengono cancellati dall'AX ogni volta che esco dall'area e da qualche altra parte per modificare il codice. –

+2

Questo perché 'AutoDataGroup' è Sì. Il gruppo viene ricreato ad ogni corsa. –

risposta

8

Non utilizzare i metodi gotFocus e enter.

Fai un metodo di origine dati per fare il cambiamento:

void setAllowEdit() 
{ 
    salesTable_ds.object(fieldnum(SalesTable, Name)).allowEdit(salesTable.SalesType == SalesType::Journal); 
} 

chiamata al metodo dal metodo della active:

public int active() 
{ 
    int ret = super(); 
    ... 
    this.setAllowEdit() 
    return ret; 
} 

chiamata al metodo dal campo di origine dati (in questo caso il SalesType campo):

public void modified() 
{ 
    super() 
    salesTable_ds.setAllowEdit() 
    element.changeType(); // standard code 
} 
+0

semplicemente sfogliando alcune domande e chiedendosi, cosa fa changeType qui? – AnthonyBlake

+0

Dai un'occhiata al metodo form 'SalesTable.changeType()'. –

+0

Aha - quindi è specifico per il form di Salestable, va bene - l'ho implementato su un altro modulo e speravo/controllando di non aver perso una buona pratica. – AnthonyBlake

Problemi correlati