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

Вниз

Drag&Drop   Найти похожие ветки 

 
arinyshka   (2008-04-15 13:39) [0]

Написала обработчик drag&drop:
15 image, при добавлении картинки в них свойство image меняется на dmAutomatic, при окончании drag&drop возвращается к dmManual.
В результате я могу "выбросить в корзину" любой из image, тот, картинка в котором "выброшена" недоступен для drag&drop, те, которые с картинкой - доступны.
НО! Теперь я не могу обработать обычный клик по image с картинкой. А надо... Пробую "развесить" щелчек и drag&drop по разным кнопкам мыши - не получается...


 
Ega23 ©   (2008-04-15 13:45) [1]

Рекомендую для начала ознакомиться со статьёй MBo ©
http://www.delphimaster.ru/articles/dragndrop/index.html


 
arinyshka   (2008-04-15 13:49) [2]

Да по ней, родимой, и пыталась...  драг работает. А вот разобраться с кнопками мыши не удалось :(


 
Игорь Шевченко ©   (2008-04-15 13:58) [3]

Я в свое время делал где-то так:

procedure TfrmFoo.StringGridMouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 Col, Row: Integer;
begin
 StringGrid.MouseToCell (X, Y, Col, Row);
 if FDragEnabled and (Button = mbLeft) and (Col = 3) and (Row > 0) then
 begin
   FDraggedSubject := GetSubject(Row); //К делу не относится
   if Assigned(FDraggedSubkect) then
     StringGrid.BeginDrag(true);
 end;
end;

То есть, явно разрешал/запрещал перетаскивание


 
MBo ©   (2008-04-15 14:05) [4]

В Image1 есть картинка, а DragMode стоит dmManual
Картинку можно перетащить в Image2


procedure TForm3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 Caption := "Down";
end;

procedure TForm3.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if DragDetect(Handle, Point(X, Y))  then
   Image1.BeginDrag(True);
end;

procedure TForm3.Image2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
 TImage(Sender).Picture.Assign(TImage(Source).Picture);
 TImage(Source).Picture := nil;
end;

procedure TForm3.Image2DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 Accept := Source = Image1;
end;


 
arinyshka   (2008-04-15 15:21) [5]

Спасибо, так понятнее :)



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
4-1188809871
Prohodil Mimo
2007-09-03 12:57
2008.05.11
Проблема с немодальными окнами.


15-1206803292
guav
2008-03-29 18:08
2008.05.11
DMClient - посветка.


15-1206699408
Alkid
2008-03-28 13:16
2008.05.11
Криптопрограммирование :)


4-1188388045
ElectriC
2007-08-29 15:47
2008.05.11
Экранная заставка


4-1188108766
Bora.ru
2007-08-26 10:12
2008.05.11
Убрать значок процесса из TaskBar