Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
¿Conoces algún pack de tercero que tenga esa opción?
Responder Con Cita
  #2  
Antiguo 06-12-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No, lamento no conocer ninguno, pero encontré un artículo que tal vez te resulte interesante: An easy way to create transparent button

En tanto que para los controles TGroupBox y TRadioGroup, podes usar:
Código PHP:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

__fastcall TForm1::TForm1(TComponentOwner)
  : 
TForm(Owner)
{
  ::
SetWindowLong(GroupBox1->HandleGWL_EXSTYLE,
    
GetWindowLong(GroupBox1->HandleGWL_EXSTYLE) | WS_EX_TRANSPARENT);

  ::
SetWindowLong(RadioGroup1->HandleGWL_EXSTYLE,
    
GetWindowLong(RadioGroup1->HandleGWL_EXSTYLE) | WS_EX_TRANSPARENT);
}

}
... 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
La verdad es que solo necesito que tengan transparencia los checkboxs, radiogroups, groupboxs, labels, y paneles. Los paneles ya están listos, según me indicas, con ese código ya tendría listo los radiogroups y groupboxs y me quedaría solo los checkbox y labels y no recuerdo si el label ya trae esa propiedad.
Responder Con Cita
  #4  
Antiguo 07-12-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Con el TLabel no tendrías problemas ya que posee la propiedad Transparent.

Y ya que estamos, código para el CheckBox,

CheckBoxClear.h:
Código PHP:
#ifndef CheckBoxClearH
#define CheckBoxClearH

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>

class TCheckBoxClear : public TCheckBox {
private:
  
TCanvas *FCanvas;
  
TRect FCaptionR;
  
TRect FGlyphR;
protected:
  
void __fastcall CreateParamsTCreateParams &Params );
  
void __fastcall CreateWndvoid );
  
void __fastcall SetButtonStylevoid );
  
void __fastcall CNDrawItemTWMDrawItem &msg );
  
BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER
CN_DRAWITEMTWMDrawItemCNDrawItem )
  
END_MESSAGE_MAPTCheckBox )
public:
  
__fastcall TCheckBoxClearTComponent *Owner ) : TCheckBoxOwner ) {};
  
//...
};

#endif 
CheckBoxClear.cpp:
Código PHP:
#define OEMRESOURCE

#pragma hdrstop

#include "CheckBoxClear.h"

#pragma package(smart_init)

void __fastcall TCheckBoxClear::CreateParamsTCreateParams &Params )
{
  
TCustomCheckBox::CreateParamsParams );
  
Params.ExStyle |= WS_EX_TRANSPARENT;
}

void __fastcall TCheckBoxClear::CreateWndvoid )
{
  
TCheckBox::CreateWnd();
  
SetButtonStyle();
}

void __fastcall TCheckBoxClear::SetButtonStyle()
{
  const 
BS_MASK 0x000F;
  
unsigned int Style;

  if ( 
HandleAllocated() ) {
    
Style BS_CHECKBOX BS_OWNERDRAW;
    if ( 
GetWindowLongHandleGWL_STYLE) & BS_MASK != Style )
      
SendMessageHandleBM_SETSTYLEStyle);
  }
}

void __fastcall TCheckBoxClear::CNDrawItemTWMDrawItem &msg )
{
  const 
int H 0xD;
  const 
int W 0xD;
  
FGlyphR        msg.DrawItemStruct->rcItem;
  
FGlyphR.Right  20;
  
FCaptionR      msg.DrawItemStruct->rcItem;
  
FCaptionR.Left FGlyphR.Right;

  
FCanvas = new TCanvas;
  
__try {
    
FCanvas->Handle       msg.DrawItemStruct->hDC;
    
FCanvas->Brush->Style bsClear;

    
// Draw TBitmap
    
int xysx=0sy=0;
    
Graphics::TBitmap *Glyph = new Graphics::TBitmap;
    try {
      
Glyph->Handle = ::LoadBitmapNULLMAKEINTRESOURCEOBM_CHECKBOXES ) );
      
FGlyphR.Top + (FGlyphR.Bottom FGlyphR.Top H) / 2;
      
2;
      if( 
State == cbChecked sx += H;
      if( 
State == cbGrayed )  sx *= W;
      
FCanvas->CopyRect(Rect(xyx+Wx+H) ,Glyph->Canvas,
        
Rect(sxsysx+Wsy+H));
    }
    
__finally {
      
delete Glyph;
    }

    
// Draw Caption
    
long fmt DT_VCENTER |  DT_SINGLELINE DT_LEFT;
    
fmt DrawTextBiDiModeFlagsfmt );
    
