Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Проблема с "ОткрытьПлавающуюФорму" (число прочтений - 7950 )
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Проблема с "ОткрытьПлавающуюФорму"
03. Февраля 2010 :: 22:19
Печать  
Всем доброго времени суток. Попытаюсь описать свою проблему:
Открываю на экране несколько окошек обработок через "ОткрытьПлавающуюФорму" в 2 приема: сначала первые 3 окошка, затем следующие 3.  Все бы хорошо, однако если после открытия первой тройки выделить какое-нибудь окошко мышкой, а затем открыть следующую тройку окон, то все окна кроме последнеоткрытого становятся недоступными. В ряде случаев даже закрыть главное окно 1С не представляется возможным.

Может кто поможет советом по данной проблеме.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #1 - 04. Февраля 2010 :: 06:39
Печать  
Пару скриншотов кинь.
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #2 - 04. Февраля 2010 :: 08:08
Печать  
В двух словах: вплывающие окошки - это стикеры, т.е. обмен сообщениями между пользователями (на картинке цветные окошки справа экрана). У каждого пользователя запущена "ОбработкаОжидания", которая сканит наличие новых сообщений и при их появлении выводит их на экран. Если всплывающие окна не трогать, все в порядке, но если активировать мышкой окно и в этот момент другое всплывает, то все окна становятся недоступными, включая обычные окошки и меню 1С.
  

________001.jpg ( 36 KB | Загрузки )
________001.jpg
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #3 - 04. Февраля 2010 :: 08:39
Печать  
вообще интересная тема, нужно подумать над альтернативой, может быть в сторону popup окон
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #4 - 04. Февраля 2010 :: 08:52
Печать  
chessman писал(а) 04. Февраля 2010 :: 08:39:
вообще интересная тема, нужно подумать над альтернативой, может быть в сторону popup окон


Я прошу прощения за свою неграмотность, но что за "popup окна" и где почитать инфу об этом можно?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #5 - 04. Февраля 2010 :: 09:00
Печать  
Не факт , что взлетит на твоей задаче, но попробовать можно
http://www.1cpp.ru/forum/YaBB.pl?num=1259749729
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #6 - 04. Февраля 2010 :: 09:21
Печать  
chessman писал(а) 04. Февраля 2010 :: 09:00:
Не факт , что взлетит на твоей задаче, но попробовать можно
http://www.1cpp.ru/forum/YaBB.pl?num=1259749729


Ага, спасибо. Посмотрел, есть над чем поразмыслить. Нужно попробовать, авось приспособится.
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #7 - 05. Февраля 2010 :: 10:47
Печать  
Все, справился с проблемой. Небольшой глюк правда остался, но он совсем некритичен. Окошки на экран нормально всплывают. Мышкой их можно активировать. Корректно даже прозрачность фурычит: неактивное окно полупрозрачно, активное нет. И расположение на экране тоже оптимизировано, друг на друга наползания нет.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #8 - 05. Февраля 2010 :: 10:57
Печать  
ну осталось только оформить в виде класса и в репозитарий Подмигивание
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #9 - 05. Февраля 2010 :: 11:08
Печать  
Цитата:
ну осталось только оформить в виде класса и в репозитарий Подмигивание

ага  Улыбка
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #10 - 05. Февраля 2010 :: 11:12
Печать  
Ковалев Андрей писал(а) 05. Февраля 2010 :: 10:47:
Все, справился с проблемой. Небольшой глюк правда остался, но он совсем некритичен. Окошки на экран нормально всплывают. Мышкой их можно активировать. Корректно даже прозрачность фурычит: неактивное окно полупрозрачно, активное нет. И расположение на экране тоже оптимизировано, друг на друга наползания нет.

На основе чего сделал? Так и остался на плавающих формах? Уничтожаешь их правильно?
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #11 - 05. Февраля 2010 :: 11:28
Печать  
JohnyDeath писал(а) 05. Февраля 2010 :: 11:12:
На основе чего сделал? Так и остался на плавающих формах? Уничтожаешь их правильно?


Да, остался на плавающих формах. Решение достаточно тривиальное. Заметил, что проблема возникает только в том случае, когда активна плавающая форма и в этот момент открывается другая. В результате сделал очень просто: если user "сидит" в плавающей форме, новые не открываю. Как только user с формы уходит, вывожу остальные, если они есть конечно (т.е. список новых сообщений не пуст).
Параллельно конечно пришлось переписать выводы списков значений, т.к. при штатном методе списки открываюся отнюдь не в том месте, гду мышкой щелкаешь

Знаю, что при интерактивном закрытии плавающей формы корректно она не уничтожается. Как сделать корректное уничтожение окна не знаю. Если подскажешь, буду очень признателен.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #12 - 05. Февраля 2010 :: 14:29
Печать  
я у себя сделал так
В плавающем окне:
Код
Выбрать все
Перем ФормаРасш;
Перем Хэндл;

Процедура ПослеОткрытия()
	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	ФормаРасш.УстановитьФорму(Форма);
	Хэндэл = СоздатьОбъект("СписокЗначений");
	Хэндэл.ДобавитьЗначение(ФормаРасш.Дескриптор);
КонецПроцедуры

Процедура ПриЗакрытии()
	ОткрытьФорму("Отчет",Хэндэл,ПутьКФайлам+"чистильщик.ert");
КонецПроцедуры
 


обработка "чистильщик.ert" с всего одной процедурой
Код
Выбрать все
Процедура ПриОткрытии()
	Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
		сз = Форма.Параметр;
		Для сч = 1 По сз.РазмерСписка() Цикл
			Wrap = CreateObject("DynamicWrapper");
			Wrap.Register("USER32.DLL", "DestroyWindow", "i=l", "f=s", "r=l");
			Wrap.DestroyWindow(сз.ПолучитьЗначение(сч));
		КонецЦикла;
	КонецЕсли;
	СтатусВозврата(0);
	Возврат;
КонецПроцедуры
 



Со списком, в этом случае, я конечно переборщил немного  Смех
  
Наверх
 
IP записан
 
Ковалев Андрей
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 03. Февраля 2010
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #13 - 08. Февраля 2010 :: 07:53
Печать  
Цитата:
я у себя сделал так
...
обработка "чистильщик.ert" с всего одной процедурой
...
Код
Выбрать все
			Wrap = CreateObject("DynamicWrapper");
			Wrap.Register("USER32.DLL", "DestroyWindow", "i=l", "f=s", "r=l");
			Wrap.DestroyWindow(сз.ПолучитьЗначение(сч));
 


...


Спасибо. Перепишу корректно свою процедурку.
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: Проблема с "ОткрытьПлавающуюФорму"
Ответ #14 - 22. Марта 2010 :: 07:25
Печать  
НОВИЧЕК -
у еня твой метод не сработал почему то
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать