Вверх ↑
Этот топик читают: Гость
Ответов: 497
Рейтинг: 16
#16: 2016-07-25 22:52:25 ЛС | профиль | цитата
прое*ал день и вот что сделал
схемка

Add(MainForm,10639992,364,105)
{
Width=407
Height=258
Position=1
}
Add(ListBox,4150150,693,161)
{
Left=5
Top=5
Width=310
Height=210
Color=16777215
Font=[arial,10,0,0,1]
WinStyle=1
SizeSp=0
ItemHeight=21
BoxDrawManager="Test"
Point(Handle)
Point(onMouseUp)
Point(onMouseWheel)
Point(onKeyDown)
Point(EndIdx)
link(onChange,4522979:In,[])
link(onMouseUp,5027586:doEvent1,[])
link(onMouseWheel,5027586:doEvent2,[])
link(onKeyDown,5027586:doEvent3,[])
}
Add(TrackBarRush,10773167,504,238)
{
Left=297
Top=5
Width=20
Height=212
Color=16777215
Visible=1
Max=1
Frequency=0
AbsPosition=0
TickMarks=2
Kind=1
ThumbLength=40
TickBorderWidth=0
DotsOrient=1
Point(doMax)
Point(Handle)
Point(onKeyDown)
Point(onMouseDown)
link(onPosition,12301572:doEvent1,[])
link(onKeyDown,12301572:doEvent2,[])
link(onMouseDown,12301572:doEvent3,[])
}
Add(Counter,6371961,574,161)
{
Max=9999
link(onNext,4150150:doAdd,[])
}
Add(Hub,5027586,742,175)
{
InCount=3
OutCount=1
link(onEvent1,16274641:In,[])
}
Add(InlineCode,3974644,714,238)
{
WorkPoints=#8:doScroll|14:doGetScrollPos|10:doGetCount|
EventPoints=#14:onSetScrollPos|10:onSetCount|
DataPoints=#6:Handle|7:Handle2|3:Pos|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,Windows,Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|11: HD:HWND;|21: Poser: integer; |9: public|58: Handle,Handle2,Pos,onSetScrollPos,onSetCount:THI_Event;|47: procedure doScroll(var Data:TData;idx:word);|51: procedure doGetScrollPos(var dt:TData;idx:word);|47: procedure doGetCount(var dt:TData;idx:word);|5: end;|14:implementation|0:|37:procedure THiAsmClass.doGetScrollPos;|5:begin|27:HD:=ToIntegerEvent(Handle);|54:_hi_onEvent(onSetScrollPos,GetScrollPos(HD, SB_VERT));|4:end;|0:|31:procedure THiAsmClass.doScroll;|5:begin|27:HD:=ToIntegerEvent(Handle);|29:Poser:=ReadInteger(Data,Pos);|39:SetScrollPos(HD, SB_VERT, Poser, True);|68:SendMessage(HD, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, Poser), 0);|4:end;|0:|33:procedure THiAsmClass.doGetCount;|38:var IH,IC,LBH,Count:integer; TR:TRect;|5:begin|27:HD:=ToIntegerEvent(Handle);|39:IC:=SendMessage(HD, LB_GETCOUNT, 0, 0);|44:IH:=SendMessage(HD, LB_GETITEMHEIGHT, 0, 0);|21:GetWindowRect(HD,TR);|33:LBH:=integer(TR.Bottom - TR.Top);|27:if (IC > (LBH div IH)) then|5:begin|38:ShowWindow(ToIntegerEvent(Handle2),1);|49:_hi_onEvent(onSetCount,Integer(IC-(LBH div IH)));|3:end|4:else|38:ShowWindow(ToIntegerEvent(Handle2),0);|4:end;|0:|4:end.|
link(Handle,4150150:Handle,[])
link(Handle2,10773167:Handle,[(727,226)(664,226)(664,282)(517,282)])
link(onSetScrollPos,16037508:In,[])
link(onSetCount,15670172:In,[])
link(POS,4074684:Var,[(734,226)(680,226)(680,373)(510,373)])
}
Add(LineBreak,2188249,672,245)
{
link(Out,3974644:doGetScrollPos,[])
Primary=[16274641,98,-70]
}
Add(LineBreak,3377518,420,245)
{
link(Out,10773167:doPosition2,[])
Primary=[16037508,343,-7]
}
Add(LineBreak,5424033,637,252)
{
link(Out,3974644:doGetCount,[])
Primary=[4522979,105,-91]
}
Add(LineBreak,14279127,455,252)
{
link(Out,10773167:doMax,[])
Primary=[15670172,350,-7]
}
Add(Button,11786375,441,161)
{
Left=325
Top=10
Color=10
Caption="+1"
link(onClick,2494911:doWork2,[])
}
Add(BoxDrawManager,5134939,693,112)
{
Name="Test"
ImageShift=-1
GutterShift=-1
GutterWidth=-1
}
Add(Button,11688679,441,203)
{
Left=325
Top=35
Color=35
Caption="+50"
link(onClick,3359381:doFor,[])
}
Add(For,3359381,497,203)
{
End=49
link(onEvent,2494911:doWork3,[(543,209)])
}
Add(HubEx,2494911,539,161)
{
link(onEvent,6371961:doNext,[])
}
Add(Button,11573607,441,112)
{
Left=325
Top=60
Color=60
Caption="-1"
link(onClick,15314086:doWork2,[])
}
Add(Button,11540889,441,70)
{
Left=325
Top=85
Color=85
Caption="-50"
link(onClick,15899138:doFor,[])
}
Add(For,15899138,497,70)
{
End=49
link(onEvent,15314086:doWork1,[(543,76)])
}
Add(HubEx,15314086,539,112)
{
link(onEvent,16401731:doData,[])
}
Add(PointHint,4074684,93,322)
{
Info=#143:для onKeyDown и onMouseDown так как при нажатии клавиш Up и Down и кликах в зоне TrackBar но не самом ползунке событие onPosition не вызывается|
Width=834
Height=39
link(Data,10773167:Position,[])
}
Add(Hub,12301572,546,238)
{
InCount=3
OutCount=1
link(onEvent1,3974644:doScroll,[])
}
Add(DoData,16401731,574,112)
{
link(onEventData,4150150:doDelete,[(650,118)(650,181)])
link(Data,4150150:EndIdx,[(580,100)(654,100)(654,218)(727,218)])
}
думаю будет полезно ну чтобы вы не резали и не рисовали ничего хотел еще свой скрол и в компонент но я и графические элементы на расстоянии как от Москвы до Петербурга но с другой стороны Земли
------------ Дoбавленo в 22.52:
ах да и работает корректно только с BoxDrawManager так как без него высота пунктов зависит от размера шрифта
карма: 1
        ]  
