Dialogo exactamente debajo de un get

Dialogo exactamente debajo de un get

Postby leandro » Fri Aug 09, 2019 5:54 pm

Buenas tardes para todos...

Como dice el encabezado, requiero que un dialogo se pinte exactamente debajo de un get... intente de la siguiente manera pero no funciona.
Code: Select all  Expand view  RUN
FUNCTION coordenadas(oDlg, oObjt)
local nTopR, nLeftR

nTopR     := oObjt:nTop      
nLeftR    := oObjt:nLeft
nAltura   := oObjt:nHeight

DEFINE DIALOG oDlgInf RESOURCE "ORFACT2" OF oDlg

ACTIVATE DIALOG oDlgInf ON INIT oDlgInf:Move(nTopR+nAltura,nLeftR)  
Return nil

Quiero que salga como muestra la linea roja

Image
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Dialogo exactamente debajo de un get

Postby karinha » Fri Aug 09, 2019 6:10 pm

Yo haria directamente por el editor de recursos WS e no usaria el CENTERED en el ACTIVATE DIALOG.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7848
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Dialogo exactamente debajo de un get

Postby cnavarro » Fri Aug 09, 2019 6:14 pm

Creo que por ejemplo si miras en .\source\function\xbrgetdt.prg puedes tener un buen ejemplo de ubicacion de lo que necesitas en la function XbrGetDate
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Dialogo exactamente debajo de un get

Postby armando.lagunas » Fri Aug 09, 2019 8:23 pm

Yo lo uso con una Window para hacer una búsqueda y retorna el código del seleccionado


como se ve:

Image



como lo utilizo y las funciones involucradas:
Code: Select all  Expand view  RUN

                   REDEFINE  GET oGet VAR cCodSag PICTURE "99999" ID 60 FONT oFont OF oDlg
                   ...
                   ...
                   REDEFINE SBUTTON  ID 47 FILENAME "Search.bmp" OF oDlg ACTION Seek_Productor(oGet,400,150 ) TOOLTIP {"Buscar productor...","Busqueda"}
                   ...
                   ...

//-------------------------------------------------------------------------

STATIC FUNCTION Seek_Productor( oGet, nWidth, nHeight )
 LOCAL oWnd, vLbx, aPoint, cBus, xVal , bRestore, lNormal

 SELECT PA18  ;  __dbZap()                   ; DBAPPEND()
 PA18->NOMB   := "Busqueda por Rut...."      ; DBGOTOP()

    bRestore  := {|| IF( !lNormal, ( oGet:VarPut( xVal ), oGet:SetFocus() ), ), oWnd:End() }
    xVal      := oGet:VarGet()
    cBus      := ""
    lNormal   := .F.
    aPoint    := AdjustWnd( oGet, nWidth, nHeight )

    DEFINE WINDOW oWnd FROM aPoint[1] + 1, aPoint[2] TO aPoint[1] + nHeight, aPoint[2] + nWidth pixel STYLE  nOR( DS_MODALFRAME, WS_POPUP, WS_BORDER )
       @ 0, 0 LISTBOX vLbx  FIELDS PA18->RUTT,PA18->CODI, PA18->NOMB ;
                            HEADER "Rut","Código","Nombre" ALIAS "PA18" FIELDSIZES 70,40,300  SIZE  nWidth,nHeight OF oWnd  ;
                            COLOR CLR_BUSCAR                                                                     ;
                            FONT oApp:aWFont[23] PIXEL ON CHANGE   ( oGet:VarPut( PA18->CODI ), oGet:refresh())  ;
                                                      ON DBLCLICK ( oGet:VarPut( PA18->CODI ), oGet:refresh(), oGet:SetFocus(), oWnd:End() )

       vLbx:bKeyChar   := { |nkey, nFlags| IF(nKey >= 32,(cBus += CHR(nKey)  , BuscarProductor( vLbx, cBus )),),IF(nKey = 8, (cBus := LEFT(cBus,LEN(cBus)-1), BuscarProductor( vLbx, cBus )),) }
       vLbx:bLostFocus := {|| ( oGet:VarPut( PA18->CODI ), oGet:refresh()    , oGet:SetFocus() ) }
       vLbx:bKeyDown   := {|nKey| IF( nKey = 13, (lNormal := .T., eval( bRestore ) ), IF( nKey = 27, (lNormal := .T., eval( bRestore) ), ) ) }

    ACTIVATE WINDOW oWnd ON INIT ( SetTransparent( oWnd, 231 ), oWnd:bLostFocus := {|| oWnd:bLostFocus := nil, eval( bRestore ) } , vLbx:Refresh() ) VALID ( lNormal := .T. )

 RETURN Nil

