![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выбор мышкой компонента
Dy1 © (2007-05-27 11:18:00)динамически создаются панели. Как удалить ту панель, на которой кликнули?
var
p: PClock;
begin
New(p);
p^.pan := NewPanel( Form1.Form, esRaised).PlaceDown;
p^.pan.Tag := n;
p^.pan.OnMouseDown := TOnMouse( MakeMethod( nil, @OnMDn)); // здесь не то?
inc(n);
***
end;
Procedure OnMDn(Sender: PControl; var Mouse: TMouseEventData);
begin
msgok(int2str(Sender^.Tag)); // число непонятно откуда
homm (2007-05-28 18:51:00) [21]> В принципе, можно состряпать типа "синоним", не требующий
> самостоятельного кода. По крайней мере, в обычном Delphi
> прокатит:
Дак все в наших руках :){$IFDEF }
Vladimir Kladov (2007-05-28 18:31:00) [22]В принципе, можно состряпать типа "синоним", не требующий самостоятельного кода. По крайней мере, в обычном Delphi прокатит: объявляется свойство property Free: Boolean read RefDec; соответственно RefDec объявить как булевскую функцию. И совместимость не страдает, и кода на несколько байтов меньше. Вот только у кого BDS всякие, тут недавно было, что не понимает новый Delphi такого обращения к свойству, без присваивания значения чему нибудь.
homm (2007-05-28 18:22:00) [23]> RefDec это и есть Free, по сути. Или Free - это RefDec.
Но почему тогда это разные методы? Кроме обратной совместимости нет вроде причин.
Vladimir Kladov (2007-05-28 15:32:00) [24]RefDec это и есть Free, по сути. Или Free - это RefDec.
homm (2007-05-27 22:10:00) [25]> Более точно: предусмотретельно поставлен RefInc, а после
> RefDec
Я кстати до сих пор не понимаю зачем вообще нужен этот RefDec? Нужено гарантированое существование объекта на заданом участке коде, делаем как-бы копию RefInc, не нужен более — уничтожаем Free. Зачем мудрить?
Galkov (2007-05-27 22:05:00) [26]Ага, нашел - в EnumDynHandlers надо полагать...
Более точно: предусмотретельно поставлен RefInc, а после RefDec
homm (2007-05-27 21:10:00) [27]> Разве не это главный вопрос топика ???
Нет. Все уничтожаеться. Просто Free. Просто до обработки пользовательских сообщений где-то предусмотретельно поставлен AddRef, а после Free.
Galkov (2007-05-27 20:53:00) [28]Чего вы все про грамматику-то :)
Dy1, скажи лучше: сумел сам себя уничтожить, или нет ???
> динамически создаются панели. Как удалить ту панель, на которой кликнули?
Разве не это главный вопрос топика ???
Dy1 (2007-05-27 20:24:00) [29]> [4]
1) В уроках с www.kolnmck.ru (вроде урок 4-ый) написано именно так
2) ну, да. Я "чайник" :/
3) самое интересное, что в некоторых прогах пишу без пустышки и работает отлично, а с ней - глюки =8-o
Vladimir Kladov (2007-05-27 16:42:00) [30]Ну опять. Первого параметра нет. OnMDn - это НЕ МЕТОД, а процедура.
homm (2007-05-27 11:36:00) [31]MakeMethod ни разу не пользовался, но ежели так попробовать?
var
p: PClock;
begin
New(p);
p^.pan := NewPanel( Form1.Form, esRaised).PlaceDown;
p^.pan.Tag := n;
p^.pan.OnMouseDown := TOnMouse( MakeMethod( p^.pan, @OnMDn)); // здесь не то?
inc(n);
***
end;
Galkov (2007-05-27 11:27:00) [32]Если не обращать внимания на грамматику, конечно...
Galkov (2007-05-27 11:23:00) [33]Через таймер :)))