Вверх ↑
Этот топик читают: Гость
Ответов: 28
Рейтинг: 0
#1: 2020-02-17 10:54:29 ЛС | профиль | цитата
Салют!
Есть ли способ "приклеить" форму на задний план, чтобы иные формы, прыгающие по Z, не поднырнули под мою?
Задача состоит в написании панели запуска, работающей при отключенном рабочем столе. Из неё будут запускаться 1С и прочие программы.
Так вот эта панель, при открытых иных окнах, не должна всплыть.
Сильно работать не мешает, но с эстетической точки зрения видится, как баг.
При старте я её топлю командой DoBottom. Можно, конечно, делать это периодически, но это , считаю, костыль.
Или как отловить событие, при котором окно "всплывёт" на поверхность?
Спасибо!

Редактировалось 1 раз(а), последний 2020-02-17 11:06:16
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1328
Рейтинг: 69
#2: 2020-02-17 15:43:42 ЛС | профиль | цитата
sansey73, открывай дочерние окна модальными
карма: 2

0
Ответов: 28
Рейтинг: 0
#3: 2020-02-18 09:40:11 ЛС | профиль | цитата
Как я запущу 1С модально?
карма: 0

0
Ответов: 167
Рейтинг: 7
#4: 2020-02-19 08:04:22 ЛС | профиль | цитата
sansey73 писал(а):
Задача состоит в написании панели запуска

sansey73 писал(а):
Как я запущу 1С модально?

Так какова ваша задача, я не понял :/

Вот пример "панели запуска" :
Add(MainForm,2953706,14,105){
Left=0
Top=0
Width=546
Height=71
Align=0
Color=-16777201
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
AlphaBlendValue=255
Caption="Form"
BorderStyle=0
WindowsState=0
Icon=[]
TaskBar=1
DragForm=1
TransparentColor=16777215
Picture=[]
SavePosName=""
MouseCapture=1
ClientSize=1
Position=0
ShiftLeft=0
ShiftTop=0
OffsetShift=1
TransparentManager="(empty)"
FormFastening="(empty)"
Point(doSendToBack)
Point(Handle)
link(onActivate,2902593:doWork2,[])
link(onDeactivate,2902593:doWork3,[(60,118)])
link(onCreate,6496801:doTimer,[])
}
Add(Button,10003615,56,308)
{
@Color=43520
Left=5
Top=5
Width=100
Height=65
Align=0
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
Caption="Блокнот"
Data=Null()
Flat=1
DefaultBtn=1
RespondToEnter=1
link(onClick,1867156:doExec,[])
}
Add(WinTools,7388203,119,175)
{
Point(doBottom)
link(Handle,1554582:Var3,[(125,159)])
}
Add(HubEx,9539225,93,119)
{
Angle=1
link(onEvent,10893609:doWork2,[(97,209)])
}
Add(HubEx,2902593,56,105)
{
Angle=0
link(onEvent,9539225:doWork1,[(97,111)])
}
Add(Timer,6496801,56,119)
{
Interval=15
Enable=1
AutoStop=1
OverCall=0
link(onTimer,9539225:doWork2,[])
}
Add(Timer,9145701,56,266)
{
@Color=255
Interval=100
Enable=1
AutoStop=0
OverCall=0
link(onTimer,10893609:doWork3,[(102,272)])
}
Add(HubEx,10893609,98,203)
{
Angle=0
link(onEvent,7388203:doBottom,[])
}
Add(Label,6702402,154,231)
{
Left=480
Top=55
Width=67
Height=17
Align=0
Color=-16777201
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
ModeSp=0
SizeSp=4
ColorSp=-16777201
MinOwn=0
MinRest=0
Transparent=1
Caption="Перетащить"
AutoSize=0
Alignment=0
ColorHover=0
Underline=1
CaptionOnClick=1
link(onClick,3458506:doMove,[])
}
Add(MoveWindow,3458506,203,231)
{
link(Handle,1554582:Var2,[(209,167)(48,167)])
}
Add(GetDataEx,1554582,42,154)
{
Angle=3
link(Data,2953706:Handle,[(20,159)])
}
Add(WinExec,1867156,98,308)
{
@Color=43520
FileName="notepad"
Param=""
WorkingDir=""
Mode=1
RunEvent=0
Action="open"
}

[flood]А по поводу запуска 1С как модальной формы... Это точно что-то из разряда мистики [/flood]

Если нужно будет, то активируйте дополнительный таймер, помеченный красным цветом

Редактировалось 1 раз(а), последний 2020-02-19 08:05:12
карма: 0
c, c++, lua
0
Ответов: 28
Рейтинг: 0
#5: 2020-02-19 11:37:50 ЛС | профиль | цитата
Так какова ваша задача, я не понял :/

Из моей панельки (считаем её лаунчером), запускается 1С. Всё бы ничего, но при оплате банковской картой, начинает работать внешняя DDL от Сбербанка.
И вот она, похоже, топит 1С-ку, чтобы побыть наверху пока сама не отработает, а перед выходом поднимает 1С обратно на верх (ну я так думаю).
Так вот, когда DLL-ка топит 1с-ку, тогда всплывает мой лаунчер. Я хочу, чтобы лаунчер всегда оставался ниже всех, как бы не переставлялись окна сверху.

В Вашем примере есть ответ на мой вопрос: точки OnActivate, OnDeactivate. Как же я про них забыл!
Спасибо огромное!
карма: 0

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)