0
Разработчик
Ответов: 26072
Рейтинг: 2122
#17: 2016-07-26 02:56:23 ЛС | профиль | цитата
Вот еще один вариант, максимально приближающийся к оригинальному скролу. Даже размер меняется ползунка, если обновить TrackBarRush, конечно

Add(MainForm,2953706,56,182)
{
Width=436
Height=395
Position=1
link(onCreate,1793119:doEvent1,[])
}
Add(ListBox,6199211,385,126)
{
Left=10
Top=10
Width=375
Height=310
Name="lbx"
Point(PHandle)
Point(onKeyUp)
Point(onKeyDown)
}
Add(InlineCode,8771271,406,203)
{
WorkPoints=#8:sDisable|11:sScrollInfo|5:UPSCR|7:DOWNSCR|11:POSITIONSCR|
EventPoints=#10:onPosition|12:onScrollInfo|
DataPoints=#7:PHandle|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug, Windows, Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|24: sControl: PControl;|21: si: TScrollInfo;|9: public|14: onPosition,|19: onScrollInfo,|25: PHandle: THI_Event;|54: procedure sDisable(var _Data:TData; Index:word);|63: procedure sScrollInfo(var _Data:TData; Index:word); |51: procedure UPSCR(var _Data:TData; Index:word);|53: procedure DOWNSCR(var _Data:TData; Index:word);|67: procedure POSITIONSCR(var _Data:TData; Index:word); |5: end;|0:|14:implementation|0:|81:function WndProcSCR(Sender: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;|3:var|22: fClass: THiAsmClass;|5:begin|18: Result := false;|36: fClass := THiAsmClass(Sender.Tag);|16: with fClass do|9: begin |23: case Msg.message of|20: WM_NCCALCSIZE:|53: ShowScrollBar(Sender.Handle, SB_VERT, false);|39: WM_KEYUP, WM_KEYDOWN, WM_MOUSEWHEEL:|89: _hi_onEvent(fClass.onPosition, SendMessage(Sender.Handle, LB_GETTOPINDEX, 0, 0));|8: end;|8: end; |4:end;|0:|30:procedure THiAsmUnit.sDisable;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|40: if not Assigned(sControl) then exit; |33: sControl.Tag := Cardinal(Self);|34: sControl.AttachProc(WndProcSCR);|49: ShowScrollBar(sControl.Handle, SB_VERT, false);|4:end;|0:|33:procedure THiAsmUnit.sScrollInfo;|3:var|12: dt: TData;|11: mt:PMT; |5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|40: if not Assigned(sControl) then exit; |22: si.fMask := SIF_ALL;|46: GetScrollInfo(sControl.Handle, SB_VERT, si);|25: dtInteger(dt, si.nMin);|20: mt := mt_make(dt);|22: mt_int(mt, si.nMax);|23: mt_int(mt, si.nPage);|22: mt_int(mt, si.nPos);|33: _hi_OnEvent_(onScrollInfo, dt);|14: mt_free(mt);|4:end;|0:|27:procedure THiAsmUnit.UPSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|57: SendMessage(sControl.Handle, WM_VSCROLL, SB_LINEUP, 0);|22: sControl.Invalidate;|4:end;|0:|29:procedure THiAsmUnit.DOWNSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|59: SendMessage(sControl.Handle, WM_VSCROLL, SB_LINEDOWN, 0);|22: sControl.Invalidate;|4:end;|0:|33:procedure THiAsmUnit.POSITIONSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|23: sControl.BeginUpdate;|22: si.fMask := SIF_ALL;|46: GetScrollInfo(sControl.Handle, SB_VERT, si);|30: si.nPos := ToInteger(_Data);|54: SetScrollInfo(sControl.Handle, SB_VERT, si, true); |85: SendMessage(sControl.Handle, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, si.nPos), 0);|61:// SendMessage(sControl.Handle, LB_SETTOPINDEX, si.nPos, 0);|21: sControl.EndUpdate;|5:end; |17: |4:end.|
link(onPosition,14433224:doWork2,[(445,209)(445,202)])
link(onScrollInfo,3914989:doEvent1,[])
link(PHandle,6199211:PHandle,[])
}
Add(Hub,1793119,105,196)
{
OutCount=4
link(onEvent1,3849521:doWork2,[])
link(onEvent2,8771271:sDisable,[])
link(onEvent3,3525883:doData,[(151,216)(151,286)])
link(onEvent4,12655402:doData,[(144,223)(144,328)])
}
Add(ButtonRush,9753586,280,280)
{
Left=390
Top=10
Width=20
Height=20
Font=[Wingdings 3,8,0,0,2]
Caption=""
Glyphs=[]
Point(doCaption)
Point(doVisible)
link(onClick,14801093:doEvent1,[])
}
Add(TrackBarRush,268062,805,196)
{
Left=380
Top=30
Width=40
Height=269
TickColor=-16777201
Kind=1
DotsCount=3
Point(doMin)
Point(doMax)
Point(onMouseDown)
Point(doThumbWidth)
Point(Height)
Point(Width)
Point(doVisible)
link(onPosition,11162797:doWork1,[(860,202)])
link(onMouseDown,4556913:doData,[(846,209)(846,267)(795,267)(795,286)])
}
Add(DoData,3525883,161,280)
{
Data=Integer(129)
link(onEventData,8290152:doConvert,[])
}
Add(Convertor,8290152,210,280)
{
Mode=4
link(onResult,9753586:doCaption,[])
}
Add(ButtonRush,21397,280,322)
{
Left=390
Top=299
Width=20
Height=20
Font=[Wingdings 3,8,0,0,2]
Caption=""
Glyphs=[]
Point(doCaption)
Point(doVisible)
link(onClick,10520044:doEvent1,[])
}
Add(DoData,12655402,161,322)
{
Data=Integer(130)
link(onEventData,2096792:doConvert,[])
}
Add(Convertor,2096792,210,322)
{
Mode=4
link(onResult,21397:doCaption,[])
}
Add(Hub,16712539,287,154)
{
link(onEvent1,6199211:doLoad,[])
link(onEvent2,3849521:doWork1,[(319,167)])
}
Add(MT_MultiData,5353039,504,210)
{
Count=1
Point(RemaindData)
link(onData1,268062:doMin,[])
}
Add(Hub,14801093,322,280)
{
link(onEvent1,8771271:UPSCR,[(366,286)(366,223)])
link(onEvent2,12070386:doWork2,[])
}
Add(HubEx,1141368,350,210)
{
link(onEvent,8771271:sScrollInfo,[])
}
Add(Hub,10520044,322,322)
{
link(onEvent1,8771271:DOWNSCR,[(375,328)(375,230)])
link(onEvent2,12070386:doWork3,[(354,335)])
}
Add(HubEx,12070386,350,287)
{
Angle=3
link(onEvent,1141368:doWork3,[])
}
Add(MathParse,5460482,504,315)
{
MathStr="%1 - %2 + 1"
link(onResult,268062:doMax,[(543,321)(543,223)])
link(X1,6294834:Var2,[])
link(X2,7522774:Var2,[])
}
Add(Hub,3914989,455,210)
{
OutCount=4
link(onEvent1,5353039:doSeparateMT,[])
link(onEvent2,4585351:doValue,[(494,223)(494,265)])
link(onEvent3,5460482:doCalc,[(487,230)(487,321)])
link(onEvent4,1201366:doCompare,[(480,237)(480,356)])
}
Add(MT_MultiMem,4585351,504,259)
{
Point(Data)
link(onData,3179209:doSeparateMT,[])
link(Data,5353039:RemaindData,[])
}
Add(MT_MultiData,3179209,560,259)
{
From=2
Count=1
link(onData1,14433224:doWork3,[(599,265)])
}
Add(HubEx,14433224,595,196)
{
link(onEvent,268062:doPosition,[])
}
Add(DoData,4556913,805,280)
{
link(onEventData,11162797:doWork2,[])
link(Data,268062:Position,[])
}
Add(HubEx,11162797,856,280)
{
Angle=1
link(onEvent,8771271:POSITIONSCR,[(860,429)(396,429)(396,237)])
}
Add(GetDataEx,6294834,504,301)
{
link(Data,4585351:Value1,[])
}
Add(GetDataEx,7522774,511,294)
{
link(Data,4585351:Value2,[])
}
Add(MathParse,4910229,679,350)
{
DataCount=3
MathStr="max(10, (%3 * %2) / %1)"
ResultType=0
link(onResult,268062:doThumbWidth,[(725,356)(725,230)])
link(X1,6294834:Var3,[(685,306)])
link(X2,8306037:Var3,[(692,299)])
link(X3,268062:Height,[(699,257)(818,257)])
}
Add(If_else,1201366,567,350)
{
Type=2
Op2=Integer(0)
link(onTrue,16741202:doEvent1,[])
link(onFalse,2799933:doWork1,[(613,363)(613,398)])
link(Op1,8306037:Var2,[])
}
Add(ChanelToIndex,2799933,679,392)
{
link(onIndex,13304512:doEvent1,[])
}
Add(Hub,16741202,623,350)
{
link(onEvent1,4910229:doCalc,[])
link(onEvent2,2799933:doWork2,[(669,363)(669,405)])
}
Add(Hub,13304512,728,392)
{
OutCount=3
link(onEvent1,268062:doVisible,[(753,398)(753,237)])
link(onEvent2,9753586:doVisible,[(760,405)(760,447)(263,447)(263,293)])
link(onEvent3,21397:doVisible,[(753,412)(753,440)(270,440)(270,335)])
}
Add(GetDataEx,8306037,567,294)
{
Angle=3
link(Data,7522774:Var3,[])
}
Add(Button,7427802,182,154)
{
Left=180
Top=330
TabOrder=-1
Caption="Load"
link(onClick,16465050:doExecute,[])
}
Add(ODialog,16465050,231,154)
{
Filter="*.txt|*.txt"
link(onExecute,16712539:doEvent1,[])
}
Add(HubEx,3849521,315,196)
{
Angle=1
link(onEvent,1141368:doWork2,[(319,216)])
}


Правда нет возможности прощелкивать страницы. Пока не пробовал это реализовать. Может чего еще не учел, сильно не тестировал.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#18: 2016-07-26 07:16:40 ЛС | профиль | цитата
nesco, у тебя IC кривой.
Поправил бы. Для не владеющих магией рукосуйства

карма: 9

0
Ответов: 497
Рейтинг: 16
#19: 2016-07-26 08:20:15 ЛС | профиль | цитата
nesco,

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(13) Error: Illegal character in input file: '|' ($7C)

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(34) Error: ',' or ':' expected but 'IMPLEMENTATION' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(47) Error: Illegal character in input file: '|' ($7C)

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(48) Error: Undeclared identifier: '_'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(53) Error: 'END' expected but 'PROCEDURE' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(53) Error: Undeclared identifier: 'sDisable'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(55) Error: Undeclared identifier: 'sControl'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(55) Error: '(' expected but ')' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(56) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(56) Error: Incompatible types

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(57) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(57) Error: Undeclared identifier: 'Self'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(58) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(58) Error: Not enough actual parameters

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(59) Error: Not enough actual parameters

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(62) Error: Undeclared identifier: 'sScrollInfo'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(67) Error: Undeclared identifier: 'sControl'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(67) Error: '(' expected but ')' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(68) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(68) Error: Incompatible types

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(69) Error: Undeclared identifier: 'si'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(70) Error: Not enough actual parameters

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(80) Error: Undeclared identifier: 'UPSCR'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(82) Error: Undeclared identifier: 'sControl'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(82) Error: '(' expected but ')' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(83) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(83) Error: Incompatible types

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(84) Error: Not enough actual parameters

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(88) Error: Undeclared identifier: 'DOWNSCR'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(90) Error: Undeclared identifier: 'sControl'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(90) Error: '(' expected but ')' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(91) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(91) Error: Incompatible types

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(92) Error: Not enough actual parameters

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(96) Error: Undeclared identifier: 'POSITIONSCR'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(98) Error: Undeclared identifier: 'sControl'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(98) Error: '(' expected but ')' found

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(99) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(99) Error: Incompatible types

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(100) Error: Missing operator or semicolon

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(101) Error: Undeclared identifier: 'si'

C:\Program Files\HiAsm\Elements\delphi\code\hiInlineCode_2CC0AC0.pas(102) Error: Not enough actual parameters
Galkov писал(а):
nesco, у тебя IC кривой.
+++
карма: 1
        ]  
0
Разработчик
Ответов: 26072
Рейтинг: 2122
#20: 2016-07-26 10:49:46 ЛС | профиль | цитата
Это форум так криво копирует

actionscroll_001.sha

Добавил режим переключения страниц по клику вне ползунка

actionscroll_002.sha

Убрал некоторые лаги и засунул в одну панель

actionscroll_003.sha
карма: 22

0
файлы: 3actionscroll_001.sha [7.6KB] [430], actionscroll_002.sha [8.7KB] [412], actionscroll_003.sha [11.6KB] [340]
20
Сообщение
...
Прикрепленные файлы
(файлы не залиты)