Autor Tema: Se puede hacer un textbox transparente?  (Leído 8413 veces)

0 Usuarios y 1 Visitante están viendo este tema.

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Se puede hacer un textbox transparente?
« en: Septiembre 24, 2011, 07:53:48 pm »
Para tal caso lo mejor seria utilizar un Label con la propiedad BackStyle = 0-transparent pero el caso es que el proyecto utiliza cajas de textos y hay muchos Text's asi que demoria mucho estar cambiandolos por label's, ademas los label utilizan .caption y no .text y se complica un poco mas. Tambien se podria poner el color de fondo igual al del form pero en los form hay una imagen de fondo.

Me hicieron esa pregunta y dije que no se podia pero quien sabe jeje? igual me anime a preguntar aqui en el foro, la idea seria crear una funcion o clase para colocarla en el load del form y evitar hacer el cambio de controles text's por label's

Virgil Tracy

  • Kilobyte
  • **
  • Mensajes: 64
  • Reputación: +38/-1
    • Ver Perfil
Re:Se puede hacer un textbox transparente?
« Respuesta #1 en: Septiembre 24, 2011, 11:49:02 pm »
Si lo que quieres es un textbox transparente funcional, debes subclasificar el mensaje WM_PAINT del textbox, aqui un ejemplo

http://www.vbaccelerator.com/home/vb/code/libraries/subclassing/tile_a_bitmap_into_a_textbox/article.asp



Pero si quieres solo cambiar los textbox por labels con este codigo lo puedes hacer  :)

Código: (vb6) [Seleccionar]
Private Sub Command1_Click()
Dim c As Control, lbl As Label
Dim i As Long

i = 1

For Each c In Me.Controls

    If TypeOf c Is TextBox Then
   
       Set lbl = Me.Controls.Add("VB.Label", "label" & i)
       
       i = i + 1
       
       With lbl
       
            Set .Container = c.Container
       
            .Top = c.Top
            .Left = c.Left
            .Height = c.Height
            .Width = c.Width
            .Caption = c.Text
            .Alignment = c.Alignment
            .Visible = True
            .BackStyle = 0
            .ForeColor = vbRed
           
            c.Visible = False
           
       End With
       
    End If
   
Next

Command1.Enabled = False

End Sub

formulario con textboxs


formulario con labels


lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Re:Se puede hacer un textbox transparente?
« Respuesta #2 en: Septiembre 25, 2011, 12:16:57 am »
Voy a probar..
Bueno haber si alguien me hecha una mano ya que tiene mas de lo que necesito y el codigo se ve algo complejo, igual voy a revisar detenidamente el 1er ejemplo cuando tenga un poco de tiempo y espero reducir el codigo para solo transparentar las cajas texto, saludos y gracias.
« última modificación: Septiembre 25, 2011, 12:26:25 am por lucius »

Lolabyte

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +15/-0
    • Ver Perfil
Re:Se puede hacer un textbox transparente?
« Respuesta #3 en: Septiembre 25, 2011, 04:24:24 am »
Aqui en psc hay un ejemplo mas sencillo  :)

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54063&lngWId=1



O tambien, cambiar el textbox por un richtextbox y con apis hacerlo transparente  ;)

Código: (vb6) [Seleccionar]
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Const GWL_EXSTYLE = (-20)
Const WS_EX_TRANSPARENT = &H20&

Private Sub Form_Load()

Call SetWindowLong(RichTextBox1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)

End Sub