Вверх ↑
Ответов: 2201
Рейтинг: 675
#1: 2020-01-06 22:44:10 ЛС | профиль | цитата
Вот от меня вариант:
Схема

Add(MainForm,2953706,21,105)
{
Position=1
}
Add(Button,5384408,287,77)
{
@Color=255
Left=5
Top=5
Width=165
Height=45
Caption="1"
link(onClick,12794927:doWork1,[])
AddHint(-109,7,21,13,Caption)
}
Add(Button,9501709,287,112)
{
@Color=255
Left=5
Top=60
Width=165
Height=45
Caption="2"
link(onClick,12794927:doWork2,[(326,118)(326,90)])
AddHint(-101,4,21,13,Caption)
}
Add(Button,345068,287,182)
{
@Color=255
Left=5
Top=160
Width=165
Height=45
Caption="4"
link(onClick,12794927:doWork4,[(336,188)(336,104)])
AddHint(-106,4,21,13,Caption)
}
Add(Button,9880169,287,217)
{
@Color=255
Left=5
Top=210
Width=165
Height=45
Caption="5"
link(onClick,12794927:doWork5,[(340,223)(340,111)])
AddHint(-97,5,21,13,Caption)
}
Add(Button,16334480,287,147)
{
@Color=255
Left=5
Top=110
Width=165
Height=45
Caption="3"
link(onClick,12794927:doWork3,[(331,153)(331,97)])
AddHint(-131,9,21,13,Caption)
}
Add(ChanelToIndex,12794927,350,77)
{
Count=5
link(onIndex,9316896:doEvent1,[])
}
Add(LineBreak,13750312,812,126)
{
Caption="vis"
link(Out,1246265:doWork1,[])
Primary=[6552823,-231,-35]
}
Add(LineBreak,14205600,812,175)
{
Caption="vis"
link(Out,16595292:doWork1,[])
Primary=[4126784,-231,-77]
}
Add(LineBreak,6532808,812,231)
{
Caption="vis"
link(Out,9904003:doWork1,[])
Primary=[14423957,-231,-126]
}
Add(LineBreak,7113400,812,280)
{
Caption="vis"
link(Out,16488555:doWork1,[])
Primary=[2898079,-231,-168]
}
Add(ChildPanel,1246265,854,126)
{
}
BEGIN_SDK
Add(EditMulti,1407037,21,21)
{
WorkCount=1
link(doWork1,5337714:doVisible,[(59,27)(59,69)])
}
Add(Panel,5337714,98,56)
{
Left=195
Top=30
Width=170
Height=215
Visible=1
Point(doVisible)
}
Add(Label,3330816,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="222"
}
END_SDK
Add(ChildPanel,16595292,854,175)
{
}
BEGIN_SDK
Add(EditMulti,15996227,21,21)
{
WorkCount=1
link(doWork1,14650263:doVisible,[(59,27)(59,69)])
}
Add(Panel,14650263,98,56)
{
Left=195
Top=30
Width=170
Height=215
Visible=1
Point(doVisible)
}
Add(Label,6723808,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="333"
}
END_SDK
Add(ChildPanel,9904003,854,231)
{
}
BEGIN_SDK
Add(EditMulti,267168,21,21)
{
WorkCount=1
link(doWork1,14054324:doVisible,[(59,27)(59,69)])
}
Add(Panel,14054324,98,56)
{
Left=195
Top=30
Width=223
Height=171
Visible=1
Point(doVisible)
}
Add(Label,10547930,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="444"
}
END_SDK
Add(ChildPanel,16488555,854,280)
{
}
BEGIN_SDK
Add(EditMulti,11663719,21,21)
{
WorkCount=1
link(doWork1,16337692:doVisible,[(59,27)(59,69)])
}
Add(Panel,16337692,98,56)
{
Left=195
Top=30
Width=185
Height=230
Visible=1
Point(doVisible)
}
Add(Label,15731849,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="555"
}
END_SDK
Add(ChildPanel,15687527,854,84)
{
}
BEGIN_SDK
Add(EditMulti,1591142,21,21)
{
WorkCount=1
Width=342
link(doWork1,12574307:doVisible,[(109,27)(109,69)])
}
Add(Panel,12574307,175,56)
{
Left=195
Top=30
Width=135
Height=185
Point(doVisible)
}
Add(Label,5176033,175,119)
{
Left=60
Top=90
Width=22
Height=17
Caption="111"
}
END_SDK
Add(LineBreak,13723548,812,84)
{
Caption="vis"
link(Out,15687527:doWork1,[])
Primary=[1851123,-231,0]
}
Add(IndexToChanel,8744671,539,84)
{
Count=5
Point(Index)
link(onEvent1,1851123:In,[])
link(onEvent2,6552823:In,[])
link(onEvent3,4126784:In,[])
link(onEvent4,14423957:In,[])
link(onEvent5,2898079:In,[])
link(Index,1271852:Value,[])
}
Add(ChanelToIndex,6721265,497,84)
{
link(onIndex,8744671:doEvent,[])
}
Add(Hub,9316896,462,77)
{
OutCount=3
link(onEvent1,6721265:doWork1,[(489,83)(489,90)])
link(onEvent2,1271852:doValue,[(481,90)(481,48)])
link(onEvent3,6721265:doWork2,[])
}
Add(Memory,1271852,539,42)
{
@Hint=#22:Видемая панель вначале|
Default=Integer(0)
AddHint(0,-24,21,13,Default)
}
Add(ChangeMon,14281565,406,42)
{
}
В отличии от выше выложенных схем, эта делает только:
1. Выключает видимость у видимой панели.
2. Включает видимость у нужной панели.
Казалось бы мелочь, но логично делать именно так. Нет смысла в Visible = 0 всем панелям.
Еще хорошо ставить ChangeMon после первого ChanelToIndex. Тогда можно организовать загрузку, сохранение данных только при включении/выключени панели:
Схема

