Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
ВнизРаботаем с 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c