Вниз
Скачать: CL | DM;

Передвижение 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.009 c
4-34647
Sheva
2003-02-17 15:17
2003.05.12
Текст edit-а из другого приложения.


14-34609
Катерина
2003-04-21 22:14
2003.05.12
Название произведения и автор по названиям глав


14-34544
exo
2003-04-22 18:21
2003.05.12
timer


1-34431
Brain Force
2003-04-28 18:50
2003.05.12
Помогите с MDI


1-34433
NightDaro
2003-04-28 00:14
2003.05.12
Проблемы с полиморфизмом с ребенком в другом Package




   Наверх