2012-02-15 22 views
6

Tôi có một số trường trong Biểu mẫu đặt hàng (SalesTable) cần phải bị vô hiệu hóa nếu trường khác được đặt thành giá trị cụ thể. Để làm điều này tôi overrode nhập và các phương pháp gotFocus trên lĩnh vực hình thức (tôi đã làm cả hai để kiểm tra nó ra). Mã biên dịch và không có bất kỳ vấn đề nào.gotFocus và nhập các phương thức trên trường Biểu mẫu không được gọi là

Vấn đề của tôi là không có phương pháp ghi đè nào được gọi khi tôi nhấp vào một trường trong cột lưới thích hợp. Điều gì sẽ khiến phương thức nhập và phương thức gotFocus không được gọi trên trường lưới?

+0

Bạn đã đặt mã trước hoặc sau cuộc gọi super()? –

+0

Tôi đã thử cả trước và sau. Đó là một trong những chính xác để làm gì? Tôi đã giả định trước đây. Ngoài ra, phương pháp của tôi bị xóa bởi AX bất cứ khi nào tôi rời khỏi khu vực đó và đi đến một nơi khác để chỉnh sửa mã. –

+2

Điều này là do 'AutoDataGroup' là Có. Nhóm được tái tạo trên mọi lần chạy. –

Trả lời

8

Không sử dụng các phương pháp gotFocusenter.

Thực hiện một phương pháp nguồn dữ liệu để thực hiện sự thay đổi:

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

Gọi phương pháp từ các active phương pháp:

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

Gọi phương pháp từ các lĩnh vực nguồn dữ liệu (trong trường hợp này SalesType trường):

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

chỉ cần duyệt một số câu hỏi và tự hỏi, changeType làm gì ở đây? – AnthonyBlake

+0

Hãy xem phương thức biểu mẫu 'SalesTable.changeType()'. –

+0

Aha - vì vậy nó là cụ thể cho các hình thức SalesTable, đó là tốt - Tôi thực hiện điều này trên một hình thức khác và đã hy vọng/kiểm tra tôi đã không bỏ lỡ một thực hành tốt nhất. – AnthonyBlake

Các vấn đề liên quan