Ajustar Ventanas powerbuilder

Como están, abuso de su buena predisposición para consultarles, porque hace tiempo intento solucionar el problema de las ventanas y sus tamaños, que se ajusten a cada terminal de trabajo según su resolución, siempre me quedan desbordadas de tamaño, motivo por el que debo de desarrollar en resoluciones de 800x600 o 1024x768 para que se vean más o menos bien en cualquier pantalla, el problema son las netbook debo ajustar manualmente cada objeto a visualizar a pesar de tener la propiedad Resizable tildada.

1 Respuesta

Respuesta
1

//A mi me funciona pero si lo mejoras al codigo volve a publicarlo asi nos beneficiamos todos

// variables de instancia
integer TEMPORAL_Y

s_objetos bot[]
s_objetos sin[]
s_objetos che[]
s_objetos dwi[]
s_objetos tbl[]
s_objetos p_b[]
s_objetos stt[]
s_objetos dlb[]
s_objetos edm[]
s_objetos pic[]
s_objetos rad[]
s_objetos gbx[]

commandButton botones[]
singlelineedit single_texto[]
checkbox chek_box[]
datawindow dataw[]
tab tabu[]
picturebutton pic_butt[]
statictext statix[]
dropdownlistbox ddlb[]
editmask emask[]
picture pictu[]
radiobutton radio[]
groupbox groupb[]

//en el evento resize pega el siguiente codigo

IF TEMPORAL_Y > 0 THEN

int j
for j=1 to UpperBound(bot)
botones[j].x=newwidth * bot[j].x_pos
botones[j].y=NEWHEIGHT * bot[j].y_pos
botones[j].WIDTH=NEWWIDTH * bot[j].w_tam
botones[j].HEIGHT=NEWHEIGHT *bot[j].h_tam
next
int sj
for sj=1 to UpperBound(sin)
single_texto[sj].x=newwidth * sin[sj].x_pos
single_texto[sj].y=NEWHEIGHT * sin[sj].y_pos
single_texto[sj].WIDTH=NEWWIDTH * sin[sj].w_tam
single_texto[sj].HEIGHT=NEWHEIGHT * sin[sj].h_tam
single_texto[sj].textsize= single_texto[sj].WIDTH * 0.038 //0.11
next
int sc
for sc=1 to UpperBound(che)
chek_box[sc].x=newwidth * che[sc].x_pos
chek_box[sc].y=NEWHEIGHT * che[sc].y_pos
chek_box[sc].WIDTH=NEWWIDTH * che[sc].w_tam
chek_box[sc].HEIGHT=NEWHEIGHT * che[sc].h_tam
next
int sd
for sd=1 to UpperBound(dwi)
try
dataw[sd].x=newwidth * dwi[sd].x_pos
dataw[sd].y=NEWHEIGHT * dwi[sd].y_pos
dataw[sd].WIDTH=NEWWIDTH * dwi[sd].w_tam
dataw[sd].HEIGHT=NEWHEIGHT * dwi[sd].h_tam
dataw[sd].Object.DataWindow.Zoom =integer((( (NEWHEIGHT - 100) * dwi[sd].zoomy) + ( (NEWWIDTH - 100) * dwi[sd].zoomx) ) / 2)//integer( (NEWHEIGHT * dw_1.zy_orig) + (NEWWIDTH * dw_1.zx_orig) / 2)
catch(runtimeerror err)
messagebox("error z dwi",string(err))
end try
next
int st
for st=1 to UpperBound(tbl)
tabu[st].x=newwidth * tbl[st].x_pos
tabu[st].y=NEWHEIGHT * tbl[st].y_pos
tabu[st].WIDTH=NEWWIDTH * tbl[st].w_tam
tabu[st].HEIGHT=NEWHEIGHT * tbl[st].h_tam
next
int spb
for spb=1 to UpperBound(p_b)
pic_butt[spb].x=newwidth * p_b[spb].x_pos
pic_butt[spb].y=NEWHEIGHT * p_b[spb].y_pos
pic_butt[spb].WIDTH=NEWWIDTH * p_b[spb].w_tam
pic_butt[spb].HEIGHT=NEWHEIGHT * p_b[spb].h_tam
next
int s_stx
for s_stx=1 to UpperBound(stt)
statix[s_stx].x=newwidth * stt[s_stx].x_pos
statix[s_stx].y=NEWHEIGHT * stt[s_stx].y_pos
statix[s_stx].WIDTH=NEWWIDTH * stt[s_stx].w_tam
statix[s_stx].HEIGHT=NEWHEIGHT * stt[s_stx].h_tam
statix[s_stx].textsize= statix[s_stx].WIDTH * 0.038 //0.11
next
int s_dlbx
for s_dlbx=1 to UpperBound(dlb)
ddlb[s_dlbx].x=newwidth * dlb[s_dlbx].x_pos
ddlb[s_dlbx].y=NEWHEIGHT * dlb[s_dlbx].y_pos
ddlb[s_dlbx].WIDTH=NEWWIDTH * dlb[s_dlbx].w_tam
ddlb[s_dlbx].HEIGHT=NEWHEIGHT * dlb[s_dlbx].h_tam
next
int s_em
for s_em=1 to UpperBound(edm)
emask[s_em].x=newwidth * edm[s_em].x_pos
emask[s_em].y=NEWHEIGHT * edm[s_em].y_pos
emask[s_em].WIDTH=NEWWIDTH * edm[s_em].w_tam
emask[s_em].HEIGHT=NEWHEIGHT * edm[s_em].h_tam
emask[s_em].textsize= emask[s_em].WIDTH * 0.038 //0.11
next
int s_pic
for s_pic=1 to UpperBound(pic)
pictu[s_pic].x=newwidth * pic[s_pic].x_pos
pictu[s_pic].y=NEWHEIGHT * pic[s_pic].y_pos
pictu[s_pic].WIDTH=NEWWIDTH * pic[s_pic].w_tam
pictu[s_pic].HEIGHT=NEWHEIGHT * pic[s_pic].h_tam
next
int s_rd
for s_rd=1 to UpperBound(rad)
radio[s_rd].x=newwidth * rad[s_rd].x_pos
radio[s_rd].y=NEWHEIGHT * rad[s_rd].y_pos
radio[s_rd].WIDTH=NEWWIDTH * rad[s_rd].w_tam
radio[s_rd].HEIGHT=NEWHEIGHT * rad[s_rd].h_tam
next
int s_gbx
for s_gbx=1 to UpperBound(gbx)
groupb[s_gbx].x=newwidth * gbx[s_gbx].x_pos
groupb[s_gbx].y=NEWHEIGHT * gbx[s_gbx].y_pos
groupb[s_gbx].WIDTH=NEWWIDTH * gbx[s_gbx].w_tam
groupb[s_gbx].HEIGHT=NEWHEIGHT * gbx[s_gbx].h_tam
next
else //////////////////precarga

