Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Работаем с Image   Найти похожие ветки 

 
whiledo   (2005-09-09 10:20) [0]

Как можно реализовать следующие задачи:
У нас есть Два Image
Один большой другой маленький.
Итак :
1. Сделать так, чтобы при щилчке по маленькому, его можно было водить по большому.
2. Сделать так, чтобы маленький не могу уйти за пределы большого не на одну единицу измерения.


 
DesWind ©   (2005-09-09 10:38) [1]

OnMouseDown начинаем движение OnMouseMove. Проверяем новые координаты на выход за границы, двигаем изменяя Top Left. OnMouseUp прекращаем движение.


 
Whiledo   (2005-09-09 10:56) [2]

Тогда нужно проследить положение курсора над большим изщображением, а как это сделать.
Например где Мышка находится на большом, там же и должен находится маленький...


 
DesWind ©   (2005-09-09 11:21) [3]

А ты считай все в системе координат формы.


 
Gydvin ©   (2005-09-09 15:26) [4]

вот передвижение для button легко переделывается для image

procedure TForm1.Button1MouseDown(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
var
pt : TPoint;

begin
ReleaseCapture;
SendMessage(Button1.Handle, WM_SYSCOMMAND, 61458, 0);
GetCursorPos(pt);
SendMessage(Button1.Handle,WM_LBUTTONUP,MK_CONTROL,
Longint(pt));
end;


 
Fenik ©   (2005-09-10 18:41) [5]

http://fenik.nm.ru/samp.rar (309 kb)
Без Image, но на задачу похоже :)


 
TStas ©   (2005-09-10 19:18) [6]

procedure TStQuadrat.FOnMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDragFlag := false; //При отпускании кнопки больше таскать нельзя
end;

procedure TStQuadrat.FOnMouseDown (Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDragFlag := true; //Таскать можно
 offSetX:=X; //Запоминаем координаты мыши
 offsetY:=Y;
end;

procedure TStQuadrat.FOnMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 AllowMove:Boolean;
 NewX, NewY:Integer;
begin
 if not FDragFlag then exit;
 AllowMove:=true;
 NewX:=Left+X-offsetX; //Left Top заменить на Image1.Left, то есть того компонента, который таскаем
 NewY:=Top+Y-offsetY;
//А сюда можно вставить проверку условия, удовлетворяется ли
NewX и NewY требованиям, если нет - выход
 Left:=NewX;
 Top:=NewY;
end;

При нажатии на кнопку маленький прилипает к мыше, при отпускании - отлипает. Единица измерения, наверно, имеется в виду пиксел.



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
2-1124847700
_Anonymous
2005-08-24 05:41
2005.10.02
vk константа parenthesis


1-1126246823
whiledo
2005-09-09 10:20
2005.10.02
Работаем с Image


6-1117787605
Gromada
2005-06-03 12:33
2005.10.02
Как я могу с помощью дельфи узнать IP моего компа??


8-1115847880
st.andrew
2005-05-12 01:44
2005.10.02
AVI=>BMP


2-1124700076
ArtemESC
2005-08-22 12:41
2005.10.02
Тонкая форма...