diff --git a/reference/GuiLock/main.cpp b/reference/GuiLock/main.cpp index 0ffbae51d..7ae5f50e0 100644 --- a/reference/GuiLock/main.cpp +++ b/reference/GuiLock/main.cpp @@ -17,18 +17,17 @@ struct App : TopWindow { void App::Work() { - int q = 0; - while(!Thread::IsShutdownThreads()) { - { - GuiLock __; - if(list.GetCount() > 1000) { - if(PromptYesNo("Quit?")) - Break(); - list.Clear(); - } - list.Add((int64)Random()); - } + for(;;) { Sleep(1); + GuiLock __; + if(Thread::IsShutdownThreads()) + break; + if(list.GetCount() > 1000) { + if(PromptYesNo("Quit?")) + Break(); + list.Clear(); + } + list.Add((int64)Random()); } } diff --git a/reference/RichTextLayoutTracer/RichTextLayoutTracer.upp b/reference/RichTextLayoutTracer/RichTextLayoutTracer.upp new file mode 100644 index 000000000..7ba992de9 --- /dev/null +++ b/reference/RichTextLayoutTracer/RichTextLayoutTracer.upp @@ -0,0 +1,12 @@ +description "Demonstrates using RichTextLayoutTracer to count number of table rows per report page\377"; + +uses + CtrlLib, + Report; + +file + main.cpp; + +mainconfig + "" = "GUI"; + diff --git a/reference/RichTextLayoutTracer/init b/reference/RichTextLayoutTracer/init new file mode 100644 index 000000000..e40ed03ae --- /dev/null +++ b/reference/RichTextLayoutTracer/init @@ -0,0 +1,5 @@ +#ifndef _RichTextLayoutTracer_icpp_init_stub +#define _RichTextLayoutTracer_icpp_init_stub +#include "CtrlLib/init" +#include "Report/init" +#endif diff --git a/reference/RichTextLayoutTracer/main.cpp b/reference/RichTextLayoutTracer/main.cpp new file mode 100644 index 000000000..49e681316 --- /dev/null +++ b/reference/RichTextLayoutTracer/main.cpp @@ -0,0 +1,34 @@ +#include + +using namespace Upp; + +struct TableRowTracer : RichTextLayoutTracer { + VectorMap pgr; + + virtual void TableRow(const Rect& page, PageY y, int, const RichTable&) { + pgr.GetAdd(y.page, 0)++; + } +}; + +GUI_APP_MAIN +{ + Report r; + r.Footer("[R1 "); + TableRowTracer t; + r.SetRichTextLayoutTracer(t); + String qtf = "&[R This is a demonstration of [* RichTextLayoutTracer]&&&{{1 Table"; + for(int i = 0; i < 100; i++) + qtf << ":: " << i; + qtf << "}}"; + r.Put(qtf); + + Report rr; + for(int i = 0; i < r.GetCount(); i++) { + if(i) + rr.NewPage(); + rr.Footer("[R1 There is " + AsString(t.pgr.Get(i, 0)) + " table rows on this page"); + rr.DrawDrawing(r.GetPageSize(), r[i]); + } + + Perform(rr); +}