Dialogo exactamente debajo de un get

Post Reply
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Dialogo exactamente debajo de un get

Post by leandro »

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

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 ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Dialogo exactamente debajo de un get

Post by karinha »

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
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Dialogo exactamente debajo de un get

Post by cnavarro »

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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: Dialogo exactamente debajo de un get

Post by armando.lagunas »

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

                   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
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Dialogo exactamente debajo de un get

Post by leandro »

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

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 ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Dialogo exactamente debajo de un get

Post by leandro »

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

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 ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Dialogo exactamente debajo de un get

Post by cnavarro »

C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Dialogo exactamente debajo de un get

Post by Armando »

Leandro:

Yo lo defino así

Code: Select all

    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
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Dialogo exactamente debajo de un get

Post by leandro »

muchas gracias Armando :D
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Dialogo exactamente debajo de un get

Post by joseluisysturiz »

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
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: Dialogo exactamente debajo de un get

Post by armando.lagunas »

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

//--- 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


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!
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Dialogo exactamente debajo de un get

Post by joseluisysturiz »

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: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Dialogo exactamente debajo de un get

Post by joseluisysturiz »

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

http://forums.fivetechsupport.com/viewt ... 27#p224921
Dios no está muerto...

Gracias a mi Dios ante todo!
Post Reply