LB Booster
Programming >> Liberty BASIC language >> reports in text windows
http://lbb.conforums.com/index.cgi?board=lblang&action=display&num=1474333355

reports in text windows
Post by Alincon on Sep 20th, 2016, 01:02am

Besides attempting to change the menu bar (see 'another flaky idea'), there are other problems with printing a report to a text window.
The user can alter the report (it is a text editor), unless the style 'enable' is used, but then scrolling does not work.

I have been working on using a list box as a printing medium, both on screen and on paper. Users can not change the report, you can scroll and it's easy to lprint the report:

Code:
[teamList]
    call winCntr,710,600  'center, sizes
    statictext #rpt.st1, "     League   Division    City          Name               Manager",0,0,700,20
    listbox #rpt.lb,rptx$(, [teamListPrnt],0,20,700,560
    Stylebits #rpt.lb, _LBS_NOSEL, 0, 0, 0
    Stylebits #rpt, 0, _WS_MAXIMIZEBOX , 0, 0
    open "LIST OF TEAMS  -  (click to print)" for dialog as #rpt
    #rpt, "trapclose [teamListExit]"
    #rpt, "font consolas 12 "           'fixed width font
    #rpt.lb, "singleclickselect"
    rptOpen=1

    files path$, info$(
    fc = val(info$(0, 1))
    for cf = 1 to fc
        foldName$ = info$(cf, 0)
        path2$ = foldName$ + "\aaaTeam.ini"
        open path2$ for input as #ini
            input #ini, teamLeague$, teamDivision$, teamCity$, teamName$, teamMgr$ 
        close #ini
        rptx$(cf) = space$(6); tb$(teamLeague$,10); tb$(teamDivision$,10); tb$(teamCity$,12); _
              tb$(teamName$,18); teamMgr$ 
    next
    sort rptx$(), 1, fc  ' sort to league, division
    #rpt.lb, "reload"
    wait

 [teamListPrnt]
    #rpt.lb, "selectindex 0"
    tlp$ = "No"  ' default response
    prompt "Print this report?"+chr$(13)+"Yes or No"; tlp$
    if left$(lower$(tlp$),1) <> "y" then wait
 [tlpLoop]
    gosub [tlpHdgs]
    for n = 1 to fc
        lprint  rptx$(n)    ' this is the key line: printing each entry in the listbox
    next
    dump
    wait

 [tlpHdgs]
    tlpPgCtr = tlpPgCtr + 1
    lprint space$(20);"List of Teams as of ";date$();space$(10);"Page "; tlpPgCtr
    lprint
    lprint "     League   Division    City          Name               Manager"
    return
    wait
 


For multi-page reports you would need to add title and hdg to each page, of course.

r.m.
Re: reports in text windows
Post by Richard Russell on Sep 20th, 2016, 06:35am

on Sep 20th, 2016, 01:02am, Alincon wrote:
The user can alter the report (it is a text editor), unless the style 'enable' is used, but then scrolling does not work.

My examples have always shown the _ES_READONLY stylebit being set. Doesn't that solve this issue in a much more straightforward way than switching to a listbox?

Richard.

Re: reports in text windows
Post by Alincon on Sep 20th, 2016, 3:41pm

I said 'text editor', but I am actually using a text window.
It appears that using a readonly stylebit does not work in a text window.

Can you show a short coding example, please?

r.m.
Re: reports in text windows
Post by Richard Russell on Sep 20th, 2016, 6:45pm

on Sep 20th, 2016, 3:41pm, Alincon wrote:
Can you show a short coding example, please?

Here you go:

Code:
    open "Read Only Text Window" for text as #w
    hw = hwnd(#w)
    calldll #user32, "SendMessageA", hw as ulong, _
      _EM_SETREADONLY as long, 1 as long, 0 as long, r as long
    #w "The quick brown fox jumps over the lazy dog."
    wait 

Richard.
Re: reports in text windows
Post by tsh73 on Sep 21st, 2016, 2:32pm

I didn't knew that "readonly" bit allows select/copy operations.
It would be nice addition to JB thread
Kind of grid view - if JB allowed it that is.
But last time I tried, texteditor version worked with LBB just fine.