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

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

Изменение стандартного компонента.


MixerPro ©   (2002-10-24 09:01:00) 

Как можно изменить компонент TCheckListBox, чтобы вместо стандартного CheckBox (галки в квадрате), менялось собственное изображение (к примеру темная/светлая лампочка или т.п.) Я так понимаю, что надо создать новый компонент типа TMyCheckListBox от TCheckListBox и переопределить какие-то свойства. Но как?


Игорь Шевченко   (2002-10-25 12:48:00) [1]

Севостьянов Игорь © (25.10.02 12:20)

:-)

Справедливость восстановлена

:-)


Севостьянов Игорь   (2002-10-25 12:20:00) [2]


> Игорь Шевченко © (24.10.02 12:19)


> caH4o (24.10.02 12:33)

Прошу прощения немного перепутал с TCustomCheckBox. Я и не говорил о TButton, я же сказал это класс Windows "BUTTON"

procedure TCustomCheckBox.CreateParams(var Params: TCreateParams);
const
Alignments: array[Boolean, TLeftRight] of DWORD =
((BS_LEFTTEXT, 0), (0, BS_LEFTTEXT));
begin
inherited CreateParams(Params);
CreateSubClass(Params, "BUTTON");
...

На самом деле это конечно же "LISTBOX" от Windows

TCheckListBox = class(TCustomListBox)
-------------------------------------------
procedure TCustomListBox.CreateParams(var Params: TCreateParams);
type
PSelects = ^TSelects;
TSelects = array[Boolean] of DWORD;
const
Styles: array[TListBoxStyle] of DWORD =
(0, LBS_OWNERDRAWFIXED, LBS_OWNERDRAWVARIABLE);
Sorteds: array[Boolean] of DWORD = (0, LBS_SORT);
MultiSelects: array[Boolean] of DWORD = (0, LBS_MULTIPLESEL);
ExtendSelects: array[Boolean] of DWORD = (0, LBS_EXTENDEDSEL);
IntegralHeights: array[Boolean] of DWORD = (LBS_NOINTEGRALHEIGHT, 0);
MultiColumns: array[Boolean] of DWORD = (0, LBS_MULTICOLUMN);
TabStops: array[Boolean] of DWORD = (0, LBS_USETABSTOPS);
CSHREDRAW: array[Boolean] of DWORD = (CS_HREDRAW, 0);
var
Selects: PSelects;
begin
inherited CreateParams(Params);
CreateSubClass(Params, "LISTBOX");
...


MixerPro   (2002-10-24 15:26:00) [3]

Вы правы. Я все сделал с помощью события OnDrawItem.


Рыжик   (2002-10-24 13:15:00) [4]


> MixerPro © (24.10.02 09:01)

Можно не создавая никаких компонент над ListView поизвращаться


caH4o   (2002-10-24 12:33:00) [5]

to Севостьянов Игорь

Небольшая неточность, от самого типа TButton ничего не наследуется

TObject->TPersistent->TComponent->TControl->TWinControl->TButtonControl->TCustomCheckBox->TCheckBox

TObject->TPersistent->TComponent->TControl->TWinControl->TButtonControl->TButton


Игорь Шевченко   (2002-10-24 12:19:00) [6]


> Кстати TCheckListBox - это стандартный Windows "компонент"
> наследованный от типа BUTTON


Бред


Севостьянов Игорь   (2002-10-24 11:23:00) [7]

Что значит как ? Берешь и пишешь. Какие сложности не пойму.
Я к примеру написал TCheckTreeView, а там какие хочешь (на уровне компоненты) картинки вешай. Кстати TCheckListBox - это стандартный Windows "компонент" наследованный от типа BUTTON


Ученик   (2002-10-24 09:03:00) [8]

RXLib это позволяет


Наверх

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