Вверх ↑
Ответов: 278
Рейтинг: 4
#1: 2015-08-03 00:35:46 ЛС | профиль | цитата
Привет всем!

В данной теме я бы хотел обсудить некоторые баги главной формы (hiMainForm).
Начнём по-порядку.

Суть: при TaskBar=true у дочерней формы - таскбар не появляется. Приходиться вызывать после OnCreate - doPlaceInTaskBar, что не очень то удобно делать каждый раз. После фикса можно будет убрать точку doPlaceInTaskBar за ненадобностью.

Пример:
Add(MainForm,2953706,483,224)
{
Width=353
Height=165
Visible=1
Caption="Main"
TaskBar=1
Point(doVisible)
Point(doPlaceInTaskBar)
Point(Handle)
Point(doFlashWindow)
link(onCreate,10456221:doAddTrayIcon,[(527,244)(527,341)(247,341)(247,384)])
AddHint(-13,-77,40,13,TaskBar)
}
Add(Button,4963424,56,448)
{
Left=170
Top=10
Width=150
Caption="doFlashWindow [Main]"
link(onClick,16758382:doTimer,[(360,454)(360,272)])
}
Add(ChildForm,7956862,406,364)
{
}
BEGIN_SDK
Add(EditMulti,8702682,21,21)
{
WorkCount=4
Width=433
Height=291
link(doWork1,8303767:doEvent,[(214,27)(214,230)])
link(doWork2,3969442:doPlaceInTaskBar,[(133,34)(133,118)])
link(doWork3,16184271:doWork1,[(122,41)])
link(doWork4,3969442:doShowModal,[(198,48)(198,139)])
}
Add(MainForm,3969442,245,84)
{
Left=35
Top=105
Width=177
Height=94
Visible=1
Caption="Modal"
BorderStyle=1
TaskBar=1
Position=0
Point(doPlaceInTaskBar)
Point(doVisible)
Point(Handle)
Point(doFlashWindow)
Point(doShowModal)
MakeExt(TaskBar,,TaskBar)
AddHint(108,-16,40,13,TaskBar)
}
Add(WinTools,5401680,245,168)
{
Point(isVisible)
link(Handle,3969442:Handle,[])
}
Add(IndexToChanel,8303767,245,224)
{
Point(Index)
link(onEvent1,16556683:doWork2,[])
link(onEvent2,16556683:doWork1,[(300,237)(300,223)])
link(Index,5401680:isVisible,[])
}
Add(ChanelToIndex,16556683,315,217)
{
link(onIndex,3969442:doVisible,[(359,223)(359,174)(233,174)(233,125)])
}
Add(InfoTip,4194561,322,42)
{
Info=#7:TaskBar|
Width=106
Height=81
}
Add(Button,630927,49,217)
{
Left=10
Top=10
Width=150
Height=40
Caption="doFlashWindow [Modal]"
link(onClick,16184271:doWork3,[(122,223)])
}
Add(HubEx,16184271,118,126)
{
link(onEvent,3659160:doTimer,[])
}
Add(Timer,3659160,147,126)
{
Interval=400
Enable=1
AutoStop=5
OverCall=1
Point(doTimer)
link(onTimer,3969442:doFlashWindow,[])
}
END_SDK
Add(TrayIcon,10456221,259,357)
{
Hint="Левой - Главная; Правой - Дочерняя"
Point(doAddTrayIcon)
link(onClick,3895459:doEvent,[])
}
Add(WinTools,2104096,483,294)
{
Point(isVisible)
link(Handle,2953706:Handle,[])
}
Add(IndexToChanel,10132576,483,357)
{
Point(Index)
link(onEvent1,11701800:doWork2,[])
link(onEvent2,11701800:doWork1,[(538,370)(538,356)])
link(Index,2104096:isVisible,[])
}
Add(ChanelToIndex,11701800,553,350)
{
link(onIndex,2953706:doVisible,[(603,356)(603,194)(471,194)(471,258)])
}
Add(IndexToChanel,3895459,301,357)
{
link(onEvent1,10132576:doEvent,[])
link(onEvent2,7956862:doWork1,[])
}
Add(InfoTip,9514806,413,105)
{
Info=#7:TaskBar|
Width=169
Height=81
}
Add(Button,14788684,56,504)
{
Left=170
Top=40
Width=150
Caption="doFlashWindow [Modal]"
link(onClick,7956862:doWork3,[(373,510)(373,384)])
}
Add(Button,14616364,56,651)
{
Left=15
Top=70
Width=305
Caption="doShowModal"
link(onClick,7956862:doWork4,[(386,657)(386,391)])
}
Add(Timer,16758382,413,266)
{
Interval=400
Enable=1
AutoStop=5
OverCall=1
Point(doTimer)
link(onTimer,2953706:doFlashWindow,[])
}
Add(Button,11065194,56,133)
{
Left=15
Top=10
Width=150
Caption="doSetTaskBar [Main]"
link(onClick,2953706:doPlaceInTaskBar,[(385,139)(385,265)])
}
Add(Button,16496250,56,189)
{
Left=15
Top=40
Width=150
Caption="doSetTaskBar [Modal]"
link(onClick,7956862:doWork2,[(373,195)(373,377)])
}

Фикс:
procedure THIMainForm.SetTaskBar;
begin
- //if IsMain then
- //if (Value = 1)and Assigned(Applet) then
- //Applet.ExStyle :={ Applet.ExStyle or} WS_EX_DLGMODALFRAME or WS_EX_TOOLWINDOW;

+ if IsMain then
+ begin
+ if (Value = 1)and Assigned(Applet) then
+ Applet.ExStyle :={ Applet.ExStyle or} WS_EX_DLGMODALFRAME or WS_EX_TOOLWINDOW;
+ end
+ else
+ begin
+ if (Value = 0) and Assigned(Applet) then
+ Control.ExStyle := Control.ExStyle or WS_EX_APPWINDOW;
+ end;
end;

P.S. У всех, у кого XP, прошу проверить код и подтвердить или опровергнуть этот баг.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 2code_36100.txt [3.3KB] [430], code_36101.txt [523B] [256]