IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> использование методов при наследовании
Rian
сообщение 31.05.2011 18:58
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 394
Пол: Мужской

Репутация: -  9  +


пробую сделать объект с наследованием от Tpanel
и передавать ссылку от одного объекта другому, по драг дроп
ток не срабатывает метод dragover почему-то


type Tperson= class (TPanel)
public
id:integer;
own:Tperson;

//vis components
head:TLabel;
img:TImage;
canv:TCanvas;
constructor Create(aowner:Tcomponent);
procedure setCanvas(const link:TCanvas);
procedure place();
procedure DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure DragDrop(Sender, Source: TObject; X, Y: Integer);

end;

implementation
constructor Tperson.Create(aowner: Tcomponent);
begin
inherited create(Aowner);
Height:=100;
head:=TLabel.Create(self);
head.Caption:='555';
head.Parent:=self;
DragMode:=dmAutomatic;

img:=TImage.Create(self);
img.Width:=40;
img.Height:=40;
img.Top:=40;
img.Parent:=self;
img.Canvas.LineTo(20,40);
end;

procedure Tperson.DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
inherited DragOver(source,x,y,state,accept);
Accept:=true;
end;



и как перемещать Tperson обрабатывая img.mousemove
ЗЫ это понял
procedure Tperson.imageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
self.Left:=self.Left+1;
end;


Сообщение отредактировано: Rian - 31.05.2011 19:22


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 31.05.2011 20:26
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
ну создание это обходит...
И создание тоже, кстати, надо Override-ить. Смотри: ты наследуешься от чего? От TPanel, так? То есть, в наследнике должен быть такой же метод DragOver, как и в предке. Какой он в предке? Вот такой:

// ...
procedure DragOver(Source: TObject; X: Integer; Y: Integer;
State: TDragState; var Accept: Boolean); dynamic;
// ...
, то есть, Sender-ом там даже и не пахнет. Сендер появляется, когда ты начинаешь писать обработчик события OnDragOver. Чувствуешь, где ты путаешься?

Ты пишешь свой компонент. Напишешь, зарегистрируешь, положишь на форму - вот тогда при выборе в Инспекторе Объектов этого события у тебя первым параметром добавится Sender. А реализовывать сам метод DragOver в потомке, извини, придется без Sender-а.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 14:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"