Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) FormEx+ПлавающаяФорма (число прочтений - 11371 )
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
FormEx+ПлавающаяФорма
14. Ноября 2008 :: 04:33
Печать  
1. Можно ли в настоящее время применять её в штатно работающих системах?
2. Можно ли запретить клиенту менять размеры формы обработки (иными словами, можно ли перевести загрузенную форму в а-ля плавающее состояние). Но не хочется запрещать клиенту работать и с другими формами на главном окне (модальнось пока использовать не хочется).
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #1 - 14. Ноября 2008 :: 06:50
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1177066803/2#1
с тех пор ничего не менялось в этом направлении  Нерешительный
  
Наверх
 
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: FormEx+ПлавающаяФорма
Ответ #2 - 14. Ноября 2008 :: 07:23
Печать  
А как же это - http://www.1cpp.ru/forum/YaBB.pl?num=1218198554
Сейчас тестирую, пока все штатно.
Из формы обработки закружаю плавающую форму документа "ЗаказНаВыпуск", двойным щелчком по строке одного табличного поля, потом закружаю плавающую форму документа "ГотоваяПродукция", двойным щелчком по строке другого табличного поля.
И форма и плавающие формы, пока всё штатно.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #3 - 14. Ноября 2008 :: 07:36
Печать  
to Burlak
Вся беда в том, что при закрытии плавающей формы окно не уничтожается.
Поэтому проблемы очень даже возможны.
  
Наверх
ICQ  
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: FormEx+ПлавающаяФорма
Ответ #4 - 14. Ноября 2008 :: 08:07
Печать  
to Vip.
Пока вот, что нарыл:
Запустил и форму обработки как плавающюю. Три плавающих формы на экране. Внешне всё закрывается и открывается. Но в модуле формы обработки использую обработку внешнего события, и  результат -
Процедура не обнаружена: ОбработкаВнешнегоСобытия/ExternEventProcessing
А если, то что Вы утверждаете верно, то очень жаль и придется откатиться (надолго?)
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #5 - 14. Ноября 2008 :: 08:27
Печать  
Цитата:
А если, то что Вы утверждаете верно, то очень жаль и придется откатиться (надолго?)

Это верно.
А надолго? Это к АЛьФу Улыбка
  
Наверх
ICQ  
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: FormEx+ПлавающаяФорма
Ответ #6 - 14. Ноября 2008 :: 08:50
Печать  
to Vip.
Спасибо за предупреждение. Ещё раз - жаль.
Откатился назад - из формы обработки документы вызываю как модальные, но только один из двух.
  
Наверх
 
IP записан
 
Burlak
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 65
Зарегистрирован: 28. Апреля 2008
Re: FormEx+ПлавающаяФорма
Ответ #7 - 17. Ноября 2008 :: 05:28
Печать  
Как программно можно увидеть, что окно после закрытия плавающей формы не уничтожено?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #8 - 17. Ноября 2008 :: 05:40
Печать  
Burlak писал(а) 17. Ноября 2008 :: 05:28:
Как программно можно увидеть, что окно после закрытия плавающей формы не уничтожено?

Средствами 1С никак.
  
Наверх
ICQ  
IP записан
 
MrDen
Junior Member
**
Отсутствует



Сообщений: 50
Местоположение: Краснодар
Зарегистрирован: 19. Ноября 2008
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #9 - 19. Ноября 2008 :: 18:05
Печать  
По поводу Процедура не обнаружена: ОбработкаВнешнегоСобытия/ExternEventProcessing решить можно переходом окна формы в активное (типа на передний план)
Причем та же ошибка будет если в окне сообщений установлен курсор даже при окне на переднем плане
Если закрывать плавающее окно то можно предварительно получив его хендл после разрушить

