Version 1.443 is the public build/on CD, recommended for registered customers.
- Support for setting AppID AND the INI Filename on the command line
v1.10+ has supported setting the AppID on the command line. The code for this feature
is in the shared appMain.pas and appMaiDB.pas files, so if you are using those panels
you have the feature.
v1.38 adds support for passing the INI filename on the command line as well. If you
use this technique, you do not need to have the AppID defined in WebSetups! This
is a convenience for new users and for people using the WebHub-HTML Editor as a
standalone product. This feature is implemented in the component, so you will
have it regardless of which panels you use.
Syntax: webapp.exe /APPINI:filename
- Branding is case-insensitive v1.39
The BRANDFILE macro calls the TWebApp.BrandHTML method. As of v1.39, it is no longer case sensitive.
- Branding supports relative directories v1.44
It is now possible to brand a large site that uses subdirectories so long as all physical
directory locations are below the BrandDir. Prior versions supported only a single directory.
Set TWebApp.ExportRelativePaths
to false to make the links resolved to absolute paths dynamically.
- TWebHTTP v1.34
Supports easy posting of literals to another web page, even
a page on another server or outside of the WebHub environment.
- Support for HEAD request from spiders v1.34
Some spiders ask for HEAD data to get size/date information before proceeding into a page with a
GET request. WebHub applications now respect the HEAD request. The TWebOutput component
now 'chops' off the body portion of a document if it's been created for a HEAD request.
You don't have to do anything; your sites will now better support spiders.
- tPack/Restorer v1.34
The restorer now works even with forms that are reparented (e.g. all the WebHub panels).
It's confirmed ok for edit boxes, checkboxes, form position and size.
- Refresh Macro
In 1.276 the refresh command worked but the resulting page had a bad link. It now
correctly links into the default page (HOMEPAGE) of the app.
- Jump Macro v1.34-v1.42
Several special cases were fixed. See this page for
a test page that you can add to your own WebHub app for confirmation.
- JUMP|AppID:(ServerID) now correctly goes to the default page of the app, on the indicated server.
- JUMP|%=PriorPageID=% now works. The macro PriorPageID is now supported in all cases where
the method CompareTo is called. For example, PAGE|%=PriorPageID=% now works.
- If you define a page alias that uses a ServerID, you can now jump to it. Example:
<h1>-Page:jumptester=,,,jumptester</h1>
jump tester
<p>
%=JUMP|fakelink|fakelink=%
<h1>-Page:fakelink=MEMBER:TOS(WEBHUB),,,a fake link to MEMBER app, TOS page on another server</h1>
FYI, the complete list of expression-types supported by CompareTo are:
AppID, theAppID, pageID, session, Command, ChunkID, PriorPageID, all macros, all literals,
all page defaults, all app defaults, cookies, textareas, web action components,
and component.property.
- Fixed in v1.39: Even if you have TWebApp.CgiUseAppID set to FALSE, JUMPS to
a specific AppID:PageID will work.
- Fixed in v1.42: Nested PageAliases are supported; exportfilenames are fully supported.
- GO/GOR Macro v1.380
Fixed so that it works when used with AppID:PageID combination.
- Bounce Macro v1.34
The BOUNCE macro now supports macro expansion via CompareTo. This example works:
BOUNCE|HTTP://%=Command=%
- Ctrl key unstuck in HTML Editor v1.380
If you use ctrl-c, ctrl-v, etc., in the HTML editor you will find that
the CTRL key no longer sticks in the 'on' state.
- SET and CLEAR macro support textareas. v1.40
%=SET|textarea.txtMemo=hello there=%
%=CLEAR|textarea.txtMemo=%
The 'textarea.' prefix is required to access the textarea. It is not case-sensitive.
- New: CmdHas Macro v1.34
This is a conditional macro that covers "If the WebHub Command contains __, then display
this else display that." The phrase has to be a complete match.
Here is a test chunk that you can use to see how it works.
<h1>-Page:CmdHas</h1>
%=JUMP|%=pageid=%,ok|request this page with 'ok' as the command=%<br>
%=JUMP|%=pageid=%,test|request this page with 'test' as the command=%<br>
%=JUMP|%=pageid=%,ok,test|request this page with 'ok,test' as the
command=%<br>
%=JUMP|%=pageid=%|request this page without a the command=%
<hr>
%=CMDHAS|ok|has ok<br>=%
%=CMDHAS|test|has test<br>=%
%=CMDHAS|ok|%=CMDHAS|test|has ok and test<br>=%=%
- App Path is no longer stored in App Defaults v1.34
Use pWebApp.AppPath
if you want to know the path to your application-level INI
file. The path is no longer kept in the app defaults array. If you have AppPath defined
in your INI file, you might as well delete the definition because it is just ignored.
- AppDefaults with SetupID v1.380
Problem description: some application defaults, notably HubAppID, were being
saved in the wrong sort order. HubAppID sorted after HubAppID.SetupID. That has
been fixed. The side-effect was that application defaults were given incorrect
values when read on machines with non-blank SetupIDs.
- The checkbox command can now be 'CKB' or '.CKB' v1.390
Note the leading dot. That dot will keep the command from going to other
components. See tpAction.SetDirtyCommand.
- Added 'KeepCKB' and '.KeepCKB' to the built-in commands. v1.390
KeepCKB's role is to keep pending checkboxes from getting lost if, say,
you produce a form as part of a frameset. Here's an example of how to use it:
<FRAMESET ROWS="40%,60%">
%=FRAME|search|cat=%
%=FRAME|intro,keepckb|files=%
</FRAMESET>
When the frameset is rendered, the search page sends up several checkboxes
that are tracked in the pending array. Unless keepckb is added to the
command for the intro page however, that list of pending checkboxes would
be forgotten as soon as the intro page is built, leading to the checkboxes
being considered literals if and when the search page were posted.
- ThtDBWebApp v1.44
The handling of ChunkDataSource has been improved, fixing access violations
on this in the Delphi IDE.
- TWebPicture
Interface cleaned up (v1.34). Auto-generated filenames now contain the processid
to make the component multi-instance safe (v1.38).
- TWebDataForm v1.34
Added WrapMemo property to let you choose to wrap the lines from a memo field.
The default was that they would always wrap. Now, with the property, the
default is to add <br>'s at the end of every line. Also: some properties
were surfaced so that derived components could use them.
- TWebIniLink v1.36+
Creates new empty INI file for the web application if none is found.
Reads and writes (properly) from INI file sections that are named based on
'[' + classname + '.' + property + ']', for example [TWebApp.Files] and [TWebApp.Defaults].
NB: you may use .SetupID as a suffix on any TWebApp section in the INI file and that will
take precedence over the non-setupid section when the setupid matches. i.e. you could use
[TWebApp.Files.Home] to hold values for your home machine and [twebapp.files.work]
for your work machine. This use of the SetupID as a suffix is not a new feature.
- Property Editors v1.34+
The Delphi 3 packages now properly register the property editors. If you were wondering
why clicking on TWebApp.Version..., Pages..., etc. did nothing in the Delphi IDE,
it was because the property editors were not registered in prior releases.
- TWebPage v1.35+
Fixes problems when using TWebPage on application.mainform.
- TWebDataGrid v1.380
Added a property and changed the events as follows. The new TD property determines
what is sent to open a TABLE cell. The default is <TD> and that default is reset
for each cell. You may change the property to <TH> or any other valid TABLE
cell begin syntax. The OnHotField and other "on cell"
events are passed CellValue (previously named 's') and that never contains the
CellBegin syntax. In prior versions, it would in some cases.
If you have both checkboxes and radio buttons enabled for a single field, your
CellValue will contain data for both INPUT fields. In all other cases, CellValue will
contain just the HTML for the given field in the given mode.
The CellEnd syntax is handled automatically. If TH is detected, it sends \TH and if
TD is detected, it sends \TD.
Action required: check your code to see what it expected 's' to be. If your code
was changing the TD syntax, you should now do that by setting the property.
v1.44: DisplaySet is correct immediately. Reference ABC demo, new surfer. This was
broken briefly during v1.43.
- TWebScanGrid New Properties v1.40
Added the TABLE, TR, TD, TH and BR properties. See webhub.hlp or
http://www.href.com/compdocs/WH/TWebScan/34454.htm for a description of how to use the properties.
- TWebScanGrid Bug Fix v1.44
As seen in the HTCL demo, the data displayed on each record was identical. Also the
page height would be user-configurable for one "post" but subsequent pages would revert
back to the default. Both issues have been fixed; these were broken briefly in
v1.43.
- TWebRubi and TWebScan
Corrected a problem with buttonsautohide and single row answers. (v1.35)
Substantial enhancements including new events, options to refine searches,
restricting number of records returned, error trapping and recovery; split
into two levels providing a TWebScanRows component as a bonus for browsing
through arbitrary lists of keys. (v1.39)
- TWebDBListBox v1.39
Added BlankText property to let one specify the text for a blank value
(which is typically not read from the database). Added MultiSelect property
to enable the HTML multiselect attribute.
- TWebDataSource v1.38
Now (v1.38) if you are using wwwParams in a query linked to a TWebDataSource, and
you have a non-string parameter type, and the associated
literal is blank (say, on start-up), then the wwwParam is not assigned.
Background:The problem showed up in v1.30 to 1.37, e.g. the Rubicon demo where the
datatype was Integer, and it was being assigned a blank string. The error message
had been "variant conversion error".
- TWebDataScan v1.37
Known problem. If OverlapScroll is False, and you approach the last page, you
will scroll in increments of 1 record. Recommendation: set OverlapScroll to true.
- Save-state mechanism v1.36+
Fixed a bug that was introduced in v1.29. DisplaySet and other database issues
resolved in v1.41.
- REQUIRES macro v1.36+
Fixed so that you can express "requires that a literal X be non-blank or else take surfer
to page Y: REQUIRES|x!|y
- New ucMP.pas unit v1.390
tPack has a new unit with functions for controlling apps on a multiprocessor machine.
- New ucPos.pas unit v1.390
tPack has a new unit with a case insensitive POS function.
- New tpPopUp.pas unit v1.380
tPack has a new class which sets a flag to let you know that the popup menu is
in-use, so that your code can tell whether it was called from the popup or from
elsewhere.
- HTMLSelectStatement v1.410
New helper function to produce a fully formed select box. ucHtml.pas.
- TtpDBGrid v1.390
This component is now only shipped with TPack source. It is not required in WebHub.
- TtpLoginDialog v1.40
The TLoginDialog component was renamed to TtpLoginDialog to avoid conflicts with
other component packages.
- Posting from a static HTML page v1.41
In v1.38, literals were blank in this situation. Fixed.