String ls_nombre
Long ll_dimension, ll_conta , cta_botones,cta_single,cta_chekbox,cta_dw,cta_tab,cta_pib,cta_static,cta_ddlb,cta_em,cta_pic,cta_rad,cta_gbx

ll_dimension = UpperBound(this.Control)

FOR ll_conta = 1 To ll_dimension
ls_nombre = this.Control[ll_conta].ClassName()
IF (this.Control[ll_conta].TypeOf () = CommandButton!) then
cta_botones ++
botones[cta_botones] = this.Control[ll_conta]

end if
IF (this.Control[ll_conta].TypeOf () = SingleLineEdit!) then
cta_single ++
single_texto[cta_single] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = CheckBox!) then
cta_chekbox ++
chek_box[cta_chekbox] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = DataWindow!) then
cta_dw ++
dataw[cta_dw] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = tab!) then
cta_tab ++
tabu[cta_tab] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = picturebutton!) then
cta_pib ++
pic_butt[cta_pib] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = statictext!) then
cta_static ++
statix[cta_static] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = dropdownlistbox!) then
cta_ddlb ++
ddlb[cta_ddlb] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = editmask!) then
cta_em ++
emask[cta_em] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = picture!) then
cta_pic ++
pictu[cta_pic] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = radiobutton!) then
cta_rad ++
radio[cta_rad] = this.Control[ll_conta]
end if
IF (this.Control[ll_conta].TypeOf () = groupbox!) then
cta_gbx ++
groupb[cta_gbx] = this.Control[ll_conta]
end if
Next

/*
Radiobutton
Groupbox

Listbox
Multilineedit

Datepicker
Monthcalendar
Picturelistbox
Dropdownpicturelistbox
Hprogressbar
Vscrollbar
Hscrollbar
Richtextedit
*/

integer sgb
for sgb=1 to cta_gbx
try
gbx[sgb].x_pos=groupb[sgb].x / newwidth
gbx[sgb].y_pos=groupb[sgb].y / newheight
gbx[sgb].w_tam=groupb[sgb].width / newwidth
gbx[sgb].h_tam=groupb[sgb].height / newheight
catch(runtimeerror egb)
messagebox("egb",string(egb))
end try
next

