Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
4-26852
sosv
2003-04-10 11:36
2003.06.09
Мышью по заголовку окна.


4-26840
ST
2003-04-11 14:15
2003.06.09
Время выполнения процесса


3-26409
Dimaz-z
2003-05-21 22:25
2003.06.09
Ещё одна проблема с упаковкой таблицы!!! Помогите пожалуйста!


3-26386
al11
2003-05-19 17:21
2003.06.09
Никак не могу составить SQL запрос, помогите пожалуйста.


1-26539
KA-87
2003-05-27 23:40
2003.06.09
Как получить хандл кнопки...




   Наверх