DrawText(msg.DrawItemStruct->hDCCaption.c_str(),
      
Caption.Length(), &FCaptionRfmt);
  }
  
__finally {
    
delete FCanvas;
  }

Prueba:
Código PHP:
...
#include "CheckBoxClear.h"

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
// Label transparente
  
Label1->Transparent true;

 
// CheckBox transparente
  
TCheckBoxClear *cbc = new TCheckBoxClearthis );
  
cbc->Left    200;
  
cbc->Top     110;
  
cbc->Name    "CheckBoxClear1";
  
cbc->Caption cbc->Name;
  
cbc->Parent  this;
  ... 
Muestra:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 08-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Gracias amigo, los código del radiogroup y del listbox no me surten ningún efecto.
He estado probando los componentes de TMS que entre todo lo que trae vienen esos componentes con transparencia pero van de pena y tan lento que se puede ver cómo aplica la transparencia. Lo que tú estás haciendo es infinitamente más eficiente.
Si pudieras revisar esos dos componentes te estaría muy agradecido.
Ya luego me tocaría empollar y ver cómo pasarlos a componentes.
Encontré este código para un radiogroup por si es de utilidad:
Código PHP:
private:    // User declarations
    
void __fastcall NewGBWndProcTMessage& );
    
TWndMethod OldGBWndProc;
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponentOwner)
        : 
TForm(Owner)
{
    
RadioGroup1->Brush->Style bsClear;
    
long exstyle GetWindowLongGroupBox1->HandleGWL_EXSTYLE );
    ::
SetWindowLongGroupBox1->HandleGWL_EXSTYLEexstyle WS_EX_TRANSPARENT );
    
OldGBWndProc GroupBox1->WindowProc;
    
GroupBox1->WindowProc NewGBWndProc;
}
//-------------------------------------------------------------
__fastcall TForm1::~TForm1()
{
    
GroupBox1->WindowProc OldGBWndProc;
}
//-------------------------------------------------------------
void __fastcall TForm1::NewGBWndProcTMessage &Message )
{
    if( 
Message.Msg == WM_CTLCOLORSTATIC )
      {
          
HWND hWnd reinterpret_cast<HWND>( Message.LParam );
          if( 
hWnd == RadioButton1->Handle || hWnd == RadioButton2->Handle )
            {
                
HDC hDC reinterpret_cast<HDC>( Message.WParam );
                
SetBkModehDCTRANSPARENT );
                
Message.Result reinterpret_cast<LONG>( GetStockObject(NULL_BRUSH) );
                return;
            }
      }
    
OldGBWndProcMessage );
}
//------------------------------------------------------------- 

Última edición por aguml fecha: 08-12-2017 a las 02:10:16.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fondo en formulario que no se ve Ramsay Varios 1 06-02-2016 02:23:35
Otra forma de cambiar color fondo formulario chino150 Varios 2 16-02-2011 09:46:58
Mantener el Formulario principal en el fondo. Critter Lazarus, FreePascal, Kylix, etc. 5 25-10-2010 10:04:27
Poner un control en el fondo de un formulario MDI Egroc Varios 6 31-03-2007 02:56:57
Imagen de Fondo lucasarts_18 Gráficos 7 16-06-2005 17:03:04


La franja horaria es GMT +2. Ahora son las 10:36:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi