|
EPOC32, dEDITMULTI |
How to use dEDITMULTI is a question that pops up
occasionlly on Usenet. Here is how I use dEDITMULTI
to edit strings of upto 255 chars. This gives you a
multi line edit box with scroll bars.
dEDITMULTI uses an array of longs as a buffer for
the text being edited.ie you probably have text
to display/edit that is currently stored in a string
(maximum of 255 chars in opl).
You will need to prepare a buffer of longs, and
copy in the chars from your string into it,
call dEDITMULTI in a dialog, then copy the chars
back out of the buffer into a string. This gets messy,
as to complicate matters, the first long in the array,
holds the number of chars in it.
As I use dEDITMULTI so
often I have written two small procs which I call
either side of a DIALOG to do the messy copying
for me :
PROC stringIn:(str&,ptr&)
LOCAL i%,n%
n%=PEEKB (str&)
i%=0
WHILE i%<n%
POKEB ptr&+4+i%,PEEKB(str&+1+i%)
i%=i%+1
ENDWH
POKEL ptr&,n%
ENDP
PROC stringOut:(ptr&,str&)
LOCAL i%,n%
n%=PEEKL (ptr&)
i%=0
WHILE i%<n%
POKEB str&+1+i%,PEEKB(ptr&+4+i%)
i%=i%+1
ENDWH
POKEB str&,n%
ENDP
PROC xyz:
LOCAL buff&(66) rem (1+(255+3)/4)
LOCAL str$(255)
str$="Some text"
stringIn:(ADDR(str$),ADDR(buff&(1)))
dINIT "Foo"
dEDITMULTI ADDR(buff&(1)),"prompt here",20,2,255
dBUTTONS "Cancel",-%c,"Save",%s
IF DIALOG
stringOut:(ADDR(buff&(1)),ADDR(str$))
print str$
ENDIF
ENDP
| ©1998 Phil Whiles |
![]() Go Home ! | Last revised: 26th May '98 |