Estuve haciendo un diálogo para cargar al inicio de un Libro es un diálogo para el desbloqueo de las Hojas, buscando y rejuntando en el foro logre hacerlo y funciona bien (adjunto archivo del mismo).
El problema fue cuando quise colocarle una imagen embebida con código, si bien la imagen la adjunta perfecto al cuadro de diálogo, empezo a fallar la funcionalidad que tenia el mismo, aparentemente no modifique nada, solo agregue otra macro de control de imagen (Gracias Foro de nuevo) para que me embeba la misma de una colocada en una Hoja.
Ahora me tira error al querer levantar el dato colocado en el campo para la contraseña, el bucle se corta, las advertencias salen a destiempo y le agarra el ataque.
Agradezco la ayuda de antemano.
Dejo pegado el codigo que funciona mal (tambien esta en el adjunto) y ambos archivos, el que no tiene imagen embebida y funciona perfecto y el problematico con imagen embebida.
Código: Seleccionar todo
Sub Mostrar_Dialogo()
'-------------------------------------------------------------------
Dim oDialogo As Object
DialogLibraries.LoadLibrary("Standard")
oDialogo = CreateUNODialog(DialogLibraries.Standard.DialogoPassword)
wait 500
FondoDialogo(oDialogo, "Logo1", "Logo1")
oDialogo.execute()
End Sub
' Cierra el diálogo
Sub Cerrar_Dialogo()
'-------------------------------------------------------------------
Dim oDoc as object
oDoc = Thiscomponent
oDialogo.EndExecute()
oDoc.close(true)
End Sub
Const clave = "1234"
Sub Passdeingreso
dim oDoc as object
dim password as variant
dim x as object
dim Respuesta as integer
REM --------------------------------------------------------------------------------------------------
oDoc = Thiscomponent
With oDialogo.Model
do
password = .txtPassword.Text
password = Trim( password )
if password = "" then ' Si presiono Cancelar
Respuesta = MsgBox( "Al parecer no escribiste nada, ¿realmente quieres salir?", 32 + 4, "Salir" )
if Respuesta = 6 then
msgbox "Cerrando entonces.....", 64, "Aviso de seguridad"
oDoc.close(true)
exit do
end if
end if
if password <> clave then
msgbox " Clave incorrecta" & chr(13) & chr(13) & "Para editar campos protegidos deproteja la hoja " & chr(13) & " ", 16, "Error de ingreso"
oDialogo.Execute()
else
oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument")
for each x in ThisComponent.Sheets()
x.UnProtect( clave )
next
msgbox "Hojas desprotegidas, no olvides PROTEGER luego de la edición", 64, "Aviso de seguridad"
oDialogo.EndExecute()
end if
loop Until password = "" or clave
end with
end sub
Const Clave = "1234"
Sub GuardaryProteger
dim oDoc as object, x as object
REM AF ------------------------------------------------------------------------------
oDoc = ThisComponent
if oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") then
for each x in ThisComponent.Sheets()
x.Protect( clave )
next
msgbox "Se protegieron exitosamente todas las Hojas", 48, "Aviso de seguridad"
end if
end sub
Sub FondoDialogo(oDialogo As Object, Nombre_ImageControl as String, Nombre_Imagen As String)
Dim Imagen As Object
Dim oForma As Object
Dim oPaginaDibujo As Object
Dim i as integer
oPaginaDibujo = ThisComponent.getCurrentController.getActiveSheet.getDrawPage()
' ------------ El fondo del dialogo --------------------------------
i = 0
do
oForma = oPaginaDibujo.getByIndex(i)
If oForma.Name = Nombre_Imagen Then
exit do
End if
i = i + 1
loop While i < oPaginaDibujo.getCount()
' ---------------------------------------------------------------------
Dim oPT As Object
oPT = oDialogo.getPosSize()
Imagen = Imagen_Control( oDialogo, -180, 60, oPT.Width, 90, oPT.Height, 60 )
oDialogo.addControl(Nombre_ImageControl, Imagen )
oDialogo.getControl(Nombre_ImageControl).Model.ImageURL = oForma.GraphicURL
end sub
Function Imagen_Control( oDialogo As Object, PosX As Integer, PosY As Integer, Width As Integer, Height As Integer, Ruta_Archivo As String ) As Object
oControlModel = createUnoService( "com.sun.star.awt.UnoControlImageControlModel" )
with oControlModel
.ImageURL = ConvertToUrl(Ruta_Archivo)
.Border = 0
.ScaleImage = false
end with
oControl = createUnoService( "com.sun.star.awt.UnoControlImageControl" )
with oControl
.setContext( oDialogo )
.setPosSize( PosX, PosY, Width, Height, com.sun.star.awt.PosSize.POSSIZE)
.setModel( oControlModel )
end with
Imagen_Control = oControl
end function