|  19.11.2008, 09:44 | #1 | 
| Участник | Складские журналы, перемещение в гриде стрелками курсора 
			
			Версия 3.0 sp5  Перемещение стрелками куросора в гриде не работает. При этом перемещение с помощью PgUp и PgDn - работает нетипично - переводит курсор на одну строку. В первом приближении причина кроется в специфическом методе перерисовки меню "Функции" и "Отчеты" (InventJournalFormTable.UpdateQueries_RU()), который приводит к потере фокуса гридом после перемещения. Кто-нибудь поборол эту проблему? Как с этим обстоит дело в четверке? | 
|  | 
|  19.11.2008, 10:18 | #2 | 
| MCITP |   Цитата: 
		
			Сообщение от coolibin
			   Версия 3.0 sp5  Перемещение стрелками куросора в гриде не работает. При этом перемещение с помощью PgUp и PgDn - работает нетипично - переводит курсор на одну строку. В первом приближении причина кроется в специфическом методе перерисовки меню "Функции" и "Отчеты" (InventJournalFormTable.UpdateQueries_RU()), который приводит к потере фокуса гридом после перемещения. Кто-нибудь поборол эту проблему? Как с этим обстоит дело в четверке?  Да, если добавить в конец этого метода PHP код: 
			 (особо не тестировал, на первый взляд проблем не видно.) 
				__________________ Zhirenkov Vitaly | 
|  | 
|  19.11.2008, 10:36 | #3 | 
| Участник | 
			
			При этом неправльно будет работать PgUp-PgDn в остальных закладках - будет все время переключать опять на грид
		 | 
|  | 
|  19.11.2008, 10:45 | #4 | 
| MCITP |   Цитата:  Значит нужно дополнительно проверить где мы и от этого плясать... 
				__________________ Zhirenkov Vitaly | 
|  | 
|  19.11.2008, 11:22 | #5 | 
| Участник | 
			
			Я бы предложил модифицировать в этом методе удаление кнопок X++:     FormControl                 fc;
    FormControl                 fc2;
...
    if ( ! lstCtrlReports.empty())
    {
        it = new ListIterator(lstCtrlReports);
        fc = formRun.selectedControl();
        while (it.more())
        {
            buttonCtrl = it.value();
            formRun.design().removeControl(buttonCtrl.id());
            it.next();
        }
        lstCtrlReports = new List(Types::Class);
        fc2 = formRun.selectedControl();
        if (fc && fc2 != fc)
            fc.setFocus();
    }
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | |
| За это сообщение автора поблагодарили: ZVV (1), Lemming (1), coolibin (1), Dino (0). | |
|  19.11.2008, 11:32 | #6 | 
| Аманд | 
			
			В настройках пользователя есть галка "Поведение TAB по умолчанию" Не уверен, но попробуйте. Цитата: 
		
			Тут именно баг в коде
		
	   Последний раз редактировалось Vals; 19.11.2008 в 12:32. | 
|  | 
|  19.11.2008, 11:58 | #7 | 
| MCITP |   Цитата: Тут именно баг в коде, из-за которого фокус перемещается постоянно "не в то место". 
				__________________ Zhirenkov Vitaly | 
|  | 
|  20.11.2008, 16:44 | #8 | 
| Участник | 
			
			А по-моему достаточно этого X++: FormControl selectedControl; .... formRun.lock(); [B]selectedControl = formRun.selectedControl();[/B] .... ctrlQueries.enabled(enableCtrlQueries); [B]formRun.selectControl(selectedControl);[/B] formRun.unLock(); ... | 
|  | 
|  20.11.2008, 19:37 | #9 | 
| Member | 
			
			Я так правил в 3.0. Точно работало, даже если это антинаучно   . int active() { int ret; // GLIBS, Bug fix --> FormControl currentFormControl = element.selectedControl(); // GLIBS, Bug fix <-- ; journalFormTable.datasourceActivePre(); ret = super(); // GLIBS, Bug fix --> if (currentFormControl) { currentFormControl.setFocus(); } // GLIBS, Bug fix <-- return ret; } 
				__________________ С уважением, glibs® Последний раз редактировалось glibs; 20.11.2008 в 19:38. Причина: Лишнего коду ухватил. | 
|  |