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

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

Зачем такое объявление класса?


Страницы:   1 2

Iconka ©   (2004-09-29 17:21:00) 

Смотрю исходники RxLib, вижу такую строчку в файле RxGrids:


type
 TWinControlCracker = class(TWinControl);


Зачем такое?


KSergey   (2004-09-30 12:14:00) [1]

Ну если это принципиально - факт ;)


Sandman25   (2004-09-30 12:08:00) [2]

[25] KSergey ©   (30.09.04 12:01)

Я видел, как такой прием использовался с гридами в таком контексте, когда напрашивался наследник. Теперь факт? :)


KSergey   (2004-09-30 12:01:00) [3]

> [24] Sandman25 ©   (30.09.04 11:44)
> Обычно такой приемчик используется с гридами

Не факт


Sandman25   (2004-09-30 11:44:00) [4]

[23] KSergey ©   (30.09.04 11:09)

Обычно такой приемчик используется с гридами, когда написание полнофункционального наследника было бы лучше.
В данном случае с WinControlCracker Вы правы, компонент в палитру не добавить :)


KSergey   (2004-09-30 11:09:00) [5]

Ну раз уж пошла перепись - то я T..Friend  ;)
Впрочем как не назови - один фиг ;)

> [6] Sandman25 ©   (29.09.04 17:57)
> Это не засады ООП, а лень разработчиков приложений, которым
> неохота писать нормального наследника и устанавливать его
> в палитру компонент.

При чем тут лень? Просто в таких случаях и нафиг не надо совершенно наследника полноценного создавать, да еще и в палитру - это уж совсем что-то странное вы батенька брякнули...


Гаврила   (2004-09-30 02:27:00) [6]


> [20] jack128 ©   (30.09.04 01:52)


да слово кривое какое-то :-)

я такие классы называю типа
TReaderAccess = class(TReader);


GuAV   (2004-09-30 02:25:00) [7]

TXControl - e Xpose Control's properties :)


jack128   (2004-09-30 01:52:00) [8]

Гаврила ©   (30.09.04 1:47) [19]
Почему?? Я подобные классы вот так называю:

type
 TReaderCrack = class(TReader);
 TWriterCrack = class(TWriter);
 TPersistentCrack = class(TPersistent);


Гаврила   (2004-09-30 01:47:00) [9]


>  TWinControlCracker


Дурное какое название, однако.... не так надо называть


jack128   (2004-09-30 01:16:00) [10]

jack128 ©   (30.09.04 1:09) [17]
olookin ©   (29.09.04 23:49) [16]
нет. то что имеешь виду делается так:

TSameClass = class; // отметь - мы не указываем предка!! Только говорим, что есть такой класс TSameClass, но про него (кроме того, что это класс) еще ничего не известно.
TSameOtherClass = class(TObject)
FObj: TSameClass;
end;

TSameClass = class(TWinControl);  - а вот тут мы уже объявляем класс, добавляем новые методы, если нужно и тд..

сорри


jack128   (2004-09-30 01:09:00) [11]

olookin ©   (29.09.04 23:49) [16]
нет. то что имеешь виду длается так:

TSameClass = class; // отметь - мы не указываем предка!! Только говорил, что есть такое класс TSameClass, но про него (кроме того, что это класс) еще ничего не известно.
TSameOtherClass = class(TObject)
 FObj: TSameClass;
end;

TSameClass = class(TWinControl);  - а вот тут мы уже объявляем класс, добовляем новые методы, если нужно и тд..


olookin   (2004-09-29 23:49:00) [12]

Такя прав?


Cobalt   (2004-09-29 23:04:00) [13]

Хм... действительно есть:
type
 TWinControlCracker = class(TWinControl);

procedure TRxInplaceEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
 if (EditStyle = ieEllipsis) and (Key = VK_RETURN) and (Shift = [ssCtrl]) then
 begin
   TRxDrawGrid(Grid).EditButtonClick;
   KillMessage(Handle, WM_CHAR);
 end
 else inherited KeyDown(Key, Shift);
end;


И нигдебольше не используется...


jack128   (2004-09-29 18:23:00) [14]

Iconka ©   (29.09.04 17:36) [3]
Дальше в модуле TWinControlCracker не встречается. Это его единственное упоминание.


Очень маловероятно. Объявление кряк-класса нужно для вот таких манипуляций:
unit Forms;
...

type
 TMenuItemAccess = class(TMenuItem);

procedure TCustomForm.WndProc(var Message: TMessage);
..
begin
...

 TMenuItemAccess(MenuItem).MeasureItem(Canvas,
   Integer(itemWidth), Integer(itemHeight));
...
end;

end;


Iconka   (2004-09-29 18:07:00) [15]


> Внук ©   (29.09.04 18:03) [12][Ответить]

Вы правы...
:)


Внук   (2004-09-29 18:03:00) [16]

Ой. А я всегда получал, потому что не знал, что нельзя. А если в том же модуле, я, извиняюсь, и к private получу.


Iconka   (2004-09-29 18:00:00) [17]

По теории :)
К protected можно получить если наследник в том же модуле находится.


Iconka   (2004-09-29 18:00:00) [18]

По теории :)
К protected можно получить если наследник в том же модуле находится.


Внук   (2004-09-29 17:59:00) [19]

Почему не получишь?


Внук   (2004-09-29 17:57:00) [20]

Простым образом. Наследник имеет доступ к защищенным методам предка. Вот этого наследника и создали.


Страницы:   1 2

Наверх

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