Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
ВнизПередвижение TPanel по координатным осям Найти похожие ветки
← →
DDDeN (2003-04-25 16:56) [0]Такая проблема: мой вопрос почему-то потерялся... Необходимо передвигать TPanel по вертикали или горизонтали до определенных границ при помощи мыши (например до Top или Left определенного значения). Всем спасибо!
← →
Dms (2003-04-25 17:11) [1]а зачем ?
← →
MBo (2003-04-25 17:13) [2]Top и Left меняй ;)
← →
Skier (2003-04-25 17:16) [3]>DDDeN
Если хочешь сделать дизайн-маркеры как в IDE, то сие не совсем
тривиально...могу дать компонент...
← →
app (2003-04-25 17:24) [4]DDDeN © (25.04.03 16:56)
По ошибке, мои извинения.
← →
DDDeN (2003-04-27 11:11) [5]Необходимо передвигать этот компонент мышью - взял и потащил по одной из осей, что-то наподобие ползунка...
← →
Yanis (2003-04-27 14:02) [6]Зачем тебе это, если не секрет?
← →
TButton (2003-04-27 18:07) [7]onMouseDown
...
hit:=true; //hit:boolean
oldx:=x;
oldy:=y;
...
onMouseMove
if not hit then exit;
dx:=x-oldx;
panel.top:=panel.top+dx;
dy:=y-oldy;
panel.left:=panel.left+dy;
...
onMouseUp
hit:=false;
примечания
(!)если передвигать только по вертикали - убери X, по горизонтали - Y
(!)если нужен СкроллБар юзай СкроллБар
← →
DDDeN (2003-04-28 17:43) [8]2TButton
Спасибо огромное, будем пробоваать.
Это нужно для того, чтобы сделать очень маленькие скролы и в то же время использовать их на фоне, т.е. можно сделать прозрачными, а скрол не делается...
← →
DDDeN (2003-04-28 18:21) [9]2 TButton
Проверил ваш пример... Не правильно работает.
Позволю себе его исправить так:
Panel1MouseDown
---------------
. . .
hit := true; // hit: bool;
oldx := x;
. . .
Panel1MouseMove
---------------
. . .
if not hit then exit;
if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
panel1.Left := panel1.Left + x - oldx;
. . .
Panel1MouseUp
-------------
. . .
hit := false;
. . .
Теперь Панелька передвигается по оси Х. А как передвигать до определенных границ, н-р, по диапазону Left от 10 до 100? Т.е. когда компонент достигнет 10, то далее не двигается; или когда достигнет Left = 100, то вправо уже тоже не двигается.
Короче, ограничить диапазон передвижения... Вот...
← →
TButton (2003-04-29 02:09) [10]извиняюсь, сочинял находу, в пьяном угаре. на самом деле помоему в onMouseDown надо вставить проверку
if mbLeft in Button then hit:=true;
помоему так... но это надо проверить... а вот насчет ограничений... вобщем проверяй координаты перед тем какpanel1.Left := panel1.Left + x - oldx;
и если в сумме получается слишком много то... вобщем ты сообразительный, разберешься...
← →
DDDeN (2003-04-29 16:04) [11]Спасибо, будем далее искать !
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c