Impedir que cambien la configuración del Preview de Reportes
Visual Fox Pro, Trucos Comentarios ( 0 ) »- Use SYS(2005) Again
- Locate
For Id=_TTOOLBAR_ and name=_Print Preview_
Replace readonly with .T.
Use
Por: David Amador T
cFecha = "11:00:00"
RUN time &cFecha
lnInicio = SECONDS()
for i = 1 to 10000 && en este
ejemplo cuanto tarda realizar
&& el ciclo for de 1 hasta 10000
endfor
? SECONDS() - lnInicio
Esta es una forma de agregar una DSN por código utilizando API. Este ejemplo te agrega una conexión llamada MiDSN
LOCAL
lcDriver,lc_dsn,fResult
# Define ODBC_ADD_DSN 1
Declare INTEGER SQLConfigDataSource IN odbccp32.dll;
INTEGER ,;
SHORT ,;
STRING @,;
STRING @
Lc_Driver = "NombreDriver" +CHR(0)
lc_dsn = "dsn=MiDSN"+CHR(0)+;
"Server=server name"+CHR(0)+;
"database=Database name"+CHR(0)+;
"Network=DBMSSOCN"+CHR(0)
fResult = SQLConfigDataSource( 0,ODBC_ADD_DSN,@lc_driver,@lc_dsn)
Si deseas asociar un programa a una extensión especifica debes escribir en el registro del sistema y guardar las entradas respectivas....para eso vamos a utiliza WSH (Windows Script Hos)
DO AsociarArchivo WITH
".aaa", "MiPrograma", "C:RutaMiExecutable.exe"
PROCEDURE AsociarArchivo (sExtension, sFileDescription, sExecutable)
LOCAL sErrorHandler
sErrorHandler = ON("error")
ON ERROR
oShell = CreateObject("wscript.shell")
oShell.Regwrite ("HKCR" + sExtension + "", sFileDescription)
oShell.Regwrite ("HKCR" + sFileDescription + "", "MY PROJECT")
oShell.Regwrite ("HKCR" + sFileDescription + "DefaultIcon",
sExecutable)
oShell.Regwrite ("HKCR" + sFileDescription + "shellopencommand",
sExecutable + " %1")
oShell.Regdelete ("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"
+ sExtension + "Application")
oShell.Regwrite ("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"+sExtension
+ "Application", sExecutable)
oShell.Regdelete ("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"
+ sExtension + "OpenWithList")
oShell.Regwrite("HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts"+sExtension+"OpenWithLista",
sExecutable)
ON ERROR &sErrorHandler
ENDPROC
Create Cursor filename (cfilename c(128))
omyfiler = Createobject("Filer.FileUtil")
omyfiler.searchpath = "C:" && Ruta de Busqueda
omyfiler.subfolder = 1 && 1 = para incluir subdirectorios. 0 para no
omyfiler.SortBy = 0
omyfiler.Find(0)
Local ncount
ncount = 1
For nfilecount = 1 To omyfiler.Files.Count
If omyfiler.Files.Item(nfilecount).Name =
"." Or ;
omyfiler.Files.Item(nfilecount).Name = ".."
Loop
Endif
Append Blank
Replace cfilename WITH
Upper(omyfiler.Files.Item(nfilecount).Path)+ ;
UPPER(omyfiler.Files.Item(nfilecount).Name)
Endfor
Browse
En ocasiones necesitas conocer cual es el primer archivo que coincide específicamente con una cadena de caracteres, para eso podemos utilizar la función SYS(2000) .... a esta le pasamos cual es el archivo tipo o archivo que deseamos obtener.
Por ejemplo:
? Sys(2000,"F*.prg") ** Devuelve el primer archivo que empiece por F y con extensión PRG
? Sys(2000,"*.*")
** Devuelve el primer archivo del directorio actual
Esta es una de las formas más sencillas de exportar una tabla a HTML ... En este ejemplo se recorre numero de campos que tenga la tabla y luego el total de registros...
ScanExisten diferentes forma de eliminar directorios ... con WSH, API, pero puedes utilizar también algunas funciones de VFP, este es un ejemplo
Local lcPath, hWindow, lcDelimiter, lcFiles, lcMsgSubj
lcPath = Sys(5)
+ Sys(2003)
cDelimi = ";"
lcFiles =
"C:\Archivo1.exe" +
cDelimi +
"C:\tabla.dbf"
lcMsgSubj =
"Archivos adjuntos: Archivo1.exe, tabla.dbf"
nHwd = GetActiveWindow()
=MAPISendDocuments(nHwd, cDelimi, lcFiles, lcMsgSubj,0)
Set Default To (lcPath)
Procedure FindWindow
Declare Integer
GetActiveWindow
In
user32
Declare Integer
MAPISendDocuments
In
mapi32;
INTEGER
ulUIParam,
String
lpszDelimChar,;
STRING
lpszFullPaths,
String
lpszFileNames,;
INTEGER
ulReserved
EndProc
Este es uno de los temas más consultados
diariamente,,, es decir como podemos hacer referencia a un formulario desde otro
formulario...
Lo que debes hacer es asignarle al formulario una variable pública o una propiedad del screen .. por ejemplo ...
PUBLIC miForm
DO FORM "NombreForm" NAME miForm Linked
Y desde otro formulario ya podrás acceder a las propiedades, métodos y
eventos del anterior formulario ejecutado... de la siguiente forma
MiForm.Refresh() ** Lo actualiza
MiForm.Caption = _Mi súper titulo_ ** Le coloca otro titulo
En muchas ocasiones requerimos agregar
manualmente (por código) las relaciones al entorno de datos ... este es el
código que en ocasiones uso ....
Este código va en el Load del formulario ... tenga presente la propiedad
AutoOpenTable y el método OpenTables(), ya que el código siguiente puede verse
afectado por ellos..
With Thisform.DataEnvironment
.AddObject("MiRelacion","Relation")
.MiRelacion.ChildOrder="Client_Code"
.MiRelacion.RelationalExpr="Client_Code"
.MiRelacion.ChildAlias="Invoice"
.MiRelacion.ParentAlias="Client"
EndWith
WSH te permite agregar impresora .... en este caso se agregara una impresora en red .... los parámetros a pasar son el puerto donde esta conectado la impresora y la ruta de la misma dentro de la red
oWshNetk = CreateObject("WScript.Network")Ya vimos como agregábamos una relación al entorno de datos por código .... en este ejemplo veremos como agregamos una tabla al entorno de datos.-..
oWith Thisfom.DataEnvironment
.Addobject("MiTabla","Cursor")
.MiTabla.CursorSource="RutadatosTabla.dbf"
.MiTabla.Alias="Tutabla"
.MiTabla.Order="Tuorder"
.MiTabla.Exclusive=.T.
.MiTabla.BufferModeOverride=1 ** Dependiendo
.Opentables()
EndWith
Me imagino que han visto la propiedad Autosize.... bueno este es más o menos el código que puedes utilizar si deseas simular el efecto .... el ejemplo me devolverá el ancho de la cadena de texto que se le pases a TxtWidth .... debes tener en cuenta que el ancho es dependiente del tipo, tamaño y estilo de la letra.
cTexto = _David_
? TXTWIDTH(cTexto, _Arial_, 10,
_N_)*(FONTMETRIC(6,(_Arial_), 10, _N_)/FONTMETRIC(6))