Getcolor boite de dialogue couleur

Contenu du snippet

Le fonction prends une couleur en parametre, et retourne une couleur

- a copier dans la section remote.
- Utilisation : %NewColor = $getColor( %OldColor ) Renvoie un code CtrlK text , fond CtrlB ctrlU.

- Demonstration d'une Boite de dialogue qui retourne une valeur.

Source / Exemple :


;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Fonction GetColor
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alias getColor {
  /set %GetColor.Color $$1
  /return  $$dialog( DialColor, TabColor, -2  )
}

dialog TabColor {
  title "Couleur"
  size -1 -1 294 140

  box "",201,4 92 286 44
  button "&Valider",001,32 106 74 24,ok,default
  button "&Annuler",002,110 106 74 24,cancel
  button "&Aide",003,188 106 74 24
  edit , 010,0 140 100 24,result

  box "Ecriture",202,4 4 140 44
  combo 101,12 20 124 100,drop
  box "Fond",203,4 48 140 44
  combo 102,12 64 124 100,drop
  box "Options",204,150 4 140 44
  check "&Gras",103,158 24 62 14 %GetColor.Color.g
  check "&Souligné",104,226 24 62 14 %GetColor.Color.s
  box "",205,150 48 140 44
  button "&Tester",105,158 62 124 24
}

on *:dialog:DialColor:init:00:{
  /did -r DialColor 101
  /did -i DialColor 101 1 Normal
  /did -i DialColor 101 2 Blanc
  /did -i DialColor 101 3 Noir
  /did -i DialColor 101 4 Bleu
  /did -i DialColor 101 5 Vert
  /did -i DialColor 101 6 Rouge pâle
  /did -i DialColor 101 7 Brun
  /did -i DialColor 101 8 Mauve
  /did -i DialColor 101 9 Orange
  /did -i DialColor 101 10 Jaune
  /did -i DialColor 101 11 Vert pâle
  /did -i DialColor 101 12 Cyan
  /did -i DialColor 101 13 Cyan pâle
  /did -i DialColor 101 14 Bleu pâle
  /did -i DialColor 101 15 Rose
  /did -i DialColor 101 16 Gris
  /did -i DialColor 101 17 Gris pâle
  /did -r DialColor 102
  /did -i DialColor 102 1 Normal
  /did -i DialColor 102 2 Blanc
  /did -i DialColor 102 3 Noir
  /did -i DialColor 102 4 Bleu
  /did -i DialColor 102 5 Vert
  /did -i DialColor 102 6 Rouge pâle
  /did -i DialColor 102 7 Brun
  /did -i DialColor 102 8 Mauve
  /did -i DialColor 102 9 Orange
  /did -i DialColor 102 10 Jaune
  /did -i DialColor 102 11 Vert pâle
  /did -i DialColor 102 12 Cyan
  /did -i DialColor 102 13 Cyan pâle
  /did -i DialColor 102 14 Bleu pâle
  /did -i DialColor 102 15 Rose
  /did -i DialColor 102 16 Gris
  /did -i DialColor 102 17 Gris pâle
  if ( %GetColor.Color == $null  ) {
    /did -c DialColor 101 1
    /did -c DialColor 102 1
    /did -u DialColor 103
    /did -u DialColor 104
  }
  else {
    ; Ctrl K et virgule
    if ((  isin %GetColor.Color  ) && ( $chr( 44 ) isin %GetColor.Color )) {
      /var %GetColor.Brut $remove( %GetColor.Color, ,,  )
      /var %pos $pos( %GetColor.Brut, $chr( 44 ),1  )
      ;      /echo -s %GetColor.Brut - %pos - $right( %GetColor.Brut, $calc( $len(%GetColor.Brut) - %pos  ) )
      /did -c DialColor 101 $calc( $left( %GetColor.Brut, $calc( %pos - 1 )) + 2  )
      /did -c DialColor 102 $calc( $right( %GetColor.Brut, $calc( $len(%GetColor.Brut) - %pos  ) ) + 2 )

    }
    ;ctrl k
    else if (  isin %GetColor.Color  ) {
      /did -c DialColor 101 $calc( $remove( %GetColor.Color,,,  ) + 2 )
      /did -c DialColor 102 1
    }
    else {
      did -c DialColor 101 1
    }
    ; Ctrl g gras
    if (  isin %GetColor.Color  ) { did -c DialColor 103 }
    else { did -u DialColor 103 }
    ; Ctrl u souligné
    if (  isin %GetColor.Color  ) { did -c DialColor 104 }
    else { did -u DialColor 104 }
  }
  if ( $did( DialColor,101 ).sel == 1 ) { did -bu DialColor 102 1 }
  else { did -e DialColor 102 }
}

on *:dialog:DialColor:sclick:101:{
  ; Si pas d ecriture, pas de fond
  if ( $did( 101 ).sel == 1 ) {
    /did -bu DialColor 102 1
  }
  else {
    /did -e DialColor 102
  }
}

; Test ecriture DialColor
on *:dialog:DialColor:sclick:105: {
  /echo $Color( info2) -a $did( 10 ).text $+ [Test d'écriture]
}

; resultat ...
on *:dialog:DialColor:*:*: {
  /did -ra DialColor 010 $iif( $did( 101 ).sel != 1,  $+ $calc( $did( 101 ).sel - 2 )) $+ $iif( $did( 102 ).sel != 1, $chr( 44 ) $+ $calc( $did( 102 ).sel - 2 )) $+ $iif( $did( 103 ).state,  ) $+ $iif( $did( 104 ).state,  )
}

Conclusion :


- 1° Ce n'est pas la premiere fois que vous voyez une Dlg pour la couleur.
- 2° Ce n'est pas la premiere fois que vous voyez une fonction de couleur.
- 3°
Je vous evite donc de commenté betement mon source et vous invite a etre un peu positif dans vos commentaires.
- 4° J'utilise une boite de dialogue qui renvoie une valeur grace a : edit , 010,0 140 100 24,result. et l'event : on *:dialog:DialColor:*:*: {
/did -ra DialColor 010 $iif( $did( 101 ).sel != 1,  $+ $calc( $did( 101 ).sel - 2 )) $+ $iif( $did( 102 ).sel != 1, $chr( 44 ) $+ $calc( $did( 102 ).sel - 2 )) $+ $iif( $did( 103 ).state,  ) $+ $iif( $did( 104 ).state,  )
} Ca peut servir de didacticiel.

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.