MASTER ANTONIO
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
MASTER ANTONIO
en la clase TWindow
en metodo NEW, se encuentra esta linea.
#ifdef __CLIPPER__
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
#endif
a que se refiere el Ifdef --- y porque
en metodo NEW, se encuentra esta linea.
#ifdef __CLIPPER__
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
#endif
a que se refiere el Ifdef --- y porque
Re: MASTER ANTONIO
mantonio_08,
la sentencia:
#ifdef
#endif
Se usa para que cuando generes un Ejecutable o Libreria se tomen los codigos que corresponda a Clipper, xHarbour, Harbour, xBase segun el caso, determinas que se incluye cuando compiles con las herramientas mencionadas.
la sentencia:
#ifdef
#endif
Se usa para que cuando generes un Ejecutable o Libreria se tomen los codigos que corresponda a Clipper, xHarbour, Harbour, xBase segun el caso, determinas que se incluye cuando compiles con las herramientas mencionadas.
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: MASTER ANTONIO
se refiere a la compilación condicional
se usa
__CLIPPER__ para incluir codigo para clipper ( esta constante esta definida en alguna parte en clipper)
#define __CLIPPER__
__HARBOUR__ para incluir codigo para harbour
#define __HARBOUR__
__XHARBOUR__ para incluid codigo para xharbour
#define __XHARBOUR__
__XPP__ para incluid codigo para alaska xbase
#define __XPP__
este es un ejemplo propio de compilación condicional, lo uso para que cuando estoy desarrollando no tener que introducir los datos de usuario, sino que solamente doy enter y entro a la app.
inculso en [x]harbour existe #undef que sirve para borra una declaración de constante anteriormente definida
al compilar el procedimiento, según comentando o des-comentando la linea ( #undef __MYCONSTANTE__ )
veras que los procedimientos Proc01 o Proc02 Aparecen y desaparecen, esto es que son incluido en tiempo de compilación.
salu2
carlos vargas
Code: Select all
#ifdef CONSTANTE
//si CONSTANTE es verdadero lo contenido acá se compilara y formara parte del fuente
#else
//si CONSTANTE es false lo contenido acá se compilara y formara parte del fuente
#endif
__CLIPPER__ para incluir codigo para clipper ( esta constante esta definida en alguna parte en clipper)
#define __CLIPPER__
__HARBOUR__ para incluir codigo para harbour
#define __HARBOUR__
__XHARBOUR__ para incluid codigo para xharbour
#define __XHARBOUR__
__XPP__ para incluid codigo para alaska xbase
#define __XPP__
este es un ejemplo propio de compilación condicional, lo uso para que cuando estoy desarrollando no tener que introducir los datos de usuario, sino que solamente doy enter y entro a la app.
Code: Select all
#define FALSE .f.
#define __ADMIN__
#define __PRUEBA__
FUNCTION PermitirAcceso()
LOCAL lAcceso := FALSE
PRIVATE oDlg
PRIVATE oApodo, oContrasena
PRIVATE cApodo, cContrasena
nIntentos := 0
#ifdef __PRUEBA__
#ifdef __ADMIN__
cApodo := PadR( LOGIN_USERDEV, 10 )
cContrasena := PadR( LOGIN_PASSDEV, 10 )
#else
cApodo := PadR( "CIVS", 10 )
cContrasena := PadR( "lodr", 10 )
#endif
#else
cApodo := Space( 10 )
cContrasena := Space( 10 )
#endif
CIUD->( OrdSetFocus( "NUM_CIUD" ) )
USUA->( OrdSetFocus( "APODO" ) )
SELECT "USUA"
SET RELATION TO NUM_CIUD INTO CIUD
DBGoTop()
DEFINE DIALOG oDlg NAME "DLG_ACCESO" ICON GetIcon() FONT oFontD
REDEFINE BITMAP ;
ID 301 OF oDlg ;
NAME "BM_ACCESO"
REDEFINE GET oApodo VAR cApodo ;
ID 101 OF oDlg ;
PICTURE "@!" ;
UPDATE
REDEFINE GET oContrasena VAR cContrasena ;
ID 102 OF oDlg ;
PICTURE "@" ;
UPDATE
REDEFINE BUTTON ;
ID 201 OF oDlg ;
ACTION IIf( lAcceso := PermitirAcceso_Validar(), oDlg:end(), NIL )
REDEFINE BUTTON ;
ID 202 OF oDlg ;
ACTION oDlg:end() ;
CANCEL
ACTIVATE DIALOG oDlg ON INIT DisableX( oDlg )
LimpiarAreas()
RETURN lAcceso
inculso en [x]harbour existe #undef que sirve para borra una declaración de constante anteriormente definida
Code: Select all
#undef __MYCONSTANTE__ //prueba comentanto y compilando, y luego des-comentando y compilando
..
#ifdef __MYCONSTANTE__
procedure Proc01()
?procname()
return
#else
procedure Proc02()
?procname()
return
#endif
veras que los procedimientos Proc01 o Proc02 Aparecen y desaparecen, esto es que son incluido en tiempo de compilación.
salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Re: MASTER ANTONIO
MUCHAS GRACIAS MUY CLARA LA EXPLICACION
AHORA LA PREGUNTA DEL MILLON
en la clase twindow en el metodo new hay esta linea::
#ifdef __CLIPPER__
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
#endif
esto quiere decir que ::SendMsg( WM_SETICON, 0, oIcon:hIcon ) solo se ejecutara si oIcon no es un nil..
lo que no entiendo es pq solo en CLIPPER.. ??? alguien me lo explica.. y no me digan para mantener la compatibilidad con versiones anteriores...
porque esta linea me ha dado unos dolores de cabeza::
no deja mostrar en forma correcta los iconos en las ventanas emergentes.. o sea las que no son MDICHILDS pero son parte de un ventana padre.
AHORA LA PREGUNTA DEL MILLON
en la clase twindow en el metodo new hay esta linea::
#ifdef __CLIPPER__
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
#endif
esto quiere decir que ::SendMsg( WM_SETICON, 0, oIcon:hIcon ) solo se ejecutara si oIcon no es un nil..
lo que no entiendo es pq solo en CLIPPER.. ??? alguien me lo explica.. y no me digan para mantener la compatibilidad con versiones anteriores...
porque esta linea me ha dado unos dolores de cabeza::
no deja mostrar en forma correcta los iconos en las ventanas emergentes.. o sea las que no son MDICHILDS pero son parte de un ventana padre.
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: MASTER ANTONIO
Hola
si la constantes __CLIPPER__ esta definida
ahora, tienes un problema que piensas puede ser esa linea, publica el codigo que estas haciendo y lo que quieres hacer
No, se ejecuta el codigomantonio_08 wrote:esto quiere decir que ::SendMsg( WM_SETICON, 0, oIcon:hIcon ) solo se ejecutara si oIcon no es un nil..
Code: Select all
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
es para mantener compatibilidad con distintos compiladoresmantonio_08 wrote:y no me digan para mantener la compatibilidad con versiones anteriores...
ahora, tienes un problema que piensas puede ser esa linea, publica el codigo que estas haciendo y lo que quieres hacer
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Re: MASTER ANTONIO
aca el codigo:: tengo un clase TMain, en la cual defino un window padre asi::
//-------------------
METHOD WindowMain() CLASS TMain
Local This:=Self
Local oMenu
//
MENU oMenu
ENDMENU
//
SETBALLOON(.T.)
DEFINE WINDOW ::oWnd MDI MENU oMenu;
TITLE ::cTitulo PIXEL FROM 0, 0 TO Getsysmetrics(17), Getsysmetrics(16) BRUSH ::oBrushoWnd;
MENUINFO 0 ICON ::oIconoWnd
aca el ICON de la ventana se pinta OK..
luego en otra clase llamo a la ventana hija, pero flotante asi::
METHOD New(oWnd, oRbarMain) CLASS MantencionClientes
LOCAL This:=Self
LOCAL oDlg
LOCAL oIcon
LOCAL lValid:=.F.
::oWnd := oWnd
::oRbarMain:= oRbarMain
::Title:= ::oWnd:oMsgBar:cMsg
If( !::oIconoWnd = NIL, ::oIconoWnd:End(),)
DEFINE ICON ::oIconoWnd RESOURCE "oWnd"
DEFINE WINDOW ::oWndHija FROM 12,1 TO (Getsysmetrics(17)/16)-1, (Getsysmetrics(16)/8)-1;
VSCROLL OF ::oWnd ;
TITLE ::Title; // MDICHILD ;
ICON ::oIconoWnd ;
BORDER NONE
aqui el ICON no se pinta como debe pone uno standar de window.
OJO:: que no uso para la ventana hija, MDICHILD notece que esta comentado //
DANIEL
si comento esta linea de TWindow asi, funciona
//#ifdef __CLIPPER__
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
//#endif
//-------------------
METHOD WindowMain() CLASS TMain
Local This:=Self
Local oMenu
//
MENU oMenu
ENDMENU
//
SETBALLOON(.T.)
DEFINE WINDOW ::oWnd MDI MENU oMenu;
TITLE ::cTitulo PIXEL FROM 0, 0 TO Getsysmetrics(17), Getsysmetrics(16) BRUSH ::oBrushoWnd;
MENUINFO 0 ICON ::oIconoWnd
aca el ICON de la ventana se pinta OK..
luego en otra clase llamo a la ventana hija, pero flotante asi::
METHOD New(oWnd, oRbarMain) CLASS MantencionClientes
LOCAL This:=Self
LOCAL oDlg
LOCAL oIcon
LOCAL lValid:=.F.
::oWnd := oWnd
::oRbarMain:= oRbarMain
::Title:= ::oWnd:oMsgBar:cMsg
If( !::oIconoWnd = NIL, ::oIconoWnd:End(),)
DEFINE ICON ::oIconoWnd RESOURCE "oWnd"
DEFINE WINDOW ::oWndHija FROM 12,1 TO (Getsysmetrics(17)/16)-1, (Getsysmetrics(16)/8)-1;
VSCROLL OF ::oWnd ;
TITLE ::Title; // MDICHILD ;
ICON ::oIconoWnd ;
BORDER NONE
aqui el ICON no se pinta como debe pone uno standar de window.
OJO:: que no uso para la ventana hija, MDICHILD notece que esta comentado //
DANIEL
si comento esta linea de TWindow asi, funciona
//#ifdef __CLIPPER__
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endif
//#endif
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MASTER ANTONIO
Si vas a crear una ventana hija de una MDI, pero que no sea MDICHILD, tienes que cambiar a quien le pertenece:
DEFINE WINDOW ::oWndHija FROM 12,1 TO (Getsysmetrics(17)/16)-1, (Getsysmetrics(16)/8)-1;
VSCROLL OF ::oWnd:oWndClient ;
TITLE ::Title; // MDICHILD ;
ICON ::oIconoWnd ;
BORDER NONE
Ya que la ventana MDI contiene una ventana invisible (oWndClient) que controla a todas las ventanas hijas.
Tu ejemplo modificado asi, funciona correctamente con FWH 13.01 en Windows 8 (sin tener que hacer la modificación que indicas en la Clase TWindow)
DEFINE WINDOW ::oWndHija FROM 12,1 TO (Getsysmetrics(17)/16)-1, (Getsysmetrics(16)/8)-1;
VSCROLL OF ::oWnd:oWndClient ;
TITLE ::Title; // MDICHILD ;
ICON ::oIconoWnd ;
BORDER NONE
Ya que la ventana MDI contiene una ventana invisible (oWndClient) que controla a todas las ventanas hijas.
Tu ejemplo modificado asi, funciona correctamente con FWH 13.01 en Windows 8 (sin tener que hacer la modificación que indicas en la Clase TWindow)
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Re: MASTER ANTONIO
MASTER ANTONIO
HICE EL CAMBIO COMO INDICASTE Y NO FUNCIONA... que podra ser..
HICE EL CAMBIO COMO INDICASTE Y NO FUNCIONA... que podra ser..
- lucasdebeltran
- Posts: 1303
- Joined: Tue Jul 21, 2009 8:12 am
- Contact:
Re: MASTER ANTONIO
Hola compañero,
Si nos pones un ejemplo autocontenido nos será más fácil poder ayudarte.
Un saludo
Si nos pones un ejemplo autocontenido nos será más fácil poder ayudarte.
Un saludo
Muchas gracias. Many thanks.
Un saludo, Best regards,
Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]
Implementando MSVC 2010, FWH64 y ADO.
Abandonando uso xHarbour y SQLRDD.
Un saludo, Best regards,
Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]
Implementando MSVC 2010, FWH64 y ADO.
Abandonando uso xHarbour y SQLRDD.
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Re: MASTER ANTONIO
MASTER ANTONIO::
asi me funciona,,
DEFINE WINDOW ::oWndHija FROM 12,1 TO (Getsysmetrics(17)/16)-1, (Getsysmetrics(16)/8)-1;
VSCROLL OF ::oWnd;
TITLE ::Title; // MDICHILD ;
BORDER NONE NOMAXIMIZE
::oWndHija:SetIcon( ::oIconoWnd )
GRACIAS..
Ahora pq. no funciona de las otras tantas maneras que probe NOSE..
asi me funciona,,
DEFINE WINDOW ::oWndHija FROM 12,1 TO (Getsysmetrics(17)/16)-1, (Getsysmetrics(16)/8)-1;
VSCROLL OF ::oWnd;
TITLE ::Title; // MDICHILD ;
BORDER NONE NOMAXIMIZE
::oWndHija:SetIcon( ::oIconoWnd )
GRACIAS..
Ahora pq. no funciona de las otras tantas maneras que probe NOSE..
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MASTER ANTONIO
En la ventana principal usas la clausula MDI ?
Porque tienes comentado // MDICHILD al crear la hija ?
Porque tienes comentado // MDICHILD al crear la hija ?
-
- Posts: 330
- Joined: Fri May 25, 2007 9:06 pm
Re: MASTER ANTONIO
MASTER ANTONIO,
si, al crear la ventana padre uso MDI.. asi
DEFINE WINDOW ::oWnd MDI MENU oMenu;
TITLE ::cTitulo PIXEL FROM 0, 0 TO Getsysmetrics(17), Getsysmetrics(16) BRUSH ::oBrushoWnd;
MENUINFO 0 ICON ::oIconoWnd
afecta eso en algo lo que estoy haciendo..
si, al crear la ventana padre uso MDI.. asi
DEFINE WINDOW ::oWnd MDI MENU oMenu;
TITLE ::cTitulo PIXEL FROM 0, 0 TO Getsysmetrics(17), Getsysmetrics(16) BRUSH ::oBrushoWnd;
MENUINFO 0 ICON ::oIconoWnd
afecta eso en algo lo que estoy haciendo..
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MASTER ANTONIO
Si usas MDI en la principal, entonces en las hijas tienes que usar MDICHILD