Все делалось на Win32Api
Процедура ПослеОткрытия()
// получаем хэндл окна
Попытка
Wrap = CreateObject("DynamicWrapper");
Wrap.Register("USER32.DLL", "GetForegroundWindow", "f=s", "r=l");
Wrap.Register("USER32.DLL", "GetWindow", "i=ll","f=s", "r=l");
Wrap.Register("USER32.DLL", "BringWindowToTop", "i=l", "f=s", "r=l");
Wrap.Register("USER32.DLL", "FindWindow", "i=rr", "f=s", "r=l");
Wrap.Register("USER32.DLL", "DestroyWindow", "i=l", "f=s", "r=l");
HWND = Wrap.GetForegroundWindow();
HWND = Wrap.GetWindow(HWND,5);
HWND = Wrap.GetWindow(HWND,5);
Исключение
HWND = 0;
Wrap = 0;
КонецПопытки;

// перед отработкой внешнего события
Если HWND>0 Тогда
  HWNDPrev = Wrap.BringWindowToTop(HWND);
КонецЕсли;
// для плавающих окон
HWND1 = Wrap.FindWindow(КлассОкна,"");
Wrap.DestroyWindow(HWND1);

Есть способ попроще Обработку внешнего события также прописать в глобальнике и по событию открывать форму
« Последняя редакция: 19. Ноября 2008 :: 21:55 - MrDen »  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #10 - 19. Ноября 2008 :: 18:30
Печать  
Цитата:
Есть способ попроще

Есть еще попроще Улыбка
Хэндл окна РасширениеФормы::Дескриптор.
BringWindowToTop это Окна::НаПереднийПлан()

А насчет DestroyWindow() ты прав.
Сам этим пользуюсь.

АЛьФ вообще то собирался полностью переделать ПлавающуюФорму, но видно руки не доходят.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #11 - 20. Ноября 2008 :: 10:59
Печать  
Так с использованием ДестройВиндоу получается, что можно юзать ПлавающуюФорму?
У меня давно руки чешутся ее заюзать, но останавливает то, что есть разные баги, правда, их список не помню.

Кто-нибудь может просветить подробнее - можно юзать или нет?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #12 - 20. Ноября 2008 :: 11:44
Печать  
artbear писал(а) 20. Ноября 2008 :: 10:59:
Так с использованием ДестройВиндоу получается, что можно юзать ПлавающуюФорму?
У меня давно руки чешутся ее заюзать, но останавливает то, что есть разные баги, правда, их список не помню.

Кто-нибудь может просветить подробнее - можно юзать или нет?

Баги были, какие, тоже не помню. Избавлялся при помощи ДестройВиндоу в ПослеЗакрытия.
Сейчас проверил, ПлавающаяФорма в ПослеЗакрытия даже не попадает. А раньше вроде попадала.
И работает вроде без проблем.
Может случилось чудо? Тайная жизнь микросхем? Улыбка

Давай погоняем этот функционал. Буду рад, если все будет нормально.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #13 - 20. Ноября 2008 :: 12:17
Печать  
vip, а как обстоять дела с ПрисоединитьФорму, ты же вроде юзаешь активно ?

ЗЫ Я слегка попутал ранее, руки чешутся как раз на ПрисоединитьФорму Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #14 - 20. Ноября 2008 :: 12:32
Печать  
artbear писал(а) 20. Ноября 2008 :: 12:17:
vip, а как обстоять дела с ПрисоединитьФорму, ты же вроде юзаешь активно ?

ЗЫ Я слегка попутал ранее, руки чешутся как раз на ПрисоединитьФорму Улыбка

Нормально дела обстоят.
Просто надо запретить закрытие окна ОБЪЕДИНЕННОЙ формы, если фокус в момент закрытия стоит на ПРИСОЕДИНЕННОЙ форме.
Может, можно этот момент внутри FormEx обрабатывать?

Ну и с начальным положением сплитера нехорошо. Оно жестко зашито внутри FormEx. Справляюсь эмуляцией мыши (вроде мышей двинул сплитер). Вот тут желательно добавить возможность программно изменять положение сплитера.

А так функционал очень хорош. Больше замечаний нет.
Хотя мои методы обхода косяков, это чисто мои методы Улыбка
Хотелось бы, чтобы этих багов не было.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #15 - 21. Ноября 2008 :: 04:34
Печать  
vip писал(а) 20. Ноября 2008 :: 12:32:
artbear писал(а) 20. Ноября 2008 :: 12:17:
vip, а как обстоять дела с ПрисоединитьФорму, ты же вроде юзаешь активно ?

