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

Вниз

Помогите разобраться с динамически создаваемыми компонентами   Найти похожие ветки 

 
OlegM ©   (2003-05-28 20:41) [0]

Привем всем!
Короче мне нужно что-бы каждый создаваемый компонент реагировал на это событие но я не знаю как в этом событии обратиться к компоненту, знаю как к определенному а вот как к которому надо (например у которого произошлособытие OnMouseDown на тот и реагировало)
Вот код подскажите, если кто понял о чем я.
---------------------------
var
Form1: TForm1;
Pan: array [0..9] of TPanel;
I:integer;

implementation

{$R *.dfm}

procedure TForm1.Drag(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
Pan[0].Perform(WM_SysCommand, SC_DragMove, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Pan[I]:= TPanel.Create(Self);
Pan[I].Parent:=Self;
Pan[I].Left:=50;
Pan[I].Top:=50;
Pan[I].Width:=41;
Pan[I].Height:=41;
Pan[I].Visible:=true;
Pan[I].OnMouseDown:=Drag;
Pan[I].Name:="Pan"+InttoStr(I);
I:=I+1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
I:=0;
end;


 
Serginio   (2003-05-28 20:53) [1]

Нашаша песня... А Sender: TObject тебе на что.


 
Serginio   (2003-05-28 21:00) [2]

Если нет желания мучаться с сендерами
Создай наследника
TMyPanel= class(TPanel)
Procedure Drag(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Constructor Create(AOwner:TComponent);Override;
end;

Constructior TMyPanel.Create(AOwner:TComponent);Override;
begin
inherited Create(AOwner);
OnMouseDown:=Drag;
end;
procedure TMyPanel.Drag(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
Pan[0].Perform(WM_SysCommand, SC_DragMove, 0);
end;





 
OlegM ©   (2003-05-29 06:09) [3]

А как с sender, я пробовал но что то никак неполучается в нем только имя класа передается, дак они у меня все одного.


 
Palladin ©   (2003-05-29 06:17) [4]

да уж, справка, вот решенье всех проблем...
но убеждение что sender имя класса это прикольно, такое в первые слышу...


 
OlegM ©   (2003-05-29 06:30) [5]

Не Sender а Sender.ClassName
Просто больше я из него ничего не мог получить, может в чем то ошибся.


 
Palladin ©   (2003-05-29 06:40) [6]

все классы наследуются от TObject
Sender есть TObject
но вообще в справке пишут что Sender это и есть тот объект обработчик которого и вызывается...


 
KSergey ©   (2003-05-29 10:05) [7]

ТОлько надо не забыть его привести к этому типу
Думаю желательно с проверкой.
в справке топик "The as operator" и все на что он ссылается


 
KSergey ©   (2003-05-29 10:08) [8]

А вообще-то сходит и почитать
http://www.delphikingdom.com/helloworld/runtime_comp.htm
и обязательно проштудировать остальные статьи этого раздела!

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


 
pasha_golub ©   (2003-05-29 12:05) [9]

...
(Sender as TPanel).<property> ;
...

А процедура твоя при хорошем раскладе такова будет

procedure TForm1.Drag(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
(Sender as TPanel).Perform(WM_SysCommand, SC_DragMove, 0);
end;


Токо надо быть уверенным, что это точно панель


 
OlegM ©   (2003-05-30 10:02) [10]

Спасибо всем заработало



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
7-26807
ED
2003-04-03 23:08
2003.06.09
Описание пользователя в Win 2k


6-26627
chak
2003-04-06 11:13
2003.06.09
TServerClientThread !!???


1-26531
dfgdfgsdg
2003-05-27 21:06
2003.06.09
Как активировать форму?


1-26515
DimonA
2003-05-30 10:37
2003.06.09
RichEdit


3-26366
Apachi
2003-05-21 07:39
2003.06.09
Дерево