//-------------------------------------------------------------------------
*
* yo utilizo tOdbcDirect para extraer datos de la DB SQLServer y el Metodo oDbf:Query_All() es propio
* pero básicamente extrae el codigo,rut y el nombre del productor.
*
STATIC FUNCTION BuscarProductor( vLbx, cBus )
 LOCAL oDbf, n
 
 SELECT PA18         ;  __dbZap()

 oDbf:= oApp:oConnect:Query("SELECT TOP 100 PR_Codigo_PK, PR_Rut_PK, PR_Nombre FROM CGE_Productores WHERE PR_Rut_PK LIKE '"+cBus+"%' ORDER BY PR_Rut_PK")
 oDbf:Query_All()
 For n := 1 TO oDbf:nRecord
    SELECT PA18      ;  dbAppend()
    PA18->CODI  := oDbf:aDataAll[n][ 1]
    PA18->RUTT  := oDbf:aDataAll[n][ 2]
    PA18->NOMB  := oDbf:aDataAll[n][ 3]
 Next                ; oDbf:End()
 SELECT PA18         ; DBGOTOP()
 vLbx:UpStable()
 vLbx:Refresh()

 RETURN .T.

//-------------------------------------------------------------------------

 


Espero de que te sirva como ejemplo.

Saludos
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Dialogo exactamente debajo de un get

Postby leandro » Fri Aug 09, 2019 8:29 pm

Gracias por el dato Cristobal...

Armando, exactamente eso es lo que busco hacer, solo que voy a crear el diálogo desde recursos.

Muchas gracias a los dos por su ayuda, Asi quedo el código:
Code: Select all  Expand view  RUN

FUNCTION coordenadas(oDlg, oGet)
local nTopR, nLeftR, nAltura
local aPoint

nTopR     := oGet:nTop      
nLeftR    := oGet:nLeft
nAltura   := oGet:nHeight

aPoint := { nTopR+nAltura, nLeftR }
aPoint = ClientToScreen( oDlg:hWnd, aPoint )

DEFINE DIALOG oDlgInf RESOURCE "ORFACT2" OF oDlg
   
    REDEFINE BUTTON oBtn ID 4001 OF oDlgInf ACTION oDlgInf:end()
ACTIVATE DIALOG oDlgInf ON INIT oDlgInf:SetPos( aPoint[ 1 ], aPoint[ 2 ] )
Return nil
 


Image
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Dialogo exactamente debajo de un get

Postby leandro » Fri Aug 09, 2019 8:35 pm

Armando me surge una pregunta mas....

Como hago para colocarle algo de transparencia al dialogo?, puse la clausula SetTransparent( oDlgInf, 500 ), pero no funciona.

Code: Select all  Expand view  RUN
DEFINE DIALOG oDlgInf RESOURCE "ORFACT2" OF oDlg
   
    REDEFINE BUTTON vbot20 ID 4001 OF oDlgInf ACTION oDlgInf:end()
ACTIVATE DIALOG oDlgInf ON INIT (SetTransparent( oDlgInf, 500 ),oDlgInf:SetPos( aPoint[ 1 ], aPoint[ 2 ] ) )


Sabes que debo hacer?, debo cambiar alguna propiedad al dialogo?
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Dialogo exactamente debajo de un get

Postby cnavarro » Fri Aug 09, 2019 8:57 pm

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Dialogo exactamente debajo de un get

Postby Armando » Fri Aug 09, 2019 9:10 pm

Leandro:

Yo lo defino así

Code: Select all  Expand view  RUN

    DEFINE DIALOG oDlg RESOURCE "QryTrf" OF oWindow ICON oIcono FONT oFont;
        BRUSH oBrush TRANSPARENT TITLE "Crear archivo intermedio para timbrar CFDIs v 1.0M54"

        oDlg:nOpacity    := 250 // Entre mas alto el valor es menos transparente (Más opaco)
