Ré organiser fenêtres en développement

Cette méthode permet de réorganiser les fenêtres du mode développement : méthodes, formulaires, grille, cascade.
Pas testée sous windows.
<code 4D>
//Win_arrange (code_l)
//re arrange development windows
//code $1 :
// 1 = methods grid
// 2 = methods cascade
// 3 = forms grid
// 4 = forms cascade
// 5 = forms & methods grid
// 6 = forms & methods cascade
// 7 = explorer frontmost

//# dock not considered on mac
//# didn’t try on windows
//# bug with the form editor windows:
// these windows are not resized because
// the form area, in the resulting window,
// can have strange/unuseable offsets
// (close/re open the form if it happens)
// Possible turn around with FORM GET PROPERTIES:
// we could resize if actual height/width
// of the window is greater than the form size

C_ENTIER LONG($1)
C_ENTIER LONG($option_l)

C_ENTIER LONG($left_l;$top_l;$right_l;$bottom_l)

$option_l:=$1
$target_t:="^Method"
$grid_b:=($option_l%2=1)
Au cas ou
: ($option_l=1)
$target_t:="^Method"
: ($option_l=2)
$target_t:="^Method"
: ($option_l=3)
$target_t:="^Form"
: ($option_l=4)
$target_t:="^Form"
: ($option_l=5)
$target_t:="(^Method|^Form)"
: ($option_l=6)
$target_t:="(^Method|^Form)"
: ($option_l=7)
$target_t:=" - Explor"
Fin de cas

TABLEAU ENTIER LONG($win_al;0)
LISTE FENÊTRES($win_al)
TABLEAU TEXTE($title_at;Taille tableau($win_al))
Boucle ($i_l;Taille tableau($win_al);1;-1)
$pss_l:=Process de la fenêtre($win_al{$i_l})
INFORMATIONS PROCESS($pss_l;$pssName_t;$status_l;$time_l)
$title_at{$i_l}:=Titre fenêtre($win_al{$i_l})
$isDesign_b:=($pssName_t=“Process developpement”) | ($pssName_t=“Design process”)
$isTarget:=Trouver regex($target_t;$title_at{$i_l};1)
Si (Non($isDesign_b & $isTarget))
SUPPRIMER DANS TABLEAU($title_at;$i_l)
SUPPRIMER DANS TABLEAU($win_al;$i_l)
Fin de si
Fin de boucle

Si ($option_l=7) //explorer frontmost

C_ENTIER LONG($left_l;$top_l;$right_l;$bottom_l)
COORDONNÉES FENÊTRE($left_l;$top_l;$right_l;$bottom_l;$win_al{1})
CHANGER COORDONNÉES FENÊTRE($left_l;$top_l;$right_l;$bottom_l;$win_al{1})

Sinon //methods, forms

$windows_l:=Taille tableau($win_al)
$startX_l:=0
$startY_l:=Hauteur barre de menus+Hauteur barre outils
$screenX_l:=Largeur écran
$screenY_l:=Hauteur écran-$startY_l
$winTitle_l:=23

Si ($grid_b)  //grid
	
	$gridY_l:=2
	$gridX_l:=($windows_l\$gridY_l)
	Si ($windows_l%$gridY_l#0)
		$gridX_l:=$gridX_l+1
	Fin de si 
	$wid_l:=($screenX_l\$gridY_l)
	$hei_l:=($screenY_l\$gridX_l)
	$i_l:=1
	$Y_l:=$startY_l
	$X_l:=$startX_l
	Repeter 
		$isCode_b:=Trouver regex("^Method";$title_at{$i_l};1)
		Si ($isCode_b)
			CHANGER COORDONNÉES FENÊTRE($X_l;$Y_l+$winTitle_l;$X_l+$wid_l;$Y_l+$hei_l;$win_al{$i_l})
		Sinon   //form
			COORDONNÉES FENÊTRE($left_l;$top_l;$right_l;$bottom_l;$win_al{$i_l})
			CHANGER COORDONNÉES FENÊTRE($X_l;$Y_l+$winTitle_l;$X_l+($right_l-$left_l);$Y_l+$winTitle_l+($bottom_l-$top_l);$win_al{$i_l})
		Fin de si 
		$Y_l:=$Y_l+$hei_l
		Si (($Y_l+$hei_l)>Hauteur écran)
			$Y_l:=$startY_l
			$X_l:=$X_l+$wid_l
		Fin de si 
		$i_l:=$i_l+1
	Jusque ($i_l>$windows_l)
	
Sinon   //cascade
	
	$offSet_l:=20
	$i_l:=1
	$Y_l:=$startY_l
	$X_l:=$startX_l
	Repeter 
		$isCode_b:=Trouver regex("^Method";$title_at{$i_l};1)
		Si ($isCode_b)
			CHANGER COORDONNÉES FENÊTRE($X_l;$Y_l+$winTitle_l;Largeur écran;Hauteur écran;$win_al{$i_l})
		Sinon   //form
			COORDONNÉES FENÊTRE($left_l;$top_l;$right_l;$bottom_l;$win_al{$i_l})
			CHANGER COORDONNÉES FENÊTRE($X_l;$Y_l+$winTitle_l;$X_l+($right_l-$left_l);$Y_l+$winTitle_l+($bottom_l-$top_l);$win_al{$i_l})
		Fin de si 
		$Y_l:=$Y_l+$winTitle_l
		$X_l:=$X_l+$winTitle_l
		$i_l:=$i_l+1
	Jusque ($i_l>$windows_l)
	
Fin de si 

Fin de si
//_

</code 4D>

Merci Arnaud,

M.

Je croyais qu’il y avait un souci avec le redimensionnement des formulaires, mais c’est aussi le cas avec les méthodes : la partie du bas (bien pratique…) est plus ou moins inutilisable après. J’ai essayé d’envoyer REDIMENSIONNER FENETRE FORMULAIRE via APPELER FORMULAIRE, sans effet. Si on ne veut pas des effets désagréables, on peut repositionner sans redimensionner.