Имя: Пароль:
1C
1C 7.7
v7: Программное изменение размеров окна формы (внешняя)
,
0 Масянька
 
15.06.16
11:26
День добрый!
В ПриОткрытии() - Окна = СоздатьОбъект("Окна");

Процедура ПриИзмененииРазмераОкна(ТипСобытия)

    Ширина = 556;
    Высота = 378;
    Лево    = 10;
    Верх = 40;
    
    Если ((ТипСобытия = 0) или (ТипСобытия = 1) или (ТипСобытия = 2)) Тогда
          Окна.ПоложениеОкна(Форма, Лево, Верх);
        Окна.РазмерОкна(Форма, Ширина, Высота);
    КонецЕсли;

КонецПроцедуры // ПриИзмененииРазмераОкна

Как-то странно работает...
При минимизации - сворачивает, при максимизацци - размер не меняется, но пропадают кнопки окна (рядом с крестиком) и положение окна (на экране) изменяется. Если ранее открыто что-то (журнал, док-т и пр.) - они тоже меняют размер.
Как сделать, чтобы форма данной обработки не изменяла размер (и свой, и уже открытых).
Про модальность - в курсе. Но хотелось бы обойтись без нее.

Спасибо.
1 Масянька
 
15.06.16
11:54
Ап.
2 Ёпрст
 
15.06.16
11:57
хз, че тебе надо, так мот ?

Перем гРФорма,СтараяШирина,СтараяВысота,Лево,Верх;
//======================================================================
Процедура ПослеСозданияФормы()
    гРФорма = СоздатьОбъект("РасширениеФормы");
    гРФорма.УстановитьФорму(Форма);
    гРФорма.Максимизирована=0;
    СтараяШирина = гРФорма.Ширина;
    СтараяВысота = гРФорма.Высота;
    Верх = гРФорма.Верх;
    
КонецПроцедуры
//======================================================================
Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота)
    Если ПустоеЗначение(гРФорма)=1 Тогда
        Возврат;
    КонецЕсли;
    Если (Ширина<>СтараяШирина)или(Высота<>СтараяВысота) Тогда
        гРФорма.Ширина = СтараяШирина;
        гРФорма.Высота = СтараяВысота;
        гРФорма.Верх = Верх;
        гРФорма.Максимизирована=0;
    КонецЕсли;
КонецПроцедуры
3 Масянька
 
15.06.16
12:08
(2) Форма - арбайтен. Но - если ранее было что-от открыто - у них тоже размер меняется. Не обойти?
4 Ёпрст
 
15.06.16
12:25
(3) если максимизируешь форму - то да, максимизируются все окна. Достаточно просто не давать максимизировать окна и усё
5 Масянька
 
15.06.16
12:26
(4) У меня открыт журнал (максимизирован). Я открываю обработку. Норм размеры, но и журнал изменяет размеры.
6 Ёпрст
 
15.06.16
12:54
(5) так и должно быть. Це не снеговик, где каждое окно может быть отдельно максимизировано. В клюшках при максимизации формы, максимизируются все остальные.
7 Ёпрст
 
15.06.16
12:55
Тут, только замена всей формы целиком, на активикс какой-нить или открытие стороннего фрейма, не 1с-ного.
8 Масянька
 
15.06.16
12:56
(6) Жаль.
Спасибо огромное! Как всегда :)
9 vcv
 
15.06.16
20:03
Ну почему же. Извратиться можно и без тяжелой артиллерии типа ActiveX. С помощью ОткрытьПлавающуюФорму из FormEx.
Будет что-то типа https://onedrive.live.com/redir?resid=68C0B174B33F7999!30139&authkey=!AJrlQI2O2GcTwJc&v=3&ithint=photo%2cjpg
10 Злопчинский
 
15.06.16
23:57
(9) "что бы" - в данном контексте вместе пишется ;-)
11 vcv
 
16.06.16
09:07
(10) Да с кем тут вместе писать. Всё один, один... :(
12 Масянька
 
16.06.16
09:09
(9) А дай, пожалуйста, пример кода.
13 Mikeware
 
16.06.16
09:20
(9) а не падает?
14 Mikeware
 
16.06.16
09:22
(12)
оСервис=СоздатьОбъект("Сервис");
оСервис.ОткрытьПлавающуюФорму("Обработка.хз");
15 Mikeware
 
16.06.16
09:23
(11) пиши "в месте"... но не пиши, в каком...
16 Масянька
 
16.06.16
09:24
(14) Туплю... И где и как тогда открывать обработку?
17 Mikeware
 
16.06.16
09:27
(16) там, где нужно - там и открывай...
18 Масянька
 
16.06.16
09:29
(17) У меня (в данном случае) - из меню.
19 Mikeware
 
16.06.16
09:30
(18) ну значит из меню вызови функцию, которая откроет эту форму.
20 Масянька
 
16.06.16
09:30
(19) Блин... Туплю...
Спасибо.
21 Масянька
 
16.06.16
09:32
(19) Еще один маленький вопрос - функция в глобальнике?
22 oslokot
 
16.06.16
09:37
Неужто допилили-таки плавающие формы в формексах.
Помнится рушилось все это добро
23 Ёпрст
 
16.06.16
09:39
Не надо использовать плавающую форму, падает она + утечка памяти.
24 Масянька
 
16.06.16
09:41
Скажите мне, как в меню запихнуть функцию?
25 Масянька
 
16.06.16
09:50
А не арбайтен...

Функция глАктСверки()
    оСервис = СоздатьОбъект("Сервис");
    оСервис.ОткрытьПлавающуюФорму(КаталогИБ() + "\Dopolnitelno\АктСверкиВзаиморасчетов.ert");    
КонецФункции // глАктСверки

А так - арбайтен:

Функция глАктСверки()
ОткрытьФорму("Отчет",,КаталогИБ() + "\Dopolnitelno\АктСверкиВзаиморасчетов.ert")    
КонецФункции // глАктСверки
26 Ёпрст
 
16.06.16
09:53
(25)
да уж
    оСервис.ОткрытьПлавающуюФорму("Отчет",,КаталогИБ() + "\Dopolnitelno\АктСверкиВзаиморасчетов.ert");
27 Масянька
 
16.06.16
09:58
(26) Чего - "да уж"?
Как Майк написал, так я и скопировала... А в СП - нету.
28 Масянька
 
16.06.16
10:01
(26) Всё равно - фигня.
Не открывает.
В ПриОткрытии (в обработке) заходит только один раз (первый). Потом - не заходит.
29 Ёпрст
 
16.06.16
10:12
(27) Чего в СП нету ?
ОткрытьПлавающуюФорму()
OpenToolsForm()
Назначение:
Метод позволяет открыть форму в виде "плавающего" окна. Форма подобна модальной форме, но при ее открытии работа в главном окне не блокируется.
ОПИСАНИЕ:
Параметры метода аналогичны параметрам штатного метода ОткрытьФорму()
30 Mikeware
 
16.06.16
10:35
(28) а ПриПовторномОткрытии() ?
31 Mikeware
 
16.06.16
10:36
(27) ты неправильно скопировала.
32 Mikeware
 
16.06.16
10:36
(27) тебе продать СП?
33 varelchik
 
16.06.16
16:27
(22)нет не допилил Леха его.
Да и вообще сам не советовал ею пользоваться.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.