il s'agit de petites aliases mdx pour fasciliter son implentation dans certains dialogs
la premiere: mdx.set.linebar
elle requier comme controle hote une "list"
usage: mdx.set.linebar DIALOG_NAME id:min-max-default:mode
explication:
- DIALOG_NAME = nom du dialog ($dname)
- id = id du controle à cibler
- min = nombre minimum de l'amplitude numerique selectionable
- max = nombre maximum de cette amplitude
- default = nombre pré-selectioné lors de la creation de l'id
- mode = par defaut l'aliase créé une bare horizontale, il est possible de spécifier que l'on veut une bare verticale avec le mode "v" (ce paramètre est optionel)
exemple:
mdx.set.linebar $dname 1:0-100,2:20-30,45:7-12,8:0-100-50,40,1-5:v
transoformera les id: 1 2 45 8 40 et 1 le 1 seras vertical
pour recuperer les resultat: $gettok($did(id).seltext,1,32)
la seconde aliase: wbs.mdx.table
elle sers a créé une sorte de tableau en grille
syntaxe: wbs.mdx.table $dname ID section:taille
exemple: wbs.mdx.table $dname 5 nom:40 prenom:80 age:30
va créer un tableau a 3 colones de 40, 80 et 30 pixels de large dans la list portant l'id 5
lors de la recuperation via $did(id).seltext les colones sont séparée par des chr(9) (a vous d'utiliser $gettok pour filtrer)
l'aliase wdll retourne le chemin de la dll à son format court et relatif, l'aliase wbs.relat retourne le chemin relatif d'un fichier (depuis mirc)
mgettok permet les imbrication de $gettok (toujours utile lors de l'usage de mdx)
les fonctions utilisant mdx DOIVENT toutes etre précédées de 'mdxinit' a l'appel du dialog (une seule fois)
installation: le code requiers: mdx.dll , views.mdx et bars.mdx dans un dossier enfant de $mircdir
Source / Exemple :
alias mdx.set.linebar {
;syntaxe: $dname id:min-max,id:min-max-defaut (optionel) :mode (optionel)
;exemple:$dname 1:0-100,2:20-30,45:7-12,8:0-100-50,40,1-5:v
;modes disponibles: [v] : bare verticalle (par defaut horizontal)
;retours: 1 si $dname manque, 2 si dialog es introuvable, 0 en cas de réusite
var %param = $2- , %i 1 , %n = $numtok(%param,44) , %dname = $1
if (!%dname) return 1
if (!$dialog(%dname).title) return 2
while (%i <= %n) {
var %curent = $gettok(%param,%i,44) , %id = $gettok(%curent,1,58) , %min = $mgettok(%curent,2,58,1,45) , %max = $mgettok(%curent,2,58,2,45) , %defaut = $mgettok(%curent,2,58,3,45)
if (!%defaut) var %defaut = 0
mdx SetControlMDX %dname %id TrackBar autoticks $iif($gettok(%curent,3,58) == v, vertical) > $wdll(bars.mdx)
mdx SetBorderStyle %dname %id windowedge
did -i %dname %id 1 params %defaut %min %max * * * * 14
did -i %dname %id 1 tickfreq 1
inc %i
}
return 0
}
alias wbs.mdx.table {
;syntaxe: wbs.mdx.table $dname ID section:taille
var %dname = $iif($1 == x,$dname,$1)
if (!$isid) && ($dialog(%dname)) && ($3) {
mdx SetControlMDX %dname $2 ListView report single grid > $wdll(views.mdx)
var %i 1
while ($gettok($3-,%i,32)) {
var %tmp = $ifmatch , %size = %size $gettok(%tmp,2,58) , %text = %text $chr(9) $gettok(%tmp,1,58)
inc %i
}
did -i %dname $2 1 headerdims %size
did -i %dname $2 1 headertext $mid($strip($gettok(%text,1-,9)) $chr(9),2-)
}
}
alias mdx {
var %mdx = $wdll(mdx.dll)
if (%mdx) dll $shortfn(%mdx) $1-
else echo -s mdx.dll introuvable
}
alias mdxinit {
if ($1) var %dname = $1-
else var %dname = $dname
if (!%dname) { echo -a erreur: Mdxinit: nom du dialog manquant ! | halt }
else {
mdx SetMircVersion $version
mdx MarkDialog %dname
return OK
}
}
alias wdll {
;pour interdir l'usage d'une dll la stipuler dans un fichier Exepts.ini (se touvant dans le dossier du script) dans la section [DLLS] nom_de_la_dll=1
if ($1) {
if ($readini($scriptdirExepts.ini,DLLS,$1) == 1) { return }
else {
if ($hget(wbs.dlls,$1)) { return $wbs.relat($shortfn($ifmatch)) }
var %wdll = $wbsdir $+ dlls\ $+ $1
if (!$exists(%wdll)) {
var %wdll = $findfile($mircdir,$ifmatch,1)
if (%wdll) { hadd -m wbs.dlls $nopath(%wdll) %wdll }
}
if (%wdll) { return $wbs.relat($shortfn($ifmatch)) }
}
}
}
alias -l wbs.relat {
if ($gettok($$1,1- $+ $numtok($mircdir,92),92) $+ \ == $mircdir) {
if ($gettok($$1,$calc($numtok($mircdir,92) +1),92)) { return $gettok($$1,$calc($numtok($mircdir,92) +1) $+ -,92) }
}
else return $$1
}
alias mgettok {
;permet l'imbrication de plusieurs gettok: $gettok($1-,a,c,b,d) == $mgettok($1-,a,b,c,d)
if ($0) && ($isid) {
var %n = $calc(($0 -1) / 2)
if ($chr(46) !isin %n) {
var %i 1 , %tok = 3 , %id = 2
while (%i <= %n) {
var %tmp = $eval($+($,%tok),2)
if (%tmp !isnum) var %tmp = $asc(%tmp)
if (!%data) var %data = $gettok($1,$eval($+($,%id),2),%tmp)
else var %data = $gettok(%data,$eval($+($,%id),2),%tmp)
inc %id 2
inc %tok 2
inc %i
}
return %data
}
else echo -s Error: mgettok syntaxe/parametres invalides
}
}
Conclusion :
voila j'espere avoir été assé clair et que ces aliases vous seront utiles
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.