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

Вниз

Как переопределить свойство   Найти похожие ветки 

 
mmms   (2005-07-12 16:09) [0]

Есть например DBGrid, у его колонок тип TColumn, хочется переделать этот TColumn у DBGrid, что бы заголовок у колонки был всегда по центру (taCenter), например (но не только из за этого! :) ). Т.е. в чем проблема, переопределить все свойства у DBGrid могу, а вот как бы ещё "долезть" до его TColumn, в рамках своего компанента от DBGrid (TMyDBGrid)?


 
Юрий Зотов ©   (2005-07-12 16:20) [1]

Никаких свойств переопределять не надо, все уже предусмотрено.

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;


И все. Грид будет иметь Ваши колонки.


 
mmms   (2005-07-12 16:51) [2]

Юрий благодарю Вас за ответы мне за последние дни :) Все просто супер, надеюсь теперь то справлюсь с задуманным. Да и подвижки в написании компанентов есть, благодаря Вам!


 
flying-home   (2005-07-13 10:58) [3]

Извините, продолжу ветку.
А если нужны потомки от TListItem или TTabSheet?
Например, мне нужен PageControl, у каждого TabSheet которого есть свойство Data (Pointer)


 
Юрий Зотов ©   (2005-07-13 12:08) [4]

> А если нужны потомки от 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 12:12) [5]

спасибо



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

Форум: "Компоненты";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.014 c
3-1132433132
Sword
2005-11-19 23:45
2006.01.15
Interbase не добавляет поле с пустой записью


9-1122972298
Max4
2005-08-02 12:44
2006.01.15
Координаты клика.


14-1134039201
IAmDanil
2005-12-08 13:53
2006.01.15
Проверялка


6-1127747930
pr0t0n
2005-09-26 19:18
2006.01.15
Строку в HTML Документ.


3-1132322433
alpine
2005-11-18 17:00
2006.01.15
Можно ли добавить поле из третьей таблицы с помощью SQL?





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