Вверх ↑
Этот топик читают: Гость
Ответов: 8923
Рейтинг: 823
#1: 2008-03-19 19:21:00 ЛС | профиль | цитата
Потребовалось программно перекручивать горизонтальное положение ChildScrollBox и не смог
code_8660.txt
В кодах компонента нет ничего, кто сможет помочь - придумать схемку, или добавить точку ?
Сдвигать картинку могу.
карма: 19

0
файлы: 1code_8660.txt [2.1KB] [571]
Разработчик
Ответов: 26115
Рейтинг: 2126
#2: 2008-03-19 22:59:31 ЛС | профиль | цитата
Леонид, вот держи, и по горизонтали, и по вертикали



Add(MainForm,13523519,133,154)
{
Left=20
Top=105
Position=1
}
Add(ChildScrollBox,6760295,322,154)
{
link(onEvent1,10995543:doStrCat,[])
link(onEvent2,486009:doStrCat,[(380,167)(380,202)])
}
BEGIN_SDK
Add(EditMulti,3978996,21,21)
{
EventCount=2
WorkCount=1
VarCount=1
Width=279
Height=207
link(doWork1,10754446:doEvent1,[(46,27)(46,48)])
link(Var1,10924359:Handle,[(27,148)(62,148)])
}
Add(ScrollBox,10924359,56,105)
{
Left=5
Top=30
Width=380
Height=240
Point(Handle)
}
Add(Image,5274948,231,63)
{
ViewStyle=4
Point(doWidth)
Point(doHeight)
Point(ImageWidth)
Point(ImageHeight)
Point(Handle)
Point(doRefresh)
}
Add(Hub,10754446,56,42)
{
OutCount=4
link(onEvent1,5274948:doLoad,[(121,48)(121,69)])
link(onEvent2,950310:doData,[(111,55)(111,125)])
link(onEvent3,13900580:doData,[(104,62)(104,174)])
}
Add(DoData,950310,126,119)
{
link(onEventData,5769960:doEvent1,[])
link(Data,5274948:ImageWidth,[(132,110)(244,110)])
}
Add(DoData,13900580,126,168)
{
link(onEventData,14298932:doEvent1,[])
link(Data,5274948:ImageHeight,[(132,160)(251,160)])
}
Add(Hub,5769960,168,119)
{
link(onEvent1,5274948:doWidth,[(211,125)(211,83)])
link(onEvent2,3978996:onEvent1,[(277,132)(277,27)])
}
Add(Hub,14298932,168,168)
{
link(onEvent1,5274948:doHeight,[(216,174)(216,90)])
link(onEvent2,3978996:onEvent2,[(283,181)(283,34)])
}
END_SDK
Add(ODialog,8946635,231,154)
{
link(onExecute,11585814:doLoad,[])
}
Add(PictureStream,11585814,273,154)
{
link(onLoad,6760295:doWork1,[])
}
Add(Button,8407419,189,154)
{
Left=5
Top=5
Width=65
Color=-16777211
Ctl3D=0
Caption="Открыть"
link(onClick,8946635:doExecute,[])
}
Add(Edit,9396111,231,203)
{
Left=175
Top=5
Text=""
link(onEnter,8383664:doWork1,[])
}
Add(Label,12429316,455,154)
{
Left=91
Top=8
Width=85
Height=17
Caption="Максимум 0000"
}
Add(MultiElement,8383664,322,210)
{
link(Data1,6760295:Var1,[])
}
BEGIN_SDK
Add(EditMulti,2171140,21,21)
{
WorkCount=2
DataCount=1
link(doWork1,3996721:HScroll,[(39,27)(39,132)])
link(doWork2,3996721:VScroll,[(45,34)(45,139)])
}
Add(InlineCode,3996721,70,126)
{
WorkPoints=#7:HScroll|7:VScroll|
DataPoints=#3:Wnd|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses Messages,Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: wnd:THI_Event;|50: procedure HScroll(var _Data:TData; Index:word);|50: procedure VScroll(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.HScroll;|11:var h:HWND;|16: Pos:integer;|31: lpMinPos,lpMaxPos: Integer;|5:begin|28: h := ToIntegerEvent(Wnd);|27: Pos := ToInteger(_Data);|51: GetScrollRange( h, SB_HORZ, lpMinPos, lpMaxPos);|42: if Pos > lpMaxPos then Pos := lpMaxPos;|45: if Pos < lpMinPos then Pos := lpMinPos; |39: SetScrollPos(h, SB_HORZ, Pos, True);|37: SendMessage(h, WM_HSCROLL, 0, -1);|4:end;|0:|30:procedure THiAsmClass.VScroll;|11:var h:HWND;|16: Pos:integer;|31: lpMinPos,lpMaxPos: Integer;|5:begin|28: h := ToIntegerEvent(Wnd);|27: Pos := ToInteger(_Data);|51: GetScrollRange( h, SB_VERT, lpMinPos, lpMaxPos);|42: if Pos > lpMaxPos then Pos := lpMaxPos;|45: if Pos < lpMinPos then Pos := lpMinPos; |39: SetScrollPos(h, SB_VERT, Pos, True);|37: SendMessage(h, WM_VSCROLL, 0, -1);|4:end;|0:|0:|4:end.|
link(Wnd,2171140:Data1,[(76,42)(27,42)])
}
END_SDK
Add(StrCat,10995543,406,154)
{
Str1="Максимум "
link(onStrCat,12429316:doText,[])
}
Add(Edit,7048420,231,245)
{
Left=325
Top=5
Text=""
link(onEnter,8383664:doWork2,[(293,258)(293,223)])
}
Add(Label,1449524,455,196)
{
Left=241
Top=8
Width=85
Height=17
Caption="Максимум 0000"
}
Add(StrCat,486009,406,196)
{
Str1="Максимум "
link(onStrCat,1449524:doText,[])
}



