HwGUI Documentation 5

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Alexander Kresin Rus Eng

software
HwGUI 2.16 reference manual
prev Alexander S.Kresin, September 2006

7. Utilities
7.1. Designer
The Designer is intended to create/modify input screen forms
and reports. It's main features are:

• The controls set is fully configurable. The list of controls (


widgets ) is placed in a special configuration XML file. The name
of that file is specified in Designer's ini file "Designer.iml",
currently it is resource/widgets.xml. To add a new control or
even a controls set, or add new properties/methods for a
control is easy now - just edit the widgets.xml. This allows to
use the Designer not only for HwGUI based, but for any other
applications - you can create a fully new controls set for your
purposes. Report items, for example, has been added with an
additional resource file - resource/repwidg.xml.
• The Designer can be built not only as standalone program, but
can be a part of other application where it is needed to edit
forms and/or reports at runtime. There is a bat file bldlib.bat,
which builds the designer.lib to link it in your application. To
invoke the designer, you just need to call the function
Designer(): Designer() - call Designer to open/create/edit
any form ; Designer( "-r" ) - call Designer to
open/create/edit any report ; Designer( "-s" ) - call
Designer to create a new form ( doesn't allow to open any other
); Designer( "-s",cForm ) - call Designer to edit a form
'cForm' ( doesn't allow to open any other ), the 'cForm' may be
a file name or a string, containing the form ; Designer( "-
r","-s" ) - call Designer to create a new report ( doesn't allow to
open any other ) ; Designer( "-r","-s",cReport ) - call
Designer to edit a report 'cReport' ( doesn't allow to open any
other ), the 'cReport' may be a file name or a string, containing
the report ;
• The output formats are configurable via the external scripts.
The native HwGUI format support is included in Designer's
code, all others are included as plugins. Currently there are
three plugins - for reading old .frm files ( resource/f_text.prg ),
for reading old .rpt files ( resource/r_text.prg ) and for writing
the prgs - f_hwgprg.prg ( not fully functional yet ).
• Designer allows to set not only properties, but methods, too, -
for every control / report item, so the resulting form description
is a complete dialog procedure, and the resulting report
description is a complete report program, which
opens/navigates/closes databases, calculates summs, etc.
• HwGUI includes special classes to load / execute a form or
report, created with the Designer - HFormTmpl,
HRepTmpl. oForm := HFormTmpl():Read( cForm ) - loads a
form, 'cForm' may be a file name or a string, containing the
form ; oForm:Show() - executes the loaded form, shows it
on the screen ; oReport := HRepTmpl():Read( cReport ) -
loads a report, 'cReport' may be a file name or a string,
containing the report ; oReport:Print(
cPrinterName,lPreview ) - prints the report.

Few notes for HwGUI applications about using of some


properties and methods:

• There is a method 'common' in a form methods list, it is


intended for functions, which are needed for the form and
which can be called from any other event handler of the form.
Each function must be ended with the 'ENDFUNC' statement.
The 'Return' isn't obligatory, but may be used if the function
must return some value.
• The form has a property 'Variables' - it is an array of variables,
which will be declared as 'Private' in the beginning of
HFormTmpl():Show() and may be used in any event handler of
the form.
• Each widget has a property 'Name' - this is a object name,
which also will be declared as 'Private' in the beginning of
HFormTmpl():Show().
• The widgets, which have corresponding 'GET' items, has a
property 'Varname' - the name of the correspondibg variable,
which also will be declared as 'Private' in the beginning of
HFormTmpl():Show().

Few notes about the reports builder. For a few years there was
another report designer in HwGUI - HwReport. Now the Designer
becomes the main report builder utility. It has more modern and
advanced engine than Hwreport and, what is important, it is more
easy to support one engine than two different :). The important
point is that now the report builder may be integrated into the
application and it is convenient, IMO, that the same code, the same
module, linked into the application, implements two tasks - works
with input forms and with reports. The compatibility with the *.rpt
files, created with Hwreport, is implemented via the plugin (
resource/r_text.prg ) - you may open rpt files, choosing the 'plain
text format' and then save them in a new format, which is exactly
the same as for input forms. The new report engine uses a bit
different approach than the old one. There are no 'markers' - the
widget 'area' is used instead. You can convert any rpt file into the
new format and you will see how these 'areas' are used. The 'area'
has two main properties:

• AreaType - it may be Table, DocHeader, DocFooter,


PageHeader, PageFooter. The Table is the same as the space
between 'Start line' and 'End line' markers in the old engine.
• VarOffset - False/True, it determines, if the area position on the
paper is fixed ( False ), or it depends on the size of previous
area ( True ).

The areas may be nested - to implement subtables, for example. The


report itself has two methods:

• onRepInit, which is executed when the report starts ;


• onRepExit.

Every print item ( Label, Box, Vline, HLine, Bitmap ) has three
methods:

