Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Вниз

Наследование от 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 вся ветка

Форум: "KOL";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.046 c
15-1181831248
DrAndrey
2007-06-14 18:27
2007.07.22
Программисты и ХО


2-1183224027
Lavrenty
2007-06-30 21:20
2007.07.22
Корректность кода


2-1182958390
TruePunk
2007-06-27 19:33
2007.07.22
отображение файлов в листбоксе


9-1156370315
Nobody_1988
2006-08-24 01:58
2007.07.22
About Shaders


15-1182838955
GeLLeR
2007-06-26 10:22
2007.07.22
Будет ли TMediaPlayer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский