Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-26434
Pattern
2003-05-25 19:32
2003.06.09
Как убрать заголовок формы MDIChild?


7-26823
Some1
2003-03-30 08:38
2003.06.09
Идентификация дискетки


14-26686
___ALex___
2003-05-25 14:38
2003.06.09
Дифуравнения


3-26391
Erden
2003-05-21 15:02
2003.06.09
IBQuery


3-26346
AlexAvz
2003-05-20 13:47
2003.06.09
Работа с таблицами PARADOX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский