|  01.06.2006, 10:28 | #1 | 
| Программатор | Странное поведение контрола 
			
			Доброго времени суток, уважаемые Дамы и Господа!!! Ситуация: на форме перекрыл метод task(). Там отлавливаю нажатие ентера на определенном контроле и увеличиваю свою переменную Qty на величину этого контрола(контрол типа real). Есть второй контрол, у него есть дисплейный метод (тоже real), который возвращает Qty. Проблема: дисплейный метод выводит округленное значение по правилу округления, а мне этого совсем не нада. Почему так??? Подскажите пожалуйста, что делать. И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает. С уважением - Sada... | 
|  | 
|  01.06.2006, 10:45 | #2 | 
| Участник | Цитата: 
		
			Сообщение от Sada
			
			 И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает. С уважением - Sada... | 
|  | 
|  01.06.2006, 10:48 | #3 | 
| Программатор | Цитата: 
		
			Сообщение от KMV
			
			 Если перекрытом методе enter() не вызывать super() курсор останеться в контроле. | 
|  | 
|  01.06.2006, 10:54 | #4 | 
| Участник | 
			
			Дисплейный метод делает округление, т.к. у него есть тип. Округление происходит в соответствии с настройками этого типа.
		 | 
|  | 
|  01.06.2006, 11:01 | #5 | 
| Участник | 
			
			SetFocus() прекрасно работает. Вот пример. Код: public int task(int _taskId)
{
    int ret;
    ;
    ret = super(_taskId);
    if (_taskId == 288)  // Enter
    {
        if (!RealEdit.realValue())
            l = 1;
        else l = 1 / RealEdit.realValue();
        RealEdit.setFocus(); // Возвращаемся на прежний контрол
    }
 
    return ret;
} | 
|  | |
| За это сообщение автора поблагодарили: Sada (1), VKUR (1). | |
|  01.06.2006, 11:04 | #6 | 
| Участник | Цитата: 
		
			Сообщение от Sada
			
			 Не помогло.... | 
|  | 
|  01.06.2006, 11:05 | #7 | 
| Программатор | Цитата: 
		
			Сообщение от Neosy
			
			 SetFocus() прекрасно работает. Вот пример. Код: public int task(int _taskId)
{
    int ret;
    ;
    ret = super(_taskId);
    if (_taskId == 288)  // Enter
    {
        if (!RealEdit.realValue())
            l = 1;
        else l = 1 / RealEdit.realValue();
        RealEdit.setFocus(); // Возвращаемся на прежний контрол
    }
 
    return ret;
} Спасибо большое   С этим разобрались... но вот как быть с округлением???...   | 
|  | 
|  01.06.2006, 11:09 | #8 | 
| ---------------- | 
			
			С округлением - надо завести EDT с большим кол-вом знаков после запятой и именно его возвращатьв методе. Только есть одна мелочь - они всегда будут все показываться, даже если все =0 а в task можно просто taskId заменить на 0 (до super) | 
|  | 
|  01.06.2006, 11:10 | #9 | 
| Axapta | 
			
			Посмотрите на возвращаемый EDT дисплей-метода. Он имеет нужную вам точность? Округление так же может быть где-нибудь в коде.
		 Последний раз редактировалось oip; 01.06.2006 в 11:13. | 
|  | 
|  01.06.2006, 11:21 | #10 | 
| Программатор | 
			
			Да, действительно...  Про то что EDT в таких случаях требуется я и не знал  .Всем огромное спасибо!!! Все работает как надо   С уважением - Sada... | 
|  |