Semitransparência?

Delphi

08/05/2009

Estive pensando.
Como fazer transparência (ou semitransparente) de um TForm sem que seus componentes também assumam a propriedade Blend?
ou
Como fazer para um componente, TPanel por exemplo, ficar transparente (ou semitransparente) sem que os componentes dentro dele também assumam a transparência.

Estou perguntando isto porque ainda não vi meios de criar um efeito ´Glass´ sem que todos os componentes da aplicação (Form que seja) sejam afetados.


Marcosrocha

Marcosrocha

Curtidas 0

Respostas

Woinch

Woinch

08/05/2009

Se todos os controles são considerados ´Forms´ a baixo nível. Será que não tem como utilizar a API do Windows passando apenas o Handle do componente que você quer deixar transparente?


GOSTEI 0
Marcosrocha

Marcosrocha

08/05/2009

Hierarquia de um TForm
TForm
  TCustomForm
    TScrollingWinControl
      TWinControl
        TControl
          TComponent
            TPersistent, IInterface, IInterfaceComponentReference
Hierarquia de um TEdit
TEdit
  TCustomEdit
    TWinControl
      TControl
        TComponent
          TPersistent, IInterface, IInterfaceComponentReference
Nos fontes do Delphi a propriedade AlphaBlend (que define transparência) chama uma função chamada SetLayeredAttribs que defina a transparência de um TCustomForm, porém se a API do Windows não suportar (não sei se suporta) não adianta definir o Handle de um componente para esta função.
Certa vez tentei fazer com que a linha inteira de uma TreeView ficasse selecionada quando a propriedade ShowLines estivesse ligada, contudo, a API do Windows não suporta este método então não adiantou ´forçar´ o código.

Por isso estou querendo saber se tem como, se for por meio de API Calls ou algum método (função) pronta do Delphi, definir transparência apenas para o Form e não seus componentes para que eu possa continuar um de meus projetos pessoais.


GOSTEI 0
POSTAR