![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прозрачность в TWinControl
Den_is © (2006-07-10 14:35:00)Добрый день! У меня простой вопрос. А вот ответ, как оказалось, сложный. Я весь интернет перерыл, ответа не нашел.
Собственно вопрос - как сделать прозрачным компонент, унаследованный от класса TWinControl?
Заранее спасибо.
DimaBr (2006-07-11 08:34:00) [1]
> Юрий Зотов ©
А прикольно получилось. Кликаешь на ссылку "Прозрачность в TWinControl" - "Перемещено в конференцию "Основная". Кликаешь на неё - "Перемещено в конференцию "Компоненты". Получилось два топика - брак.
Ketmar (2006-07-10 21:25:00) [2]ещё можно почитать про регионы.
Юрий Зотов (2006-07-10 21:14:00) [3]> Den_is © (10.07.06 15:32) [2]
> Непонятно, почему этот топик перемещен в форум "Основная".
Мне тоже. Поэтому перенес обратно.
По сабжу - обратите внимание на [10]. Как минимум, это именно тот путь, по которому и надо двигаться.
Мефисто (2006-07-10 20:20:00) [4]constructor TCustomPl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csOpaque];
end;
procedure TCustomP.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle + WS_EX_TRANSPARENT;
end;
procedure TCustomP.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result := 1;
end;
Den_is (2006-07-10 19:40:00) [5]Сорри в пункте 1 опечатка. Имеется ввиду, что хочу переделать класс-родитель с TCustomControl на TWinControl.
Den_is (2006-07-10 19:38:00) [6]
> Плохиш © (10.07.06 18:30) [6]
>
> > Den_is © (10.07.06 16:05) [5]
>
> А Вам ответ в каком виде хотелось бы услышать?
1. Я уже написал свой компонент, наследуя от TCustomControl. Причем компонент получился громоздкий, так как пришлось навешивать функциональность TWinControl. Поэтому хочу переделать наследника на TWinControl. Мешает прозрачность.
2. В невозможность сделать прозрачность я не верю. Все возможно!
3. Если советуют переписать "обработчик рисования компонента", то хотелось бы узнать, как это сделать? Ну, дурак я. Мне этой информации недостаточно.
Ketmar (2006-07-10 19:01:00) [7]видимо, в виде кода, готового к copy/paste.
Плохиш (2006-07-10 18:30:00) [8]
> Den_is © (10.07.06 16:05) [5]
А Вам ответ в каком виде хотелось бы услышать?
Den_is (2006-07-10 16:05:00) [9]Black Krok
Смотрел, менял, крутил эти флаги - не помогает.
Плохиш
В "вашем" инернете нет ответа на мой вопрос. Либо советуют использовать TCustomControl, либо говорят, что это невозможно, либо дают абстрактные советы - типа перепиши обработчик рисования компонента.
Плохиш (2006-07-10 15:49:00) [10]
> Den_is © (10.07.06 15:32) [2]
> Непонятно, почему этот топик перемещен в форум "Основная".
Скорее всего из-за " Я весь интернет перерыл". Радуйся, что не в "Начинающие".
Посмотри ещё в нашем интернете http://www.yandex.ru/yandsearch?stype=&nl=0&text=delphi+TWinControl+%EF%F0%EE%E7%F0%E0%F7%ED%EE%F1%F2%FC
Black Krok (2006-07-10 15:40:00) [11]Посмотрите все же свойство ControlStyle и флаги csOpaque, csParentBackground
Den_is (2006-07-10 15:32:00) [12]Непонятно, почему этот топик перемещен в форум "Основная". Вопрос связан именно с разработкой компонентов.
Я пишу компонент - наследник от TWinControl и столкнулся с проблемой прозрачности при написании этого компонента. Поэтому считаю, что все-таки этой ветке место в разделе "Компоненты"
Black Krok (2006-07-10 14:58:00) [13]Может это поможет?
procedure TCustomPanel.SetParentBackground(Value: Boolean);
begin
{ TCustomPanel needs to not have csOpaque when painting
with the ParentBackground in Themed applications }
if Value then
ControlStyle := ControlStyle - [csOpaque]
else
ControlStyle := ControlStyle + [csOpaque];
FParentBackgroundSet := True;
inherited;
end;
Это реализация свойства TPanel.ParentBackground, делающего панель прозрачной
ControlStyle свойство TControl