Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выбор мышкой компонента


Страницы:   1 2

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]

Через таймер :)))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо