![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как переопределить свойство [D7]
mmms © (2005-07-12 16:09:00)Есть например DBGrid, у его колонок тип TColumn, хочется переделать этот TColumn у DBGrid, что бы заголовок у колонки был всегда по центру (taCenter), например (но не только из за этого! :) ). Т.е. в чем проблема, переопределить все свойства у DBGrid могу, а вот как бы ещё "долезть" до его TColumn, в рамках своего компанента от DBGrid (TMyDBGrid)?
flying-home (2005-07-13 12:12:00) [1]спасибо
Юрий Зотов (2005-07-13 12:08:00) [2]> А если нужны потомки от TListItem или TTabSheet?
То смотрим исходники VCL.
У TListItem обнаруживаем следующее:
function CreateListItem: TListItem; virtual;
function CreateListItems: TListItems; virtual;
Смотрим код этих методов - и все становится ясно. Заодно обнаруживаем событие OnCreateItemClass - это еще один способ.
А у TPageControl обнаруживаем, что список Pages - это обычный TList, а он может хранить любые указатели. Значит, никто не мешает написать в редакторе компонента примерно следующее:
TMyTabSheet.Create(...).PageControl := MyPageControl1
И тогда в design-time будут создаваться страницы нужного класса. А в run-time их можно создать той же самой строкой.
flying-home (2005-07-13 10:58:00) [3]Извините, продолжу ветку.
А если нужны потомки от TListItem или TTabSheet?
Например, мне нужен PageControl, у каждого TabSheet которого есть свойство Data (Pointer)
mmms (2005-07-12 16:51:00) [4]Юрий благодарю Вас за ответы мне за последние дни :) Все просто супер, надеюсь теперь то справлюсь с задуманным. Да и подвижки в написании компанентов есть, благодаря Вам!
Юрий Зотов (2005-07-12 16:20:00) [5]Никаких свойств переопределять не надо, все уже предусмотрено.
type
TMyColumn = class(TColumn)
... // Делаем свою колонку с нужным поведением
end;
TMyGrid = class(TDBGrid)
protected
function CreateColumns: TDBGridColumns; override;
end;
function TMyGrid.CreateColumns: TDBGridColumns;
begin
Result := TDBGridColumns.Create(Self, TMyColumn)
end;
И все. Грид будет иметь Ваши колонки.