Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

Наследование от TControl. Почему почему нельзя вводить переменные   Найти похожие ветки 

 
Trible   (2006-12-12 16:07) [0]

Что -то я никак не пойму момент.
Если наследовать от 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;

достаю значение - все работает..


 
Vladimir Kladov   (2006-12-12 16:15) [1]

Памяти будет выделено ГАРАНТИРОВАННО ровно столько, сколько занимает TControl. А не его наследник. До какого-то момента может даже и будет работать. Менеджер памяти в Delphi выделяет памяти чуть больше, чем заказано. Но как только вы обратитесь за пределы памяти, и попадете на ЧУЖУЮ память, получите то, что и следовало. Ожидать.


 
Trible   (2006-12-12 16:17) [2]

Ясно спасибо. Напишите это в книге. В первую очередь люди к ней обращаються.. Там этого нету.


 
Trible   (2006-12-12 16:45) [3]

А почему тогда можно вводить свойства и процедуры?


 
Vladimir Kladov   (2006-12-12 16:50) [4]

Странно. Я считал, что эта фраза
И вот здесь начинается проблема: что написать в коде этой функции, если создавать объект-предок TControl следует как минимум функцией _NewControl, а она сможет создать только объект типа TControl, но никак не его наследник.
- объясняет все более чем достаточно. Ну, могу добавить еще текста курсивом, чтобы дошло окончательно. Но мне кажется, это уже чересчур сильное разжевывание.


 
Trible   (2006-12-12 16:59) [5]

Т.е если я сделаю так:

property Captions        : PStrList read GetCaptions;

function Tasd.GetCaptions;
begin
Result:=PData(CustomData)^.Captions;
end;

Все будет нормально или нет?
(Проверял - работает . всмысле правильно ли это?)

Я смогу и писать туда и читать оттуда.


 
Trible   (2006-12-12 17:03) [6]


> объясняет все более чем достаточно. Ну, могу добавить еще
> текста курсивом, чтобы дошло окончательно. Но мне кажется,
>  это уже чересчур сильное разжевывание.


Нет я просто смотрю на другой компонент. Смотрю как он сделан. И там есть некоторые спорные вопросы которые я и хочу выяснить.


 
Trible   (2006-12-12 17:11) [7]

Во многих компонентах используються свои процедуры. НО
> она сможет создать только объект типа TControl, но никак
> не его наследник

Т.е. можно или нельзя эти процедуры вводить? Если можно то почему? Разве им память не выделяеться?


 
Vladimir Kladov   (2006-12-12 18:55) [8]

Методы (кроме виртуальных) можно добавлять в любом количестве. Им память не требуется.


 
Psychedelic ©   (2006-12-13 14:56) [9]

Это не мои слова : Если американцу сказано повернуть налево, он повернет без вопросов, если же русскому сказано тоже самое, он будет спрашивать а почему налево, а например не вправо или прямо... :) То же и Задорнов говорил...



Страницы: 1 вся ветка

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
15-1182431824
koha
2007-06-21 17:17
2007.07.22
В нашу сеть повадильсь кулхацкеры лазить


11-1166019733
Fregl
2006-12-13 17:22
2007.07.22
Проблема работы с несколькими формами


15-1182220353
Slider007
2007-06-19 06:32
2007.07.22
С днем рождения ! 19 июня 2007 вторник


6-1161301119
Святослав
2006-10-20 03:38
2007.07.22
Помогите сделать простое клиент-сервер приложение


2-1183038007
Cj
2007-06-28 17:40
2007.07.22
Read Disk