![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наследование от TControl. Почему почему нельзя вводить переменные
Trible © (2006-12-12 16:07:00)Что -то я никак не пойму момент.
Если наследовать от TControl то нельзя вводить свои переменные (поля) (причем не объясняется).
Почему? Я попробовал все работает.
Pasd = ^Tasd;
TAsd = object(TControl)
private
procedure Paint(DC: HDC);
public
NEW: PStrList;
...
end;
Создаем его в NewAsd как Result.New:= NewStrlist.
Result это _NewControl приведенный к типу Pasd
Где то в другом модуле:
var test: Pasd;
достаю значение - все работает..
Psychedelic (2006-12-13 14:56:00) [1]Это не мои слова : Если американцу сказано повернуть налево, он повернет без вопросов, если же русскому сказано тоже самое, он будет спрашивать а почему налево, а например не вправо или прямо... :) То же и Задорнов говорил...
Vladimir Kladov (2006-12-12 18:55:00) [2]Методы (кроме виртуальных) можно добавлять в любом количестве. Им память не требуется.
Trible (2006-12-12 17:11:00) [3]Во многих компонентах используються свои процедуры. НО
> она сможет создать только объект типа TControl, но никак
> не его наследник
Т.е. можно или нельзя эти процедуры вводить? Если можно то почему? Разве им память не выделяеться?
Trible (2006-12-12 17:03:00) [4]
> объясняет все более чем достаточно. Ну, могу добавить еще
> текста курсивом, чтобы дошло окончательно. Но мне кажется,
> это уже чересчур сильное разжевывание.
Нет я просто смотрю на другой компонент. Смотрю как он сделан. И там есть некоторые спорные вопросы которые я и хочу выяснить.
Trible (2006-12-12 16:59:00) [5]Т.е если я сделаю так:
property Captions : PStrList read GetCaptions;
function Tasd.GetCaptions;
begin
Result:=PData(CustomData)^.Captions;
end;
Все будет нормально или нет?
(Проверял - работает . всмысле правильно ли это?)
Я смогу и писать туда и читать оттуда.
Vladimir Kladov (2006-12-12 16:50:00) [6]Странно. Я считал, что эта фраза
И вот здесь начинается проблема: что написать в коде этой функции, если создавать объект-предок TControl следует как минимум функцией _NewControl, а она сможет создать только объект типа TControl, но никак не его наследник.
- объясняет все более чем достаточно. Ну, могу добавить еще текста курсивом, чтобы дошло окончательно. Но мне кажется, это уже чересчур сильное разжевывание.
Trible (2006-12-12 16:45:00) [7]А почему тогда можно вводить свойства и процедуры?
Trible (2006-12-12 16:17:00) [8]Ясно спасибо. Напишите это в книге. В первую очередь люди к ней обращаються.. Там этого нету.
Vladimir Kladov (2006-12-12 16:15:00) [9]Памяти будет выделено ГАРАНТИРОВАННО ровно столько, сколько занимает TControl. А не его наследник. До какого-то момента может даже и будет работать. Менеджер памяти в Delphi выделяет памяти чуть больше, чем заказано. Но как только вы обратитесь за пределы памяти, и попадете на ЧУЖУЮ память, получите то, что и следовало. Ожидать.