Conocer las dimensiones de un gráfica con GDI+
Visual Fox Pro, Trucos Comentarios ( 0 ) »oGDI =
Newobject("gpbitmap", (Home()+"ffc\_gdiplus.vcx"))oGDI.CreateFromFile(
GetFile("jpg"), .F.)? oGDI.ImageHeight
? oGDI.ImageWidth
Por: David Amador T
oGDI =
Newobject("gpbitmap", (Home()+"ffc\_gdiplus.vcx"))oGDI.CreateFromFile(
GetFile("jpg"), .F.)? oGDI.ImageHeight
? oGDI.ImageWidth
Public oHnd
oHnd = Newobject("ScreenMov")
Bindevent(_Screen, "DblClick", oHnd, "DblClick")
Define Class ScreenMov
As Session
Procedure DblClick
Wait Window "Doble
Click"
Endproc
EndDefine
oConn = CreateObject("ADODB.Connection")
cRutaDatos = "C:\Datos\TablasLibres"
oConn.Open("Provider=VFPOLEDB.1;"
+ ;
"Data Source="
+ cRutaDatos + ;
";Collating Sequence=MACHINE")
oConn.Execute("Create
Table Prueba (CmpDateT T)")
oConn.Execute("Insert
Into Prueba Values (DATETIME())")
oConn.Execute("Insert
Into Prueba Values ({^2006-10-10 11:11:11 PM})")
oConn.Close()
Release
oConnCreate Cursor Datos (Numero i, Veces i, nTotal i)
Insert Into Datos
Values
(8,0,0)
Insert Into Datos
Values
(8,2,0)
Insert Into Datos
Values
(8,5,0)
Insert Into Datos
Values
(8,1,0)
Insert Into Datos
Values
(8,0,0)
Insert Into Datos
Values
(8,3,0)
Go Top In Datos
Public oForm
oForm = Newobject("form")
oForm.Width
= 400
oForm.Height
= 400
With oForm
.AddObject("MiGrid",
"Grid")
With
.MiGrid
.Visible
= .T.
.Top
= 5
.Left
= 5
.Width
= 390
.Height
= 390
.RecordSource = "Datos"
.Column3.ControlSource
=
"Numero + Veces"
Endwith
Endwith
oForm.Show
Local cOrigen, cDestino
cOrigen = GetPict()
cDestino = JustPath(cOrigen)
+ "\_"
+
JustStem(cOrigen)
oImg = NewObject("GpImage", Home() + "ffc/_gdiplus.vcx")
With oImg
.CreateFromFile(cOrigen)
.SaveToFile(cDestino +
".jpg","image/jpeg")
.SaveToFile(cDestino +
".bmp","image/bmp")
.SaveToFile(cDestino +
".tif","image/tiff")
.SaveToFile(cDestino +
".gif","image/gif")
.SaveToFile(cDestino +
".png","image/png")
EndWith
oCDO = Createobject("CDO.Configuration")
For Each oField
In
oCDO.Fields
If !"sendpassword"
$ oField.Name
? oField.Name
+
" "+Transform(oField.Value)
Endif
Next
Release oCDO
Set Memowidth To 8000
cArchivo = GetFile()
If !Empty(cArchivo)
Create Cursor
Datos (TxtLineas m)
cText = FileToStr(cArchivo)
nLineas = Memlines(cText)
For
i=1
To
nLineas
Insert Into
Datos
Values(Mline(cText,i))
Endfor
EndIf
Set ClassLib To
MiClase.Vcx In Archivo.Exe Additive
Local oListener
As ReportListener,
nPageIndex
oListener =
Createobject("ReportListener")
oListener.ListenerType
= 3
cRutaReporte = Home(2)+"Solution\Reports\invoice.frx"
Report Form (cRutaReporte) Preview Object oListener
For nPageIndex=1
To
oListener.PageTotal
cOutputFile =
"c:\tmp"+Trans(nPageIndex)+".bmp"
oListener.OutputPage(nPageIndex,;
cOutputFile, 105, 0,0,768,1024)
&& 105=bitmap
Next
Veamos una constante en VB, el valor de la misma está dada en hexadecimal
Public Const INTERNET_FLAG_RAW_DATA = &H40000000
Y ahora en VFP
#
DEFINE INTERNET_FLAG_RAW_DATA 0x40000000Debes reemplazar Public Const por #DEFINE y el valor reemplazando &H con 0x
Declare Integer GetCurrencyFormat
In
WIN32API ;
Integer
Locale,
Integer
dwFlags,;
String
lpValue,
String
lpFormat,;
String
@lpCurrencyStr,;
Integer
cchCurrency
cBuffer = Replicate(Chr(0),255)
=GetCurrencyFormat(0,0,[5.32],0,@cBuffer,255)
Buffer =
Chrtran(cBuffer,
Chr(0),[])
Messagebox(cBuffer)
Dimension aDatos[10,1]
aDatos[1]
=
"UNO"
aDatos[2]
=
"DOS"
aDatos[3]
=
"TRES"
aDatos[4]
=
"CUATRO"
aDatos[5]
=
"....."
aDatos[6]
=
"DDDDDD"
aDatos[7]
=
"RRRRRR"
aDatos[8]
=
"HHHHHH"
aDatos[9]
=
"....."
aDatos[10]
=
"FFFFFF"
Create Cursor MisDatos (Txt C(12))
Append From Array aDatos
Browse
Public oform1, oForm2
oform1=Newobject("Form1")
oform1.Show
Return
Define Class Form1
As Form
DoCreate = .T.
Caption
=
"Formularios Anclables"
Dockable
= 1
Name
=
"Form1"
Add Object
command1
As CommandButton
;
With Top
= 73, ;
Left
= 103, ;
Height
= 27, ;
Width
= 140, ;
Caption
=
"Mostrar From anclado",
;
Name
=
"Command1"
Procedure
command1.Click
oForm2 =
Newobject([Form2])
oForm2.Show()
oForm2.Dock(4,
Thisform)
EndProc
EndDefine
Define Class Form2
As Form
DoCreate = .T.
Caption
=
"Otro formulario"
Dockable
= 1
Name
=
"Form2"
Add Object
edit1
As EditBox With
;
Height
= 152, ;
Left
= 136, ;
Top
= 29, ;
Width
= 155, ;
Name
=
"Edit1"
EndDefine
oCat = CreateObject("ADOX.Catalog")
oTab = CreateObject("ADOX.Table")
cRutaDB = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ ;
"Data Source=C:\BaseDatos.mdb;"
* Abro el catálogo
oCat.ActiveConnection = cRuta
* Creo la nueva tabla
With oTab
.Name
=
"Tabla Vinculada de dBASE"
.ParentCatalog = oCat
EndWith
* Establezco las propiedades para crear el vínculo con el archivo de dBASE
With oTab
* Indicamos
solamente la carpeta donde se encuentra la tabla
.Properties("Jet
OLEDB:Link Datasource") =
"C:\"
.Properties("Jet
OLEDB:Remote Table Name") =
"vacunas#dbf"
.Properties("Jet
OLEDB:Create Link") = .T.
.Properties("Jet
OLEDB:Link Provider String") =
"dBASE 5.0;"
EndWith
* Añado la tabla a la colección Tables
oCat.Tables.Append(oTbl)
oCat = Null
=MessageBox("Se
ha vinculado correctamente el archivo.")
En el siguiente ejemplo el MessageBox se reemplazará por el Wait Window
#
Define Messagebox NoMsg=
Messagebox("Esto es un mensaje")Procedure
NoMsg(x,y,z)
Y si deseas que no muestre nada sólo quita el Wait Window y listo.
Otro ejemplo; en este vamos hacer que la función ALLTRIM convierta enseguida a mayúsculas
#
Define Alltrim MiAlltrim?
Alltrim(" Esto es un mensaje ")Procedure
MiAlltrim(cTxt)Tengamos en cuenta que dentro del procedimiento no podemos volver a llamar a la función ALLTRIM puesto que se presentaría un llamado recursivo a la misma función (MiAlltrim) a menos que utilice #Undefine Alltrim antes del RETURN.
Otro ejemplo básico, vamos a evitar que se utilice la función VAL
#
Define Val NoxVal?
Val("10")Procedure
NoxVal(cTxt)Bueno, puede hacer muchas cosas, sólo es cuestión de imaginación y necesidades