En este procedimiento se muestra como poner Menú Contextual a Botones.
PROCEDURE MAIN()
DEFINE WINDOW Win_CC ;
AT 0,0;
WIDTH 100 ;
HEIGHT 200 ;
TITLE "Boton Contextual";
MODAL
@ 50, 10 BUTTONEX Btn_Grapics PICTURE "pie16" WIDTH 30 HEIGHT 25 ACTION ShowBtn_Graps_DropDownMenu() SIZE 10 TOOLTIP "Graficas"
DEFINE CONTEXT MENU CONTROL Btn_Grapics
MENUITEM "Grafica Tipo 1" ACTION PCCTool_Grap(1)
MENUITEM "Grafica Tipo 2" ACTION PCCTool_Grap(2)
MENUITEM "Grafica Tipo 3" ACTION PCCTool_Grap(3)
END MENU
//Pega el menu contextual al Boton
Btn_1_DropMenuHandle := _HMG_xContextMenuHandle
END WINDOWS
WIN_CC Center
WIN_CC Activate
RETURN
*----------------------------------------------------------------------------
PROCEDURE ShowBtn_Graps_DropDownMenu()
LOCAL aPos:={0,0,0,0}
// get SCREEN (no window) position of Button_1
GetWindowRect( GetControlHandle( "Btn_Grapics", "Win_CC" ), aPos )
TrackPopupMenu( Btn_1_DropMenuHandle, aPos[1], aPos[2] + Win_CC.Btn_Grapics.Height, GetFormHandle( "Win_CC" ) )
RETURN
*----------------------------------------------------------------------------
PROCEDURE PCCTool_Grap(mTipoGrap)
// Funcion que hace graficas
RETURN
Harbour MiniGUI Ideas
Ideas para desarrollo de aplicaciones con MiniGUI.
miércoles, 10 de octubre de 2018
lunes, 26 de enero de 2015
TAMAÑO DE UN TEXTO
Para conocer la longitud en pixels de un texto:
/*
_HMG_DefaultFontName : Fuente que se esta utilizando
_HMG_DefaultFontSize : Tamaño de la fuente que se esta utilizanod
*/
nFontHandle := _SetFont (NIL, _HMG_DefaultFontName ,_HMG_DefaultFontSize,.F.,.F.,.F.,.F.)
nTextWidth:= GetTextWidth( NIL , "Este es el TEXTO a medir", nFontHandle )
nTextWidth, es la longitud en Pixels
/*
_HMG_DefaultFontName : Fuente que se esta utilizando
_HMG_DefaultFontSize : Tamaño de la fuente que se esta utilizanod
*/
nFontHandle := _SetFont (NIL, _HMG_DefaultFontName ,_HMG_DefaultFontSize,.F.,.F.,.F.,.F.)
nTextWidth:= GetTextWidth( NIL , "Este es el TEXTO a medir", nFontHandle )
nTextWidth, es la longitud en Pixels
CONOCER SI UN CONTROL ESTA DEFINIDO
Para conocer si un formulario esta definido utlizamos _IsWindowDefined(cNombreDelFormulario)
esto retorna .T. o .F.
Para conocer si un control esta Definido _IsControlDefined(cNombreDelControl,cNombredelFormulario)
esto retorna .T. o .F.
Para conocer que control tiene el Foco ThisWindows.FocusedControl
esto retorna cNombreDelControl
esto retorna .T. o .F.
Para conocer si un control esta Definido _IsControlDefined(cNombreDelControl,cNombredelFormulario)
esto retorna .T. o .F.
Para conocer que control tiene el Foco ThisWindows.FocusedControl
esto retorna cNombreDelControl
jueves, 22 de marzo de 2012
Calcular Tamaño del Texto
cFontEnUso := _HMG_DefaultFontName
nFontSizeEnUso := _HMG_DefaultFontSize
nFontHandle := _SetFont (NIL, HMG_DefaultFontName, nFontSizeEnUso,.F.,.F.,.F.,.F.)
// Retorna el tamaño del texto en pixels
nTexWidth := GetTextWidth( NIL , "mi texto" , nFontHandle )
nFontSizeEnUso := _HMG_DefaultFontSize
nFontHandle := _SetFont (NIL, HMG_DefaultFontName, nFontSizeEnUso,.F.,.F.,.F.,.F.)
// Retorna el tamaño del texto en pixels
nTexWidth := GetTextWidth( NIL , "mi texto" , nFontHandle )
lunes, 27 de septiembre de 2010
Crear Accesos directos
Este es un Ejemplo de Como podemos Crear accesos directos para nuestra aplicaciones.
olnk:=CreateObject("WScript.Shell")
//Creación del objeto tipo shell
strDesktop :=olnk:SpecialFolders():Item("Startup")
//Retorna la dirección en donde se encontrara el acceso directo
---------- Paramestros para ITem()
AllUsersDesktop: Dirección del escritorio de Todos los Usuario
AllUsersStartMenu: Dirección de Menú Principal de Todos los Usuarios
AllUsersPrograms: Dirección de Todos los Programas de Todos los Usuarios
AllUsersStartup: Dirección de Todos los Programas Inicio de Todos los Usuarios
Desktop: Dirección del escritorio de usuario actual
Favorites: Dirección de Favoritos del Usuario actual
Fonts: Dirección de Instalación de Fonts del sistema
MyDocuments: Directorio Mis Documentos de Usuario actual
NetHood: Objects that appear in Network Neighborhood
PrintHood: Printer links
Recent: Shortcuts to current users recently opened documents
SendTo: Shortcuts to applications that show up as possible send-to targets when a user right-clicks on a file in Windows Explorer
StartMenu: Shortcuts that appear in the current users start menu
Startup: Shortcuts to applications that run automatically when the current user logs on to the system
Templates: Application template files specific to the current user */
----------
strPath := olnk:ExpandEnvironmentStrings("C:\MyFolder\MyExe.EXE")
//indica la ubicación de nuestra aplicación
oShellLink:=olnk:CreateShortcut(strDesktop + "\acceso directo a MyExe.lnk")
//Crea el acceso directo
oShellLink:TargetPath := strPath
// Asigna el destino
//-------------Esto no es indispensable-----------
oShellLink:WindowStyle := 1
// Estilo de ventana
oShellLink:IconLocation := "C:\myFolder\MyExe.EXE, 0"
//Ubucacion de Icono asocias. Si los iconos están incluidos debe de ponerse "myexe.exe, 0" 0 es la posicion del icono
oShellLink:Description := "Descripcion del Acceso"
oShellLink:WorkingDirectory := "C:\myFolder\"
Direccion de Trabajo
//----------------------------------------------------------
oShellLink:Save()
// Guardar el Acceso deirecto.
RETURN
/*
NuevoObjShell :=CreateObject("WScript.Shell") // Crea un Objeto Sherll
DirectorioDestino :=NuevoObjShell:SpecialFolders():Item("Startup") // Retorna la direccion solicitada en Item(Ver Referencia)
UbicacionDelEjecutable :=NuevoObjShell:ExpandEnvironmentStrings("C:\Directorio\Ejecutable.EXE")
NuevoObjShortCut :=NuevoObjShell:CreateShortcut(DirectorioDestino + "\Nombre del Acceso.lnk")
NuevoObjShortCut:TargetPath:=UbicacionDelEjecutable
//-------------Esto no es indispensable-----------
NuevoObjShortCut:WindowStyle := 1
NuevoObjShortCut:IconLocation := "C:\Directorio\miicon.ico" // Si los iconos estan incluidos debe de ponerse "c:\Directorio\Ejecutable.exe, 0" 0 es la posicion del icono
NuevoObjShortCut:Description := "Compatibiliadad para impresoras"
NuevoObjShortCut:WorkingDirectory := "C:\Directorio\"
//----------------------------------------------------------
NuevoObjShortCut:Save()
Referencia de SpecialFolders():Item("Startup")
olnk:=CreateObject("WScript.Shell")
//Creación del objeto tipo shell
strDesktop :=olnk:SpecialFolders():Item("Startup")
//Retorna la dirección en donde se encontrara el acceso directo
---------- Paramestros para ITem()
AllUsersDesktop: Dirección del escritorio de Todos los Usuario
AllUsersStartMenu: Dirección de Menú Principal de Todos los Usuarios
AllUsersPrograms: Dirección de Todos los Programas de Todos los Usuarios
AllUsersStartup: Dirección de Todos los Programas Inicio de Todos los Usuarios
Desktop: Dirección del escritorio de usuario actual
Favorites: Dirección de Favoritos del Usuario actual
Fonts: Dirección de Instalación de Fonts del sistema
MyDocuments: Directorio Mis Documentos de Usuario actual
NetHood: Objects that appear in Network Neighborhood
PrintHood: Printer links
Recent: Shortcuts to current users recently opened documents
SendTo: Shortcuts to applications that show up as possible send-to targets when a user right-clicks on a file in Windows Explorer
StartMenu: Shortcuts that appear in the current users start menu
Startup: Shortcuts to applications that run automatically when the current user logs on to the system
Templates: Application template files specific to the current user */
----------
strPath := olnk:ExpandEnvironmentStrings("C:\MyFolder\MyExe.EXE")
//indica la ubicación de nuestra aplicación
oShellLink:=olnk:CreateShortcut(strDesktop + "\acceso directo a MyExe.lnk")
//Crea el acceso directo
oShellLink:TargetPath := strPath
// Asigna el destino
//-------------Esto no es indispensable-----------
oShellLink:WindowStyle := 1
// Estilo de ventana
oShellLink:IconLocation := "C:\myFolder\MyExe.EXE, 0"
//Ubucacion de Icono asocias. Si los iconos están incluidos debe de ponerse "myexe.exe, 0" 0 es la posicion del icono
oShellLink:Description := "Descripcion del Acceso"
oShellLink:WorkingDirectory := "C:\myFolder\"
Direccion de Trabajo
//----------------------------------------------------------
oShellLink:Save()
// Guardar el Acceso deirecto.
RETURN
/*
NuevoObjShell :=CreateObject("WScript.Shell") // Crea un Objeto Sherll
DirectorioDestino :=NuevoObjShell:SpecialFolders():Item("Startup") // Retorna la direccion solicitada en Item(Ver Referencia)
UbicacionDelEjecutable :=NuevoObjShell:ExpandEnvironmentStrings("C:\Directorio\Ejecutable.EXE")
NuevoObjShortCut :=NuevoObjShell:CreateShortcut(DirectorioDestino + "\Nombre del Acceso.lnk")
NuevoObjShortCut:TargetPath:=UbicacionDelEjecutable
//-------------Esto no es indispensable-----------
NuevoObjShortCut:WindowStyle := 1
NuevoObjShortCut:IconLocation := "C:\Directorio\miicon.ico" // Si los iconos estan incluidos debe de ponerse "c:\Directorio\Ejecutable.exe, 0" 0 es la posicion del icono
NuevoObjShortCut:Description := "Compatibiliadad para impresoras"
NuevoObjShortCut:WorkingDirectory := "C:\Directorio\"
//----------------------------------------------------------
NuevoObjShortCut:Save()
Referencia de SpecialFolders():Item("Startup")
llamar varias funciones/procedimientos desde el mismo control
Algunas veces, según las circunstancias, necesitamos llamar a distintas funciones o procedimientos desde un mismo control. este ejemplo ilustra cómo podemos realizar realizarlo.
#include "minigui.ch"
Function Main Local
mNumFunc:= 1
PRIVATE maFunction
maFunction:= {{ || mYProy1()},{ || mYProy2()}}
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 550 ;
HEIGHT 400 ;
TITLE 'Hello World!' ;
MAIN DEFINE MAIN MENU
DEFINE POPUP 'Test'
MENUITEM 'Llamar a la función' ACTION EVAL(maFunction[mNumFunc])
MENUITEM 'Cambiar el Numero de Funcion' ACTION mYProy3(@mNumFunc)
END POPUP
END MENU
@ 10,25 BUTTONEX Btx_Test CAPTION "Test" WIDTH 100 HEIGHT 25 ACTION EVAL(maFunction[mNumFunc])
END WINDOW
Form_1.Center
Form_1.Activate Return Nil
*----------
Procedure mYProy1()
msgbox("myProy1")
RETURN
*----------
Procedure mYProy2()
msgbox("myProy2")
RETURN
*----------
Procedure mYProy3(mNumFunc)
// Solo debemos de cambiar el numero de posición enel vector.
mNumFunc:= IF(mNumFunc = 1,2,1)
RETURN
#include "minigui.ch"
Function Main Local
mNumFunc:= 1
PRIVATE maFunction
maFunction:= {{ || mYProy1()},{ || mYProy2()}}
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 550 ;
HEIGHT 400 ;
TITLE 'Hello World!' ;
MAIN DEFINE MAIN MENU
DEFINE POPUP 'Test'
MENUITEM 'Llamar a la función' ACTION EVAL(maFunction[mNumFunc])
MENUITEM 'Cambiar el Numero de Funcion' ACTION mYProy3(@mNumFunc)
END POPUP
END MENU
@ 10,25 BUTTONEX Btx_Test CAPTION "Test" WIDTH 100 HEIGHT 25 ACTION EVAL(maFunction[mNumFunc])
END WINDOW
Form_1.Center
Form_1.Activate Return Nil
*----------
Procedure mYProy1()
msgbox("myProy1")
RETURN
*----------
Procedure mYProy2()
msgbox("myProy2")
RETURN
*----------
Procedure mYProy3(mNumFunc)
// Solo debemos de cambiar el numero de posición enel vector.
mNumFunc:= IF(mNumFunc = 1,2,1)
RETURN
miércoles, 22 de septiembre de 2010
Funcion STOD()
Sabemos que para ordenamientos de datos, utilizamos la función DTOS, para cambiar de fechas 30/01/9999 a 99990130. Ahora contamos la la función STOD que revierte este cambio Ej.
mdDato:= DATE() //30/01/9999
mdDato:= DTOS(mdDato) //99990130
mdDato:= STOD(mdDato) //30/01/9999
mdDato:= DATE() //30/01/9999
mdDato:= DTOS(mdDato) //99990130
mdDato:= STOD(mdDato) //30/01/9999
Suscribirse a:
Comentarios (Atom)