ЗЫ Я слегка попутал ранее, руки чешутся как раз на ПрисоединитьФорму Улыбка

Нормально дела обстоят.
Просто надо запретить закрытие окна ОБЪЕДИНЕННОЙ формы, если фокус в момент закрытия стоит на ПРИСОЕДИНЕННОЙ форме.
Может, можно этот момент внутри FormEx обрабатывать?

Ну и с начальным положением сплитера нехорошо. Оно жестко зашито внутри FormEx. Справляюсь эмуляцией мыши (вроде мышей двинул сплитер). Вот тут желательно добавить возможность программно изменять положение сплитера.

А так функционал очень хорош. Больше замечаний нет.
Хотя мои методы обхода косяков, это чисто мои методы Улыбка
Хотелось бы, чтобы этих багов не было.

Плиз, создай 2 соответствующих бага, если их еще нет в багзилле.
Вполне может быть, что я этим займусь Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #16 - 21. Ноября 2008 :: 05:26
Печать  
Ура!! Ура!! Ура!! Неужели наконец-то этот функционал сдвинется с мертвой точки!? Улыбка  Очень довольный
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #17 - 21. Ноября 2008 :: 05:44
Печать  
  
Наверх
ICQ  
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #18 - 21. Ноября 2008 :: 06:41
Печать  
А киньте плиз рабочим примером по устранению ошибки (как это сейчас можно сделать) разрушения окна. Что-то радиус кривизны моих рук не позволил воспользоваться рекомендациями из данной ветки Печаль
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #19 - 28. Ноября 2008 :: 05:50
Печать  
Поясните пожалуйста, даже после DestroyWindow не могу повторно открыть плавающую форму (это же справедливо и для "ОткрытьФормуКакПанель")

Если быть более точным, плавающая форма вообще не открывается, а вместо "ФормаКакПанель" открывается абсолютно пустая панель никак не связанная с той ert которая тм должна быть. Вот.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #20 - 28. Ноября 2008 :: 06:27
Печать  
Не открывается повторно *.ert.
Обработка в составе конфы открывается нормально.
Даже чересчур. Улыбка Можно открыть несколько экземпляров плавающей формы (как при использовании "#").
  
Наверх
ICQ  
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #21 - 28. Ноября 2008 :: 06:59
Печать  
vip: Спасибо!  Очень довольный
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #22 - 09. Декабря 2008 :: 09:24
Печать  
Такс, сделал класс, который управляет плавающими формами (создает и удаляет) и, раз пошла такая пьянка, хочу еще через этот же класс рулить плавающей формой через внешние события.

делаю в классе:
Окна.НаПереднийПлан(ТаблицаПФ.Контекст.Форма);
глСервис.ВнешнееСобытие("Планировщик","Сообщить",Парам);

Молча отрабатывает, но в
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
     Сообщить("Форма: Получили - "+Источник+" "+Событие+" "+ТипЗначенияСтр(Данные));
КонецПроцедуры

(в форме обработки плавающей формы)
не заходит.
Куда копнуть?
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #23 - 10. Декабря 2008 :: 07:56
Печать  
И еще, после каждого открытия/закрытия не высвобождается 3-4 объекта GDI.

vip: а у Вас? есть такое?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #24 - 10. Декабря 2008 :: 08:09
Печать  
Цитата:
И еще, после каждого открытия/закрытия не высвобождается 3-4 объекта GDI.

vip: а у Вас? есть такое?

После открытия/закрытия чего?
  
Наверх
ICQ  
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #25 - 10. Декабря 2008 :: 10:26
Печать  
После открытия/закрытия плавающей формы (при том, что, естественно, после закрытия выполняется DestroyWindow).
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #26 - 10. Декабря 2008 :: 11:48
Печать  
Цитата:
После открытия/закрытия плавающей формы (при том, что, естественно, после закрытия выполняется DestroyWindow).

1. http://www.1cpp.ru/forum/YaBB.pl?num=1226637185/0
Это по поводу DestroyWindow.
2. А чем ты делаешь DestroyWindow?
3. Объекты GDI текут и на других формах. Причин много.
  
