Bonjour et merci d'avance à ceux qui prendront la peine de me lire =)
 
Voila je réalise un programme, et j'ai besoin d'écrire dans des "cases" et ce graphiquement (pas dans le terminal de dr scheme) vu que je dessine a coté de ce que je dois écrire.
 
Comment écrire une variable dans une case directement, y a t'il une fonction prévu pour cela ?
 
Sinon comment écrire à l'écran, je dessinerais un rectangle moi-même autour.
 
Voila mon erreur...
Code :
 - projet.scm:130:16: initialization for editor-canvas%: expected argument of type <built-in container<%> object>; given #<viewport>
 
  | 
 
Et voici mon code !
 
(require (lib "graphics.ss" "graphics" ))
 
; Les variables globales  
(define !dimX! 300)  
(define !dimY! 300)  
(define !port! #f)  ;Fenêtre
(define !origine! #f)	;Origine du graphe
(define !black! #f)  ;Couleur noire
(define !pos! #f)  ;Position du pointeur Courant
(define !rgb! #f)  ;Couleur du tracé (par défaut !black!)
(define !longboite! 20)	;Longueur d'un coté dune boite
 
; Ouvre une fenetre graphiques de haut sur large pixels
; Par defaut haut=600 et large=600  
; Maximum haut=800 large=1200
; Origine du repere au centre de la fenetre, couleur du crayon : noir
(define init-graphics  
 (lambda (args)
 	(begin
   (if (pair? args)
   	(begin
     (if (<= (car args) 1200)
     	(set! !dimX! (quotient (car args) 2))
     )
     (if (and  
       (pair? (cdr args))  
       (<= (cadr args) 800)
     	)
     	(set! !dimY! (quotient (cadr args) 2))
     )
   	)
   )      
   (open-graphics)
   (set! !port! (open-viewport "Graphics Window" (* !dimX! 2) (* !dimY! 2)))
   (set! !origine! (make-posn !dimX! !dimY!))
   (set! !black! (make-rgb 0 0 0))
   (set! !pos! !origine!)
   (set! !rgb! !black!)
 	)
 )
)
 
; Place le crayon au point (x,y)
(define position-pen  
 (lambda (x y)
 	(set! !pos! (make-posn (+ !dimX! x) (- !dimY! y)))
 )
)
 
 
; Dessine une ligne depuis la position courante jusqu'a la position (x,y)
; La nouvelle position du crayon est (x,y)
(define draw-line-to  
 (lambda (x y)
 	(let  (
   	(point (make-posn (+ x !dimX!) (- !dimY! y)))
   	)
   	((draw-line !port!) !pos! point !rgb!)
   	(set! !pos! point)
 	)
 )
)
 
;Dessine un cercle "solide" de centre (x,y)
;Le cercle respecte le ratio de dimensions avec la boite
(define cercle-centre
 (lambda (x y)
 	(let*(
   (rayon (quotient !longboite! 7))
   (diametre (* 2 rayon))
   )
   (position-pen (- x rayon) (+ y rayon))
   ((draw-solid-ellipse !port!) !pos! diametre diametre !rgb!)
 	)
 )
)
 
;Dessine un carré de centre (x,y)
;Le coté du carré est de taille !longboite!
(define boite
 (lambda (x y)
 	(let(
   (dim (quotient !longboite! 2))    
   )  
   (position-pen (+ x dim) (- y dim))
   (draw-line-to (- x dim) (- y dim))
   (draw-line-to (- x dim) (+ y dim))
   (draw-line-to (+ x dim) (+ y dim))
   (draw-line-to (+ x dim) (- y dim))
   (cercle-centre x y)
   (position-pen x y)
 	)
 )
)
 
; Affiche dans une boite la variable a
; (define affichage
 ; (lambda (a)
    ; Add a text field to the dialog
  ; (new text-field% [parent dialog] [label "Your name"])
 
;Fonctions pour déterminer le nombre de chiffres d'un nombre
(define taille-nombre
 (lambda (n)
 	(taille-nombre-it n 1)
 )
)
(define taille-nombre-it  
 (lambda (n i)
 	(if (< (/ n 10) 1)
   i
   (taille-nombre-it (quotient n 10) (+ i 1))
 	)
 )
)  
 
;Variables pour la fenetre
(define hauteur 640)
(define largeur 480)
(define window (list hauteur largeur))
 
;On ouvre la fenetre
(init-graphics window)
(boite 0 0)
(boite -100 -100)
(boite 100 100)
(boite -100 100)
(boite 100 -100)
 
(define editeur (new editor-canvas% [parent !port!]))  
 
(define texte (new text%))  
 
(send editeur set-editor texte)  
 
(send texte insert "SALUT LOL" )