Consulta sobre centrar un dialogo.
Posted:
Sun Jul 30, 2023 7:08 pm
by José Camilo
Buenas Tardes Foro!!
Necesito saber si es posible centrar un Dialogo de forma horizontal solamente.
De ser posible como seria?
Gracias
Re: Consulta sobre centrar un dialogo.
Posted:
Sun Jul 30, 2023 9:18 pm
by Antonio Linares
Estimado José,
Prueba así:
oDlg:Move( oDlg:nTop, ( WndWidth( GetDesktopWindow() ) / 2 ) - ( oDlg:nWidth / 2 ), oDlg:nWidth, oDlg:nHeight, .T. )
Re: Consulta sobre centrar un dialogo.
Posted:
Mon Jul 31, 2023 1:25 am
by José Camilo
Gracias Maestro por su tiempo.
Lo que me sugiere provoca el mismo efecto que el CENTERED del dialogo, o sea centra horizontal y verticalmente el dialogo.
yo busco centrar solo en forma Horizontal <--- ---->.
Gracias nuevamente por su tiempo.
José Camilo
Re: Consulta sobre centrar un dialogo.
Posted:
Mon Jul 31, 2023 4:50 am
by Antonio Linares
Prueba asi:
oDlg:Move( 50, ( WndWidth( GetDesktopWindow() ) / 2 ) - ( oDlg:nWidth / 2 ), oDlg:nWidth, oDlg:nHeight, .T. )
y dime si el diálogo se posiciona hacia lo alto de la pantalla, gracias
Re: Consulta sobre centrar un dialogo.
Posted:
Mon Jul 31, 2023 3:24 pm
by karinha
¿Usando RECURSOS? Elimine el "CENTERED": ACTIVAR DIALOG oDlg... y en el EDITOR DE RECURSOS, informar las coordenadas deseadas.
Si no entendí su pregunta, explíquelo mejor a través de un pequeño .PRG.
Regards, saludos.
Re: Consulta sobre centrar un dialogo.
Posted:
Tue Aug 01, 2023 1:51 am
by José Camilo
Buenas noches!!!
Antonio, con la segunda sugerencia el dialogo se ubica mas arriba que con la primera sugerencia.
Joao: buenas noches. gracias por tu interes. te comento mi problema.
He desarrollado un pequeño sistema, el tema es que ya 2 usuarios tienen pantallas de distinto tamaño que la mia y por lo tanto usan dsitintas resoluciones.
al preguntar como se hacia para centrar en las distintas resoluciones el Maestro Antonio me comento que lo usual es realizar distintos dialogos para las distintas resoluciones.
en el alto de los dialogos no tuve mayor problema, esl problema se me presenta al centrar ese dialogo en forma HORIZONTAL o sea centrar en el ancho de la pantalla.
Mi dialogo esta definido asi:
//-------------------------------------------------------------------------------------------------------------------------------------------------------------*/
function AbmCorregir()
local napu
local aBotones := {}
local oDlg, oBrw, cAlias := cGetNewAlias( "CORREGIR" )
local oBr, oFont
local titgral := 'Información Sobre Correcciones'
local atitcol := ''
local acampos := {}
local lcampos
local aBmp := { "TildeR.bmp", "TildeA.bmp", "TildeV.bmp" }
Private oBar2
acampos := {|| {str(Corregir->Numero,4),dtoc(Corregir->FechaError),Corregir->Tema,if(Corregir->Estado=1,aBtms[1], if(Corregir->Estado=2,aBtms[2],aBtms[3]) ),left(Corregir->Detalle,35),' ' } }
lcampos := {|| str(Corregir->Numero,4),dtoc(Corregir->FechaError),Corregir->Tema,if(Corregir->Estado=1,aBtms[1], if(Corregir->Estado=2,aBtms[2],aBtms[3]) ) }
atitcol := {"Numero","Fecha","Tema","Est","Detalle"," "}
// imagen tooltip en boton en tooltip
aBotones := { {"User.bmp" ,"Agrego Registro " , "Agregar" , {|| (EditCorrijo(.t.),oBrw:SetFocus(),oBrw:refresh()) },VK_INSERT,"<Insert>",.f.},;
{"Borrar.bmp" ,"Borro Registro " , "Borrar" , {|| (if(Borro(),dbdelete(),NIL),oBrw:SetFocus(),oBrw:refresh()) },VK_DELETE,"<Delete>",.f.},;
{"Editar.bmp" ,"Modifico Registro" , "Modificar" , {|| (EditCorrijo(.f.),oBrw:refresh()),oBrw:SetFocus() },VK_RETURN,"<Return>",.f.},;
{"Exit.bmp" ,"Sale de Browse " , "Salir" , {|| oDlg:end() },VK_ESCAPE,"<Escape>",.t.} ;
}
SET DATE ITALIAN
SET CENTURY ON
XBrNumFormat( 'E', .t. )
SetBalloon( .t. )
dbcloseall()
use colorfw new
use tecnico new
use acciones index accione1 new
use corregir index corregi1 new
dbgoTOP()
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE BRUSH oBr RESOURCE "beige2"
// con esta definicion es lo mas cerca del medio que logro
// DEFINE DIALOG oDlg FROM 110, 370 TO 668, 990 FONT oFont TITLE 'Correcciones' PIXEL
// con esta que esta decentrada es para la prueba con lo que sugirio ANTONIO
DEFINE DIALOG oDlg FROM 110, 70 TO 668, 690 FONT oFont TITLE 'Correcciones' PIXEL
@ 4,5 XBROWSE oBrw ;
COLUMNS "Numero", "FechaError","Tema",{|| aBmp[ Corregir->Estado ] } ;
HEADERS " Nro ","Fecha","Tema","Estado";
COLSIZES 50,20,290,50 OF oDlg ;
SIZE 300,238 PIXEL ;
JUSTIFY .T.,.f.,.f.,.t. ;
ALIAS cAlias AUTOSORT FOOTERS LINES CELL NOBORDER ;
Font oFont;
BACKGROUND aGrad VERTICAL
oBrw:nStretchCol := 2
oBrw:nRowHeight := 30
oBrw:nMarqueeStyle := 4
// anulo el doble color d los registros
oBrw:lContrastClr := .f.
// quitar barra horizontal
oBrw:lHScroll := .F.
oBrw:aCols[ 4 ]:cDataType := "F"
oBrw:aCols[ 2 ]:nWidth := 20
oBrw:bKeyDown:={|nKey,nFlag|iif(veo(@nApu,@oBrw,aBotones,nKey),eval(aBotones[nApu,4]),NIL)}
oBrw:bLDblClick := { |nRow,nCol,nKeyFlags|/*EditCorrijo(.f.),*/oBrw:Refresh()}
oBrw:nHeadStrAligns := AL_CENTER // alinea al centro las cabeceras de columnas
oBrw:CreateFromCode()
cGrad := PadR( GradStr( BrwGrad( oBrw ) ), 128 )
ACTIVATE DIALOG oDlg on INIT (BtnBarNew( oBrw, @oDlg, aBotones),oDlg:Move( oDlg:nTop, ( WndWidth( GetDesktopWindow() ) / 2 ) - ( oDlg:nWidth / 2 ), oDlg:nWidth, oDlg:nHeight, .T. ))
// ACTIVATE DIALOG oDlg on INIT (BtnBarNew( oBrw, @oDlg, aBotones),oDlg:Move( 50, ( WndWidth( GetDesktopWindow() ) / 2 ) - ( oDlg:nWidth / 2 ), oDlg:nWidth, oDlg:nHeight, .T. ))
//oDlg:Move( oDlg:nTop, ( WndWidth( GetDesktopWindow() ) / 2 ) - ( oDlg:nWidth / 2 ), oDlg:nWidth, oDlg:nHeight, .T. ) primera
//oDlg:Move( 50, ( WndWidth( GetDesktopWindow() ) / 2 ) - ( oDlg:nWidth / 2 ), oDlg:nWidth, oDlg:nHeight, .T. )
RELEASE BRUSH oBr
RELEASE FONT oFont
dbcloseall()
return nil
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
espero haberte aclarado mi problema.
Gracias
un Abrazo
Re: Consulta sobre centrar un dialogo.
Posted:
Tue Aug 01, 2023 2:00 am
by José Camilo
Le pido disculpas Antonio por mi lentitud de entendimiento.!!!!
su ejemplo se reduce a poner como la primera variable ( oDlg:nTop ) lo que yo ya tengo resuelto, el resto de su ejemplo es lo que hace lo que necesito que es centrar el dialogo en el ancho de la pantalla.
!!!!
Gracias!!!! y disculpas nuevamente.!!!
José Camilo