Redimensionner un dialog et ses controles avec mdx

Contenu du snippet

Ce code permet de redimensionner un dialogue MDX avec tout ses controle :) Utile si vous voulez faire un panneau de configuration redimensionnable...

Source / Exemple :


;### Redimensionnement MDX -> Les bases... ( BombStrike )
;#
;# Ce snippet va vous montrer comment créer un dialogue redimensionnable
;# grace à mdx...
;#
;# Tapez /tdial pour tester
;###

;### ALIASES ( Les aliases MDX et autres utiles )
alias tdial { if (!$dialog(tdial)) { dialog -m tdial tdial } }
alias mdx { if ($isid) { return $dll($mdxdll,$1,$2-) } | else { var %a = $dll($mdxdll,$1,$2-) } }
alias mdxini mdx SetMircVersion $version | mdx MarkDialog $dname
alias mdxdll return $scd(mdx.dll)
alias mdxbar return $scd(bars.mdx)
alias mdxdia return $scd(dialog.mdx)
alias mdxviw return $scd(views.mdx)
alias scd return $shortfn($+($scriptdir,$1-))

;### DIALOGS ( bah le dialogue )
dialog tdial {
  title "Redimensionnement MDX"
  size -1 -1 300 320
  box "",2,0 -5 300 305
  list 1,1 1 298 298,size
  list 3,0 300 301 20, size
  button "positioner",4,900 900 1 1
}

;### LES EVENTS ( le + important les events... )
on *:dialog:tdial:*:*:{
  ; a l'init on prépare tout
  if ( $devent == init ) {
    ; on prépare MDX
    mdxini
    ; on enleve la bordure de la StatusBar
    mdx SetBorderStyle $dname 3 noborder
    ; on fé une statusbar ( pour redimensionner ( facultatif ) )
    mdx SetControlMDX $dname 3 StatusBar sizeGrip > $mdxbar
    ; on fé un positioner ( obligatoire )
    mdx SetControlMDX $dname 4 Positioner size minbox > $mdxdia
    ; on remplie la liste avec n'importe quoi sinon c'est moche :P
    var %i = 1
    while ( %i < $chan(0) ) {
      did -a $dname 1 $chan(%i)
      did -a $dname 1 $str($chr(160),5) Users: $nick($chan(%i),0)
      inc %i
    }
  }
  ; si on clique
  if ( $devent == sclick ) {
    ; si c'est le positioner qui recoit l'event, c'est que ya un redimensionnement en cours...
    if ( $did == 4 ) {
      ; on recupere les events de ce dernier
      var %r = $did($dname,$did)
      ; on les mets sous la forme $1, $2$, $3, etc...
      tokenize 32 %r
      ; si l'event est le redimensionnement
      if ( $1 == sizing ) {
        ; on recupere la nouvelle largeur
        var %w = $gettok(%r,-2,32)
        ; on recupere la nouvelle hauteur
        var %h = $gettok(%r,-1,32)
        ; on redimensionne avec ces 2 nouvelles valeurs... ( * signifie que la valeur de change pas )
        ; Syntaxe:
        ;
        ; mdx MoveControl <dialog> <id> <x> <y> <w> <h>
        mdx MoveControl $dname 1 * * $calc(%w - 2) $calc(%h - 22)
        mdx MoveControl $dname 2 * * %w $calc(%h - 15)
        mdx MoveControl $dname 3 * $calc(%h - 20) %w *
      }
    }
  }
}

; voila enjoy !!!! :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.