Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с динамически создаваемыми компонентами Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.026 c