Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
Nailspb ©   (2006-01-20 01:25) [0]

Уважаемые Профессионалы,

Как сделать Драг и Дроп простых графических объектов ( например Shape" ов) так, как это сделано в том же самом Делфи с обычными компонентами на форме ? то есть квадратике при фокусе, контрл ц, контрл в и тд? Вообщем так же как и в кореле.

СПАСИБО ВСЕМ ЗА ОТВЕТЫ.


 
Gero ©   (2006-01-21 00:42) [1]

А в чем проблема?


 
Nailspb ©   (2006-01-22 22:51) [2]

Проблема ;))) ?

А как это сделать ????


 
Gero ©   (2006-01-22 23:01) [3]

С помощью Delphi.


 
Gero ©   (2006-01-22 23:03) [4]

Или с помощью других программистов, за деньги, естественно.


 
Nailspb ©   (2006-01-23 21:42) [5]

ну Gero ты просто мозг !!!
А я думаешь кто ?
Просто спрашиваю у кого какие мысли ....


 
Gero ©   (2006-01-23 23:43) [6]

> Просто спрашиваю у кого какие мысли

А я вот как раз отвечаю.


 
Nailspb ©   (2006-01-24 01:41) [7]

Здесь есть ктонибудь кто действительно чтонибудь понимает, а не просто полные чайники ?


 
Gero ©   (2006-01-24 01:44) [8]

http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
misha_gr   (2006-01-24 10:48) [9]

В Дельфи есть пример, C:\Program Files\Borland\DelphiXXX\Demos\Docking.
Правда работает довольно криво, но для начала хватит.
Ну а как войдешь во вкус, лезь в ShellApi, потом расскажешь, чего достиг )))


 
Nailspb ©   (2006-01-26 16:28) [10]

Хорошо.
Допустим у тебя есть 100 TShape на форме. Как передвигать любой из них по форме ? Не прописывать же 100 раз для каждого Shape все Onmouse... и тд ?


 
grouzd[E]v ©   (2006-01-26 16:33) [11]


> Не прописывать же 100 раз для каждого Shape все Onmouse...
> и тд ?

Присвоить всем один и тот же и почитать про Sender

---
... we are walking on a thin line and you better avoid the risk ...


 
Nailspb ©   (2006-01-29 00:10) [12]

Напишите пожалуйста поподробнее, идея понятно, реализация не очень...


 
Yuraspb   (2006-02-01 14:03) [13]

Как прочитать про Sender ?


 
misha_gr   (2006-02-01 17:02) [14]

Таскание TShape по форме - это не Drag"n"Drop.

Создаешь для одной TShape три события для OnMouse...
для всех остальных TShape назначаются уже существующие события.
это можно сделать в Object Inspertor"е, смотри внимательней. А лучше
любую книжку почитай по Delphi, тогда и подобные вопросы возникать не будут.


 
misha_gr   (2006-02-01 17:06) [15]

Про Sender... из обработчика события ты к компоненту обращаешься не как к Shape1, например, а как к (Sender as TShape), или (Sender as TControl).
Типа так:

procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if FDragComponent then with (Sender as TControl) do begin
   Left := Left - FLastPosition + X;
 end;
end;

Тогда можно смело разным компонентам назначать один обработчик события.


 
Nailspb ©   (2006-02-02 17:28) [16]

Пробовал.
Не пашет.


 
easy ©   (2006-02-03 14:36) [17]

усё пашет.
держи, двигай..

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure FormCreate(Sender: TObject);
   procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 private
   { Private declarations }
   sLeft, sTop: integer;
   procedure createSapes(const count: integer);
   procedure freeShapes;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 createSapes(500);
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 freeShapes;
end;

procedure TForm1.createSapes(const count: integer);
var
 i: integer;
begin
 color := clBlack;
 borderstyle := bsSingle;
 for i := 0 to count do begin
   with TShape.Create(self) do begin
     width := random(30) + 40;
     height := width;
     left := random(self.Width - width);
     top := random(self.Height - width);
     brush.color := RGB(random(255), random(255), random(255));
     shape := stCircle;
     onMouseMove := Shape1MouseMove;
     onMouseDown := Shape1MouseDown;
     parent := self;
   end;
 end;
end;

procedure TForm1.freeShapes;
var
 i: integer;
begin
 for i := ControlCount - 1 downto 0 do begin
   if Controls[i].ClassName = "TShape" then
     (Controls[i] as TShape).Free;
 end;

end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 sLeft := X;
 sTop := Y;
 (Sender as TShape).BringToFront;
end;

procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if not (ssLeft in Shift) then exit;
 with Sender as TShape do begin
   Left := Left - sLeft + X;
   Top := Top - sTop + Y;
 end;
end;

end.


 
Nailspb ©   (2006-02-03 16:52) [18]

Слушай, неужели это заработает ;)))
Прям не верится ... ;))



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

Форум: "Media";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
6-1142177492
JaDS
2006-03-12 18:31
2006.07.16
Открыть чужой сокет


3-1147586181
Sphinx
2006-05-14 09:56
2006.07.16
Минимальные сис.требования Microsoft Jet OLEDB 4.0


15-1150423842
Думкин
2006-06-16 06:10
2006.07.16
Bill Gates


15-1150324765
DevilDevil
2006-06-15 02:39
2006.07.16
Путёвые Иконки и Глифы


2-1151606996
Ivolg
2006-06-29 22:49
2006.07.16
PageControl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский