Posicion de messagebox en formulario

Hola. Necesito saber si se puede personalizar la ubicacion en la que aparecerà dentro del formulario el messagebox.

1 respuesta

Respuesta
1
Que exactamente es lo que quieres porque lo que si se puede personalizar es la forma de crear tus mensajes a traves de formularios y de esa manera si podrias saber la ubicación exacta.
La pregunta es: si yo no tengo activada la propiedad de centrado del formulario en pantalla, cuando activo el messagebox sí se visualiza centrado en pantalla centrado y por consiguiente fuera de los limites del formulario; y lo que necesito es centrar el messagebox dentro del formulario.
Entiendo veamos si te sirve este codigo de ejemplo, La autoria de este codigo es de "EJEMPLOS FOX PHANTON" creo que le podras sacar mucho provecho sobre todo para lo que estas buscando.
?_msgbox("Ejemplo de un MessageBox diferente", 4+32+256, "Titulo del Mensaje","\<Correcto","\<Errado")
*******************************************************************************
*!*PROCEDURE _MSGBOX.PRG, Fox MESSAGEBOX() compatible*
*!*Returns value:1=OK, 2=Cancel, 3=Abort, 4=Retry, 5=Ignore, 6=Yes, 7=No*
*!*Example: =_msgbox("FormText", 4+32+256, "FormCaption","\<RIGHT","\<WRONG")*
*!*Send 4-th, 5-th and 6-th to replace default original (national) Captions*
*******************************************************************************
PROCEDURE
_MSGBOX
parameter
pText,pnDBT,pCapt,cPar1,cPar2,cPar3
***_____PROLOG_____***
MemWidth=
set('memowidth')
set memowidth to
255
set topic ID to
9999&& your choice
if empty
(pText) .or. NOT type('pText')='C'
pText='MicroSoft Visual FoxPro'
&&your choice; additional to MessageBox
endif
if empty
(pnDBT) .or. NOT type('pnDBT')='N'
if type('pnDBT')='C'&&if passed only 2 char-parameters; additional to MessageBox
pCapt=pnDBT
endif
pnDBT=0
endif
if empty
(pCapt) .or. NOT type('pCapt')='C'
pCapt='OPTIMA'
&&your choice; additional to MessageBox
endif
***_____DEF Command array_____*** slovenian; your choice
dimension
CmdArr(7)
CmdArr(1)="\<V redu"
&&\<OK
CmdArr(2)="\<Odpovej"
&&\<Cancel
CmdArr(3)="\<Zavrzi"
&&\<Abort
CmdArr(4)="\<Ponovi"
&&\<Retry
CmdArr(5)="\<Spreglej"
&&\<Ignore
CmdArr(6)="\<Da"
&&\<Yes
CmdArr(7)="\<Ne"
&&\<No
***_____DEF SetFocus & Pictures_____***
for
nSetFocus=3 to 2 step -1
if pnDBT>=256*(nSetFocus-1)
pnDBT=pnDBT-256*(nSetFocus-1)
exit
endif
endfor
for
nPict=64 to 0 step -16
if pnDBT>=nPict
pnDBT=pnDBT-nPict
exit
endif
endfor
***_____Wrong DBT_____***
if
NOT inlist(pnDBT,0,1,2,3,4,5)
pnDBT=0
pCapt="Error DialogBoxType"
&&your choice
pText='MicroSoft Visual FoxPro'&&your choice
nPict=-1
endif
***_____DEF Button Captions array_____***
dimension
CaptArr(3)
CaptArr=""
***_____DEF Caption Replacement (optional)
=
acopy(CmdArr,CmdArr2)
lPar1=NOT
empty(cpar1) .and. type("cPar1")="C"
lPar2=NOT
empty(cpar2) .and. type("cPar2")="C"
lPar3=NOT
empty(cpar3) .and. type("cPar3")="C"
do case
case
pnDBT+1=1
store iif(lPar1,cPar1,CmdArr2(1)) to CmdArr(1),CaptArr(1)&&OK
CmdGCount=1
case
pnDBT+1=2
Store iif(lPar1, cPar1, CmdArr2(1)) to CmdArr(1), CaptArr(1)&&OK
store iif(lPar2, cPar2, CmdArr2(2)) to CmdArr(2), CaptArr(2)&&Cancel
CmdGCount=2
case
pnDBT+1=3
Store iif(lPar1, cPar1, CmdArr2(3)) to CmdArr(3), CaptArr(1)&&Abort
store iif(lPar2, cPar2, CmdArr2(4)) to CmdArr(4), CaptArr(2)&&Retry
store iif(lPar3, cPar3, CmdArr2(5)) to CmdArr(5), CaptArr(3)&&Ignore
CmdGCount=3
case
pnDBT+1=4
Store iif(lPar1, cPar1, CmdArr2(6)) to CmdArr(6), CaptArr(1)&&Yes
store iif(lPar2, cPar2, CmdArr2(7)) to CmdArr(7), CaptArr(2)&&No
store iif(lPar3, cPar3, CmdArr2(2)) to CmdArr(2), CaptArr(3)&&Cancel
CmdGCount=3
case
pnDBT+1=5
Store iif(lPar1, cPar1, CmdArr2(6)) to CmdArr(6), CaptArr(1)&&Yes
store iif(lPar2, cPar2, CmdArr2(7)) to CmdArr(7), CaptArr(2)&&No
CmdGCount=2
case
pnDBT+1=6
Store iif(lPar1, cPar1, CmdArr2(4)) to CmdArr(4), CaptArr(1)&&Retry
store iif(lPar2, cPar2, CmdArr2(2)) to CmdArr(2), CaptArr(2)&&Cancel
CmdGCount=2
endcase
***_____DEF Text_____***Attention: Look for default Windows Font!!!
store
0 to nWidth,nRows
cFntName='Arial'
nFntSize=8
cMaxTxt=_GetSubText(pText,@nWidth,@nRows,
chr(13))&&&UDF giving nWidth and nRows
nTxtWidth=nWidth
nTxtRows=nRows
nCaptWidth=
TXTWIDTH(pCapt, cFntName, nFntSize+2)*FONTMETRIC(6,cFntName,nFntSize+2)+10
nTxtHeight=
FONTMETRIC(1 , cFntName, nFntSize)*nTxtRows&&netto Height
nTxtLeft =55
***_____DEF Icons & Wav_____*** All Bells and Picts your choice
lPictVis=.T.
do case
case
nPict=64
set bell to 'ding.wav',0
cPict='inf_xp.bmp'
&&Information
case
nPict=48
set bell to 'chord.wav',0
cPict='excl_xp.bmp'
&&Exclamation
case
nPict=32
set bell to 'chimes.wav',0
cPict='quest_xp.bmp'
&&Question
case
nPict=16
set bell to 'critical.wav',0
cPict='stop_xp.bmp'
&&Stop
case
nPict=0
set bell to 'ding.wav',0
cPict=' '
lPictVis=.F.
nTxtLeft=15
&&Without Picture
otherwise
&& only if sent wrong DBT
set bell to 'CallRing.wav',0
cPict='appwiz.ico'
endcase
??
chr(7)
set bell to
***_____CleanUp_____***
nSetFocus =
min(CmdGCount,nSetFocus)
nButtWidth =75
nButtHeight =26
&&=Default Value
CmdgWidth =nButtWidth*CmdgCount+6*(CmdGCount-1)
nFormWidth =nTxtLeft+nTxtWidth+20
MsgFormWidth =
max(nFormWidth,CmdgWidth+20,nCaptWidth+30)
nCmdGTop =15+nTxtHeight+25
MsgFormHeight=nCmdGTop+nButtHeight+13
***_____MAIN PROGRAM_____***
RetValue=0
FrmMsgBox =
CREATEOBJECT('MsgBox')
keyboard replicate
('{TAB}',nSetFocus-1)
*FrmMsgBox.Butt(nSetFocus).SetFocus &&ValidEvent in calling procedure generates Error
FrmMsgBox.
Show(1)
***_____EPILOGUE__________***
set memowidth to
MemWidth
return
RetValue
***_____CLASSES_____*
DEFINE CLASS
MsgBox AS FORM
DIMENSION
Butt[3]
ScaleMode = 3 &&Pixels
ShowWindow = 1 &&In Top-Level Form
BorderStyle= 2 &&Fixed Dialog
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
AlWaysOnTop= .T.
DeskTop = .T.
BackColor=RGB(255,255,198)&&your choice
Name = 'ICMSGBOX'&&your choice
ADD OBJECT Butt[1] AS CommandButton WITH Height = nButtHeight, Width = nButtWidth
ADD OBJECT Butt[2] AS CommandButton WITH Height = nButtHeight, Width = nButtWidth
ADD OBJECT Butt[3] AS CommandButton WITH Height = nButtHeight, Width = nButtWidth
ADD OBJECT Pic AS Image with Left=15, Top=10, Width=32, Height=32, BackStyle=0
ADD OBJECT Txt AS EditBox with Enabled=.F., Top=15, BorderStyle=0, ScrollBars=0, ;
FontSize=nFntSize, FontName=cFntName, DisabledForeColor=RGB(0,0,0), ;
DisabledBackColor=RGB(192,192,192),BackStyle=0
PROCEDURE Init &&ThisForm.Init
WITH ThisForm&&DEF Form
.Width = MsgFormWidth
.
Height = MsgFormHeight
.
Caption= pCapt
.
AutoCenter=.T.
.
AlwaysOnTop=.T.
ENDWITH
WITH ThisForm
.Txt&&DEF Txt
.Value = pText
.
Left = nTxtLeft
.
Width = nTxtWidth+20
.
Height= nTxtHeight+10
ENDWITH
WITH ThisForm
.Pic&&DEF Pic
.Picture=cPict
.
Visible=lPictVis
ENDWITH
CmdGLeft=(ThisForm.Width-CmdGWidth)/2&&DEF CmdG
for i=1 to 3
WITH ThisForm.Butt(i)
.
Caption = CaptArr(i)
.
Top = nCmdGTop
.
Left = CmdGLeft+75*(i-1)+6*(i-1)
.
Visible = iif(CmdGCount<i,.F.,.T.)
ENDWITH
endfor
ENDPROC
&&ThisForm.Init
PROCEDURE Butt.CLICK
PARAMETER
pIndex
cSearch=
ThisForm.Butt(pIndex).Caption
RetValue=ascan('CmdArr',cSearch)
ThisForm. Release
ENDPROC
Enddefine

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas