Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Дочерние объекты" [D7, XP]


Yel ©   (2006-08-14 15:57:00) 

Создаю одну картинку, затем вторую поменьше. Нужно чтобы вторая лежала на первой, таскалась всегда с ней и "умирали" они чтоб тоже вместе.
img2:=TImage.Create(img2);   - работает
img2.Parent:=img1;  - нельзя, так как Parent видите ли может быть только TWinControl, но никак не TImage.


Zeqfreed   (2006-08-14 18:08:00) [1]

Создать объект-контейнер. Создать объекты и присвоить контейнер в качестве родителя. Выровнять объекты в контейнере. Двигать контейнер для передвижения обоих объектов.


Elen   (2006-08-14 16:40:00) [2]

Yel так подойдет?:
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
   procedure Image1EndDock(Sender, Target: TObject; X, Y: Integer);
   procedure Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
   procedure Image1DragOver(Sender, Source: TObject; X, Y: Integer;
     State: TDragState; var Accept: Boolean);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var  lt,p:Tpoint;
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
GetCursorPos(p);
end;

procedure TForm1.Image1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
  GetCursorPos(p);
end;

procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
GetCursorPos(p);
end;

procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 GetCursorPos(p);
 p:=ScreenToClient(p);
 Image1.Top:=p.y-10;
 Image1.Left :=p.x-10;
 Image2.Left:=lt.X +Image1.Left;
 Image2.top:=lt.Y +Image1.Top;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
lt.X:=Image2.Left-Image1.Left ;
lt.Y:=Image2.Top-Image1.Top;
end;

end.


Yel   (2006-08-14 16:31:00) [3]

Ну так проще чтоб изменяя координаты 1-й, у второй они изменялись автоматически, чтоб без обработки координат вызывался свой обработчик и т.д.
А вообще, может сделать новый объект на основе TWinControl, с картинкой на переднем плане.


Gydvin   (2006-08-14 16:26:00) [4]


> > EvS ©   (14.08.06 16:06) [2]
> > Выводи обе на один Image.
> Мне нужно два объекта каждый "со своими событиями и обработчиками"


ну так смотри координаты меньшей и если клик в ее зоне......


Yel   (2006-08-14 16:19:00) [5]

> Zeqfreed ©   (14.08.06 16:00) [1]
> Назначай одного родителя и вызывай BringToFront для картинки,
>  которая должна располагаться поверх другой.
Мне нужно, чтобы таская одну картинку, вторая таскалась за ней сама.
Насколько я понимаю, BringToFront помещает объект на передний план и все, а по поводу одного родителя - это не свяжет два объекта (или я ошибаюсь = ) ).

> EvS ©   (14.08.06 16:06) [2]
> Выводи обе на один Image.
Мне нужно два объекта каждый "со своими событиями и обработчиками"


EvS   (2006-08-14 16:06:00) [6]

Выводи обе на один Image.


Zeqfreed   (2006-08-14 16:00:00) [7]

Назначай одного родителя и вызывай BringToFront для картинки, которая должна располагаться поверх другой.


Наверх

Титульная страница Поиск, карта сайта Написать письмо