How to define multi-line MEMO fields

Hi,

I’m hoping this is a really simple problem to resolve.

I’m recently getting back into Clarion and I want to use a MEMO field within a standard TPS file. (I’m still at the stage of only producing very small apps)

I can use the data type MEMO in the Data Dictionary and give it a length of 4096 bytes, however the screen picture gets set to @s255. When I place the field on the form, it gives me just that, a string of 255 bytes. I’m pretty sure back in the day you could define how many rows you wanted to display of the MEMO field and whether you wanted scroll bars on the field if required.

I’m hoping I’ve just missed something really obvious.

Any help or guidance would be appreciated.

Thanks.

You want to use a TEXT control, not an ENTRY.

1 Like

Thanks for that.

I’d just had the window as it was spat out of the App Generator. (Shouldn’t the App Generator do it automatically?)

Removing the control it used and replacing it with a Text control with the appropriate use field did the job.

Thanks again for your help.

You can set the default control type for the column in the dictionary editor.

2 Likes

Once again, thank you so much for your time.

I clearly still have a lot to learn.

As Rick said use TEXT. Add VSCROLL to allow entering more lines than the control size on the window will display. Add HSCROLL for no word wrap to occur, typically used when showing a text file.

Tip: If you want an ENRY that accepts more than 255 use a TEXT with the SINGLE attribute that prevents pressing Enter for newline.

1 Like

Thank you. That’s much appreciated.

Hi Carl - You can also use an ENTRY with >255 if you use PROP:Text.

3 Likes

That took me a minute to realize you meant that PROP:Text sets the Picture on an Entry().

Confirmed that works with > 255. I did not know that, very useful. Thank You!

Example:

ENTRY(@s255),Use(?FileName)   !IDE and Compiler limit
   CODE
   ?FileName{PROP:Text}='@s260'    !Runtime can exceed 255
3 Likes

Ah. So my question wasn’t so stupid or noob as I thought it was originally.

Great to learn from each other.

Also maybe useful to note, you can ‘parse’ the memo, line by line if you need to at a later date…
i# = ?locMemo{Prop:LineCount}

Loop s# = 1 to i#
locLine = ?locMemo{Prop:Line,s#}
etc
.

3 Likes

The Prop:Line does have the limitation the TEXT always wraps at 1024 bytes. It’s the way the Windows Edit control works. Not usually an issue but Armor ran into it and reported in Comp.lang.clarion. I use that often to get text split into lines at 13,10