карма: 22

0
Ответов: 9906
Рейтинг: 351
#3: 2008-03-19 23:08:02 ЛС | профиль | цитата
Лучше в элемент добавь методы
С 4-мя нижними точками
карма: 9

0
Ответов: 8923
Рейтинг: 823
#4: 2008-03-20 00:08:53 ЛС | профиль | цитата
nesco, спасибо!
Я так расстроился, что кода в компоненте нет, что забыл про IC, на Ваш посмотрел и вспомнил: некоторое время назад эта тема обсуждалась с разными вариантами и у меня нашёлся почти рабочий, но не работающий IC
карма: 19

0
Разработчик
Ответов: 26115
Рейтинг: 2126
#5: 2008-03-20 00:55:34 ЛС | профиль | цитата
Galkov писал(а):
С 4-мя нижними точками

А что на них выводить

карма: 22

0
Ответов: 8923
Рейтинг: 823
#6: 2008-03-20 09:42:45 ЛС | профиль | цитата
nesco, Ф. И. О. соавтора компонента - Galkov шутит, он всегда против дополнительных, редко используемых нижних и верхних точек
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#7: 2008-03-20 10:21:09 ЛС | профиль | цитата
nesco,
code_8665.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_8665.txt [421B] [589]
Разработчик
Ответов: 26115
Рейтинг: 2126
#8: 2008-03-20 11:36:52 ЛС | профиль | цитата
Tad, ну это без контроля на диапазон скрола

------------ Дoбавленo:


Леонид писал(а):
он всегда против дополнительных, редко используемых нижних и верхних точек

Да, верхние -- это понятно, но нижние не пристегиваются, если не активны (это обычные методы). К тому же, в этом модуле управления вообще нет нижних точек, и если не подключать методы программного управления скролом, то их просто не будет в коде.
К тому же, я и не претендовал на вставку этого кода в компонент, а написал IC
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#9: 2008-03-20 16:31:52 ЛС | профиль | цитата
nesco писал(а):
Tad, ну это без контроля на диапазон скрола

SetScrollPos(h, SB_HORZ, ToInteger(_Data), True);

а здесь нет проверки на диапазон?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26115
Рейтинг: 2126
#10: 2008-03-20 16:46:40 ЛС | профиль | цитата
Tad, ты бы MSDN почитал

MSDN писал(а):
nPos
[in] Specifies the new position of the scroll box. The position must be within the scrolling range. For more information about the scrolling range, see the SetScrollRange function.

карма: 22

0
Ответов: 5227
Рейтинг: 587
#11: 2008-03-21 10:01:50 ЛС | профиль | цитата
nesco - полезный IC вот только было бы у него ещё две нижние точки типа PosX, PosY то вобще замечательно бы мог пригодится. (может это уже был целый компонент, но как говорится мал золотник да дорог )
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26115
Рейтинг: 2126
#12: 2008-03-21 10:16:18 ЛС | профиль | цитата
andrestudio писал(а):
может это уже был целый компонент
Можно замутить, как один из компонентов управления окнами. В принципе, он может управлять и скролом чужого окна, если будет известен его хандл.
карма: 22

0
Ответов: 8923
Рейтинг: 823
#13: 2008-03-21 10:57:27 ЛС | профиль | цитата
andrestudio, nesco постеснялся выводить нижние точки , вот, справа:
code_8677.txt
карма: 19

0
файлы: 1code_8677.txt [1.3KB] [675]
Ответов: 5227
Рейтинг: 587
#14: 2008-03-21 11:45:47 ЛС | профиль | цитата
Леонид - спасибо, но всё же с них положение Scroll(a) не получить.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26115
Рейтинг: 2126
#15: 2008-03-21 13:12:23 ЛС | профиль | цитата
Леонид, вот, более правильное решение

code_8678.txt
карма: 22

0
файлы: 1code_8678.txt [1.7KB] [574]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)