Вверх ↑
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
#1: 2020-01-05 19:47:04 ЛС | профиль | цитата
GIF

Есть, конечно, метод doBringToFront, но у него два недостатка:
1. GroupBox друг под другом: клик достаёт до элементов нижележащего бокса;
2. Если панели разного размера - большие снизу будут выглядывать из-под маленьких сверху.

Решение - doVisible, но оно неудобно тем, что при каждом переключении приходится тянуть связи ко всем панелям для Visible:=0. Немного подумав, составил простую схему:
Add(Button,5384408,224,259)
{
@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,224,329)
{
@Color=255
Left=5
Top=60
Width=165
Height=45
Caption="2"
link(onClick,12794927:doWork2,[(272,335)(272,272)])
AddHint(-101,4,21,13,Caption)
}
Add(Button,345068,224,434)
{
@Color=255
Left=5
Top=160
Width=165
Height=45
Caption="4"
link(onClick,12794927:doWork4,[(272,440)(272,286)])
AddHint(-106,4,21,13,Caption)
}
Add(Button,9880169,224,483)
{
@Color=255
Left=5
Top=210
Width=165
Height=45
Caption="5"
link(onClick,12794927:doWork5,[(272,489)(272,293)])
AddHint(-97,5,21,13,Caption)
}
Add(Button,16334480,224,378)
{
@Color=255
Left=5
Top=110
Width=165
Height=45
Caption="3"
link(onClick,12794927:doWork3,[(272,384)(272,279)])
AddHint(-131,9,21,13,Caption)
}
Add(ChanelToIndex,12794927,287,259)
{
Count=5
link(onIndex,8039270:doSet,[])
}
Add(MultiSetParam,8039270,336,259)
{
Parameters=#9:1;0;0;0;0|9:0;1;0;0;0|9:0;0;1;0;0|9:0;0;0;1;0|9:0;0;0;0;1|
Count=5
link(onSet1,15687527:doWork1,[])
link(onSet2,6552823:In,[])
link(onSet3,4126784:In,[])
link(onSet4,14423957:In,[])
link(onSet5,2898079:In,[])
}
Add(LineBreak,10131051,441,329)
{
Caption="vis"
link(Out,1246265:doWork1,[])
Primary=[6552823,-63,-63]
}
Add(LineBreak,14154319,441,378)
{
Caption="vis"
link(Out,16595292:doWork1,[])
Primary=[4126784,-63,-105]
}
Add(LineBreak,5373718,441,434)
{
Caption="vis"
link(Out,9904003:doWork1,[])
Primary=[14423957,-63,-154]
}
Add(LineBreak,10927514,441,483)
{
Caption="vis"
link(Out,16488555:doWork1,[])
Primary=[2898079,-63,-196]
}
Add(ChildPanel,1246265,490,329)
{
}
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,490,378)
{
}
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,490,434)
{
}
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,490,483)
{
}
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,490,259)
{
}
BEGIN_SDK
Add(EditMulti,1591142,21,21)
{
WorkCount=1
link(doWork1,12574307:doVisible,[(59,27)(59,69)])
}
Add(Panel,12574307,98,56)
{
Left=195
Top=30
Width=135
Height=185
Point(doVisible)
}
Add(Label,5176033,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="111"
}
END_SDK
Если кто проще покажет - с удовольствием погляжу.

Редактировалось 1 раз(а), последний 2020-01-05 19:48:43
карма: 9
0
файлы: 1viss.gif [13.6KB] [1546]
Ответов: 9906
Рейтинг: 351
#2: 2020-01-05 20:02:28 ЛС | профиль | цитата
Мы с незапамятных времен (когда MultiSetParam-а еще и в проектах не было) таким пользовались:
Add(Button,5384408,651,147)
{
@Color=255
Left=5
Top=5
Width=165
Height=45
Caption="1"
link(onClick,12794927:doWork1,[])
AddHint(-51,9,21,13,Caption)
}
Add(Button,9501709,651,182)
{
@Color=255
Left=5
Top=60
Width=165
Height=45
Caption="2"
link(onClick,12794927:doWork2,[(699,188)(699,160)])
AddHint(-51,9,21,13,Caption)
}
Add(Button,345068,651,252)
{
@Color=255
Left=5
Top=160
Width=165
Height=45
Caption="4"
link(onClick,12794927:doWork4,[(699,258)(699,174)])
AddHint(-51,9,21,13,Caption)
}
Add(Button,9880169,651,287)
{
@Color=255
Left=5
Top=210
Width=165
Height=45
Caption="5"
link(onClick,12794927:doWork5,[(699,293)(699,181)])
AddHint(-51,9,21,13,Caption)
}
Add(Button,16334480,651,217)
{
@Color=255
Left=5
Top=110
Width=165
Height=45
Caption="3"
link(onClick,12794927:doWork3,[(699,223)(699,167)])
AddHint(-51,9,21,13,Caption)
}
Add(ChanelToIndex,12794927,714,147)
{
Count=5
link(onIndex,4533655:doOperation,[])
}
Add(LineBreak,1194888,896,217)
{
Caption="vis"
link(Out,1246265:doWork1,[])
Primary=[6552823,-14,-63]
}
Add(LineBreak,7887744,896,266)
{
Caption="vis"
link(Out,16595292:doWork1,[])
Primary=[4126784,-14,-105]
}
Add(LineBreak,5581608,896,322)
{
Caption="vis"
link(Out,9904003:doWork1,[])
Primary=[14423957,-14,-154]
}
Add(LineBreak,4552856,896,371)
{
Caption="vis"
link(Out,16488555:doWork1,[])
Primary=[2898079,-14,-196]
}
Add(ChildPanel,1246265,945,217)
{
}
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,945,266)
{
}
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,945,322)
{
}
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=170
Height=215
Visible=1
Point(doVisible)
}
Add(Label,10547930,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="444"
}
END_SDK
Add(ChildPanel,16488555,945,371)
{
}
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=170
Height=215
Visible=1
Point(doVisible)
}
Add(Label,15731849,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="555"
}
END_SDK
Add(ChildPanel,15687527,945,147)
{
}
BEGIN_SDK
Add(EditMulti,1591142,21,21)
{
WorkCount=1
link(doWork1,12574307:doVisible,[(59,27)(59,69)])
}
Add(Panel,12574307,98,56)
{
Left=195
Top=30
Width=170
Height=215
Point(doVisible)
}
Add(Label,5176033,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="111"
}
END_SDK
Add(MainForm,6445395,525,98)
{
Height=388
Position=1
}
Add(IntToBits,789990,826,147)
{
Count=5
Data_0=Integer(0)
Data_1=Integer(1)
link(onBit1,15687527:doWork1,[])
link(onBit2,6552823:In,[])
link(onBit3,4126784:In,[])
link(onBit4,14423957:In,[])
link(onBit5,2898079:In,[])
}
Add(Math,4533655,770,147)
{
OpType=9
Op1=1
link(onResult,789990:doBits,[])
}

Редактировалось 3 раз(а), последний 2020-01-06 11:31:16
карма: 9

0
Ответов: 8921
Рейтинг: 823
#3: 2020-01-05 20:16:21 ЛС | профиль | цитата
Или вместо doVisible использовать doBringToFront

Add(MainForm,2953706,371,42)
{
link(onCreate,11349787:doFor,[(410,62)(410,48)])
}
Add(Button,5384408,427,77)
{
@Color=255
Left=5
Top=5
Width=165
Height=45
Caption="1"
Data=Integer(0)
link(onClick,2668523:doWork2,[])
AddHint(-53,8,21,13,Caption)
}
Add(Button,9501709,427,112)
{
@Color=255
Left=5
Top=60
Width=165
Height=45
Caption="2"
Data=Integer(1)
link(onClick,5027687:doWork2,[])
AddHint(-54,2,21,13,Caption)
}
Add(Button,345068,427,182)
{
@Color=255
Left=5
Top=160
Width=165
Height=45
Caption="4"
Data=Integer(3)
link(onClick,16319249:doWork2,[])
AddHint(-51,1,21,13,Caption)
}
Add(Button,9880169,427,217)
{
@Color=255
Left=5
Top=210
Width=165
Height=45
Caption="5"
Data=Integer(4)
link(onClick,16319249:doWork3,[(476,223)])
AddHint(-50,5,21,13,Caption)
}
Add(Button,16334480,427,147)
{
@Color=255
Left=5
Top=110
Width=165
Height=45
Caption="3"
Data=Integer(2)
link(onClick,1338667:doWork2,[])
AddHint(-52,7,21,13,Caption)
}
Add(ChildPanelEx,13795549,497,42)
{
Mode=1
}
BEGIN_SDK
Add(EditMultiEx,6923691,21,21)
{
WorkCount=#5:##add|8:##select|
Point(##add)
Point(##select)
link(##add,11183607:doCalc,[(95,27)(95,69)])
link(##select,879157:doBringToFront,[(144,34)(144,76)])
}
Add(Panel,879157,161,63)
{
Left=185
Top=15
Width=185
Height=225
Point(doBringToFront)
}
Add(MathParse,11183607,105,63)
{
DataCount=1
MathStr="(%1+1)*111"
ResultType=0
link(onResult,879157:doCaption,[])
}
END_SDK
Add(For,11349787,427,42)
{
End=4
link(onEvent,13795549:##add,[])
}
Add(HubEx,5027687,472,112)
{
Angle=3
link(onEvent,2668523:doWork3,[])
}
Add(HubEx,1338667,472,147)
{
Angle=3
link(onEvent,5027687:doWork3,[])
}
Add(HubEx,16319249,472,182)
{
Angle=3
link(onEvent,1338667:doWork3,[])
}
Add(HubEx,2668523,472,77)
{
Angle=3
link(onEvent,13795549:##select,[(476,55)])
}

А ещё есть IndexToCanelAll, который выдаёт "1" на выбранный канал, а на все остальные "0", как предложил Galkov
https://forum.hiasm.com/getfile/38768

Редактировалось 1 раз(а), последний 2020-01-05 20:19:15
карма: 19

0
Ответов: 9906
Рейтинг: 351
#4: 2020-01-05 20:45:35 ЛС | профиль | цитата
А еще возможно особо тонкое извращение, с элементом GlobalVarEx:
Add(Button,13109739,224,77)
{
}
Add(MainForm,4355392,224,126)
{
Position=1
link(onCreate,16058578:doFor,[])
}
Add(ChildPanelEx,6744865,336,140)
{
Mode=1
}
BEGIN_SDK
Add(EditMultiEx,15514217,21,21)
{
WorkCount=#5:##add|
Width=314
VOffset=21
Point(##add)
link(##add,11397104:doEvent1,[])
}
Add(Panel,9836311,280,28)
{
Left=20
Top=50
Width=200
Height=100
Color=-16777213
Visible=1
BorderWidth=2
BevelInner=1
BevelOuter=2
Point(doVisible)
Point(doLeft)
Point(doTop)
Point(Left)
Point(Top)
}
Add(Label,9025160,105,56)
{
Left=20
Top=20
Width=10
Height=17
Caption="0"
}
Add(If_else,5751694,105,161)
{
Type=5
link(onTrue,7370946:doWork1,[])
link(onFalse,7370946:doWork2,[])
link(Op1,9025160:Caption,[])
}
Add(ChanelToIndex,7370946,154,161)
{
link(onIndex,9836311:doVisible,[(256,167)(256,41)])
}
Add(GlobalVarEx,12752682,35,161)
{
Name="Panels"
Point(onValue)
link(onValue,5751694:doCompare,[])
}
Add(Math,3645445,161,42)
{
link(onResult,9836311:doLeft,[])
link(Op2,9836311:Left,[(174,33)(251,33)(251,68)(286,68)])
}
Add(Math,5905448,203,49)
{
link(onResult,9836311:doTop,[])
link(Op2,9836311:Top,[(216,40)(244,40)(244,75)(293,75)])
}
Add(Hub,11397104,56,42)
{
OutCount=3
link(onEvent1,3645445:doOperation,[])
link(onEvent2,5905448:doOperation,[])
link(onEvent3,9025160:doText,[])
}
END_SDK
Add(GlobalVarEx,3253542,336,77)
{
Name="Panels"
Point(onValue)
}
Add(For,16058578,280,140)
{
End=50
link(onEvent,6744865:##add,[])
}
Add(TrackBar,11489675,280,77)
{
Left=14
Top=7
Width=247
Height=23
Align=2
TabOrder=-1
Max=50
link(onPosition,3253542:doValue,[])
}

Редактировалось 8 раз(а), последний 2020-01-06 11:03:41
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#5: 2020-01-05 22:54:49 ЛС | профиль | цитата
3042 писал(а):
Немного подумав, составил простую схему
с 20 ";", хотя можно прожить и без них.

Add(MultiSetParam,174170,364,182)
{
Parameters=#5:10000|5:01000|5:00100|5:00010|5:00001|
Char=""
Count=5
}
Я использую Math(shl).
Леонид писал(а):
Или вместо doVisible использовать doBringToFront
Я балдею.
А это про что?
3042 писал(а):
2. Если панели разного размера - большие снизу будут выглядывать из-под маленьких сверху.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#6: 2020-01-06 12:24:14 ЛС | профиль | цитата
Слушай, nesco, чего я вспомнил...
Когда-то, в BitsToInt я вносил исправления, чтобы он понимал больше 32-х бит (возвращает при этом real).
Вот... А про IntToBits я тогда и позабыл.
Поэтому, предлагаю фикс (в аттаче).
Поверил на схеме нашего коллеги 3042:

Add(Button,5384408,574,119)
{
@Color=255
Left=5
Top=5
Width=165
Height=45
Caption="1"
Data=Integer(0)
link(onClick,11615677:doWork2,[])
AddHint(-51,9,21,13,Caption)
}
Add(Button,9501709,574,154)
{
@Color=255
Left=5
Top=60
Width=165
Height=45
Caption="2"
Data=Integer(1)
link(onClick,4489211:doWork2,[])
AddHint(-51,9,21,13,Caption)
}
Add(Button,345068,574,224)
{
@Color=255
Left=5
Top=160
Width=165
Height=45
Caption="4"
Data=Integer(48)
link(onClick,4796756:doWork2,[])
AddHint(-51,9,21,13,Caption)
}
Add(Button,9880169,574,259)
{
@Color=255
Left=5
Top=210
Width=165
Height=45
Caption="5"
Data=Integer(49)
link(onClick,4796756:doWork3,[(627,265)])
AddHint(-51,9,21,13,Caption)
}
Add(Button,16334480,574,189)
{
@Color=255
Left=5
Top=110
Width=165
Height=45
Caption="3"
Data=Integer(2)
link(onClick,8859863:doWork2,[])
AddHint(-51,9,21,13,Caption)
}
Add(LineBreak,11546986,798,189)
{
Caption="vis"
link(Out,1246265:doWork1,[])
Primary=[6552823,-14,-63]
}
Add(LineBreak,13155482,798,238)
{
Caption="vis"
link(Out,16595292:doWork1,[])
Primary=[4126784,-14,-105]
}
Add(LineBreak,13943601,798,294)
{
Caption="vis"
link(Out,9904003:doWork1,[])
Primary=[14423957,-21,161]
}
Add(LineBreak,9698646,798,343)
{
Caption="vis"
link(Out,16488555:doWork1,[])
Primary=[2898079,-21,119]
}
Add(ChildPanel,1246265,847,189)
{
}
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,847,238)
{
}
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,847,294)
{
}
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=170
Height=215
Visible=1
Point(doVisible)
}
Add(Label,10547930,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="444"
}
END_SDK
Add(ChildPanel,16488555,847,343)
{
}
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=170
Height=215
Visible=1
Point(doVisible)
}
Add(Label,15731849,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="555"
}
END_SDK
Add(ChildPanel,15687527,847,119)
{
}
BEGIN_SDK
Add(EditMulti,1591142,21,21)
{
WorkCount=1
link(doWork1,12574307:doVisible,[(59,27)(59,69)])
}
Add(Panel,12574307,98,56)
{
Left=195
Top=30
Width=170
Height=215
Point(doVisible)
}
Add(Label,5176033,168,98)
{
Left=60
Top=90
Width=22
Height=17
Caption="111"
}
END_SDK
Add(MainForm,6445395,574,315)
{
Height=388
Position=1
}
Add(IntToBits,789990,728,119)
{
Count=50
Data_0=Integer(0)
Data_1=Integer(1)
link(onBit1,15687527:doWork1,[])
link(onBit2,6552823:In,[])
link(onBit3,4126784:In,[])
link(onBit49,14423957:In,[])
link(onBit50,2898079:In,[])
}
Add(Math,4533655,658,119)
{
OpType=9
Op1=1
link(onResult,789990:doBits,[])
}
Add(HubEx,11615677,623,119)
{
link(onEvent,4533655:doOperation,[])
}
Add(HubEx,4489211,623,154)
{
Angle=3
link(onEvent,11615677:doWork3,[])
}
Add(HubEx,8859863,623,189)
{
Angle=3
link(onEvent,4489211:doWork3,[])
}
Add(HubEx,4796756,623,224)
{
Angle=3
link(onEvent,8859863:doWork3,[])
}
карма: 9

0
файлы: 1hiIntToBits.rar [597B] [490]
Разработчик
Ответов: 26113
Рейтинг: 2126
#7: 2020-01-06 13:51:35 ЛС | профиль | цитата
Galkov писал(а):
Поэтому, предлагаю фикс (в аттаче)

Фикс на SVN будет только после праздников.
карма: 22

0
Ответов: 5227
Рейтинг: 587
#8: 2020-01-06 14:07:35 ЛС | профиль | цитата
nesco, забухал что ли
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#9: 2020-01-06 14:09:13 ЛС | профиль | цитата
andrestudio писал(а):
забухал что ли

Не пью, давно уже, и тебе не советую. Просто доступ к SVN только с работы.
карма: 22

0
Ответов: 5227
Рейтинг: 587
#10: 2020-01-06 14:11:42 ЛС | профиль | цитата
nesco, понял, извини за флуд
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2236
Рейтинг: 676
#11: 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,[])
}
Схема тоже только отключает видимую панель и включает нужную.

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

1
Голосовали:3042
Ответов: 16884
Рейтинг: 1239
#12: 2020-01-07 13:38:48 ЛС | профиль | цитата
Для полного счастья
- linessecondsbytes codebytes data
Sla8a 73447 0.66 61352 2217
Galkov 74073 0.81 61544 2209
3042 73682 0.89 61840 2213



Редактировалось 1 раз(а), последний 2020-01-07 13:39:38
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#13: 2020-01-08 15:23:18 ЛС | профиль | цитата
Чего ты там на измерял... Непонятно:
4Tad
В чем полнота счастья... Тоже непонятно

Кстати говоря, 3 мсек чтобы погасить полсотни панелей - мне не представляется большой проблемой.
Для менеджера -- понятно: столько команд, столько команд
карма: 9

0
файлы: 14Tad.png [19.7KB] [1267]
Ответов: 9906
Рейтинг: 351
#14: 2020-01-12 12:02:46 ЛС | профиль | цитата
Galkov писал(а):
Поэтому, предлагаю фикс (в аттаче)

fix: <Расширения допустимого диапазона св-ва Count с 32 до 64 (до 56 - гарантированно)>

Редактировалось 1 раз(а), последний 2020-01-12 12:03:40
карма: 9

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#15: 2020-01-12 12:36:25 ЛС | профиль | цитата
Galkov писал(а):
fix: <Расширения допустимого диапазона св-ва Count с 32 до 64 (до 56 - гарантированно)>

Я уже зафиксил BitsToInt пару дней назад.

Редактировалось 1 раз(а), последний 2020-01-12 12:36:45
карма: 22

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