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

Вниз

Перетаскивание   Найти похожие ветки 

 
Sergey_b   (2006-10-24 09:56) [0]

Привет всем.
Подскажите, пожалуйста, как оле(в нем картинка) таскать мышью в скрулбоксе. И почему при увеличении размеров оле в боксе не появляются полосы прокрутки?


 
Sergey_b   (2006-10-24 11:03) [1]

Ну ответьте же, кно-нибудь!!!
И событие Ole.OnMouseUp почему-то не возникает.


 
Elen ©   (2006-10-24 11:06) [2]


> Ну ответьте же, кно-нибудь!!!

Рули DragDrop в хелпе


 
Sergey_b   (2006-10-24 11:11) [3]


> Elen ©   (24.10.06 11:06) [2]

Так это через DragDrop?
А если в MoveMouse когда MouseDown?


 
Elen ©   (2006-10-24 11:14) [4]


> Sergey_b А если в MoveMouse когда MouseDown?

Способов много


 
Sergey_b   (2006-10-24 11:23) [5]


> Elen ©   (24.10.06 11:14) [4]

через DragDrop не получится...
где почитать про это ?


 
Elen ©   (2006-10-24 11:27) [6]


> через DragDrop не получится

Почему?


 
Sergey_b   (2006-10-24 11:30) [7]


> Почему?

Сорри. Получается, но как-то корявенько.

procedure TForm1.OleContainer1DragOver(Sender, Source: TObject; X,
 Y: Integer; State: TDragState; var Accept: Boolean);
begin
 OleContainer1.Left := x;
 OleContainer1.Top := y;
end;
Изображение в этот момент дрожит.


 
Elen ©   (2006-10-24 11:34) [8]


> Изображение в этот момент дрожит.

Бывает...


 
Sergey_b   (2006-10-24 11:35) [9]


> Бывает...

Инглишь не знаю совсем. Можно рассказать когда есть событие DragOver?
Может есть еще какое - более подходящее?


 
Elen ©   (2006-10-24 11:47) [10]

DragOver - Происходит, когда потребитель протаскивает объект над контролем. Поставь себе переводчик (рекомендую Pragma) и переведи справку


 
Sergey_b   (2006-10-24 11:51) [11]

Спасибо. Но почему же картинка мечется вроде как периодически х с у меняются местами?


 
Elen ©   (2006-10-24 11:56) [12]


>  почему же картинка мечется

Думается мне тебе лучше сделать DragOver не для Ole, а для его контейнера. Потому как OleContainer1DragOver работает когда в ходе перетаскивания мыша висит над Ole - и соответственно координаты берутся не контейнеровские а Ole.

Пропиши эти действия для контейнера. Метаться не должно.


 
Sergey_b   (2006-10-24 12:05) [13]


> Пропиши эти действия для контейнера.

Вот в таком случае не получается - механизм включается только когда мышь над контейнером, а олешка ес-но больше.
И передвинуть оле можно только до края бокса(left = 0 b top = 0).
Может надо менять координаты (как наз. не помню читал у Пачеко)


 
Elen ©   (2006-10-24 12:09) [14]


> Sergey_b

Я наверно не так выразилась. Приатач DragOver контейнера к процедуре DragOver Ole. Контейнер и Ole пусть вызывают одну и ту же OnDragOver.


 
Sergey_b   (2006-10-24 12:12) [15]


> Elen ©   (24.10.06 12:09) [14]

Не понял


 
Elen ©   (2006-10-24 12:29) [16]


> Sergey_b

[14] - вигня Sorry, не о том думаю
Попробуй так :

procedure TForm1.OleContainer1DragOver(Sender, Source: TObject; X,
 Y: Integer; State: TDragState; var Accept: Boolean);
var t:Tpoint;
begin
t:=Mouse.CursorPos;
t:= ScrollBox1.ScreenToClient(t);
OleContainer1.Top:=t.y;
OleContainer1.Left:=t.x;
end;


 
Sergey_b   (2006-10-24 13:00) [17]


> Elen ©   (24.10.06 12:29) [16]

Почти так, только переместить картинку можно лишь до начала коорд. контейнера. Мыша при зацепе перемещается в поз. (0,0) оле - не пойму почему?


 
Elen ©   (2006-10-24 13:04) [18]


>  Мыша при зацепе перемещается в поз. (0,0) оле - не пойму
> почему?

потому что
OleContainer1.Top:=t.y;
OleContainer1.Left:=t.x;

Это не мыш прыгает туда, а OLE прыгает за мышку. Измени это условие и будет тебе счастье


 
Sergey_b   (2006-10-24 13:09) [19]


> Это не мыш прыгает туда, а OLE прыгает за мышку.

Как?


 
Sergey_b   (2006-10-24 13:12) [20]


> Измени это условие и будет тебе счастье

Вот бы...


 
Elen ©   (2006-10-24 13:21) [21]


>  Мыша при зацепе перемещается в поз. (0,0) оле - не пойму
> почему?

потому что
OleContainer1.Top:=t.y;
OleContainer1.Left:=t.x;

Это не мыш прыгает туда, а OLE прыгает за мышку.  Вот пример другой

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OleCtnrs;

type
 TForm1 = class(TForm)
   ScrollBox1: TScrollBox;
   OleContainer1: TOleContainer;
   procedure OleContainer1DragOver(Sender, Source: TObject; X, Y: Integer;
     State: TDragState; var Accept: Boolean);
   procedure OleContainer1EndDrag(Sender, Target: TObject; X, Y: Integer);
   procedure OleContainer1DragDrop(Sender, Source: TObject; X,
     Y: Integer);
   procedure OleContainer1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public      ax,ay:integer;
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OleContainer1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var t:Tpoint;
begin
t:=Mouse.CursorPos;
t:= ScrollBox1.ScreenToClient(t);
OleContainer1.Top:=t.y-ay;
OleContainer1.Left:=t.x-ax;
end;

procedure TForm1.OleContainer1EndDrag(Sender, Target: TObject; X,
 Y: Integer);
begin
tag:=0;
end;

procedure TForm1.OleContainer1DragDrop(Sender, Source: TObject; X,
 Y: Integer);
begin
tag:=0;
end;

procedure TForm1.OleContainer1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ax:=x; ay:=y ;
OleContainer1.BeginDrag(true);
end;

end.


DragMode для OLE должно быть Manual


 
Sergey_b   (2006-10-24 13:52) [22]

Огромное спасибо. И вопрос: EndDrag - конец переноса(вроде так), но если он ничего не делает, то зачем нужен?


 
Sergey_b   (2006-10-24 13:53) [23]


> EndDrag

не нужен


 
novill ©   (2006-10-24 15:06) [24]

> [21] Elen ©   (24.10.06 13:21)

И от меня спасибо :)



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

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

Наверх




Память: 0.52 MB
Время: 0.05 c
15-1161709579
Геймер
2006-10-24 21:06
2006.11.12
Эмулятор Dos


2-1162122043
~Aid~
2006-10-29 14:40
2006.11.12
размер


2-1161891637
---------
2006-10-26 23:40
2006.11.12
Оптимизация кода


2-1161946280
dm37
2006-10-27 14:51
2006.11.12
Модальная форма


15-1161853778
Ricko
2006-10-26 13:09
2006.11.12
Оцените программу