….
….
 


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Dialogo exactamente debajo de un get

Postby leandro » Sat Aug 10, 2019 12:38 am

muchas gracias Armando :D
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Dialogo exactamente debajo de un get

Postby joseluisysturiz » Sat Aug 10, 2019 12:40 am

Para Armando Laguna...Disculpen que me coleer en este tema, queria preguntarle Armando Laguna si por casualidad tendra un sample de como imprimir con TGRAPH en una misma hora un grafico y a su ves un browse con la data que se grafica, vi algunos de tus temas de grafica y debo felicitarte por tus juegos de colores y disenos...y veo que has manejado bastante lo de grafica con TGraph, bastante agradecido de antemano..si lo deseas mi correo es joseluisysturiz@yahoo.com, espero sugerencia e ideas, gracias.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Dialogo exactamente debajo de un get

Postby armando.lagunas » Mon Aug 12, 2019 3:54 pm

Jose Luis:

no entiendo bien, pero al imprimir un gráfico y los datos que construyen la gráfica yo lleno una dbf de paso con los resultados y al mismo tiempo el array que se asigna a la grafica lo hago asi:

Code: Select all  Expand view  RUN

//--- utilizo todbcdirect para obtener los datos de mi db sqlserver   "oDbf:Query_All()" es propia, pero basicamente solo obtengo los datos que necesito de una forma mas rápida

STATIC FUNCTION LlamarDatos( oBrw, oGraph  )
 LOCAL oDbf, n, nTot, aTemAct, aTemVis, aTempX

 aTemAct         :=  {}                            ;   aTempX       := {}
 aTemVis         :=  {}                            ;   nTot         := {0,0,0}
 oGraph:aSeries  :=  {}                            ;   oGraph:aData := {}
 SELECT PA12          ;   __dbZap()

  oDbf := oApp:oConnect:Query("SELECT Convert( VarChar, TE_Fecha, 103 ), TE_Temperatura_Camara, TE_Temperatura_Visor, TE_Camara, TE_Estado, TE_Camara_FK FROM CGE_Temperaturas_Camara WHERE TE_Camara='"+SUBSTR(cCamara, 1, 2)+"' AND TE_Temperatura_Camara <> '0' AND YEAR(TE_Fecha)='"+cAnoEs+"' ")
  oDbf:Query_All()
 IF oDbf:nRecord > 0
    For n := 1 TO oDbf:nRecord
        SELECT PA12   ;   dbAppend()
        PA12->FECH := CTOD(oDbf:aDataAll[n][ 1])        ;       PA12->TCAM := oDbf:aDataAll[n][ 2]
        PA12->TCON := oDbf:aDataAll[n][ 3]              ;       PA12->CCAM := oDbf:aDataAll[n][ 4]
        PA12->ESTA := oDbf:aDataAll[n][ 5]              ;       PA12->CAMA := oDbf:aDataAll[n][ 6]
        PA12->TOTA := IF(PA12->TCON = 0, PA12->TCAM, ( ( PA12->TCAM + PA12->TCON ) / 2 ) )
        AADD( aTemAct ,  PA12->TCAM )                   ;       AADD( aTempX, "·" )
        AADD( aTemVis ,  PA12->TOTA )
    Next              ;  oDbf:End()
 ENDIF

 SELECT PA12
 dbGotop()

 oGraph:aSeries := { { " T° Real", nRGB(200, 68, 10) , , } , { " ~x Prm", nRGB( 34,177, 76 ), , } }
 oGraph:aData   := { aTemAct , aTemVis }
 oGraph:SetYVals(  aTempX  )
 oGraph:Refresh()
 oBrw:Refresh()                 ;   oBrw:MakeTotals()   ;   oBrw:Gotop()      ;  oBrw:SetFocus()

 RETURN .T.


 


al imprimir uso un simple reporte

Code: Select all  Expand view  RUN


