On Feb 23, 2012, at 2:01 PM, Kieron Hardy wrote: > Look like this will work very nicely indeed ... Thanks. > > Am I correct in thinking that 'button-colors' models a 3-element ring buffer > where 'cdr' advances the access window one element?
yes. > > On Thu, Feb 23, 2012 at 10:59 AM, Matthias Felleisen <matth...@ccs.neu.edu> > wrote: > > Would this work for you: > > #lang racket/gui > > (define (make-colored-bm color:str) > [define bm (make-object bitmap% 200 200)] > [define dc (make-object bitmap-dc% bm)] > (send dc set-brush (make-object brush% color:str 'solid)) > (send dc draw-rectangle 0 0 200 200) > (send dc set-bitmap #f) > bm) > > (define frame (new frame% [label "test"] [width 200] [height 200])) > > (define panel (new panel% [parent frame])) > > (define button-colors > (shared ([c (append (map make-colored-bm '("green" "red" "blue")) c)]) > c)) > > (define buttn > (new button% > [label (car button-colors)] > [parent panel] > [callback (lambda (b e) > (set! button-colors (cdr button-colors)) > (send buttn set-label (car button-colors)))])) > > (send frame show #t) > > ____________________ Racket Users list: http://lists.racket-lang.org/users