![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работаем с Image [D6, Win95/98, WinME, NT4, Win2k, WinXP]
whiledo © (2005-09-09 10:20:00)Как можно реализовать следующие задачи:
У нас есть Два Image
Один большой другой маленький.
Итак :
1. Сделать так, чтобы при щилчке по маленькому, его можно было водить по большому.
2. Сделать так, чтобы маленький не могу уйти за пределы большого не на одну единицу измерения.
TStas (2005-09-10 19:18:00) [1]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;
При нажатии на кнопку маленький прилипает к мыше, при отпускании - отлипает. Единица измерения, наверно, имеется в виду пиксел.
Fenik (2005-09-10 18:41:00) [2]http://fenik.nm.ru/samp.rar(309 kb)
Без Image, но на задачу похоже :)
Gydvin (2005-09-09 15:26:00) [3]вот передвижение для 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;
DesWind (2005-09-09 11:21:00) [4]А ты считай все в системе координат формы.
Whiledo (2005-09-09 10:56:00) [5]Тогда нужно проследить положение курсора над большим изщображением, а как это сделать.
Например где Мышка находится на большом, там же и должен находится маленький...
DesWind (2005-09-09 10:38:00) [6]OnMouseDown начинаем движение OnMouseMove. Проверяем новые координаты на выход за границы, двигаем изменяя Top Left. OnMouseUp прекращаем движение.