Silverfrost Logo About Us | Contact Us
 

Standard callbacks

Solution10 in the Visual ClearWin demonstration pack illustrates standard callbacks.

Standard callbacks are callbacks that are provided by Visual ClearWin. They are defined by one of the following strings.

Exit

Closes the form.

New

Creates a new MDI child.

Open

Uses the standard Open dialog to open a file.

Save

Saves a file.

SaveAs

Uses the standard Save As dialog to save a file.

Print

Uses the standard Print dialog to print document.

PrintPreview

Uses the standard Print Preview dialog to preview a document.

PageSetup

Uses the standard Page Setup dialog to set the margins of a document.

RecentFiles

Adds a list of recently used files to a menu. RecentFiles4 limits the list to 4 files etc. The default limit is 8.

Close

Closes a child dialog (usually a MDI child).

Cascade

Cascades all MDI child windows.

TileHorizontal

Tiles all MDI child windows horizontally.

TileVertical

Tiles all MDI child windows vertically.

ArrangeIcons

Arranges the icons in a MDI parent window.

Cut

Cuts the text in an edit box to the clipboard by emulating Ctrl+X.

Copy

Copies the text in an edit box to the clipboard by emulating Ctrl+C.

Paste

Pastes the text from the clipboard into an edit box by emulating Ctrl+V.

SelectAll

Selects all of the text in an edit box by emulating Ctrl+A.

Delete

Deletes the selected text in an edit box by emulating Del.

Undo

Undoes the last action in an edit box by emulating Ctrl+Z.

Redo

Redoes the last undo in an edit box by emulating Ctrl+Y.

WordWrap

Toggles the Word Wrap property of an edit box.

Font

Calls the standard select font dialog in an edit box and changes the global font.

Bold

Toggles the bold state of selected text in a RichEdit control.

Italic

Toggles the italic state of selected text in a RichEdit control.

Underline

Toggles the underline state of selected text in a RichEdit control.

Strikeout

Toggles the strikeout state of selected text in a RichEdit control.

Left

Moves the selected tree node to the left.

Right

Moves the selected tree node to the right.

Up

Moves the selected tree node up.

Down

Moves the selected tree node down.

ExpandAll

Expands all tree nodes.

CollapseAll

Collapses all tree nodes.

Details

Selects the Details view for a ListView.

LargeIcon

Selects the LargeIcon view for a ListView.

List

Selects the List view for a ListView.

SmallIcon

Selects the SmallIcon view for a ListView.

DrawingCut

Cuts the current selection in a Drawing_Panel to the clipboard.

DrawingCopy

Copies the current selection in a Drawing_Panel to the clipboard.

DrawingDelete

Deletes the current selection in a Drawing_Panel.

DrawingSelectAll

Selects the whole drawing in a Drawing_Panel.

DrawingPaste

Pastes contents of the clipboard on to a Drawing_Panel ready for dragging to its destination.

DrawingPasteFrom

Displays the standard Open dialog and pastes a file on to a Drawing_Panel ready for dragging to its destination.

DrawingCopyTo

Displays the standard Save dialog and copies the current selection in a Drawing_Panel to the given file.

htm<id>

Issues the WebCommand <id> in an Explorer_Box.

In order to use the clipboard for images, your main Fortran program must have the System.STAThreadAttribute attribute. This can be assigned by including the following line in your main program.

ATTRIBUTE(class="System.STAThreadAttribute",target="ROUTINE")

Standard callbacks are normally invoked by clicking on a menu item or a toolbar button. This can be programmed by extending the name of the item in the design view.

For example, if the menu item with name menuItem1 is to be used to exit from the form then the name menuItem1 is extended to menuItem1_Exit . Here an underscore is followed by the name of the callback. Similarly, if a toolbar has a collection of buttons that includes one with the name toolBarButton1, extending this to toolBarButton1_Print attaches the button to the standard Print callback.

Alternatively you can use a Fortran statement of the form:

CALL vcOnClick@(dlg, "toolBarButton1", "Print")

If you use a menu item with a Shortcut then there is no need to attach a callback that merely emulates this Shortcut.

Within a callback function you can make a direct call to a standard callback function by using a statement of the form:

CALL vcStandardCallback@(dlg, "Font")

This is useful when you want to add other instructions before or after the standard callback.

If you call a standard callback by extending the name of a standard menu item or toolbar button (or by using an extended menu) and also CALL vcOnClick@ to add your own callback, then both callbacks are executed in turn with the standard callback coming first (in the case of a menu item you can add more than one callback in addition to the standard callback).

The standard callbacks Open, Save/SaveAs and Print/PrintPreview require additional programming. The callback New may also require additional programming. For example, Open causes the standard Open file dialog to be displayed and needs a process to apply to the file selected by the user (in order words, Open requires a callback to specify what is to be done with the file). Visual ClearWin allows you to provide a suitable process by raising an event. In the case of the Open callback the event is called Open_Child and you must include a Fortran statement of the form:

CALL vcOnEvent@(dlgChild, "Open_Child", LoadFile)

This statement normally appears between vcCreateDialog@ and vcShowDialog@ statements or between vcCreateMdiChild@ and vcShow@ statements. dlgChild is the Dialog, Open_Child is the Visual ClearWin event, and LoadFile is your Fortran callback that provides the process that is to be applied to the file. Within this callback you can get the name of the file by calling vcGetStringData@(dlgChild, "#FileName") or you can call a Visual ClearWin method (such as vcLoadText@ or vcLoadImage@) that uses this name automatically.

Both the standard callbacks New and Open raise a Visual ClearWin event called Create_Child. Open raises Create_Child before Open_Child. New raises only Create_Child. In the callback that you attach to Create_Child you can interrogate either #FileName or #FileType before creating a suitable object (a certain kind of MDI child for example). #FileType provides the extension of the selected file name (e.g. "txt", "rtf", "bmp" etc.). #FileType is set to "[None]" when Create_Child is raised by a call to New.

Both Save and SaveAs raise the event called Save_Child. The callback that you provide defines the saving process. It also uses #FileName for the name of the file and this information is used internally in the Visual ClearWin method vcSaveText@.

Both Print and PrintPreview use an existing Microsoft event that you can link into using the name Print_Child. Print uses a standard Print dialog that must be provided in the design view of your form. Similarly PrintPreview uses a standard PrintPreview dialog that appears in the design view. Both types of dialog must have an attached PrintDocument component selected from the Toolbox.

In the callback that you associate with Print_Child, you can make a single call to a Visual ClearWin method such as vcPrintText@ or PrintImage@. In other cases you must work at a lower level as follows.

Print_Child automatically handles the page numbering of printed documents associated with collating and multiple copies and provides you with the number of the current page and the number of the current copy. This and other information is obtained by a Fortran statement of the form:

pageNo = vcGetIntegerData@(dlgChild, "#PageNumber")

In this context, in addition to #PageNumber you can also use: #CopyNumber, #LeftMargin, #RightMargin, #TopMargin, #BottomMargin, #Height and #Width.

The standard callbacks Exit and Close can be used to fire up a warning message when a document has been changed but not saved. This requires you to set integer data using a statement of the form:

CALL vcSetIntegerData@(dlgChild, "#Modified", 1)

Any non-zero data value will do. In the case of a Text_Box control, for example, you could respond to the TextChanged event with:

CALL vcOnEvent@(dlgChild,"text_Box1","TextChanged",OnChange)

and call vcSetIntegerData@ in the OnChange callback.

For further information see MDI applications.

 

 

Copyright © 1999-2019 Silverfrost Limited