Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Depuis des années nous nous amusons à agrandir nos différentes applications par rapport à la résolution de l'écran.
Nous sommes passés de fenêtres en 800 par 600 à 1024 à 768 et ainsi de suite.
Je ne souhaite par faire le tour de toutes mes fenêtres le but serait d'agrandir dynamiquement tous les composants de mon application.
J'ai eu l'idée de créer un objet non visuel avec une fonction setresize(any uo_objet) qui me permettrais de récupérer le type de l'objet (bouton, fenêtre, datawindow et d'utiliser ensuite les attributs X, Y...
Le problème c'est que je n'arrive pas à récupérer le type window par exemple.
Je ne vois pas comment utiliser dans ce cas la méthode typeof()
String ls_nomclass, ls_typeobjet
ls_nomclass = ClassName(ao_element)
Infos:
Powerbuilder 9.0 sous windows xp
Hors ligne
Salut
exemple de code d'une fonction avec comme arg de reference un userobject usob
integer i, j, iMax, jMax dec HRatio, VRatio DragObject drob DrawObject draw line ln rectangle rt roundrectangle rr oval ov Tab ong UserObject usob2 //Si fenêtre pas ouverte, mémo de la taille des objets if i_iObjectRszMax = 0 Then iMax = UpperBound(usob.Control) For i=1 to iMax i_iObjectRsz++ Choose Case usob.Control[i].TypeOf() Case line! ln = usob.Control[i] i_lObjectWidth[i_iObjectRsz] = ln.EndX i_lObjectHeight[i_iObjectRsz] = ln.EndY i_lObjectX[i_iObjectRsz] = ln.BeginX i_lObjectY[i_iObjectRsz] = ln.BeginY Continue Case roundrectangle! rr = usob.Control[i] i_lObjectWidth[i_iObjectRsz] = rr.width i_lObjectHeight[i_iObjectRsz] = rr.Height i_lObjectX[i_iObjectRsz] = rr.X i_lObjectY[i_iObjectRsz] = rr.Y Continue Case rectangle! rt = usob.Control[i] i_lObjectWidth[i_iObjectRsz] = rt.width i_lObjectHeight[i_iObjectRsz] = rt.Height i_lObjectX[i_iObjectRsz] = rt.X i_lObjectY[i_iObjectRsz] = rt.Y Continue Case oval! ov = usob.Control[i] i_lObjectWidth[i_iObjectRsz] = ov.width i_lObjectHeight[i_iObjectRsz] = ov.Height i_lObjectX[i_iObjectRsz] = ov.X i_lObjectY[i_iObjectRsz] = ov.Y Continue Case Else drob = usob.Control[i] i_lObjectWidth[i_iObjectRsz] = drob.Width i_lObjectHeight[i_iObjectRsz] = drob.Height i_lObjectX[i_iObjectRsz] = drob.X i_lObjectY[i_iObjectRsz] = drob.Y if drob.TypeOf() = UserObject! Then usob2 = drob wf_Resizeuo(usob2) else if drob.TypeOf() = Tab! Then ong = drob jMax = UpperBound(ong.Control) For j = 1 to jMax usob2 = ong.Control[j] wf_Resizeuo(usob2) Next end if end if End choose Next Return end if //Si mémo déjà fait, on resize sauf si ratio < 1 if Height < i_iHeight Then VRatio = 1 else VRatio = Height / i_iHeight end if if Width < i_iWidth Then HRatio = 1 else HRatio = Width / i_iWidth end if iMax = UpperBound(usob.Control) For i=1 to iMax i_iObjectRsz++ Choose Case usob.Control[i].TypeOf() Case UserObject! drob = usob.Control[i] drob.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) drob.Resize(i_lObjectWidth[i_iObjectRsz] * HRatio, i_lObjectHeight[i_iObjectRsz] * VRatio) usob2 = drob wf_Resizeuo(usob2) Case Tab! drob = usob.Control[i] drob.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) drob.Resize(i_lObjectWidth[i_iObjectRsz] * HRatio, i_lObjectHeight[i_iObjectRsz] * VRatio) ong = drob jMax = UpperBound(ong.Control) For j = 1 to jMax usob2 = ong.Control[j] wf_Resizeuo(usob2) Next Case CommandButton!, PictureButton!, RadioButton!, CheckBox!, StaticText!, & Picture!, DropDownListBox!, DropDownPictureListBox! drob = usob.Control[i] drob.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) Case SingleLineEdit!, EditMask!, HScrollBar! drob = usob.Control[i] drob.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) drob.Width = i_lObjectWidth[i_iObjectRsz] * HRatio Case VScrollBar! drob = usob.Control[i] drob.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) drob.Height = i_lObjectHeight[i_iObjectRsz] * VRatio Case Line! ln = usob.Control[i] ln.BeginX = i_lObjectX[i_iObjectRsz] * HRatio ln.BeginY = i_lObjectY[i_iObjectRsz] * VRatio ln.EndX = i_lObjectWidth[i_iObjectRsz] * HRatio ln.EndY = i_lObjectHeight[i_iObjectRsz] * VRatio Case roundrectangle! rr = usob.Control[i] rr.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) rr.Resize(i_lObjectWidth[i_iObjectRsz] * HRatio, i_lObjectHeight[i_iObjectRsz] * VRatio) Case rectangle! rt = usob.Control[i] rt.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) rt.Resize(i_lObjectWidth[i_iObjectRsz] * HRatio, i_lObjectHeight[i_iObjectRsz] * VRatio) Case oval! ov = usob.Control[i] ov.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) ov.Resize(i_lObjectWidth[i_iObjectRsz] * HRatio, i_lObjectHeight[i_iObjectRsz] * VRatio) Case Else drob = usob.Control[i] drob.Move(i_lObjectX[i_iObjectRsz] * HRatio, i_lObjectY[i_iObjectRsz] * VRatio) drob.Resize(i_lObjectWidth[i_iObjectRsz] * HRatio, i_lObjectHeight[i_iObjectRsz] * VRatio) End Choose Next
Hors ligne