31 de enero de 2012

Función MessageBox() Extendida - Revisada

Artículo original: Extended Messagebox() function reviewed
http://weblogs.foxite.com/vfpimaging/2012/01/30/extended-messagebox-function-reviewed/
Autor: VFPIMAGING
Traducido por: Luis Maria Guayán

Versión actualizada - ahora sin la necesidad de FLL externa

Esto es sólo una actualización para el artículo original. Inicialmente esta función necesitaba la libria VFPEX.FLL de Craig Boyd para poder de actualizar el cuadro de diálogo del MESSAGEBOX(). En esta nueva versión, estoy usando la función BINDEVENTS de VFP9, para enlazar directamenta a los eventos de Windows.

MSGBOXEX() es una función sencilla que nos permite personalizar los textos de los botones del MESSAGEBOX(), la ventana de diálogo, como en las imágenes se muestra a continuación:
lnOption = MsgboxEx( ;
   "You have entered a wrong password for 5 times." + chr(13) + ;
   "For security reasons this login was suspended.", ; && main message
   0, ; && default icon info
   "Password incorrect", ; && title bar caption
   "\&Retry,&Exit,Get &new pwd", ; && new button captions
   "41.ico") && icon file







lnOption = MsgboxEx(;
   "An unexpected error has occurred and the system needs to be restarted." + ;
   chr(13) + chr(13) + "What do you want to do ?", ;
   "X", ;
   "MsgboxEx sample", ;
   "Restart &Now,Restart &later,&Never restart")



lnOption = MsgboxEx( ;
   "Could not find the file 'Import.csv' in the selected folder.", ;
   0, ;
   "File not found", ;
   "&Abort,\&Retry,Change folder", ;
   "17.ico")



Función: MsgboxEx.prg


30 de enero de 2012

Saber si una impresora esta en linea

Aquí les dejo un código que modifique para saber si una impresora esta en linea.
LOCAL NomImpresora

strComputer = "."
objWMIService = GETOBJECT("winmgmts:"+ "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2")
colInstalledPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer")

*** impresora predeterminada
NomImpresora = UPPER(SET("Printer",2))

FOR EACH objPrinter IN colInstalledPrinters
  IF ALLTRIM(UPPER(objPrinter.NAME)) = NomImpresora
    IF (objPrinter.PrinterStatus = 3 OR objPrinter.PrinterStatus = 2) AND objPrinter.workoffline
      WAIT WIND "Impresora Apagada"
      RETURN
    ENDIF
  ENDIF
NEXT
Jose Luis Sayago Baez

28 de enero de 2012

Controladores ODBC de 32 bits en SO de 64 bits

Como acceder a los controladores de orígenes de datos de 32 bits en los sistemas operativos de 64 bits.

Muchas veces vimos la pregunta de que en los sistemas operativos de 64 bits no se pueden acceder a los controladores de datos ODBC de 32 bits desde el "Administrador de orígenes de datos ODBC"

La solución a este problema es abrir la ventana "Ejecutar" (con la combinación de teclas "Windows" + "R"), tipear

"%systemdrive%\Windows\SysWoW64\odbcad32.exe"

y darle al botón "Aceptar".

Para tener simpre a mano, deberían crear un "Nuevo acceso directo" y tipear

"%systemdrive%\Windows\SysWoW64\odbcad32.exe"

en el cuadro de texto "Ubicación del elemento" y darle el nombre "Administrador de orígenes de datos ODBC de 32 bits".