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 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
mantonio_08,
la sentencia:
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.
#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#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#undef __MYCONSTANTE__ //prueba comentanto y compilando, y luego des-comentando y compilando
..
#ifdef __MYCONSTANTE__
procedure Proc01()
聽 聽?procname()
return
#else
procedure Proc02()
聽 聽?procname()
return
#endifMUCHAS 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.
mantonio_08 wrote:esto quiere decir que ::SendMsg( WM_SETICON, 0, oIcon:hIcon ) solo se ejecutara si oIcon no es un nil..
if oIcon != nil
::SendMsg( WM_SETICON, 0, oIcon:hIcon )
endifmantonio_08 wrote:y no me digan para mantener la compatibilidad con versiones anteriores...
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
MASTER ANTONIO
HICE EL CAMBIO COMO INDICASTE Y NO FUNCIONA... que podra ser..
Hola compa帽ero,
Si nos pones un ejemplo autocontenido nos ser谩 m谩s f谩cil poder ayudarte.
Un saludo
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..
En la ventana principal usas la clausula MDI ?
Porque tienes comentado // MDICHILD al crear la hija ?
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 usas MDI en la principal, entonces en las hijas tienes que usar MDICHILD