Вот от меня вариант: Схема 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:473042 писал(а): неудобно тем, что при каждом переключении приходится тянуть связи ко всем панелям
Если нет желания тянуть связи к панелям можно воспользоваться нестандартным элементом 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,[]) }
Схема тоже только отключает видимую панель и включает нужную. Редактировалось 4 раз(а), последний 2020-01-06 22:54:47
|