Amigos
vean ésto.este PRG muestra una imagen gif de 114 x 114, es una burrita que muestra un mensaje. A mí me parece genial.
solo le agregan su propia imagen gif, pero con las dimensiones señaladas para que entre en el fomulario.
Aunque está basada en una idea mía debo darle todo el crédito a Gemini. realmente me tiene atrapado.
Vean este prg
RELEASE oAvisoError
PUBLIC oAvisoError
*-- Creamos al asistente con su mensaje de error
oAvisoError = CREATEOBJECT("frmAvisoErrorTaller", "C:\Users\Usuario\Pictures\Taller Imagenes\burrita.gif", "¡Asegúrate de llenar todos los campos obligatorios!")
oAvisoError.Show(0)
DEFINE CLASS frmAvisoErrorTaller AS Form
Width = 300
Height = 200 && Un poco más alta para que quepa todo
BorderStyle = 0
TitleBar = 0
AlwaysOnTop = .T.
ShowWindow = 2
BackColor = RGB(254,254,254) && Transparencia Alpha 254
AutoCenter = .T.
Visible = .T.
*-- Propiedades de arrastre
nOldX = 0
nOldY = 0
lMoviendo = .F.
*-- La barra de título "falsa" con el texto de tu imagen
ADD OBJECT shpTitulo AS Shape WITH ;
Top = 0, Left = 0, Width = 300, Height = 40, ;
BackColor = RGB(70, 110, 130), BorderStyle = 0
ADD OBJECT lblTitulo AS Label WITH ;
Top = 8, Left = 15, Width = 200, Height = 25, ;
Caption = "Aviso Taller", BackStyle = 0, ;
ForeColor = RGB(255,255,255), FontName = "Segoe UI", FontSize = 12, FontBold = .T.
*-- El área blanca de abajo con el fondo y la imagen
ADD OBJECT shpFondo AS Shape WITH ;
Top = 40, Left = 0, Width = 300, Height = 160, ;
BackColor = RGB(255,255,255), BorderStyle = 0
ADD OBJECT imgBurrita AS Image WITH ;
Top = 60, Left = 10, Height = 120, Width = 100, ;
Picture = "", Stretch = 1, BackStyle = 0
*-- El globo de texto para el mensaje de error
ADD OBJECT shpGlobo AS Shape WITH ;
Top = 60, Left = 120, Width = 170, Height = 120, ;
Curvature = 10, BackColor = RGB(255,255,225), BorderColor = RGB(150,150,150)
ADD OBJECT lblMensaje AS Label WITH ;
Top = 75, Left = 130, Width = 150, Height = 100, ;
Caption = "", BackStyle = 0, WordWrap = .T., ;
FontName = "Segoe UI", FontSize = 10, Alignment = 2 && Centrado
PROCEDURE Init
LPARAMETERS tcRuta, tcMensaje
THIS.imgBurrita.Picture = tcRuta
THIS.lblMensaje.Caption = tcMensaje
*-- Activar transparencia
DECLARE INTEGER SetLayeredWindowAttributes IN user32 INTEGER, INTEGER, INTEGER, INTEGER
DECLARE INTEGER GetWindowLong IN user32 INTEGER, INTEGER
DECLARE INTEGER SetWindowLong IN user32 INTEGER, INTEGER, INTEGER
LOCAL nEst
nEst = GetWindowLong(THIS.HWnd, -20)
SetWindowLong(THIS.HWnd, -20, BITOR(nEst, 0x80000))
SetLayeredWindowAttributes(THIS.HWnd, 0, 254, 2)
ENDPROC
*-- Lógica para moverlo desde la barra de título falsa
PROCEDURE MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
*-- Solo permitir mover desde la barra de título (Top 0-40)
IF nButton = 1 AND nYCoord < 40
THIS.lMoviendo = .T.
THIS.nOldX = nXCoord
THIS.nOldY = nYCoord
ENDIF
ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF THIS.lMoviendo
THIS.Left = THIS.Left + (nXCoord - THIS.nOldX)
THIS.Top = THIS.Top + (nYCoord - THIS.nOldY)
ENDIF
ENDPROC
PROCEDURE MouseUp
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THIS.lMoviendo = .F.
ENDPROC
PROCEDURE RightClick
*-- El clic derecho lo cierra
THIS.Release()
ENDPROC
PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = 27 && Tecla ESC
THIS.Release()
ENDIF
ENDPROC
PROCEDURE Destroy
RELEASE oAvisoError
ENDPROC
ENDDEFINE
Saludos
Elides Paredes
Barquisimeto Venezuela