Наверх
ICQ  
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #27 - 11. Декабря 2008 :: 07:20
Печать  
vip писал(а) 10. Декабря 2008 :: 11:48:
1. http://www.1cpp.ru/forum/YaBB.pl?num=1226637185/0
Это по поводу DestroyWindow.
2. А чем ты делаешь DestroyWindow?
3. Объекты GDI текут и на других формах. Причин много.


(1) - читал, и в (2) DestroyWindow сделал именно так.
(3) - Ну ладно, тогда не буду заморачиваться.
  
Наверх
 
IP записан
 
MrDen
Junior Member
**
Отсутствует



Сообщений: 50
Местоположение: Краснодар
Зарегистрирован: 19. Ноября 2008
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #28 - 12. Декабря 2008 :: 21:03
Печать  
Если тему "Присоединяемой формы" не закрыли то сплиттер будь то рисованный или кнопочный, вертикальный или горизонтальный, или несколько можно организовать штатными методами FormЕx.
Однако пришлось столкнуться с тем, что пришлось на форме менять размеры Grid созданные vtools при использовании сплиттера. Вот тут очень подошло использование DynamicWrapperX, а не DynamicWrapper т.к. добавленные методы позволили вычитывать данные по указателю и получать различные типы данных, создавать нульбайтные строки, структуры Rect, массивы с обращением по смещению и т.п.
В принципе если очень поизвращаться то сотворить можно многое Улыбка
Метод DestroyWindow также удобно использовать для уничтожения окон, меню которые мешают обработкам внешнего события и т.п., но можно и помягче CloseWindow через SendMessage
главное получить указатель на окно. Тут если заголока окна нет можно найти по классу окна. Эксперементы с Z последовательностью дают возможность менять контролы из своей формы например на других формах применять визуальные эффекты и тп.
WinApi в 1С достаточно интересная вещь
  
Наверх
ICQ  
IP записан
 
novichek
Экс-Участник


Re: FormEx+ПлавающаяФорма
Ответ #29 - 15. Декабря 2008 :: 03:13
Печать  
MrDen: кхм... а примерчик какой-нибудь или демку там... можно? Улыбка
  
Наверх
 
IP записан
 
MrDen
Junior Member
**
Отсутствует



Сообщений: 50
Местоположение: Краснодар
Зарегистрирован: 19. Ноября 2008
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #30 - 15. Декабря 2008 :: 07:11
Печать  
Цитата:
MrDen: кхм... а примерчик какой-нибудь или демку там... можно? Улыбка


Вот здесь все есть Улыбка
и "сплиттер" и работа с Z-order и отсылка сообщений в mailslot (net send)
http://infostart.ru/projects/2145/
тк используется vtools то работа с размерами окон осуществляется через дискрипторы winapi
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: FormEx+ПлавающаяФорма
Ответ #31 - 15. Декабря 2008 :: 07:46
Печать  
MrDen писал(а) 15. Декабря 2008 :: 07:11:
Цитата:
MrDen: кхм... а примерчик какой-нибудь или демку там... можно? Улыбка


Вот здесь все есть Улыбка
и "сплиттер" и работа с Z-order и отсылка сообщений в mailslot (net send)
http://infostart.ru/projects/2145/
тк используется vtools то работа с размерами окон осуществляется через дискрипторы winapi

Что-то, думаю, знакомое...
Теперь вспомнил.
И мнение прежнее - смешались в кучу кони, люди...
  
Наверх
ICQ  
IP записан
 
MrDen
Junior Member
**
Отсутствует



Сообщений: 50
Местоположение: Краснодар
Зарегистрирован: 19. Ноября 2008
Пол: Мужской
Re: FormEx+ПлавающаяФорма
Ответ #32 - 15. Декабря 2008 :: 08:15
Печать  
vip писал(а) 15. Декабря 2008 :: 07:46:
Что-то, думаю, знакомое...
Теперь вспомнил.
И мнение прежнее - смешались в кучу кони, люди...

Сам согласен Улыбка сделаю модульно за замечание спасибо Улыбка
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать