Вверх ↑
Этот топик читают: Гость
Ответов: 1088
Рейтинг: 112
#1: 2016-08-03 17:12:41 ЛС | профиль | цитата
Я тут попробовал использовать динамические панели, для добавления в панель прокрутки ~250 ячеек с текстовой и графической информацией.
И понял что дочерние панели добавляются неприлично долго, ~21 секунда на создание 250 панелей с 1 label в каждой.
а мне надо 6 надписей, 2 кнопки и 1 картинку в каждой. Есть варианты сделать такое с приемлимой скоростью работы и трудозатратами?
ниже схема замеряющая время от появления формы до конца отрисовки панелей.
code_37564.txt
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_37564.txt [1.2KB] [334]
Ответов: 2435
Рейтинг: 693
#2: 2016-08-03 17:49:22 ЛС | профиль | цитата
Sniper36, а если все нарисовать?
карма: 11

0
Ответов: 1088
Рейтинг: 112
#3: 2016-08-03 18:12:57 ЛС | профиль | цитата
sla8a, рассматриваю это как крайний вариант. Нужно будет делать обработчик позиции курсора(показ предпросмотра изображения), обработчик нажатий нарисованных кнопок, и всё это должно иметь прокрутку, т.к. 250 карточек в 1 экран не влезет +правка кучи багов и наладка
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 2435
Рейтинг: 693
#4: 2016-08-03 18:34:06 ЛС | профиль | цитата
Sniper36, да у вас вариантов нет. Такие интерфейсы рисуются. Создавать 250 панелей да еще и с кнопками .
Sniper36 писал(а):
обработчик нажатий нарисованных кнопок
Это вообще не понятно.
Был на форуме пример (у себя найти не могу, можете сами по форуму поискать) с кучей (вроде 500 или 1000)созданных в панели кнопок и с такими же кнопками но нарисованными (по exe-шнику и не понять где какие). Так вот панельки и при создании тормозят и если такое окно поводить по экрану, то тоже тормоза хорошие (у нарисованных такой проблемы нет).

------------ Дoбавленo в 18.33:
Малой кровью: создайте только столько панелей сколько нужно для отображения на экране. Данные кнопки, текст, изображения обновляйте по мере передвигания (прокрутки ползунка).
карма: 11

0
Ответов: 8955
Рейтинг: 824
#5: 2016-08-03 19:40:56 ЛС | профиль | цитата
Sniper36, какая 21 сек, 0.63 сек
631ms.jpg
карма: 19

0
файлы: 1631ms.jpg [21.1KB] [714]
Ответов: 497
Рейтинг: 16
#6: 2016-08-03 21:53:41 ЛС | профиль | цитата
Sniper36, 812
карма: 1
        ]  
0
Ответов: 2435
Рейтинг: 693
#7: 2016-08-03 22:10:31 ЛС | профиль | цитата
У меня от 1600 до 2100.
карма: 11

0
Ответов: 1088
Рейтинг: 112
#8: 2016-08-04 15:36:00 ЛС | профиль | цитата
у меня не такой быстрый компьютер. По секундомеру засекал время от появления формы до загрузки всех панелей получилось 21 сек в среднем
Athlon II x2 215.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8955
Рейтинг: 824
#9: 2016-08-04 15:53:33 ЛС | профиль | цитата
Sniper36 писал(а):
у меня не такой быстрый компьютер
И чуть лишнего в схеме, я не случайно картинку приложил
карма: 19

0
Ответов: 1088
Рейтинг: 112
#10: 2016-08-04 16:02:59 ЛС | профиль | цитата
sla8a писал(а):
Был на форуме пример (у себя найти не могу, можете сами по форуму поискать) с кучей (вроде 500 или 1000)созданных в панели кнопок и с такими же кнопками но нарисованными (по exe-шнику и не понять где какие). Так вот панельки и при создании тормозят и если такое окно поводить по экрану, то тоже тормоза хорошие (у нарисованных такой проблемы нет).

не нашел
------------ Дoбавленo в 16.02:
Леонид, 11 секунд
PS: я думал проблему ломающихся кодировок уже решили, схема в первом посте сломана.
Add(MainForm,2953706,301,238)
{
Width=689
Height=405
link(onCreate,3431294:doFor,[])
}
Add(For,3431294,378,252)
{
Start=1
End=250
link(onEvent,10217062:##add,[])
}
Add(ChildPanelEx,10217062,504,252)
{
Mode=1
}
BEGIN_SDK
Add(EditMultiEx,8441335,21,21)
{
WorkCount=#5:##add|0:|
EventCount=#16:onLClick=Preview|13:onRClick=Menu|9:onMouseUp|
VarCount=#8:FileName|15:BitMap=а?аАб?б?|0:|
Width=601
Height=214
VOffset=21
Point(##add)
}
Add(Panel,7489815,35,518)
{
Width=437
Height=137
Ctl3D=0
WinStyle=1
Name="pnl"
}
Add(Label,10642284,543,249)
{
Left=390
Top=5
Width=20
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="№"
}
END_SDK


карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8955
Рейтинг: 824
#11: 2016-08-04 18:01:25 ЛС | профиль | цитата
Sniper36, без Label всего 155 миллисек
всего155.jpg
А вот 1200 шестиугольнх панелей, прокручивается с глюками, конечно Шестиугольники.rar
А есть и на картинке, без глюков Шестиугольникimg.rar
карма: 19

1
файлы: 3всего155.jpg [21.8KB] [651], Шестиугольники.rar [6.9KB] [409], Шестиугольникimg.rar [6.9KB] [380]
Голосовали:Sniper36
Разработчик
Ответов: 26304
Рейтинг: 2146
#12: 2016-08-04 18:48:29 ЛС | профиль | цитата
Sniper36, а можно, хоть ориентировочно, как должно все это выглядеть?
карма: 22

0
Ответов: 1088
Рейтинг: 112
#13: 2016-08-04 19:13:29 ЛС | профиль | цитата
Леонид писал(а):
А есть и на картинке, без глюков Шестиугольникimg.rar

довольно странный способ определения на какой шестиугольник кликнули... по цвету
А не завалялось ли у вас что-нибудь подобное, но без прикола с цветом?
------------ Дoбавленo в 19.13:
nesco,
Add(MainForm,285272,420,378)
{
Width=1198
Height=714
Point(doSetFocus)
link(onCreate,8025079:doFor,[])
}
Add(ChildScrollBox,12335032,602,392)
{
link(onEvent1,285272:doSetFocus,[(639,398)(639,349)(403,349)(403,412)])
}
BEGIN_SDK
Add(EditMulti,10147327,21,21)
{
EventCount=2
WorkCount=2
Width=643
Height=354
link(doWork1,9675157:##add,[(161,27)(161,174)])
}
Add(ScrollBox,11595499,77,441)
{
Width=907
Height=676
Align=5
}
Add(ToolBarLayout,15691966,392,294)
{
Name="lay"
}
Add(ChildPanelEx,9675157,301,168)
{
Mode=1
link(onLClick,2645754:doData,[])
link(onMouseUp,8393331:doWork2,[])
}
BEGIN_SDK
Add(EditMultiEx,7927019,21,21)
{
WorkCount=#5:##add|7:##clear|8:##select|8:##delete|
EventCount=#16:onLClick=Preview|13:onRClick=Menu|9:onMouseUp|
VarCount=#7:##count|8:FileName|15:BitMap=Картинка|12:##eventIndex|
Width=601
Height=214
VOffset=21
Point(##add)
Point(##clear)
Point(##select)
Point(##delete)
Point(##count)
Point(##eventIndex)
link(##add,7317688:doSeparateMT,[])
link(BitMap,9949040:ImageBitmap,[(41,224)(433,224)])
}
Add(Panel,11816244,35,518)
{
Width=437
Height=137
Ctl3D=0
WinStyle=1
Name="pnl"
Layout="parent.lay"
}
Add(Button,5393469,231,665)
{
Left=280
Top=110
Width=95
Caption="Обратная связь"
Flat=0
}
Add(CheckBox,5198013,231,581)
{
Width=80
Caption="Заказ готов"
Flat=0
}
Add(Label,6689435,543,249)
{
Left=390
Top=5
Width=20
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="№"
}
Add(IndexToChanel,16688608,483,42)
{
link(onEvent1,7927019:onLClick,[])
link(onEvent2,7927019:onRClick,[])
}
Add(MT_MultiData,7317688,49,42)
{
Count=5
Point(RemaindData)
link(onData1,4488485:doEvent1,[(103,48)(103,41)])
link(onData2,3271312:doText,[(117,55)(117,83)])
link(onData3,5081475:doText,[(111,62)(111,118)])
link(onData4,15355780:doText,[(103,69)(103,153)])
link(onData5,13014496:doText,[(97,76)(97,188)])
}
Add(Label,14073616,168,42)
{
Left=155
Top=10
Width=38
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="Имя"
}
Add(Label,3271312,154,77)
{
Left=155
Top=35
Width=97
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="Стоимость"
}
Add(Label,5081475,140,112)
{
Left=155
Top=60
Width=109
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="Примечание"
}
Add(Label,15355780,126,147)
{
Left=155
Top=85
Width=147
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="Срок готовности"
}
Add(Label,13014496,112,182)
{
Left=155
Top=110
Width=27
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="От"
}
Add(PictureStream,15792143,287,35)
{
FileName="C:\\Windows\\System32\\oobe\\background.bmp"
link(onLoad,9949040:doLoad,[(373,41)(373,55)])
}
Add(Hub,4488485,126,35)
{
link(onEvent1,15792143:doLoad,[])
link(onEvent2,14073616:doText,[])
}
Add(Image,9949040,427,49)
{
Left=2
Top=2
Width=147
Height=132
Cursor=2
Name="img"
ViewStyle=0
HalfTone=1
Point(doHint)
Point(onMouseDown)
Point(onMouseUp)
link(onMouseDown,16688608:doEvent,[(471,62)(471,48)])
link(onMouseUp,7927019:onMouseUp,[(541,69)(541,62)])
}
END_SDK
Add(DoData,2645754,371,168)
{
link(onEventData,12161719:doEvent1,[])
link(Data,9675157:##eventIndex,[(377,157)(350,157)(350,219)(328,219)])
}
Add(Hub,12161719,420,168)
{
link(onEvent1,9675157:##select,[(446,174)(446,143)(290,143)(290,188)])
link(onEvent2,8393331:doWork1,[])
}
Add(ChildForm,8393331,469,175)
{
@Hint=#7:Preview|
link(onEvent1,10147327:onEvent1,[(545,181)(545,27)])
link(Data1,9675157:BitMap,[(475,163)(411,163)(411,227)(321,227)])
AddHint(-15,60,53,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,13509295,182,196)
{
EventCount=1
WorkCount=2
DataCount=1
Width=258
Height=165
link(doWork1,4579071:doEvent1,[(200,202)(200,300)])
link(doWork2,4435255:doWork1,[])
}
Add(MouseEvent,5761119,259,245)
{
}
Add(Hub,4579071,217,294)
{
OutCount=4
link(onEvent1,931579:doData,[])
link(onEvent2,980399:doOperation,[])
link(onEvent3,4435255:doWork2,[(240,314)(240,216)])
link(onEvent4,16766916:doEvent1,[])
}
Add(ChanelToIndex,4435255,294,203)
{
link(onIndex,7315380:doVisible,[(342,209)(342,279)])
}
Add(Math,980399,301,301)
{
Op2=22
ResultType=0
link(onResult,7315380:doTop,[(345,307)(345,293)])
link(Op1,5761119:MouseY,[(307,289)(272,289)])
}
Add(DoData,931579,259,294)
{
link(onEventData,7315380:doLeft,[(341,300)(341,286)])
link(Data,5761119:MouseX,[])
}
Add(Image,10649662,406,322)
{
Left=1
Top=1
Width=64
Height=64
Align=5
ViewStyle=1
link(Bitmap,13509295:Data1,[(412,179)(188,179)])
}
Add(Hub,16766916,357,315)
{
link(onEvent1,13509295:onEvent1,[(405,321)(405,202)])
link(onEvent2,10649662:doLoad,[])
}
Add(MainForm,7315380,357,245)
{
Left=-35
Top=-105
Width=125
Height=125
Color=255
Visible=1
KeyPreview=1
Ctl3D=0
WinStyle=1
BorderStyle=0
TaskBar=1
Point(doVisible)
Point(doLeft)
Point(doTop)
}
END_SDK
END_SDK
Add(For,8025079,504,392)
{
End=50
link(onEvent,12335032:doWork1,[])
}


карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8955
Рейтинг: 824
#14: 2016-08-04 19:15:45 ЛС | профиль | цитата
Sniper36 писал(а):
но без прикола с цветом
Семен Семенович писал(а):
Такой же, только с перламутровыми пуговицами!
Так нахождение точки в шестиугольнике (в вашем случае в прямоугольнике -- даже компонент есть) обычная арифметическая задача
карма: 19

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#15: 2016-08-04 19:42:37 ЛС | профиль | цитата
Леонид писал(а):
Так нахождение точки в шестиугольнике (в вашем случае в прямоугольнике -- даже компонент есть) обычная арифметическая задача

Но не совсем, в данном случае, тут так все просто. Сложность в том, что необходимо просчитывать скролинг панелей, и при каждом скролинге, координаты прямоугольника буду разными. К тому же, часть панелей будут неполными.
карма: 22

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