drracket和如何检测与光标接触的单词

时间:2019-07-14 05:11:12

标签: racket

(define CHAR-CANVAS%   
  (class canvas%
    (define/override (on-char evt)
      (let ((c (send evt get-key-code)) (dc(send this get-dc)))
        (send dc clear)
        (print c)
        (cond
          ((equal? c 'release)(void))      
          ((member c '( #\a #\i #\u #\e #\o #\q   #\é  #\x))
           (begin(set! tampon-key (cons c tampon-key)) (send dc draw-text (cadr (member (list->string (reverse tampon-key)) alphabet )) 30 30)
                 (send R-k-text insert  (cadr (member (list->string (reverse tampon-key)) alphabet ))) (set! tampon-key '())))
          ((equal? c #\;)(begin(send R-k-text insert "。") (set! tampon-key '())))
          ((equal? c #\,)(begin(send R-k-text insert "、") (set! tampon-key '())))
          ((equal? c #\()(begin(send R-k-text insert "「") (set! tampon-key '())))
          ((equal? c #\))(begin(send R-k-text insert " 」") (set! tampon-key '())))
          ((equal? c #\&)(begin(send R-k-text insert "々") (set! tampon-key '())))
              ((not(member c '(#\b #\c #\d #\f #\g #\j #\k #\m #\n #\p #\r #\i #\h #\t #\s #\w #\y #\a #\e #\o #\z #\u)))(void))                    
          ((begin (set! tampon-key (cons c tampon-key))(print tampon-key))))
        ))

    (super-new)))

效果非常好(用于用平假名片假名和其他字符书写) 我想添加到同一画布 告诉我光标在文本上的位置的功能

有可能吗?如是 要添加什么代码?

(define/override (on-char evt)......

还是我需要另一个画布?     在这种情况下,我的代码是什么?

(define/override (on-char evt)......

为了执行类似于“ RIKAICHAN”的操作

1 个答案:

答案 0 :(得分:0)

(define (transform-syll->mot L-romanji L-hiragana)
  (let ((a '())(b'()))
    (set! a (map list->string  (reverse L-romanji)))
    (set! b (map char->string (string->list "たべます")))
    (list a b)))

(define (foo-w1   tw) ;transforme syllabe en fichier wav (if exist)
  (let ((l '()))
    (while (not (null? tw))
           (set! l(cons (string-append (car  tw )".wav")l))
           (set! tw (cdr tw)))
    (reverse l)))

(define (transform-mot->son L-romanji L-hiragana) 
  (let* ((x (transform-syll->mot L-romanji L-hiragana))
         (a  (car x)))
     (current-directory "/Users/izuko/Desktop/japonais-new/jap-syll")
    (rs-append* (map rs-read (foo-w1 a)))))

(define syllabe-R '())
(define syllabe-H '())
(define clip "")

(define Bt-dir
  (new button% 
       (parent  GP-1 ) 
       (label "Direct")
       (callback (lambda (obj evt)            
                   (begin (set! alphabet hiragana)
                          (set! lecture-feld (send R-k-tex-rech get-text))
                          (set! LECT-HI* (cons  lecture-feld   LECT-HI*))
                          (set! LECT-ID*  (cons  lecture-feld LECT-ID*))
                          (send  R-k-text insert lecture-feld)
                          (set! syllabe-R (transform-syll->mot tampon-wort lecture-feld))
                            (set! clip (transform-mot->son tampon-wort lecture-feld))
                            (play clip))))))