STATIC FUNCTION ImprimeTemperatura( oGraph )
 LOCAL oRpt, oFont[3], oPrn, aPos, aSiz, nContador

 SET 3DLOOK OFF
 PRINTER oPrn PREVIEW

 IF EMPTY( oPrn:hDC )
     RETURN NIL
 ENDIF

 aPos:=oPrn:Cmtr2Pix(1.0,12.5)
 aSiz:=oPrn:Cmtr2Pix(9.0, 5.0)

 oPrn:SetPage( 1 )   // 1=Papel Letter 8 1/2 x 11 in / 9=A4 210 x 297 mm

 oPrn:cDocument := "Temperaturas registradas"
 nContador      := 0

 DEFINE FONT  oFont[1] NAME "Roboto"      SIZE 0,-10
 DEFINE FONT  oFont[2] NAME "Roboto"     SIZE 0,-12  BOLD
 DEFINE FONT  oFont[3] NAME "Roboto"    SIZE 0,-6

 SELECT PA12 ; DBGOTOP()

 REPORT oRpt TITLE  " "," "," "," "," ","TEMPERATURAS REGISTRADAS EN "+cCamara,"HISTORICO POR TEMPORADA"," "," "," " LEFT ;
    HEADER oGraph:Print(oPrn,aPos[1],aPos[2],aSiz[1],aSiz[2]), oApp:cEmpresa, oApp:cDireccion, oApp:cCiudad, oApp:cTelefono   ;
    FOOTER ALLTRIM(oApp:cSigEmp)+" "+oApp:cRut+" Página Nro : "+STR(oRpt:nPage,3,0)+" ( Fecha :"+DTOC(ServerDate())+" Hora : "+SUBSTR(ServerTime(),1,5)+" )",__MAIN+" "+__VERSION+oApp:cVersion+" Proc.: ["+MAINPRO+" ver."+VERSIONPRO+"]" CENTER ;
    FONT  oFont[1], oFont[2], oFont[3]                                   ;
    TO DEVICE oPrn

    GROUP ON PA12->ID     HEADER  "Grados Celcius (°C)" FOOTER "End of File"                     FONT 2

    COLUMN TITLE "Fecha"          ,"de Registro"      DATA  PA12->FECH                           FONT 1 SIZE  20
    COLUMN TITLE " "              ,"Estado"           DATA  PA12->ESTA                           FONT 1 SIZE  45
    COLUMN TITLE " "              ,"Registro"         DATA  PA12->TCON PICTURE "@E 9999.99"      FONT 1 SIZE  12 CENTER GRID
    COLUMN TITLE " "              ,"Visor"            DATA  PA12->TCAM PICTURE "@E 9999.99"      FONT 1 SIZE  12 CENTER GRID
    COLUMN TITLE " "              ,"Promedio"         DATA  PA12->TOTA PICTURE "@E 9999.99"      FONT 1 SIZE  12 CENTER GRID

 END REPORT

 IF oRpt:lCreated
       oApp:SetReportStandard ( oRpt )
       oRpt:bStartRecord       := {|| IIF( nContador = oApp:nConSep, ( oRpt:NewLine(), oRpt:Separator(), nContador := 1 ), ++nContador ) }
       oRpt:oTitle:aFont [6]   := {|| 2 }
       oRpt:oFooter:aFont[2]   := {|| 3 }
       oRpt:Stabilize()
 ENDIF

 ACTIVATE REPORT oRpt ON STARTGROUP oRpt:NewLine() ON ENDGROUP oRpt:NewLine()

 AEval( oFont, {|e| IIF(e!=Nil, e:End(), Nil )} )

 SELECT PA12 ; DBGOTOP()

 RETURN Nil


 


resultado:

Image

saludos!
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Dialogo exactamente debajo de un get

Postby joseluisysturiz » Mon Aug 12, 2019 7:00 pm

A.Laguna, ya creo vi lo que me hacia falta, lo que no tenia idea era como agregar la grafica en el reporte, pero creo que esto es lo que necesitaba

HEADER oGraph:Print(oPrn,aPos[1],aPos[2],aSiz[1],aSiz[2])

la parte de los datos para generar la grafica no tengo problemas ya que creo un xbrowse con un array al igual que tu, voy a guiarme por tu ejemplo y cualquier duda comento, saludos, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Dialogo exactamente debajo de un get

Postby joseluisysturiz » Tue Aug 13, 2019 1:41 am

En relacion al tema de la grafica que le pregunte a Armando Laguna, he logrado esto, gracias... :shock:

viewtopic.php?f=6&t=37627#p224921
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 51 guests