| 
			
			 | 
		#1 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
			
			
			Странное поведение контрола
			 
			
			Доброго времени суток, уважаемые Дамы и Господа!!! 
		
		
		
		
		
		
		
	Ситуация: на форме перекрыл метод task(). Там отлавливаю нажатие ентера на определенном контроле и увеличиваю свою переменную Qty на величину этого контрола(контрол типа real). Есть второй контрол, у него есть дисплейный метод (тоже real), который возвращает Qty. Проблема: дисплейный метод выводит округленное значение по правилу округления, а мне этого совсем не нада. Почему так??? Подскажите пожалуйста, что делать. И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает. С уважением - Sada...  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Sada
			
			 
И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает. 
		
	С уважением - Sada...  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от KMV
			
			 
Если перекрытом методе enter() не вызывать super() курсор останеться в контроле. 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Дисплейный метод делает округление, т.к. у него есть тип. Округление происходит в соответствии с настройками этого типа.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#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). | |
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Sada
			
			 
Не помогло.... 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#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;
}  Спасибо большое  С этим разобрались... но вот как быть с округлением???...  
		 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 
			
			С округлением - надо завести EDT с большим кол-вом знаков после запятой и именно его возвращатьв методе. Только есть одна мелочь - они всегда будут все показываться, даже если все =0 
		
		
		
		
		
		
		
	а в task можно просто taskId заменить на 0 (до super)  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрите на возвращаемый EDT дисплей-метода. Он имеет нужную вам точность? Округление так же может быть где-нибудь в коде.
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось oip; 01.06.2006 в 11:13.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, действительно... 
		
		
		
		
		
		
		
	   Про то что EDT в таких случаях требуется я и не знал  .Всем огромное спасибо!!! Все работает как надо  С уважением - Sada...  | 
| 
	
 |