• onBegin - it is executed before the item is being printed ;


• Condition - it must return a logical value ( with the 'Return'
statement ), which determines, should this item be printed or
no ;
• onExit - it is executed after the item is being printed.

The 'Label' item has additionally a method 'Expression', which


calculates a string, which should be printed. The 'area' has
additionally a method 'onNextLine', which is executed for the each
line in a 'Table' area - it is the same as script for the 'End Line'
marker in an old report engine.

7.2. Tutorial

7.3. Visual debugger

7.4. Editor

7.5. Dbc

7.6. Binary container manager

8. Contrib

8.1. ActiveX
8.2. Qhtm integration
8.2.1. Overview
QHTM is a C++ library, which allows to display and print HTML
content in your application - on any window, device context, on a
report, on a button or in a tooltip. For more details look at
http://www.gipsysoft.com. HwGUI provides an interface for this library.
To use it, you need to download QHTM from the
http://www.gipsysoft.com/qhtm/freedownload.shtml and copy qhtm.dll to
the same directory, where your application is.
Attention !!! QHTM is released under other license than Harbour
and HwGUI, so don't forget to read it before using !

8.2.2. Commands
@ <x>,<y> QHTM [ <oQhtm> ]
[ CAPTION <caption> ]
[ FILE <fname> ]
[ RESOURCE <resname> ]
[ OF <oWnd> ];
[ ID <nId> ]
[ SIZE <width>, <height> ]
[ ON INIT <bInit> ]
[ ON SIZE <bSize> ]
[ ON CLICK <bLink> ]
[ ON SUBMIT <bSubmit> ]
[ STYLE <nStyle> ]

This command creates QHTM control. Html content may be


assigned in three ways:

• You can write it after CAPTION clause.


• It may be in external html file, which name is designated after
FILE clause.
• Resource file. In this case appropriate resource name is signed
after RESOURCE clause.

ON CLICK clause determines the codeblock, which will be executed


when user clicks on an external link. ON SUBMIT clause determines
the codeblock, which will be executed when user submits form.
REDEFINE QHTM [ <oQhtm> ]
[ CAPTION <caption> ]
[ FILE <fname> ]
[ RESOURCE <resname> ]
[ OF <oWnd> ];
ID <nId>
[ ON INIT <bInit> ]
[ ON SIZE <bSize> ]
[ ON CLICK <bLink> ]
[ ON SUBMIT <bSubmit> ]

This command redefines QHTM control from resources. Html


content may be assigned in three ways the same three ways as in
@ ... QHTM command.

@ <x>,<y> QHTMBUTTON [ <oButton> CAPTION ]


<caption>
[ OF <oWnd> ];
[ ID <nId> ]
[ SIZE <width>, <height> ]
[ ON INIT <bInit> ]
[ ON SIZE <bSize> ]
[ ON CLICK <bClick> ]
[ STYLE <nStyle> ]
[ FONT <oFont> ]
[ TOOLTIP <ctoolt> ]

This command works exactly as @ ... BUTTON, but <caption>


may include html content.

REDEFINE QHTMBUTTON <oButton>


[ OF <oWnd> ]
ID <nId>
[ ON INIT <bInit> ]
[ ON SIZE <bSize> ]
[ ON CLICK <bClick> ]
[ FONT <oFont> ]
[ TOOLTIP <ctoolt> ]

This command works exactly as REDEFINE BUTTON, but


<caption> may include html content.

8.2.3. Functions
QHTM_Init( [ cDllName ] )
QHTM_Message( cMessage [,cTitle ] [,nFlags ] )
QHTM_LoadFile( handle, cFileName )
QHTM_LoadRes( handle, cResourceName )
QHTM_AddHtml( handle, cText )
QHTM_GetTitle( handle )
QHTM_GetSize( handle )
QHTM_EnableCooltips()
QHTM_PrintCreateContext() --> hContext
QHTM_PrintSetText( hContext,cHtmlText )
QHTM_PrintSetTextFile( hContext,cFileName )
QHTM_PrintSetTextResource( hContext,cResourceName )
QHTM_PrintLayOut( hDC,hContext ) --> nNumberOfPages
QHTM_PrintPage( hDC,hContext,nPage )
QHTM_PrintDestroyContext( hContext )

9. License
HwGUI is released under the same license, as Harbour itself.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public
License along with this software; see the file COPYING. If not, write
to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA (or visit the web site
http://www.gnu.org/).
As a special exception, you have permission for additional uses
of the text contained in its release of HWGUI.
The exception is that, if you link the HWGUI library with other
files to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the HWGUI library code into it.

10. About the author

prev table of contents


classes

Site map
© Copyright 2016. All Rights Reserved.
<div><img src="https://mc.yandex.ru/watch/37824975" style="position:absolute; left:-
9999px;" alt="" /></div>

You might also like