\chapter{Programming techniques} \label{sec:techniques} This chapter is an assorted collection of techniques to programming problems that appear in many applications and for which support for generic solutions is present, but cannot easily be found using the online reference manual. \begin{itemize} \newcommand{\secoverview}[2]{\item[\ref{sec:#1}]{\bf #2}\\} \secoverview{control}{Control-structure of PCE/Prolog applications} Discusses the event-driven control-structure used by \product{} applications. Also describes how to avoid using this structure. \secoverview{exeobjects}{Executable Objects} Discusses \product{} code objects and their usage in controls, methods and as parameters. \secoverview{namedref}{Defining global named objects} Discusses handling of globally named system-wide objects. \secoverview{whoiswho}{Using object references: ``Who's Who?''} Discusses mechanism available to find object references, avoiding global references and explicit storage of references. \secoverview{application}{Relating frames} Discusses combining frames in a application, transient frames and various styles of modal operation and event handling. \secoverview{report}{Informing the user} Discusses the generic reporting system used to inform the user of progress, status and errors. \secoverview{errors}{Errors} Specifying, handling and generating errors. \secoverview{font}{Specifying fonts} Discusses the indirections in the font-specification mechanism. \secoverview{images}{Using images and cursors} Discusses images, icons and cursors. \secoverview{hyper}{Using Hyper Links to Relate Objects} Discusses a technique to relate objects. \secoverview{ugraphics}{User Defined Graphicals} Discusses the definition of new graphical primitives. \secoverview{printing}{Printing} Discusses printing from \product{} applications. \end{itemize} \newcommand{\techinput}[1]{\cleardoublepage\input{#1}} \techinput{control.tex} \techinput{code.tex} \techinput{namedref.tex} \techinput{whoiswho.tex} \techinput{application.tex} \techinput{frame.tex} \techinput{report.tex} \techinput{error.tex} \techinput{font.tex} \techinput{images.tex} \techinput{hyper.tex} \techinput{ugraphics.tex} \techinput{printing}