integer srad
for srad=1 to cta_rad
try
rad[srad].x_pos=radio[srad].x / newwidth
rad[srad].y_pos=radio[srad].y / newheight
rad[srad].w_tam=radio[srad].width / newwidth
rad[srad].h_tam=radio[srad].height / newheight
catch(runtimeerror erad)
messagebox("erad",string(erad))
end try
next

integer spic
for spic=1 to cta_pic
try
pic[spic].x_pos=pictu[spic].x / newwidth
pic[spic].y_pos=pictu[spic].y / newheight
pic[spic].w_tam=pictu[spic].width / newwidth
pic[spic].h_tam=pictu[spic].height / newheight
catch(runtimeerror epc)
messagebox("epc",string(epc))
end try
next

integer sem
for sem=1 to cta_em
try
edm[sem].x_pos=emask[sem].x / newwidth
edm[sem].y_pos=emask[sem].y / newheight
edm[sem].w_tam=emask[sem].width / newwidth
edm[sem].h_tam=emask[sem].height / newheight
catch(runtimeerror eem)
messagebox("em",string(eem))
end try
next

integer sdl
for sdl=1 to cta_ddlb
try
dlb[sdl].x_pos=ddlb[sdl].x / newwidth
dlb[sdl].y_pos=ddlb[sdl].y / newheight
dlb[sdl].w_tam=ddlb[sdl].width / newwidth
dlb[sdl].h_tam=ddlb[sdl].height / newheight
catch(runtimeerror eddlb)
messagebox("et",string(eddlb))
end try
next

integer stx
for stx=1 to cta_static
try
stt[stx].x_pos=statix[stx].x / newwidth
stt[stx].y_pos=statix[stx].y / newheight
stt[stx].w_tam=statix[stx].width / newwidth
stt[stx].h_tam=statix[stx].height / newheight
catch(runtimeerror estx)
messagebox("et",string(estx))
end try
next

integer pb
for pb=1 to cta_pib
try
p_b[pb].x_pos=pic_butt[pb].x / newwidth
p_b[pb].y_pos=pic_butt[pb].y / newheight
p_b[pb].w_tam=pic_butt[pb].width / newwidth
p_b[pb].h_tam=pic_butt[pb].height / newheight
catch(runtimeerror et)
messagebox("et",string(et))
end try
next

integer ti
for ti=1 to cta_tab
try
tbl[ti].x_pos=tabu[ti].x / newwidth
tbl[ti].y_pos=tabu[ti].y / newheight
tbl[ti].w_tam=tabu[ti].width / newwidth
tbl[ti].h_tam=tabu[ti].height / newheight
catch(runtimeerror epb)
messagebox("epb",string(epb))
end try
next

integer i
for i=1 to cta_botones
try
bot[i].x_pos=botones[i].x / newwidth
bot[i].y_pos=botones[i].y / newheight
bot[i].w_tam=botones[i].width / newwidth
bot[i].h_tam=botones[i].height / newheight
catch(runtimeerror e1)
messagebox("e1",string(e1))
end try
next
////single line edit
integer si
for si=1 to cta_single
try
sin[si].x_pos=single_texto[si].x / newwidth
sin[si].y_pos=single_texto[si].y / newheight
sin[si].w_tam=single_texto[si].width / newwidth
sin[si].h_tam=single_texto[si].height / newheight
catch(runtimeerror es)
messagebox("es",string(es))
end try
next
////fin single line edit

////checkbox
integer chk
for chk=1 to cta_chekbox
try
che[chk].x_pos=chek_box[chk].x / newwidth
che[chk].y_pos=chek_box[chk].y / newheight
che[chk].w_tam=chek_box[chk].width / newwidth
che[chk].h_tam=chek_box[chk].height / newheight
catch(runtimeerror eck)
messagebox("eck",string(eck))
end try
next
////fin checkbox

////dw
integer dwc

for dwc=1 to cta_dw
try

dwi[dwc].x_pos=dataw[dwc].x / newwidth
dwi[dwc].y_pos=dataw[dwc].y / newheight
dwi[dwc].w_tam=dataw[dwc].width / newwidth
dwi[dwc].h_tam=dataw[dwc].height / newheight
dwi[dwc].zoomx=double(dataw[dwc].Object.DataWindow.Zoom) / newwidth
dwi[dwc].zoomy=double(dataw[dwc].Object.DataWindow.Zoom) / newheight

catch(runtimeerror edw)
messagebox("edw",string(edw))
end try
next
////fin dw

TEMPORAL_Y=2

end if//

Luego cierra la pregunta

¡Gracias! muy amable de tu parte por tomarte el tiempo en contestar, lo estudio y lo pongo en practica a ver que resultado me da, gracias.

Adjunto imagen con la información Structure s_objetos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas