2016-07-24 75 views
2

我想刪除文本區域中的現有文本並插入新文本,但它不起作用。我有以下代碼:爲什麼文本中的文本未被刪除?

#lang racket/gui 
(define myframe (new frame% 
        [label "testing"] 
        [width 600] 
        [height 400])) 
(define mytextarea (new text%)) 
(new editor-canvas% 
    [parent myframe] 
    [editor mytextarea]) 
(define (button_fn button event) 
     (begin 
      (send mytextarea delete    ; does not work; 
       (send mytextarea get-start-position) 
       (send mytextarea get-end-position)) 
      (send mytextarea insert "New string inserted" 0) ; works; 
     )) 
(define mybutton (new button% [parent myframe] 
        [label "delete"] 
        [callback button_fn ])) 
(send myframe show #t) 

沒有錯誤消息。問題在哪裏?如何解決?

回答

1

get-start-positionget-end-position返回開始和當前選擇的端;如果沒有選擇,那麼它們都返回光標的位置。

如果你想刪除的文字區域的整個內容,使用last-position

(send mytextarea delete 0 (send mytextarea last-position)) 

,或者您可以使用erase方法:

(send mytextarea erase) ;; deletes everything 
+0

是,這兩種方法的工作。謝謝。 – rnso

+0

我還發現了另一種方法:'全選'然後'刪除'。 – rnso