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

Вниз

TWinControl и наследование   Найти похожие ветки 

 
Ilg   (2003-06-21 12:34) [0]

Здравствуйте!
Скажите, кто-нибудь разбирался с TWinControl?
Проблема такая:
Если создавая компонент наследовать его класс от TControl, то компонент получается "прозрачным"... А если наследовать от TWinControl, то "залитым". Так вот какой метод в TWinControl (который сам является наследником TControl) делает заливку компонента.
Короче говоря, можно ли создать аналог TWinControl, но с "прозрачным" фоном?
Заранее, Большое спасибо!


 
MBo   (2003-06-21 12:35) [1]

WM_ERASEBKGND


 
Ilg   (2003-06-21 13:09) [2]

Я пытался перехватывать WM_ERASEBKGND, но нужного результата не добился.
В TWinControl это сообщение обрабатывается так:
procedure TWinControl.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
{ Only erase background if we"re not doublebuffering or painting to memory. }
if not FDoubleBuffered or
(TMessage(Message).wParam = TMessage(Message).lParam) then
FillRect(Message.DC, ClientRect, FBrush.Handle);
Message.Result := 1;
end;

Если убрать FillRect, то на месте компонента будет "дырка", а нужно, чтобы результат был аналогичен TControl (компонент имел "прозрачный фон")...
Что нужно для этого делать?


 
Юрий Федоров   (2003-06-21 13:15) [3]

Наверно, тебе нужен альфа-канал


 
Ilg   (2003-06-21 14:11) [4]

Извини, не понимаю...


 
han_malign   (2003-06-21 14:13) [5]

ControlStyle:=ControlStyle-[csOpaque];


 
Ilg   (2003-06-21 15:41) [6]

Какой метод TWinControl нужно переопределить, чтобы использовать ControlStyle:=ControlStyle-[csOpaque]?
Переопределяю Create, пишу:
inherited Create(aOwner);
ControlStyle:=ControlStyle-[csOpaque];

- никакого результата :-(
Однако, если наследовать TControl, переопределить Create:
inherited Create(aOwner);
ControlStyle:=ControlStyle+[csOpaque];

фон окажется залитым.
Ничего не понимаю!...


 
Юрий Федоров   (2003-06-21 15:52) [7]

с ControlStyle ничего не выйдет.
Насчет альфа-канала - у формы есть св-во AplhaBlend - регулирует прозрачность окна (TWinControl - окно). Можно покопаться в коде VCL и выяснить, как это реализовано

Два "но"
1. Я не уверен, что это св-во есть в D5
2. Работать будет только под Win2000 и далее

А ты уверен, что тебе нужен именно WinControl? Если он должен быть прозрачным? Поясни


 
Ilg   (2003-06-21 16:51) [8]

От TWinControl я хочу наследовать классы новых компонентов, в частности, мне нужна TRadioButton, имеющая свойство Transparent, как TLabel. И насколько я понимаю AplhaBlend не совсем то, что нужно.
Предупреждая вопрос "Почему бы не скачать подходящий компонент с Torry.net?" отвечу, что смотрел некоторые компоненты... Все они созданы наследованием от TGraphicControl (который как и TControl имеет прозрачный фон) и не имеют некоторых важных свойств TWinControl.


 
Юрий Федоров   (2003-06-21 16:59) [9]

Боюсь, что все же придется наследоваться от TControl.
Насколько я понимаю, единственный способ сделать окно прозрачным - альфа канал.
А каких именно важных св-в TWinControl не хватает?


 
Victor_Cr   (2003-06-21 17:46) [10]

А нечто типа TCustomControl тебе не подойдет?


 
Ilg   (2003-06-22 12:41) [11]

TCustomControl сам наследуется от TWinControl...



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

Форум: "Основная";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-7346
Alex_x
2003-06-10 12:14
2003.07.03
делать Backup/Restore из програмы


1-7482
yozch_
2003-06-15 15:33
2003.07.03
goEditing


1-7414
Oleg
2003-06-23 09:50
2003.07.03
Аварийное завершение программы


14-7635
Кен
2003-06-14 06:11
2003.07.03
Где в сети можно БЫСТРО получить бесплатный мэйл и не древовидный


14-7620
budoudoo
2003-06-15 20:42
2003.07.03
Как сделать гостевую книгу с помощью Делфи





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