Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: lucius 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
-
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 (http://www.vbaccelerator.com/home/vb/code/libraries/subclassing/tile_a_bitmap_into_a_textbox/article.asp)
(http://www.vbaccelerator.com/home/vb/code/libraries/subclassing/tile_a_bitmap_into_a_textbox/BitmapDialog.png)
Pero si quieres solo cambiar los textbox por labels con este codigo lo puedes hacer :)
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
(http://i55.tinypic.com/2wdq1ch.png)
formulario con labels
(http://i51.tinypic.com/66atxd.png)
-
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.
-
Aqui en psc hay un ejemplo mas sencillo :)
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54063&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54063&lngWId=1)
(http://www.planet-source-code.com/Upload_PSC/ScreenShots/PIC2004528723551298.jpg)
O tambien, cambiar el textbox por un richtextbox y con apis hacerlo transparente ;)
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