Add(ChildPanel,15687527,476,126){
}
BEGIN_SDK
Add(EditMulti,1591142,21,21)
{
WorkCount=1
Width=342
link(doWork1,10382495:doEvent1,[(59,27)(59,69)])
}
Add(Panel,12574307,182,161)
{
Left=195
Top=30
Width=135
Height=185
Point(doVisible)
}
Add(Label,5176033,273,168)
{
Left=60
Top=90
Width=22
Height=17
Caption="111"
}
Add(Hub,10382495,84,63)
{
link(onEvent1,9800351:doEvent,[])
link(onEvent2,12574307:doVisible,[(112,76)(112,174)])
}
Add(IndexToChanel,9800351,147,63)
{
link(onEvent1,5809724:doWork,[])
link(onEvent2,15001376:doWork,[(198,76)(198,97)])
}
Add(LineBreakEx,15001376,217,91)
{
Caption="Обновить данные"
}
Add(LineBreakEx,5809724,217,63)
{
Caption="Сохранить данные"
}
END_SDK

--- Добавлено в 2020-01-06 22:54:47

3042 писал(а):
неудобно тем, что при каждом переключении приходится тянуть связи ко всем панелям

Если нет желания тянуть связи к панелям можно воспользоваться нестандартным элементом AdjustControls (Изменение свойств интерфейса)
Схема с элементом AdjustControls


Add(MainForm,2953706,21,105)
{
Width=447
Height=317
}
Add(AdjustControls,14031101,546,91)
{
}
Add(Button,5384408,231,70)
{
@Color=255
Left=5
Top=5
Width=165
Height=45
Caption="1"
Data=String(1)
link(onClick,13276868:doWork,[])
AddHint(-48,1,31,13,Data)
}
Add(Button,9501709,231,133)
{
@Color=255
Left=5
Top=60
Width=165
Height=45
Caption="2"
Data=String(2)
link(onClick,12094857:doWork,[])
AddHint(-46,5,31,13,Data)
}
Add(Button,345068,231,245)
{
@Color=255
Left=5
Top=160
Width=165
Height=45
Caption="4"
Data=String(4)
link(onClick,15436097:doWork,[])
AddHint(-48,4,31,13,Data)
}
Add(Button,9880169,231,294)
{
@Color=255
Left=5
Top=210
Width=165
Height=45
Caption="5"
Data=String(5)
link(onClick,11095336:doWork,[])
AddHint(-49,6,31,13,Data)
}
Add(Button,16334480,231,189)
{
@Color=255
Left=5
Top=110
Width=165
Height=45
Caption="3"
Data=String(3)
link(onClick,7190199:doWork,[])
AddHint(-51,5,31,13,Data)
}
Add(ChildPanel,1246265,728,133)
{
}
BEGIN_SDK
Add(EditMulti,1407037,21,21)
{
}
Add(Panel,5337714,98,56)
{
Left=195
Top=30
Width=170
Height=215
Visible=1
Name="P2"
}
Add(Label,3330816,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="222"
}
END_SDK
Add(ChildPanel,16595292,728,196)
{
}
BEGIN_SDK
Add(EditMulti,15996227,21,21)
{
}
Add(Panel,14650263,98,56)
{
Left=195
Top=30
Width=170
Height=215
Visible=1
Name="P3"
}
Add(Label,6723808,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="333"
}
END_SDK
Add(ChildPanel,9904003,728,252)
{
}
BEGIN_SDK
Add(EditMulti,267168,21,21)
{
}
Add(Panel,14054324,98,56)
{
Left=195
Top=30
Width=223
Height=171
Visible=1
Name="P4"
}
Add(Label,10547930,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="444"
}
END_SDK
Add(ChildPanel,16488555,728,308)
{
}
BEGIN_SDK
Add(EditMulti,11663719,21,21)
{
}
Add(Panel,16337692,98,56)
{
Left=195
Top=30
Width=185
Height=230
Visible=1
Name="P5"
}
Add(Label,15731849,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="555"
}
END_SDK
Add(ChildPanel,15687527,728,77)
{
}
BEGIN_SDK
Add(EditMulti,1591142,21,21)
{
}
Add(Panel,12574307,98,56)
{
Left=195
Top=20
Width=135
Height=185
Name="P1"
}
Add(Label,5176033,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="111"
}
END_SDK
Add(LineBreakEx,13276868,273,70)
{
Caption="set"
}
Add(LineBreakEx,12094857,273,133)
{
Caption="set"
}
Add(LineBreakEx,7190199,273,189)
{
Caption="set"
}
Add(LineBreakEx,15436097,273,245)
{
Caption="set"
}
Add(LineBreakEx,11095336,273,294)
{
Caption="set"
}
Add(LineBreakEx,14366706,371,91)
{
Caption="set"
Type=1
link(OnEvent,13538511:doEvent1,[])
}
Add(FormatStr,199589,448,91)
{
DataCount=1
Mask="P%1=Visible=0"
link(onFString,6049777:doWork2,[])
link(Str1,16594606:Value,[])
}
Add(Hub,13538511,420,91)
{
link(onEvent1,199589:doString,[])
link(onEvent2,16594606:doValue,[(442,104)(442,55)])
}
Add(Memory,16594606,448,49)
{
Default=Integer(1)
link(onData,5911307:doString,[])
AddHint(1,-25,21,13,Default)
}
Add(FormatStr,5911307,490,49)
{
DataCount=1
Mask="P%1=Visible=1"
link(onFString,6049777:doWork1,[(529,55)])
}
Add(HubEx,6049777,525,91)
{
link(onEvent,14031101:doSet,[])
}
Схема тоже только отключает видимую панель и включает нужную.
карма: 11

1
Голосовали:3042
Редактировалось 4 раз(а), последний 2020-01-06 22:54:47