├── .gitignore ├── Build.md ├── CHANGELOG.md ├── Deploy.bat ├── Docs ├── License.rtf ├── MPL-2.0-Boilerplate.txt ├── MPL.txt ├── PreSVNHistory.txt ├── ReadMe.txt ├── SourceCodeLicenses.md └── vi-file-format.md ├── README.md └── Source ├── Assets ├── VIEd.ico └── VIEd.manifest ├── FmDropDownListEd.dfm ├── FmDropDownListEd.pas ├── FmFileEncoding.dfm ├── FmFileEncoding.pas ├── FmGenericDlg.dfm ├── FmGenericDlg.pas ├── FmGenericOKDlg.dfm ├── FmGenericOKDlg.pas ├── FmGenericViewDlg.dfm ├── FmGenericViewDlg.pas ├── FmIdEd.dfm ├── FmIdEd.pas ├── FmMacroEd.dfm ├── FmMacroEd.pas ├── FmMain.dfm ├── FmMain.pas ├── FmNumberEd.dfm ├── FmNumberEd.pas ├── FmResCompiler.dfm ├── FmResCompiler.pas ├── FmResCompilerCheck.dfm ├── FmResCompilerCheck.pas ├── FmResOutputDir.dfm ├── FmResOutputDir.pas ├── FmSetEd.dfm ├── FmSetEd.pas ├── FmStringEd.dfm ├── FmStringEd.pas ├── FmUserSetup.dfm ├── FmUserSetup.pas ├── FmVerNumEd.dfm ├── FmVerNumEd.pas ├── FmViewList.dfm ├── FmViewList.pas ├── FmViewMacros.dfm ├── FmViewMacros.pas ├── Help ├── CSS │ └── help.css ├── HTML │ ├── cmdline.htm │ ├── dlg-analysis.htm │ ├── dlg-bitset.htm │ ├── dlg-browserescomp.htm │ ├── dlg-comments.htm │ ├── dlg-compile.htm │ ├── dlg-compilerdir.htm │ ├── dlg-encoding.htm │ ├── dlg-fileexport.htm │ ├── dlg-fileopen.htm │ ├── dlg-filesave.htm │ ├── dlg-identifier.htm │ ├── dlg-macros.htm │ ├── dlg-nohelp.htm │ ├── dlg-numbers.htm │ ├── dlg-picklist.htm │ ├── dlg-rescompiler.htm │ ├── dlg-setup.htm │ ├── dlg-string.htm │ ├── dlg-vernum.htm │ ├── dlg-viewmacros.htm │ ├── dlg-viewrc.htm │ ├── howto-analyse.htm │ ├── howto-commentrc.htm │ ├── howto-commentvi.htm │ ├── howto-compile.htm │ ├── howto-creatercfile.htm │ ├── howto-customise.htm │ ├── howto-editdoc.htm │ ├── howto-editid.htm │ ├── howto-edititem.htm │ ├── howto-fields.htm │ ├── howto-insertrcfile.htm │ ├── howto-newdoc.htm │ ├── howto-preferences.htm │ ├── howto-previewrc.htm │ ├── howto-rescompiler.htm │ ├── howto-validate.htm │ ├── howto.htm │ ├── index.htm │ ├── license.htm │ ├── menu-edit.htm │ ├── menu-file.htm │ ├── menu-help.htm │ ├── menu-options.htm │ ├── menu.htm │ ├── overview.htm │ ├── whatis-autovalidation.htm │ ├── whatis-fields.htm │ ├── whatis-identifier.htm │ ├── whatis-preferences.htm │ ├── whatis-resfile.htm │ ├── whatis-vifile.htm │ ├── whatis-vistatement.htm │ └── whatis.htm ├── Index.hhk ├── TOC.hhc └── VIEd.hhp ├── Install.iss ├── Resources.rc ├── UCommonDlg.pas ├── UComparers.pas ├── UDlgParent.pas ├── UFileIO.pas ├── UHelp.pas ├── UMacros.pas ├── UMemoCaretPosDisplayMgr.pas ├── UMsgDlgs.pas ├── UMutableEnvVars.pas ├── UParams.pas ├── UResCompiler.pas ├── USettings.pas ├── UUtils.pas ├── UVIData.pas ├── UVIFile.pas ├── UVInfo.pas ├── UVerUtils.pas ├── VERSION ├── VIEd.dpr ├── VIEd.dproj └── Version.vi /.gitignore: -------------------------------------------------------------------------------- 1 | # Based on Delphi.gitignore from https://github.com/github/gitignore 2 | # MIT license Copyright (c) 2014 GitHub, Inc 3 | 4 | # Uncomment these types if you want even more clean repository. But be careful. 5 | # It can make harm to an existing project source. Read explanations below. 6 | # 7 | # Resource files are binaries containing manifest, project icon and version info. 8 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 9 | #*.res 10 | # 11 | # Type library file (binary). In old Delphi versions it should be stored. 12 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 13 | #*.tlb 14 | # 15 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 16 | # Uncomment this if you are not using diagrams or use newer Delphi version. 17 | *.ddp 18 | # 19 | # Visual LiveBindings file. Added in Delphi XE2. 20 | # Uncomment this if you are not using LiveBindings Designer. 21 | *.vlb 22 | # 23 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 24 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 25 | *.deployproj 26 | # 27 | 28 | # Delphi compiler-generated binaries (safe to delete) 29 | *.exe 30 | *.dll 31 | *.bpl 32 | *.bpi 33 | *.dcp 34 | *.so 35 | *.apk 36 | *.drc 37 | *.map 38 | *.dres 39 | *.rsm 40 | *.tds 41 | 42 | # Delphi autogenerated files (duplicated info) 43 | *.cfg 44 | #*Resource.rc 45 | 46 | # Delphi local files (user-specific info) 47 | *.local 48 | *.identcache 49 | *.projdata 50 | *.tvsconfig 51 | *.dsk 52 | 53 | # Delphi history and backups 54 | __history/ 55 | *.~* 56 | 57 | # Project specific files added by DelphiDabbler: 58 | 59 | # unit files 60 | *.dcu 61 | 62 | # Build directories and interim files 63 | _build 64 | *.virc 65 | -------------------------------------------------------------------------------- /Docs/License.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang2057{\fonttbl{\f0\fnil\fcharset0 Calibri;}} 2 | {\colortbl ;\red0\green0\blue255;} 3 | {\*\generator Riched20 10.0.22621}\viewkind4\uc1 4 | \pard\sa200\sl276\slmult1\b\f0\fs28\lang9 DelphiDabbler Version Information Editor\par 5 | End User Software License Agreement\par 6 | \fs22 1. Definitions\par 7 | \b0 In this document the following definitions apply:\par 8 | "Product" means DelphiDabbler Version Information Editor and related documentation.\par 9 | "Author" means the author and copyright holder of the software, that is Peter D Johnson, {{\field{\*\fldinst{HYPERLINK https://delphidabbler.com }}{\fldrslt{https://delphidabbler.com\ul0\cf0}}}}\f0\fs22 .\par 10 | \b 2. Introduction\b0\par 11 | A source code version of some of DelphiDabbler Version Information Editor's functionality that you may use, modify and distribute is available to you free of charge from {{\field{\*\fldinst{HYPERLINK https://delphidabbler.com }}{\fldrslt{https://delphidabbler.com\ul0\cf0}}}}\f0\fs22 under the Mozilla Public License v2.0 and other open source software licenses. The Mozilla Public License v2.0 can be found at {{\field{\*\fldinst{HYPERLINK https://www.mozilla.org/en-US/MPL/2.0/ }}{\fldrslt{https://www.mozilla.org/en-US/MPL/2.0/\ul0\cf0}}}}\f0\fs22 .\par 12 | The accompanying executable code version of the Product is made available to you under the terms of this end user license agreement. By installing or using DelphiDabbler Version Information Editor you are consenting to be bound by the agreement. If you do not agree to the terms and conditions of this agreement do not install or use any part of DelphiDabbler Version Information Editor.\par 13 | DelphiDabbler Version Information Editor is copyright \'a9 1998-2025 by Peter D Johnson, {{\field{\*\fldinst{HYPERLINK https://delphidabbler.com }}{\fldrslt{https://delphidabbler.com\ul0\cf0}}}}\f0\fs22 .\par 14 | \b 3. License Grant\par 15 | \b0 The Author grants you a non-exclusive license to use the executable code version of DelphiDabbler Version Information Editor. You may install as many copies of the program as you wish and may distribute the program providing this license agreement and any other copyright or legal notices are distributed with the Product.\par 16 | This agreement will also govern any software upgrades provided by the Author that replace and/or supplement the original Product, unless such upgrades are accompanied by a separate license, in which case the terms of that license will govern.\par 17 | \b 4. Termination\b0\par 18 | If you breach this Agreement your right to use the Product will terminate immediately and without notice, but all provisions of this agreement except the License Grant (Section 3) will survive termination and continue in effect. Upon termination, you must destroy all copies of the Product.\par 19 | \b 5. Proprietary Rights\par 20 | \b0 Portions of the Product are available in source code form under the terms of the Mozilla Public License and other open source licenses from {{\field{\*\fldinst{HYPERLINK https://delphidabbler.com }}{\fldrslt{https://delphidabbler.com\ul0\cf0}}}}\f0\fs22 . Nothing in this agreement will be construed to limit any rights granted under the Open Source Licenses. Subject to the foregoing, the Author, for himself and on behalf of his licensors, hereby reserves all intellectual property rights in the Product, except for the rights expressly granted in this agreement. You may not remove or alter any copyright or other proprietary notice in or on the Product.\par 21 | \b 6. Disclaimer Of Warranty\par 22 | \b0 THE PRODUCT IS PROVIDED "AS IS" WITH ALL FAULTS. TO THE EXTENT PERMITTED BY LAW, THE AUTHOR HEREBY DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES THAT THE PRODUCT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE AND NON-INFRINGING. YOU BEAR ENTIRE RISK AS TO SELECTING THE PRODUCT FOR YOUR PURPOSES AND AS TO THE QUALITY AND PERFORMANCE OF THE PRODUCT. THIS LIMITATION WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SHOULD THE PRODUCT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par 23 | \b 7. Limitation Of Liability\b0\par 24 | EXCEPT AS REQUIRED BY LAW, THE AUTHOR AND HIS LICENSORS, CONTRIBUTORS AND DISTRIBUTORS WILL NOT BE LIABLE FOR ANY GENERAL, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES ARISING OUT OF OR IN ANY WAY RELATING TO THIS AGREEMENT OR THE USE OF OR INABILITY TO USE THE PRODUCT, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOST PROFITS, LOSS OF DATA, AND COMPUTER FAILURE OR MALFUNCTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH SUCH CLAIM IS BASED.\par 25 | \b 8. Miscellaneous\par 26 | \b0 This Agreement constitutes the entire agreement between the Author and you concerning the subject matter hereof, and it may only be modified by a written amendment signed by the Author.\par 27 | Except to the extent applicable law, if any, provides otherwise, this Agreement will be governed by the law of England & Wales, with Welsh law taking precedance where it has diverged from English law.\par 28 | } 29 | -------------------------------------------------------------------------------- /Docs/MPL-2.0-Boilerplate.txt: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) COPYRIGHTDATE, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * DESCRIPTION. 9 | } 10 | 11 | 12 | /* 13 | * This Source Code Form is subject to the terms of the Mozilla Public License, 14 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 15 | * obtain one at http://mozilla.org/MPL/2.0/ 16 | * 17 | * Copyright (C) COPYRIGHTDATE, Peter Johnson (www.delphidabbler.com). 18 | * 19 | * DESCRIPTION. 20 | */ 21 | 22 | 23 | ; This Source Code Form is subject to the terms of the Mozilla Public License, 24 | ; v. 2.0. If a copy of the MPL was not distributed with this file, You can 25 | ; obtain one at http://mozilla.org/MPL/2.0/ 26 | ; 27 | ; Copyright (C) COPYRIGHTDATE, Peter Johnson (www.delphidabbler.com). 28 | ; 29 | ; DESCRIPTION. 30 | 31 | 32 | # This Source Code Form is subject to the terms of the Mozilla Public License, 33 | # v. 2.0. If a copy of the MPL was not distributed with this file, You can 34 | # obtain one at http://mozilla.org/MPL/2.0/ 35 | # 36 | # Copyright (C) COPYRIGHTDATE, Peter Johnson (www.delphidabbler.com). 37 | # 38 | # DESCRIPTION. 39 | 40 | 49 | -------------------------------------------------------------------------------- /Docs/ReadMe.txt: -------------------------------------------------------------------------------- 1 | DelphiDabbler Version Information Editor 2 | ======================================== 3 | 4 | 5 | Contents 6 | -------- 7 | 8 | 1. License and Copyright 9 | 2. System Requirements 10 | 3. Installation - instructions on how to install the program 11 | 4. Uninstalling - instructions on how to uninstall the program 12 | 5. Updates - details of where to check for program updates 13 | 6. Source Code 14 | 7. Issues - how to report bugs & request new features 15 | 8. About DelphiDabbler 16 | 17 | 18 | 1) License and Copyright 19 | ------------------------ 20 | 21 | This is open source software. A full copy of the license can be found in the 22 | file License.rtf that is installed in the main program installation folder. 23 | 24 | 25 | 2) System Requirements 26 | ---------------------- 27 | 28 | Version Information Editor requires Windows XP or later. 29 | 30 | The program's memory and hard disk requirements are modest and any computer 31 | capable of running the required operating system will be suitable. 32 | 33 | 34 | 3) Installation 35 | --------------- 36 | 37 | Version Information Editor is installed using a standard Windows, wizard based, 38 | setup program. This should be named VIEd-Setup-9.9.9.exe, where 9.9.9 is 39 | replaced by the program's version number. 40 | 41 | The setup program is usually distributed in a zip file that also contains this 42 | read-me file. This zip file will be named vied-exe-9.9.9.zip, where 9.9.9 is the 43 | same version number noted above. 44 | 45 | Extract the setup program from the zip file and run it to install the program. 46 | 47 | Please note that administrator privileges are required to run the installer. You 48 | may be prompted for permission to run the setup program and may need to provide 49 | an administrator password. 50 | 51 | 52 | 4) Uninstalling 53 | --------------- 54 | 55 | Version Information Editor can be uninstalled two ways: 56 | 57 | Either: 58 | Open the application settings app appropriate to your version of Windows, 59 | locate DelphiDabbler Version Information Editor in the list of installed 60 | programs and select the remove option; 61 | 62 | Or: 63 | Locate and open the "Version Information Editor" entry on the Start menu then 64 | click "Uninstall Version Information Editor". 65 | 66 | The uninstaller will now run. Follow the prompts and provide administrator 67 | authorisation as required. Version Information Editor will now be unistalled. 68 | 69 | 70 | 5) Updates 71 | ---------- 72 | 73 | Check the Version Information Editor web page at 74 | https://delphidabbler.com/software/vied to find the latest version of the 75 | program. 76 | 77 | Alternatively check the program's releases page on GitHub at 78 | https://github.com/delphidabbler/vied/releases 79 | 80 | 81 | 6) Source Code 82 | -------------- 83 | 84 | Version Information Editor's source code is maintained in the delphidabbler/vied 85 | Git repository on GitHub at https://github.com/delphidabbler/vied 86 | 87 | Source code of all releases back to v2.13.0 are available from the GitHub 88 | repository's releases page at https://github.com/delphidabbler/vied/releases. 89 | Choose the release you want from those listed and download an archive containing 90 | the required source code. 91 | 92 | Git users can fork the project and clone the repository. The master branch 93 | contains the source code of the latest release while the develop branch is more 94 | up to date with later, unpublished, changes. The develop branch may be unstable. 95 | 96 | Notes on how to compile Version Information Editor from source code can be found 97 | in the file Build.md in the root of the repository. Note that, up to v2.14.0, 98 | build documentation was provided in a file named Build.html. 99 | 100 | 101 | 7) Issues 102 | --------- 103 | 104 | Bugs reports and feature requests should be made via Version Information 105 | Editor's issues tracker at https://github.com/delphidabbler/vied/issues 106 | 107 | 108 | 8) About DelphiDabbler 109 | ---------------------- 110 | 111 | The DelphiDabbler is Peter Johnson - a hobbyist Delphi programmer living in 112 | Ceredigion, Wales, UK. The DelphiDabbler website is at 113 | https://delphidabbler.com/ and contains all Peter's open source programs, 114 | Delphi library code, programming articles, hints and tips and other resources. 115 | -------------------------------------------------------------------------------- /Docs/SourceCodeLicenses.md: -------------------------------------------------------------------------------- 1 | # Source Code Licensing 2 | 3 | This document discusses the relevant licenses governing the Version Information Editor source code. 4 | 5 | The code available from the project's [Git repository](https://github.com/delphidabbler/vied) comprises: 6 | 7 | * [Original source code](#original-source-code) 8 | * [Image files](#image-files) 9 | 10 | The download does not include **all** the source code required to build Version Information Editor. Explicitly it doesn't include: 11 | 12 | * Source files from the Delphi VCL. You must have Delphi in order to access these files. 13 | 14 | * The required DelphiDabbler [DDabLib library](https://github.com/ddablib) components and units. The latest versions are all covered by the Mozilla Public License v2.0. 15 | 16 | ## Original Source Code 17 | 18 | Original source files are stored the `Source` directory and its sub-directories. 19 | 20 | Any original source code file that is governed by a license has a comment to that effect in the source. The exception is that `.dfm` files are considered to be governed by the same license as the associated `.pas` file. 21 | 22 | Most, if not all, files are licensed under the Mozilla Public License v2.0. A full copy of that license can be found in `MPL.txt`. 23 | 24 | ## Image Files 25 | 26 | The images used in the program are stored in the `Source` directory and its sub-directories or are embeddeded in `.dfm` files. 27 | 28 | All images are either original or have been copied or adapted from various sources. With the exception of the images listed under [Exceptions](#exceptions), all images are believed to be in the public domain and can be re-used without restriction. 29 | 30 | ### Exceptions 31 | 32 | The file `Source\Assets\VIEd.ico` is copyright (C) 2009 Peter Johnson (). 33 | 34 | This file may not be altered in any way and may not be used in any other programs, including programs derived from the Version Information Editor code base, unless explicit permission is given by the copyright holder. 35 | 36 | This means that if you modify an aspect of the Version Information Editor code base and publish your changes then you must remove the icon or replace it with your own. 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Version Information Editor (VIEd) 2 | 3 | ## Overview 4 | 5 | Version Information Editor enables version information to be edited. It also creates version information resource source (`.rc`) files. The program stores details of the version information in its own project (`.vi`) files. Simple macros can be used to help automate the updating of version information files. 6 | 7 | The program can also create binary resource (`.res`) files containing version information. To do this it needs to be configured to use a 3rd party resource compiler such as Embarcadero's BRCC32. 8 | 9 | The program supports some command line options. For details see the help file's [_Command Line Options_](https://htmlpreview.github.io/?https://github.com/delphidabbler/vied/blob/master/Source/Help/HTML/cmdline.htm) topic. 10 | 11 | ## System Requirements 12 | 13 | VIEd requires Windows XP and later. 14 | 15 | ## Source Code 16 | 17 | VIEd is written in Object Pascal and is compiled with Delphi XE, although any later Delphi compiler may suffice. 18 | 19 | See `Build.md` in the repo root for information about how to build the program from source code. 20 | 21 | ## Contributing 22 | 23 | Contributions are welcome. 24 | 25 | The [GitFlow](http://nvie.com/posts/a-successful-git-branching-model/) branching model is used. 26 | 27 | To contribute please fork the project and create a new branch off `develop` that is named `feature/your-feature-name`. Create a pull request for your feature branch when you're ready. Pull requests must be configured to merge to the `develop` branch, not `master`. 28 | 29 | Contributions should be licensed under either the Mozilla Public License v2.0 (without a "Incompatible with Secondary Licenses" notice) or under some other compatible license, preferably one in common use. Note that the GPL and its cousins are not compatible. 30 | 31 | ## Executable Code 32 | 33 | VIEd is distributed in a zip file containing a standard Windows installer. All releases from the latest back to v2.13.0 are available from the project's [releases page](https://github.com/delphidabbler/vied/releases). 34 | 35 | ## Documentation 36 | 37 | For help using the program the first port of call should be the program's comprehensive HTML help file. 38 | 39 | Information on how to install the program is in `Docs/ReadMe.txt`. 40 | 41 | The change log is in `CHANGELOG.md` in the repository root. 42 | 43 | The program's `.vi` file format is documented in `Docs/vi-file-format.md`. 44 | 45 | Finally, the program has a Web page at . 46 | 47 | ## Bugs and Feature Requests 48 | 49 | Any bug reports and feature requests can be made via the project's [issue tracker](https://github.com/delphidabbler/vied/issues). 50 | 51 | ## License 52 | 53 | Most of the original source code is licensed under the terms of the Mozilla Public License 2.0. For full details of source code licensing, including that for 3rd party code and the program's images, see `Docs/SourceCodeLicenses.md`. 54 | 55 | The license for the executable code can be found in `Docs/License.rtf`. 56 | 57 | > Note that versions prior to v2.13.0 had different licensing arrangements, so please check before using those versions. 58 | -------------------------------------------------------------------------------- /Source/Assets/VIEd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphidabbler/vied/84ecabf07a2273ac5face1386601a4ec59096e9b/Source/Assets/VIEd.ico -------------------------------------------------------------------------------- /Source/Assets/VIEd.manifest: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 21 | 22 | 23 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Source/FmDropDownListEd.dfm: -------------------------------------------------------------------------------- 1 | inherited DropDownListEditor: TDropDownListEditor 2 | Caption = '' 3 | OnShow = FormShow 4 | ExplicitWidth = 504 5 | ExplicitHeight = 361 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | inherited pnlBody: TPanel 9 | Width = 281 10 | Height = 73 11 | ExplicitWidth = 281 12 | ExplicitHeight = 73 13 | object lblDesc: TLabel 14 | Left = 0 15 | Top = 0 16 | Width = 130 17 | Height = 13 18 | Caption = '&Select an entry from the list:' 19 | FocusControl = cmbDropDown 20 | end 21 | object cmbDropDown: TComboBox 22 | Left = 0 23 | Top = 16 24 | Width = 281 25 | Height = 21 26 | Style = csDropDownList 27 | DropDownCount = 5 28 | TabOrder = 0 29 | end 30 | end 31 | inherited btnOK: TButton 32 | OnClick = btnOKClick 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /Source/FmDropDownListEd.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Drop-down list editor dialogue box - allows user to select a value from a 9 | * drop-down list. 10 | } 11 | 12 | 13 | unit FmDropDownListEd; 14 | 15 | interface 16 | 17 | uses 18 | // Delphi 19 | StdCtrls, Controls, ExtCtrls, Classes, 20 | // Project 21 | FmGenericOKDlg; 22 | 23 | type 24 | 25 | { 26 | TDropDownListEditor: 27 | Class that implements a dialog box containing a drop-down list control. The 28 | selected value is passed back to callers 29 | } 30 | TDropDownListEditor = class(TGenericOKDlg) 31 | lblDesc: TLabel; 32 | cmbDropDown: TComboBox; 33 | procedure FormShow(Sender: TObject); 34 | procedure btnOKClick(Sender: TObject); 35 | procedure FormCreate(Sender: TObject); 36 | private // properties 37 | fText: string; 38 | fKind: string; 39 | procedure SetList(const Value: TStringList); 40 | public 41 | property Kind: string write fKind; 42 | {Description of the kind of edit required - will be preceeded by 'Edit'} 43 | property List: TStringList write SetList; 44 | {The list of strings to choose from} 45 | property Text: string read fText write fText; 46 | {The chosen text (default can be provided by user)} 47 | end; 48 | 49 | implementation 50 | 51 | {$R *.DFM} 52 | 53 | procedure TDropDownListEditor.btnOKClick(Sender: TObject); 54 | {Click event handler for OK button: stores combo box selection in Text 55 | property} 56 | begin 57 | inherited; 58 | fText := cmbDropDown.Text; 59 | end; 60 | 61 | procedure TDropDownListEditor.FormCreate(Sender: TObject); 62 | {Form creation event handler. Sets help topic} 63 | begin 64 | inherited; 65 | HelpTopic := 'dlg-picklist'; 66 | end; 67 | 68 | procedure TDropDownListEditor.FormShow(Sender: TObject); 69 | {Event handler called when form is shown: intialises controls} 70 | var 71 | Index: Integer; // index of Text property item in combo box - if any 72 | begin 73 | inherited; 74 | // Set up caption 75 | Caption := 'Edit ' + fKind; 76 | // Make default selection in combo box 77 | Index := cmbDropDown.Items.IndexOf(fText); 78 | if Index = -1 then 79 | Index := 0; 80 | cmbDropDown.ItemIndex := Index; 81 | // Set focus on edit box 82 | cmbDropDown.SetFocus; 83 | end; 84 | 85 | procedure TDropDownListEditor.SetList(const Value: TStringList); 86 | {Write access method for List property: copies list items into combo box} 87 | begin 88 | cmbDropDown.Items := Value; 89 | end; 90 | 91 | end. 92 | -------------------------------------------------------------------------------- /Source/FmFileEncoding.dfm: -------------------------------------------------------------------------------- 1 | inherited FileEncodingDlg: TFileEncodingDlg 2 | Caption = 'Choose .vi File Encoding' 3 | PixelsPerInch = 96 4 | TextHeight = 13 5 | inherited pnlBody: TPanel 6 | Width = 239 7 | Height = 111 8 | ExplicitWidth = 239 9 | ExplicitHeight = 111 10 | object Panel1: TPanel 11 | Left = 10 12 | Top = 10 13 | Width = 241 14 | Height = 111 15 | Margins.Left = 4 16 | Margins.Top = 4 17 | Margins.Right = 4 18 | Margins.Bottom = 4 19 | BevelOuter = bvNone 20 | TabOrder = 0 21 | object lblDesc: TLabel 22 | Left = 0 23 | Top = 0 24 | Width = 206 25 | Height = 13 26 | Caption = 'Choose the encoding to use for the .vi file:' 27 | end 28 | object rbANSI: TRadioButton 29 | Left = 0 30 | Top = 32 31 | Width = 113 32 | Height = 17 33 | Caption = '&ANSI' 34 | TabOrder = 0 35 | end 36 | object rbUTF8: TRadioButton 37 | Left = 0 38 | Top = 64 39 | Width = 113 40 | Height = 17 41 | Caption = '&UTF-8' 42 | TabOrder = 1 43 | end 44 | end 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /Source/FmFileEncoding.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2023, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Dialogue box that lets user chose the text encoding in which to save a .vi 9 | * file. 10 | } 11 | 12 | 13 | unit FmFileEncoding; 14 | 15 | interface 16 | 17 | uses 18 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 19 | Dialogs, FmGenericOKDlg, StdCtrls, ExtCtrls; 20 | 21 | type 22 | TFileEncodingDlg = class(TGenericOKDlg) 23 | Panel1: TPanel; 24 | lblDesc: TLabel; 25 | rbANSI: TRadioButton; 26 | rbUTF8: TRadioButton; 27 | procedure FormCreate(Sender: TObject); 28 | strict private 29 | /// Returns True if the UTF-8 radio button is selected or false 30 | /// if not (i.e. the ANSI radio button is selected). 31 | function GetUseUTF8: Boolean; 32 | /// Ticks the UTF-8 radio button if Value is true or ticks 33 | /// the ANSI radion button otherwise. 34 | procedure SetUseUTF8(const Value: Boolean); 35 | public 36 | /// Displays dialogue box with default choice as specified by 37 | /// UseUTF8 when called. When the the user OKs the dialogue box 38 | /// UseUTF8 is set True if UTF-8 is selected and false otherwise. 39 | /// If the user cancels UseUTF8 is not changed. 40 | /// TComponent [in] Dialogue form's owner. 41 | /// 42 | /// Boolean [in/out] Set by the caller to 43 | /// specify whether UTF-8 is the default choice to be displayed in the 44 | /// dialogue box. Updated if the user OKs to reflect the chosen encoding. 45 | /// 46 | /// Boolean. True if user OKs the dialogue box and false 47 | /// if the user cancels. 48 | /// NOTE: The dialogue box should not be constructed directly. 49 | /// This method should be called instead. 50 | class function GetFileEncodingFromUser(const AOwner: TComponent; 51 | var UseUTF8: Boolean): Boolean; 52 | end; 53 | 54 | implementation 55 | 56 | {$R *.dfm} 57 | 58 | { TFileEncodingDlg } 59 | 60 | procedure TFileEncodingDlg.FormCreate(Sender: TObject); 61 | begin 62 | inherited; 63 | HelpTopic := 'dlg-encoding'; 64 | end; 65 | 66 | class function TFileEncodingDlg.GetFileEncodingFromUser( 67 | const AOwner: TComponent; var UseUTF8: Boolean): Boolean; 68 | var 69 | Dlg: TFileEncodingDlg; 70 | begin 71 | Dlg := TFileEncodingDlg.Create(AOwner); 72 | try 73 | Dlg.SetUseUTF8(UseUTF8); 74 | Result := Dlg.ShowModal = mrOK; 75 | if Result then 76 | UseUTF8 := Dlg.GetUseUTF8; 77 | finally 78 | Dlg.Free; 79 | end; 80 | end; 81 | 82 | function TFileEncodingDlg.GetUseUTF8: Boolean; 83 | begin 84 | Result := rbUTF8.Checked; 85 | end; 86 | 87 | procedure TFileEncodingDlg.SetUseUTF8(const Value: Boolean); 88 | begin 89 | if Value then 90 | rbUTF8.Checked := True 91 | else 92 | rbANSI.Checked := True; 93 | end; 94 | 95 | end. 96 | -------------------------------------------------------------------------------- /Source/FmGenericDlg.dfm: -------------------------------------------------------------------------------- 1 | object GenericDlg: TGenericDlg 2 | Left = 200 3 | Top = 108 4 | BorderStyle = bsDialog 5 | ClientHeight = 412 6 | ClientWidth = 613 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | KeyPreview = True 14 | OldCreateOrder = True 15 | Position = poOwnerFormCenter 16 | Scaled = False 17 | OnCreate = FormCreate 18 | OnKeyDown = FormKeyDown 19 | PixelsPerInch = 96 20 | TextHeight = 13 21 | object bvlBottom: TBevel 22 | Left = 10 23 | Top = 364 24 | Width = 464 25 | Height = 3 26 | Margins.Left = 4 27 | Margins.Top = 4 28 | Margins.Right = 4 29 | Margins.Bottom = 4 30 | Shape = bsTopLine 31 | end 32 | object pnlBody: TPanel 33 | Left = 10 34 | Top = 10 35 | Width = 464 36 | Height = 346 37 | Margins.Left = 4 38 | Margins.Top = 4 39 | Margins.Right = 4 40 | Margins.Bottom = 4 41 | BevelOuter = bvNone 42 | TabOrder = 0 43 | end 44 | object btnHelp: TButton 45 | Left = 384 46 | Top = 374 47 | Width = 75 48 | Height = 25 49 | Margins.Left = 4 50 | Margins.Top = 4 51 | Margins.Right = 4 52 | Margins.Bottom = 4 53 | Caption = '&Help' 54 | TabOrder = 1 55 | OnClick = btnHelpClick 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /Source/FmGenericDlg.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2002-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Implements a generic base class from which other program dialog boxes can be 9 | * descended. Provides layout and functionality common to all dlg boxes. 10 | } 11 | 12 | 13 | unit FmGenericDlg; 14 | 15 | 16 | interface 17 | 18 | 19 | uses 20 | // Delphi 21 | Controls, StdCtrls, ExtCtrls, Classes, Forms; 22 | 23 | 24 | type 25 | 26 | { 27 | TGenericDlg: 28 | Generic base class for other dialog boxes - displays and handles help button 29 | and permits aligning of child dlg boxes to this window 30 | } 31 | TGenericDlg = class(TForm) 32 | bvlBottom: TBevel; 33 | pnlBody: TPanel; 34 | btnHelp: TButton; 35 | /// Form creation event handler. Arranges controls and sizes form. 36 | /// 37 | procedure FormCreate(Sender: TObject); 38 | /// Help button click event handler. Displays a help topic 39 | /// associated with this dialog box. 40 | procedure btnHelpClick(Sender: TObject); 41 | /// Handles key presses on form. Displays help topic associated 42 | /// with this dialog box if user presses F1. 43 | procedure FormKeyDown(Sender: TObject; var Key: Word; 44 | Shift: TShiftState); 45 | strict private 46 | /// Value of HelpTopic property. 47 | fHelpTopic: string; 48 | /// Displays help topic determined by HelpTopic property. 49 | /// 50 | /// See documentation of HelpTopic property for details of how 51 | /// this is handled if the property is not set. 52 | procedure DisplayHelp; 53 | strict protected 54 | /// Modifies the form's window creation parameters to provide a 55 | /// custom window class name for the form. 56 | /// This method is called by the VCL just before the form's 57 | /// window is created. 58 | procedure CreateParams(var Params: TCreateParams); override; 59 | /// Arranges controls within form. 60 | procedure ArrangeControls; virtual; 61 | /// Specifies name of help topic associated with dialog box. 62 | /// 63 | /// 64 | /// If this property is set the specified topic is displayed when 65 | /// help is accessed. If the property is not set a special "no help 66 | /// available" topic is displayed. 67 | /// Descendant classes should set the property in their constructors. 68 | /// Those classes that need to enable callers to change the help topic must 69 | /// redeclare the property as public. 70 | /// 71 | property HelpTopic: string read fHelpTopic write fHelpTopic; 72 | end; 73 | 74 | 75 | implementation 76 | 77 | 78 | uses 79 | // Delphi 80 | SysUtils, Windows, 81 | // Project 82 | UDlgParent, UHelp; 83 | 84 | 85 | {$R *.DFM} 86 | 87 | 88 | resourcestring 89 | // Message displayed if no help context is asigned and help button is clicked 90 | sNoHelp = 'Sorry there is no help available.'; 91 | 92 | 93 | { TGenericDlg } 94 | 95 | procedure TGenericDlg.ArrangeControls; 96 | begin 97 | ClientWidth := pnlBody.Width + 16; 98 | bvlBottom.Top := pnlBody.Height + 16; 99 | btnHelp.Top := bvlBottom.Top + 8; 100 | ClientHeight := btnHelp.Top + btnHelp.Height + 4; 101 | bvlBottom.Width := pnlBody.Width; 102 | btnHelp.Left := ClientWidth - 8 - btnHelp.Width; 103 | end; 104 | 105 | procedure TGenericDlg.btnHelpClick(Sender: TObject); 106 | begin 107 | DisplayHelp; 108 | end; 109 | 110 | procedure TGenericDlg.CreateParams(var Params: TCreateParams); 111 | var 112 | ClsName: string; // name of window class 113 | begin 114 | inherited; 115 | ClsName := 'DelphiDabbler.VIEd.' + Name; 116 | StrLCopy( 117 | Params.WinClassName, 118 | PChar(ClsName), 119 | SizeOf(Params.WinClassName) div SizeOf(Char) - 1 120 | ); 121 | end; 122 | 123 | procedure TGenericDlg.DisplayHelp; 124 | begin 125 | if HelpTopic <> '' then 126 | THelp.ShowTopic(HelpTopic) 127 | else 128 | THelp.ShowTopic(THelp.DlgErrTopic); 129 | end; 130 | 131 | procedure TGenericDlg.FormCreate(Sender: TObject); 132 | begin 133 | TDlgParent.SetParentToOwner(Self); 134 | ArrangeControls; 135 | end; 136 | 137 | procedure TGenericDlg.FormKeyDown(Sender: TObject; var Key: Word; 138 | Shift: TShiftState); 139 | begin 140 | if (Key = VK_F1) and (Shift = []) then 141 | begin 142 | // F1 pressed with no modifier 143 | DisplayHelp; 144 | Key := 0; 145 | end; 146 | end; 147 | 148 | end. 149 | 150 | -------------------------------------------------------------------------------- /Source/FmGenericOKDlg.dfm: -------------------------------------------------------------------------------- 1 | inherited GenericOKDlg: TGenericOKDlg 2 | Caption = 'GenericOKDlg' 3 | PixelsPerInch = 96 4 | TextHeight = 13 5 | inherited btnHelp: TButton 6 | TabOrder = 3 7 | end 8 | object btnCancel: TButton 9 | Left = 302 10 | Top = 374 11 | Width = 75 12 | Height = 25 13 | Cancel = True 14 | Caption = 'Cancel' 15 | ModalResult = 2 16 | TabOrder = 2 17 | end 18 | object btnOK: TButton 19 | Left = 221 20 | Top = 374 21 | Width = 75 22 | Height = 25 23 | Caption = 'OK' 24 | Default = True 25 | ModalResult = 1 26 | TabOrder = 1 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /Source/FmGenericOKDlg.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * This is a generic OK dialogue box, descended from TGenericDlg, that can be 9 | * used as a base class for dialogue boxes that permit editing - adds "OK" and 10 | * "Cancel" buttons to the form that close the dialogue box with the appropriate 11 | * modal result. 12 | } 13 | 14 | 15 | unit FmGenericOKDlg; 16 | 17 | interface 18 | 19 | uses 20 | // Delphi 21 | StdCtrls, Controls, ExtCtrls, Classes, 22 | // Project 23 | FmGenericDlg; 24 | 25 | type 26 | 27 | { 28 | TGenericOKDlg: 29 | Generic OK dialog box used as a base class for dialog boxes that permit 30 | editing - adds OK and cancel buttons to the form that close the dialog box 31 | with appropriate modal result 32 | } 33 | TGenericOKDlg = class(TGenericDlg) 34 | btnCancel: TButton; 35 | btnOK: TButton; 36 | protected 37 | procedure ArrangeControls; override; 38 | {Arranges controls within window} 39 | end; 40 | 41 | implementation 42 | 43 | {$R *.DFM} 44 | 45 | procedure TGenericOKDlg.ArrangeControls; 46 | {Arranges controls within window} 47 | begin 48 | inherited; 49 | btnOK.Top := bvlBottom.Top + 8; 50 | btnCancel.Top := btnOK.Top; 51 | btnCancel.Left := btnHelp.Left - btnCancel.Width - 4; 52 | btnOK.Left := btnCancel.Left - btnOK.Width - 4; 53 | end; 54 | 55 | end. 56 | -------------------------------------------------------------------------------- /Source/FmGenericViewDlg.dfm: -------------------------------------------------------------------------------- 1 | inherited GenericViewDlg: TGenericViewDlg 2 | Caption = 'GenericViewDlg' 3 | PixelsPerInch = 96 4 | TextHeight = 13 5 | inherited btnHelp: TButton 6 | TabOrder = 2 7 | end 8 | object btnDone: TButton 9 | Left = 302 10 | Top = 374 11 | Width = 75 12 | Height = 25 13 | Cancel = True 14 | Caption = 'Done' 15 | Default = True 16 | ModalResult = 1 17 | TabOrder = 1 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /Source/FmGenericViewDlg.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * This is a generic base class for dialogue boxes that simply display 9 | * information and have a single "Done" button. It descends from TGenericDlg and 10 | * simply adds "Done" button that closes the dialogue box. 11 | } 12 | 13 | 14 | unit FmGenericViewDlg; 15 | 16 | interface 17 | 18 | uses 19 | // Delphi 20 | StdCtrls, Controls, ExtCtrls, Classes, 21 | // Project 22 | FmGenericDlg; 23 | 24 | type 25 | { 26 | TGenericViewDlg: 27 | Generic dialogue box used to view (rather then edit) information - provides 28 | a Done button that closes dialogue box in addition to Help button inherited 29 | from TGenericDlg 30 | } 31 | TGenericViewDlg = class(TGenericDlg) 32 | btnDone: TButton; 33 | procedure FormCreate(Sender: TObject); 34 | end; 35 | 36 | implementation 37 | 38 | {$R *.DFM} 39 | 40 | { TGenericViewDlg } 41 | 42 | procedure TGenericViewDlg.FormCreate(Sender: TObject); 43 | {Form creation event handler: aligns done button to rest of form} 44 | begin 45 | inherited; 46 | btnDone.Top := bvlBottom.Top + 8; 47 | btnDone.Left := btnHelp.Left - btnDone.Width - 4; 48 | end; 49 | 50 | end. 51 | -------------------------------------------------------------------------------- /Source/FmIdEd.dfm: -------------------------------------------------------------------------------- 1 | inherited IdEditor: TIdEditor 2 | Caption = 'Edit Identifier' 3 | OnShow = FormShow 4 | ExplicitWidth = 504 5 | ExplicitHeight = 361 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | inherited pnlBody: TPanel 9 | Width = 281 10 | Height = 48 11 | ExplicitWidth = 281 12 | ExplicitHeight = 48 13 | object lblID: TLabel 14 | Left = 0 15 | Top = 0 16 | Width = 190 17 | Height = 13 18 | Caption = 'Enter new &Identifier (max 31 characters):' 19 | FocusControl = edId 20 | end 21 | object edId: TEdit 22 | Left = 0 23 | Top = 24 24 | Width = 281 25 | Height = 21 26 | MaxLength = 31 27 | TabOrder = 0 28 | OnKeyPress = edIdKeyPress 29 | end 30 | end 31 | inherited btnOK: TButton 32 | OnClick = btnOKClick 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /Source/FmIdEd.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Identifier editor dialogue box. Allows user to enter a valid version 9 | * information resource identifier. 10 | } 11 | 12 | 13 | unit FmIdEd; 14 | 15 | 16 | interface 17 | 18 | 19 | uses 20 | // Delphi 21 | StdCtrls, Controls, ExtCtrls, Classes, 22 | // Project 23 | FmGenericOKDlg; 24 | 25 | type 26 | 27 | { 28 | TIdEditor: 29 | Class that implements a dialog box that allows user to enter a valid version 30 | information resource identifier. 31 | } 32 | TIdEditor = class(TGenericOKDlg) 33 | lblID: TLabel; 34 | edId: TEdit; 35 | procedure edIdKeyPress(Sender: TObject; var Key: Char); 36 | procedure FormShow(Sender: TObject); 37 | procedure btnOKClick(Sender: TObject); 38 | procedure FormCreate(Sender: TObject); 39 | private 40 | fIdentifier: string; 41 | {Value of Identifier property} 42 | public 43 | property Identifier: string read fIdentifier write fIdentifier; 44 | {Holds default identifier provided by caller and edited identifier if user 45 | clicks OK} 46 | end; 47 | 48 | 49 | implementation 50 | 51 | 52 | uses 53 | // Delphi 54 | SysUtils, 55 | // Project 56 | UHelp, UMsgDlgs; 57 | 58 | 59 | {$R *.DFM} 60 | 61 | { TIdEditor } 62 | 63 | procedure TIdEditor.btnOKClick(Sender: TObject); 64 | {Click event handler for OK button: validates entered identifier and stores 65 | in Identifier property if valid. 66 | @param Sender [in] Not used. 67 | } 68 | begin 69 | inherited; 70 | {Check that entered text doesn't start with digit} 71 | if (edId.Text <> '') and CharInSet(edId.Text[1], ['0'..'9']) then 72 | begin 73 | // Identifier did start with digit - error 74 | MsgInvalidIdentifier; 75 | ModalResult := 0; 76 | edId.SetFocus; 77 | end 78 | else 79 | // Identifier is OK - record it in property 80 | fIdentifier := edID.Text; 81 | end; 82 | 83 | procedure TIdEditor.edIdKeyPress(Sender: TObject; var Key: Char); 84 | {Key press event handler for identifier edit box: only accepts valid ID 85 | characters or backspace. 86 | @param Sender [in] Not used. 87 | } 88 | begin 89 | inherited; 90 | if not CharInSet(Key, ['a'..'z', 'A'..'Z', '_', '0'..'9', #8]) then 91 | Key := #0 92 | end; 93 | 94 | procedure TIdEditor.FormCreate(Sender: TObject); 95 | {Form creation event handler. Sets help topic} 96 | begin 97 | inherited; 98 | HelpTopic := 'dlg-identifier'; 99 | end; 100 | 101 | procedure TIdEditor.FormShow(Sender: TObject); 102 | {Event handler called when form is shown: intialises controls. 103 | @param Sender [in] Not used. 104 | } 105 | begin 106 | inherited; 107 | // Display indentifier in edit box and move focus to it 108 | edID.Text := fIdentifier; 109 | edId.SetFocus; 110 | end; 111 | 112 | end. 113 | 114 | -------------------------------------------------------------------------------- /Source/FmNumberEd.dfm: -------------------------------------------------------------------------------- 1 | inherited NumEditor: TNumEditor 2 | Caption = '' 3 | OnShow = FormShow 4 | ExplicitWidth = 504 5 | ExplicitHeight = 361 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | inherited pnlBody: TPanel 9 | Width = 233 10 | Height = 67 11 | ExplicitWidth = 233 12 | ExplicitHeight = 67 13 | object lblNum: TLabel 14 | Left = 0 15 | Top = 4 16 | Width = 75 17 | Height = 13 18 | Caption = '&Enter a number:' 19 | FocusControl = edNum 20 | end 21 | object lblInstruct: TLabel 22 | Left = 0 23 | Top = 36 24 | Width = 217 25 | Height = 33 26 | AutoSize = False 27 | Caption = 28 | 'To enter a number in hexadecimal format, preceed the number with' + 29 | ' a $ character.' 30 | WordWrap = True 31 | end 32 | object edNum: TEdit 33 | Left = 96 34 | Top = 0 35 | Width = 121 36 | Height = 21 37 | CharCase = ecUpperCase 38 | MaxLength = 5 39 | TabOrder = 0 40 | OnKeyPress = edNumKeyPress 41 | end 42 | end 43 | inherited btnOK: TButton 44 | OnClick = btnOKClick 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /Source/FmNumberEd.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Number editor dialogue box. Allows user to enter or edit a whole number in 9 | * decimal or in hex. 10 | } 11 | 12 | 13 | unit FmNumberEd; 14 | 15 | 16 | interface 17 | 18 | 19 | uses 20 | // Delphi 21 | StdCtrls, Controls, ExtCtrls, Classes, 22 | // Project 23 | FmGenericOKDlg; 24 | 25 | 26 | type 27 | 28 | { 29 | TNumEditor: 30 | Class that implements a dialog box where the use can enter a number in 31 | decimal or hex format. 32 | } 33 | TNumEditor = class(TGenericOKDlg) 34 | lblNum: TLabel; 35 | lblInstruct: TLabel; 36 | edNum: TEdit; 37 | procedure btnOKClick(Sender: TObject); 38 | procedure edNumKeyPress(Sender: TObject; var Key: Char); 39 | procedure FormShow(Sender: TObject); 40 | procedure FormCreate(Sender: TObject); 41 | private 42 | fShowAsHex: Boolean; 43 | {Value of ShowAsHex property} 44 | fNumber: LongInt; 45 | {Value of Number property} 46 | fKind: string; 47 | {Value of Kind property} 48 | public 49 | property Kind: string write fKind; 50 | {Description of the kind of edit required. Will be preceeded by 'Edit'} 51 | property Number: LongInt read fNumber write fNumber; 52 | {Number entered. Caller sets the property to provide a default value} 53 | property ShowAsHex: Boolean write fShowAsHex; 54 | {Determines whether to display default value as hex or integer} 55 | end; 56 | 57 | 58 | implementation 59 | 60 | 61 | uses 62 | // Delphi 63 | SysUtils, 64 | // Project 65 | UHelp, UMsgDlgs; 66 | 67 | 68 | {$R *.DFM} 69 | 70 | { TNumEditor } 71 | 72 | procedure TNumEditor.btnOKClick(Sender: TObject); 73 | {OK button click event handler: checks validity of number entered and, if OK, 74 | stores value in Number property. 75 | @param Sender [in] Not used. 76 | } 77 | begin 78 | inherited; 79 | try 80 | // Convert hex or decimal entry to number: throws exception or error 81 | fNumber := StrToInt(edNum.Text); 82 | except 83 | on E: EConvertError do 84 | begin 85 | // We've had a conversion error: report to user & keep dlg open 86 | MsgInvalidNumber; 87 | ModalResult := 0; 88 | edNum.SetFocus; 89 | end; 90 | end; 91 | end; 92 | 93 | procedure TNumEditor.edNumKeyPress(Sender: TObject; var Key: Char); 94 | {Keypress event handler for number edit control: rejects all but hex numbers, 95 | '$' and backspace keys. 96 | @param Sender [in] Not used. 97 | } 98 | begin 99 | inherited; 100 | if not CharInSet(Key, [#8, '$', '0'..'9', 'A'..'F', 'a'..'f']) then 101 | Key := #0; 102 | end; 103 | 104 | procedure TNumEditor.FormCreate(Sender: TObject); 105 | {Form creation event handler. Sets help topic} 106 | begin 107 | inherited; 108 | HelpTopic := 'dlg-numbers'; 109 | end; 110 | 111 | procedure TNumEditor.FormShow(Sender: TObject); 112 | {Event handler called when form is shown: intialises controls. 113 | @param Sender [in] Not used. 114 | } 115 | begin 116 | inherited; 117 | // Set caption 118 | Caption := 'Edit ' + fKind; 119 | // Write default number into edit box in required format 120 | if fShowAsHex then 121 | edNum.Text := '$' + IntToHex(fNumber, 4) 122 | else 123 | edNum.Text := IntToStr(fNumber); 124 | // Set focus on edit box 125 | edNum.SetFocus; 126 | end; 127 | 128 | end. 129 | 130 | -------------------------------------------------------------------------------- /Source/FmResCompiler.dfm: -------------------------------------------------------------------------------- 1 | inherited ResCompilerDlg: TResCompilerDlg 2 | Left = 516 3 | Top = 367 4 | Caption = 'Specify Resource Compiler' 5 | OnShow = FormShow 6 | ExplicitWidth = 504 7 | ExplicitHeight = 361 8 | PixelsPerInch = 96 9 | TextHeight = 13 10 | inherited pnlBody: TPanel 11 | Width = 329 12 | Height = 143 13 | ExplicitWidth = 329 14 | ExplicitHeight = 143 15 | object lblCompiler: TLabel 16 | Left = 0 17 | Top = 0 18 | Width = 123 19 | Height = 13 20 | Caption = '&Path to resource compiler:' 21 | FocusControl = edCompiler 22 | end 23 | object sbBrowse: TSpeedButton 24 | Left = 306 25 | Top = 15 26 | Width = 23 27 | Height = 22 28 | Hint = 'Browse for compiler...' 29 | Glyph.Data = { 30 | F6000000424DF600000000000000760000002800000010000000100000000100 31 | 0400000000008000000000000000000000001000000010000000000000000000 32 | 80000080000000808000800000008000800080800000C0C0C000808080000000 33 | FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777 34 | 7777000000000007777700333333333077770B033333333307770FB033333333 35 | 30770BFB0333333333070FBFB000000000000BFBFBFBFB0777770FBFBFBFBF07 36 | 77770BFB00000007777770007777777700077777777777777007777777770777 37 | 0707777777777000777777777777777777777777777777777777} 38 | ParentShowHint = False 39 | ShowHint = True 40 | OnClick = sbBrowseClick 41 | end 42 | object lblCmdLine: TLabel 43 | Left = 0 44 | Top = 46 45 | Width = 212 46 | Height = 13 47 | Caption = '&Command line to use to compile a source file:' 48 | FocusControl = edCmdLine 49 | end 50 | object lblHelp1: TLabel 51 | Left = 0 52 | Top = 86 53 | Width = 276 54 | Height = 26 55 | Caption = 56 | 'In the above command line use the following placeholders for fil' + 57 | 'enames:' 58 | WordWrap = True 59 | end 60 | object lblHelp2: TLabel 61 | Left = 0 62 | Top = 114 63 | Width = 224 64 | Height = 13 65 | Caption = ' '#183' to represent a source (.rc) input file.' 66 | end 67 | object lblHelp3: TLabel 68 | Left = 0 69 | Top = 130 70 | Width = 228 71 | Height = 13 72 | Caption = ' '#183' to represent a binary (.res) output file.' 73 | end 74 | object edCompiler: TEdit 75 | Left = 0 76 | Top = 16 77 | Width = 297 78 | Height = 21 79 | TabOrder = 0 80 | OnChange = edCompilerChange 81 | end 82 | object edCmdLine: TEdit 83 | Left = 0 84 | Top = 62 85 | Width = 329 86 | Height = 21 87 | TabOrder = 1 88 | end 89 | end 90 | inherited btnOK: TButton 91 | OnClick = btnOKClick 92 | end 93 | end 94 | -------------------------------------------------------------------------------- /Source/FmResCompilerCheck.dfm: -------------------------------------------------------------------------------- 1 | inherited ResCompilerCheckDlg: TResCompilerCheckDlg 2 | Left = 138 3 | Top = 233 4 | PixelsPerInch = 96 5 | TextHeight = 13 6 | inherited pnlBody: TPanel 7 | Height = 231 8 | ExplicitHeight = 231 9 | inherited lblCompiler: TLabel 10 | Top = 61 11 | ExplicitTop = 61 12 | end 13 | inherited sbBrowse: TSpeedButton 14 | Top = 76 15 | ExplicitTop = 76 16 | end 17 | inherited lblCmdLine: TLabel 18 | Top = 107 19 | ExplicitTop = 107 20 | end 21 | inherited lblHelp1: TLabel 22 | Top = 147 23 | ExplicitTop = 147 24 | end 25 | inherited lblHelp2: TLabel 26 | Top = 175 27 | ExplicitTop = 175 28 | end 29 | inherited lblHelp3: TLabel 30 | Top = 191 31 | ExplicitTop = 191 32 | end 33 | object lblInfo: TLabel [6] 34 | Left = 0 35 | Top = 0 36 | Width = 328 37 | Height = 57 38 | AutoSize = False 39 | Caption = 40 | 'Version Information Expert can create both source and binary res' + 41 | 'ource files, but requires a third party resource compiler to cre' + 42 | 'ate binary files. Please give details of the compiler you wish t' + 43 | 'o use below. Click the Help button for further information.' 44 | WordWrap = True 45 | end 46 | inherited edCompiler: TEdit 47 | Top = 77 48 | ExplicitTop = 77 49 | end 50 | inherited edCmdLine: TEdit 51 | Top = 123 52 | ExplicitTop = 123 53 | end 54 | object chkDontCheck: TCheckBox 55 | Left = 0 56 | Top = 215 57 | Width = 329 58 | Height = 17 59 | Caption = 'Don'#39't perform this check again.' 60 | TabOrder = 2 61 | OnClick = chkDontCheckClick 62 | end 63 | end 64 | end 65 | -------------------------------------------------------------------------------- /Source/FmResCompilerCheck.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Implements a dialogue box that gets compiler settings from user at program 9 | * start-up when absence of a compiler is detected. 10 | } 11 | 12 | 13 | unit FmResCompilerCheck; 14 | 15 | interface 16 | 17 | uses 18 | // Delphi 19 | StdCtrls, Dialogs, Buttons, Controls, ExtCtrls, Classes, Forms, 20 | // Project 21 | FmResCompiler; 22 | 23 | type 24 | 25 | { 26 | TResCompilerCheckDlg: 27 | Dialog box derived from dialog box that gets compiler settings from user, 28 | but customised to be displayed at program start-up when absence of a 29 | compiler is detected. Has additional check box to switch off further start- 30 | up checks. 31 | 32 | Inheritance: TResCompilerCheckDlg -> TResCompilerDlg -> TGenericOKDlg 33 | -> TGenericDlg -> [TForm] 34 | } 35 | TResCompilerCheckDlg = class(TResCompilerDlg) 36 | chkDontCheck: TCheckBox; 37 | lblInfo: TLabel; 38 | procedure chkDontCheckClick(Sender: TObject); 39 | public 40 | class procedure SetResCompiler(Owner: TForm); 41 | {Displays dialog box in which user can enter compiler settings} 42 | end; 43 | 44 | implementation 45 | 46 | uses 47 | // Project 48 | UHelp, USettings; 49 | 50 | {$R *.DFM} 51 | 52 | 53 | procedure TResCompilerCheckDlg.chkDontCheckClick(Sender: TObject); 54 | {Click event handler for check box used to prevent further checks: stores 55 | value of check box in settings} 56 | begin 57 | inherited; 58 | Settings.WriteBool(siNoCompilerCheck, chkDontCheck.Checked); 59 | end; 60 | 61 | class procedure TResCompilerCheckDlg.SetResCompiler(Owner: TForm); 62 | {Displays dialog box in which user can enter compiler settings} 63 | begin 64 | // Simply display the dlg box 65 | with TResCompilerCheckDlg.Create(Owner) do 66 | try 67 | HelpTopic := 'dlg-rescompiler'; 68 | ShowModal; 69 | finally 70 | Free; 71 | end; 72 | end; 73 | 74 | end. 75 | -------------------------------------------------------------------------------- /Source/FmResOutputDir.dfm: -------------------------------------------------------------------------------- 1 | inherited ResOutputDirDlg: TResOutputDirDlg 2 | Caption = 'Choose Compiler Output Folder' 3 | PixelsPerInch = 96 4 | TextHeight = 13 5 | inherited pnlBody: TPanel 6 | Width = 351 7 | Height = 57 8 | ExplicitWidth = 351 9 | ExplicitHeight = 57 10 | object lblDirName: TLabel 11 | Left = 0 12 | Top = 0 13 | Width = 323 14 | Height = 13 15 | Caption = 16 | 'Enter &path to compiled .res files or choose by clicking browse ' + 17 | 'button:' 18 | FocusControl = edDirName 19 | end 20 | object sbDirName: TSpeedButton 21 | Left = 328 22 | Top = 24 23 | Width = 23 24 | Height = 22 25 | Glyph.Data = { 26 | F6000000424DF600000000000000760000002800000010000000100000000100 27 | 0400000000008000000000000000000000001000000010000000000000000000 28 | 80000080000000808000800000008000800080800000C0C0C000808080000000 29 | FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777777777 30 | 7777000000000007777700333333333077770B033333333307770FB033333333 31 | 30770BFB0333333333070FBFB000000000000BFBFBFBFB0777770FBFBFBFBF07 32 | 77770BFB00000007777770007777777700077777777777777007777777770777 33 | 0707777777777000777777777777777777777777777777777777} 34 | OnClick = sbDirNameClick 35 | end 36 | object edDirName: TEdit 37 | Left = 0 38 | Top = 24 39 | Width = 321 40 | Height = 21 41 | TabOrder = 0 42 | end 43 | end 44 | object dlgDirName: TPJBrowseDialog 45 | Options = [boDirsOnly] 46 | Left = 8 47 | Top = 80 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /Source/FmResOutputDir.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Dialogue box used to set the default folder used when compiling .res files. 9 | } 10 | 11 | 12 | unit FmResOutputDir; 13 | 14 | 15 | interface 16 | 17 | 18 | uses 19 | // Delphi 20 | Buttons, StdCtrls, Controls, ExtCtrls, Classes, 21 | // delphiDabbler library 22 | PJShellFolders, 23 | // Project 24 | FmGenericOKDlg; 25 | 26 | 27 | type 28 | 29 | { 30 | TResOutputDirDlg: 31 | Implements a dialog box used to get a directory name from the user that is 32 | used as default folder for compiled .res files. Provides access to "Select 33 | Folder" dialog box assist in choosing folder name. 34 | 35 | Inheritance: TResOutputDirDlg -> TGenericOKDlg -> TGenericDlg -> [TForm] 36 | } 37 | TResOutputDirDlg = class(TGenericOKDlg) 38 | lblDirName: TLabel; 39 | edDirName: TEdit; 40 | sbDirName: TSpeedButton; 41 | dlgDirName: TPJBrowseDialog; 42 | procedure sbDirNameClick(Sender: TObject); 43 | procedure FormCreate(Sender: TObject); 44 | private // properties 45 | function GetDirName: string; 46 | procedure SetDirName(const Value: string); 47 | public 48 | property DirName: string read GetDirName write SetDirName; 49 | {This is the directory name entered by the user or chosen from Select 50 | Folder dialog box} 51 | end; 52 | 53 | 54 | implementation 55 | 56 | 57 | uses 58 | // Project 59 | UHelp; 60 | 61 | {$R *.DFM} 62 | 63 | 64 | { TResOutputDirDlg } 65 | 66 | procedure TResOutputDirDlg.FormCreate(Sender: TObject); 67 | {Form construction: set dialog's help context} 68 | begin 69 | inherited; 70 | HelpTopic := 'dlg-compilerdir'; 71 | end; 72 | 73 | function TResOutputDirDlg.GetDirName: string; 74 | {Getter for DirName property: accesses edit control for directory name} 75 | begin 76 | Result := edDirName.Text; 77 | if (Result <> '') and (Result[Length(Result)] <> '\') then 78 | Result := Result + '\'; 79 | end; 80 | 81 | procedure TResOutputDirDlg.sbDirNameClick(Sender: TObject); 82 | {Click event handler for browse speed button: displays folder dialog to allow 83 | user to enter folder which is then copied into edit control} 84 | begin 85 | inherited; 86 | dlgDirName.FolderName := edDirName.Text; 87 | if dlgDirName.Execute then 88 | edDirName.Text := dlgDirName.FolderName; 89 | end; 90 | 91 | procedure TResOutputDirDlg.SetDirName(const Value: string); 92 | {Setter for DirName property: stores value in directory name edit control} 93 | begin 94 | edDirName.Text := Value; 95 | end; 96 | 97 | end. 98 | -------------------------------------------------------------------------------- /Source/FmSetEd.dfm: -------------------------------------------------------------------------------- 1 | inherited SetEditor: TSetEditor 2 | Caption = '' 3 | OnShow = FormShow 4 | ExplicitWidth = 504 5 | ExplicitHeight = 361 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | inherited pnlBody: TPanel 9 | Width = 249 10 | Height = 201 11 | ExplicitWidth = 249 12 | ExplicitHeight = 201 13 | object lblSet: TLabel 14 | Left = 0 15 | Top = 0 16 | Width = 216 17 | Height = 13 18 | Caption = 'Check items that are to be are included in set:' 19 | end 20 | object clbSet: TCheckListBox 21 | Left = 0 22 | Top = 16 23 | Width = 249 24 | Height = 185 25 | ItemHeight = 13 26 | Sorted = True 27 | TabOrder = 0 28 | end 29 | end 30 | inherited btnOK: TButton 31 | OnClick = btnOKClick 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /Source/FmSetEd.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Set editor dialogue box. Allows user to include and exclude items in a set. 9 | } 10 | 11 | 12 | unit FmSetEd; 13 | 14 | interface 15 | 16 | uses 17 | // Delphi 18 | StdCtrls, CheckLst, Controls, ExtCtrls, Classes, 19 | // Project 20 | FmGenericOKDlg; 21 | 22 | type 23 | 24 | { 25 | TSetEditor: 26 | Class that implements a dialog box that can be used to edit sets of values. 27 | The dialog box displays a checked list box, with checked items indicating 28 | that the item is part of a set. 29 | } 30 | TSetEditor = class(TGenericOKDlg) 31 | lblSet: TLabel; 32 | clbSet: TCheckListBox; 33 | procedure FormCreate(Sender: TObject); 34 | procedure FormShow(Sender: TObject); 35 | procedure FormDestroy(Sender: TObject); 36 | procedure btnOKClick(Sender: TObject); 37 | private // properties 38 | fKind: string; 39 | fIncList: TStringList; 40 | fExcList: TStringList; 41 | procedure SetExcList(const Value: TStringList); 42 | procedure SetIncList(const Value: TStringList); 43 | private 44 | procedure RebuildList; 45 | {Updates check list box from the include and exclude lists, setting check 46 | marks only on items from include list} 47 | public 48 | property Kind: string write fKind; 49 | {Description of the kind of edit required - will be preceeded by 'Edit' 50 | (write only)} 51 | property IncList: TStringList read fIncList write SetIncList; 52 | {List of items to be placed in Include list box. This list is updated to 53 | edited contents of this box when user clicks OK} 54 | property ExcList: TStringList read fExcList write SetExcList; 55 | {List of items to be placed in Exclude list box - write onle since user is 56 | only interested in result in Include list box} 57 | end; 58 | 59 | implementation 60 | 61 | {$R *.DFM} 62 | 63 | { TSetEditor } 64 | 65 | procedure TSetEditor.btnOKClick(Sender: TObject); 66 | {OK button click event handler: copies checked items to IncList property and 67 | unchecked items into ExcList property} 68 | var 69 | CLBIdx: Integer; // index into check list box items 70 | begin 71 | inherited; 72 | // Clear list properties 73 | fIncList.Clear; 74 | fExcList.Clear; 75 | // Scan thru list, adding included and excluded items to appropriate lists 76 | for CLBIdx := 0 to Pred(clbSet.Items.Count) do 77 | begin 78 | if clbSet.Checked[CLBIdx] then 79 | fIncList.Add(clbSet.Items[CLBIdx]) 80 | else 81 | fExcList.Add(clbSet.Items[CLBIdx]); 82 | end; 83 | end; 84 | 85 | procedure TSetEditor.FormCreate(Sender: TObject); 86 | {Form creation event handler: creates owned string list objects and sets help 87 | topic} 88 | begin 89 | inherited; 90 | fIncList := TStringList.Create; 91 | fExcList := TStringList.Create; 92 | HelpTopic := 'dlg-bitset'; 93 | end; 94 | 95 | procedure TSetEditor.FormDestroy(Sender: TObject); 96 | {Form destruction event handler: free owned objects} 97 | begin 98 | inherited; 99 | fExcList.Free; 100 | fIncList.Free; 101 | end; 102 | 103 | procedure TSetEditor.FormShow(Sender: TObject); 104 | {Event handler called when form is shown: intialises controls} 105 | begin 106 | inherited; 107 | // Set caption 108 | Caption := 'Edit ' + fKind; 109 | // Select check list box 110 | clbSet.SetFocus; 111 | end; 112 | 113 | procedure TSetEditor.RebuildList; 114 | {Updates check list box from the include and exclude lists, setting check 115 | marks only on items from include list} 116 | // --------------------------------------------------------------------------- 117 | procedure AddItem(const Str: string; Checked: Boolean); 118 | {Adds given item to checked list box, checked or unchecked according to 119 | Checked parameter} 120 | var 121 | CLBIdx: Integer; // index into checked list box 122 | begin 123 | CLBIdx := clbSet.Items.Add(Str); 124 | clbSet.Checked[CLBIdx] := Checked; 125 | end; 126 | // --------------------------------------------------------------------------- 127 | var 128 | ListIdx: Integer; // index into include and exclude lists 129 | begin 130 | // Clear list box 131 | clbSet.Clear; 132 | // Add items from exclude list box to check list box: unchecked 133 | for ListIdx := 0 to Pred(fExcList.Count) do 134 | AddItem(fExcList[ListIdx], False); 135 | // Add items from include list box to check list box: checked 136 | for ListIdx := 0 to Pred(fIncList.Count) do 137 | AddItem(fIncList[ListIdx], True); 138 | end; 139 | 140 | procedure TSetEditor.SetExcList(const Value: TStringList); 141 | {Write access method for the ExcList property: items in list are also added to 142 | checked list box, unchecked} 143 | begin 144 | fExcList.Assign(Value); 145 | RebuildList; 146 | end; 147 | 148 | procedure TSetEditor.SetIncList(const Value: TStringList); 149 | {Write access method for the IncList property: items in list are also added to 150 | checked list box, checked} 151 | begin 152 | fIncList.Assign(Value); 153 | RebuildList; 154 | end; 155 | 156 | end. 157 | -------------------------------------------------------------------------------- /Source/FmStringEd.dfm: -------------------------------------------------------------------------------- 1 | inherited StringEditor: TStringEditor 2 | BorderStyle = bsSizeable 3 | Caption = '' 4 | ClientHeight = 402 5 | ClientWidth = 603 6 | OnDestroy = FormDestroy 7 | OnResize = FormResize 8 | OnShow = FormShow 9 | ExplicitWidth = 619 10 | ExplicitHeight = 441 11 | PixelsPerInch = 96 12 | TextHeight = 13 13 | inherited pnlBody: TPanel 14 | Width = 345 15 | Height = 300 16 | ExplicitWidth = 345 17 | ExplicitHeight = 300 18 | object lblStr: TLabel 19 | Left = 0 20 | Top = 0 21 | Width = 345 22 | Height = 16 23 | AutoSize = False 24 | FocusControl = edStr 25 | end 26 | object lblField: TLabel 27 | Left = 0 28 | Top = 112 29 | Width = 58 30 | Height = 13 31 | Caption = 'Insert &Field:' 32 | FocusControl = cmbField 33 | end 34 | object lblCaretPos: TLabel 35 | Left = 285 36 | Top = 0 37 | Width = 60 38 | Height = 13 39 | Alignment = taRightJustify 40 | AutoSize = False 41 | Caption = 'lblCaretPos' 42 | end 43 | object edStr: TMemo 44 | Left = 0 45 | Top = 17 46 | Width = 345 47 | Height = 89 48 | HideSelection = False 49 | ScrollBars = ssVertical 50 | TabOrder = 0 51 | WantReturns = False 52 | end 53 | object cmbField: TComboBox 54 | Left = 0 55 | Top = 128 56 | Width = 249 57 | Height = 21 58 | Style = csDropDownList 59 | DropDownCount = 6 60 | TabOrder = 1 61 | end 62 | object btnInsert: TButton 63 | Left = 256 64 | Top = 127 65 | Width = 75 66 | Height = 25 67 | Caption = '&Insert' 68 | TabOrder = 2 69 | OnClick = btnInsertClick 70 | end 71 | end 72 | inherited btnOK: TButton 73 | OnClick = btnOKClick 74 | end 75 | end 76 | -------------------------------------------------------------------------------- /Source/FmUserSetup.dfm: -------------------------------------------------------------------------------- 1 | inherited UserSetupDlg: TUserSetupDlg 2 | Caption = 'User Setup' 3 | OnShow = FormShow 4 | ExplicitWidth = 619 5 | ExplicitHeight = 441 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | inherited pnlBody: TPanel 9 | Width = 241 10 | Height = 111 11 | ExplicitWidth = 241 12 | ExplicitHeight = 111 13 | object lblDesc: TLabel 14 | Left = 0 15 | Top = 0 16 | Width = 244 17 | Height = 13 18 | Caption = 'Check the options you want to be used by default:' 19 | end 20 | object chkValidate: TCheckBox 21 | Left = 0 22 | Top = 24 23 | Width = 281 24 | Height = 17 25 | Caption = '&Automatic validation' 26 | TabOrder = 0 27 | end 28 | object chkDescFileFlags: TCheckBox 29 | Left = 0 30 | Top = 55 31 | Width = 281 32 | Height = 17 33 | Caption = '&Describe file flags in main window' 34 | TabOrder = 1 35 | end 36 | object chkUseUTF8: TCheckBox 37 | Left = 0 38 | Top = 87 39 | Width = 281 40 | Height = 17 41 | Caption = '&Use UTF-8 as default encoding for .vi files' 42 | TabOrder = 2 43 | end 44 | end 45 | inherited btnOK: TButton 46 | OnClick = btnOKClick 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /Source/FmUserSetup.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2023, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * User set-up dialogue box. Allows user to configure some application options. 9 | } 10 | 11 | 12 | unit FmUserSetup; 13 | 14 | interface 15 | 16 | uses 17 | // Delphi 18 | StdCtrls, Controls, ExtCtrls, Classes, 19 | // Project 20 | FmGenericOKDlg; 21 | 22 | type 23 | 24 | { 25 | TUserSetupDlg: 26 | Class implementing a dialog where user can modify application options. 27 | } 28 | TUserSetupDlg = class(TGenericOKDlg) 29 | lblDesc: TLabel; 30 | chkValidate: TCheckBox; 31 | chkDescFileFlags: TCheckBox; 32 | chkUseUTF8: TCheckBox; 33 | procedure FormShow(Sender: TObject); 34 | procedure btnOKClick(Sender: TObject); 35 | procedure FormCreate(Sender: TObject); 36 | private // properties 37 | fAutoValidate: Boolean; 38 | fDescribeFileFlags: Boolean; 39 | fUTF8EncodeVIFiles: Boolean; 40 | public 41 | property AutoValidate : Boolean 42 | read fAutoValidate write fAutoValidate; 43 | {Whether auto-validation is switched on at start-up} 44 | property DescribeFileFlags : Boolean 45 | read fDescribeFileFlags write fDescribeFileFlags; 46 | {Whether file flags are fully described at start-up} 47 | /// Whether UTF-8 is used by default when writing .vi files. 48 | /// 49 | property UTF8EncodeVIFiles: Boolean 50 | read fUTF8EncodeVIFiles write fUTF8EncodeVIFiles; 51 | end; 52 | 53 | implementation 54 | 55 | {$R *.DFM} 56 | 57 | { TUserSetupDlg } 58 | 59 | procedure TUserSetupDlg.btnOKClick(Sender: TObject); 60 | {OK button click event handler: update properties with values entered} 61 | begin 62 | inherited; 63 | fAutoValidate := chkValidate.Checked; 64 | fDescribeFileFlags := chkDescFileFlags.Checked; 65 | fUTF8EncodeVIFiles := chkUseUTF8.Checked; 66 | end; 67 | 68 | procedure TUserSetupDlg.FormCreate(Sender: TObject); 69 | {Form creation event handler. Sets help topic} 70 | begin 71 | inherited; 72 | HelpTopic := 'dlg-setup'; 73 | end; 74 | 75 | procedure TUserSetupDlg.FormShow(Sender: TObject); 76 | {Event handler called when form is shown: intialises controls} 77 | begin 78 | inherited; 79 | // Set check boxes to state given by properties 80 | chkValidate.Checked := fAutoValidate; 81 | chkDescFileFlags.Checked := fDescribeFileFlags; 82 | chkUseUTF8.Checked := fUTF8EncodeVIFiles; 83 | end; 84 | 85 | end. 86 | -------------------------------------------------------------------------------- /Source/FmViewList.dfm: -------------------------------------------------------------------------------- 1 | inherited ViewListDlg: TViewListDlg 2 | Caption = '' 3 | OnShow = FormShow 4 | PixelsPerInch = 96 5 | TextHeight = 13 6 | inherited pnlBody: TPanel 7 | Width = 479 8 | Height = 287 9 | ExplicitWidth = 479 10 | ExplicitHeight = 287 11 | object edList: TMemo 12 | Left = 0 13 | Top = 0 14 | Width = 479 15 | Height = 287 16 | TabStop = False 17 | Align = alClient 18 | Font.Charset = DEFAULT_CHARSET 19 | Font.Color = clBlack 20 | Font.Height = -12 21 | Font.Name = 'Courier New' 22 | Font.Style = [] 23 | ParentColor = True 24 | ParentFont = False 25 | ReadOnly = True 26 | ScrollBars = ssBoth 27 | TabOrder = 0 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /Source/FmViewList.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2022, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Dialogue box used to display (but not edit) string lists. Used to display 9 | * resource file info and error messages. 10 | } 11 | 12 | 13 | unit FmViewList; 14 | 15 | interface 16 | 17 | uses 18 | // Delphi 19 | StdCtrls, Controls, ExtCtrls, Classes, 20 | // Project 21 | FmGenericViewDlg; 22 | 23 | type 24 | 25 | { 26 | TViewListDlg: 27 | Class implementing a dialog box that permits display of string lists. Used 28 | to display resource file info and error messages. 29 | } 30 | TViewListDlg = class(TGenericViewDlg) 31 | edList: TMemo; 32 | procedure FormShow(Sender: TObject); 33 | private // properties 34 | fTitle: string; 35 | procedure SetList(const Value: TStringList); 36 | public 37 | property HelpTopic; 38 | {Redeclared to make public} 39 | property List: TStringList write SetList; 40 | {The list to display in dialog's memo control} 41 | property Title: string write fTitle; 42 | {The title of the dialog box window} 43 | end; 44 | 45 | implementation 46 | 47 | {$R *.DFM} 48 | 49 | { TViewListDlg } 50 | 51 | procedure TViewListDlg.FormShow(Sender: TObject); 52 | {Event handler called when form is shown: intialises controls} 53 | begin 54 | inherited; 55 | // Set caption per Title property 56 | Caption := fTitle; 57 | end; 58 | 59 | procedure TViewListDlg.SetList(const Value: TStringList); 60 | {Write access method for List property: copies list into memo control} 61 | begin 62 | edList.Lines.Assign(Value); 63 | end; 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /Source/FmViewMacros.dfm: -------------------------------------------------------------------------------- 1 | inherited ViewMacrosDlg: TViewMacrosDlg 2 | Caption = 'View Macros' 3 | OnShow = FormShow 4 | ExplicitWidth = 619 5 | ExplicitHeight = 441 6 | PixelsPerInch = 96 7 | TextHeight = 13 8 | inherited pnlBody: TPanel 9 | object pcMacros: TPageControl 10 | Left = 0 11 | Top = 0 12 | Width = 464 13 | Height = 346 14 | ActivePage = tsMacros 15 | Align = alClient 16 | TabOrder = 0 17 | object tsMacros: TTabSheet 18 | Caption = 'Macros' 19 | object lvMacros: TListView 20 | Left = 0 21 | Top = 0 22 | Width = 456 23 | Height = 318 24 | Align = alClient 25 | Columns = < 26 | item 27 | Caption = 'Name' 28 | end 29 | item 30 | Caption = 'Value' 31 | end> 32 | TabOrder = 0 33 | ViewStyle = vsReport 34 | ExplicitLeft = 104 35 | ExplicitTop = 88 36 | ExplicitWidth = 250 37 | ExplicitHeight = 150 38 | end 39 | end 40 | object tsWarnings: TTabSheet 41 | Caption = 'Warnings' 42 | ImageIndex = 1 43 | object edWarnings: TMemo 44 | Left = 0 45 | Top = 0 46 | Width = 456 47 | Height = 318 48 | Align = alClient 49 | ReadOnly = True 50 | TabOrder = 0 51 | ExplicitLeft = 136 52 | ExplicitTop = 112 53 | ExplicitWidth = 185 54 | ExplicitHeight = 89 55 | end 56 | end 57 | end 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /Source/FmViewMacros.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphidabbler/vied/84ecabf07a2273ac5face1386601a4ec59096e9b/Source/FmViewMacros.pas -------------------------------------------------------------------------------- /Source/Help/CSS/help.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2011-2022, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * CSS for the VIEd HTML help file. 9 | */ 10 | 11 | 12 | body { 13 | font-family: Arial; 14 | font-size: 9pt; 15 | margin: 0.5em; 16 | } 17 | 18 | h1 { 19 | font-size: 12pt; 20 | font-weight: bold; 21 | color: navy; 22 | background-color: #eef; 23 | margin: 0 0 0.5em 0; 24 | padding: 3px; 25 | border-bottom: 1px silver solid; 26 | } 27 | 28 | h2 { 29 | font-size: 11pt; 30 | font-weight: bold; 31 | color: black; 32 | margin: 0.8em 0 0 0; 33 | padding-bottom: 2px; 34 | border-bottom: 1px silver dotted; 35 | } 36 | 37 | h3 { 38 | font-size: 9pt; 39 | font-weight: bold; 40 | font-style: italic; 41 | margin: 0.8em 0 0 0; 42 | } 43 | 44 | h4 { 45 | font-size: 9pt; 46 | font-weight: normal; 47 | font-style: italic; 48 | margin: 0.8em 0 0 0; 49 | } 50 | 51 | p { 52 | margin: 0.5em 0 0 0; 53 | padding: 0; 54 | } 55 | 56 | pre { 57 | margin: 0.5em 0 0 0; 58 | padding: 0; 59 | font-family: "Courier New"; 60 | font-size: 8pt; 61 | } 62 | 63 | pre.source-code { 64 | background-color: #eef; 65 | border: 1px silver dotted; 66 | padding: 0.5em; 67 | } 68 | 69 | ul, ol { 70 | margin: 0.5em 0 0 2em; 71 | padding: 0; 72 | } 73 | 74 | ul { 75 | list-style-type: square; 76 | } 77 | 78 | ul li, 79 | ol li, 80 | ul.spaced li, 81 | ol.spaced li, 82 | li div { 83 | margin-top: 0.5em; 84 | } 85 | 86 | ul.unspaced li, 87 | ol.unspaced li { 88 | margin-top: 0; 89 | } 90 | 91 | ul.unspaced li.first, 92 | ol.unspaced li.first { 93 | margin-top: 0.5em; 94 | } 95 | 96 | a:link, 97 | a:active, 98 | a:visited, 99 | a:hover { 100 | color: green; 101 | text-decoration: underline; 102 | } 103 | 104 | a:link.weblink, 105 | a:active.weblink, 106 | a:visited.weblink, 107 | a:hover.weblink { 108 | color: blue; 109 | text-decoration: underline; 110 | } 111 | 112 | table { 113 | font-family: Arial; 114 | font-size: 9pt; 115 | margin: 0.5em 0 0 0; 116 | padding: 0; 117 | background-color: #ccc; 118 | } 119 | 120 | tr { 121 | vertical-align: top; 122 | padding: 0; 123 | margin: 0; 124 | } 125 | 126 | td, 127 | th { 128 | padding: 0.5em; 129 | margin: 1px; 130 | } 131 | 132 | td { 133 | background-color: white; 134 | font-weight: normal; 135 | } 136 | 137 | th { 138 | font-weight: bold; 139 | font-style: italic; 140 | } 141 | 142 | th, 143 | td.shaded, 144 | table.menu td.item { 145 | background-color: #eee; 146 | } 147 | 148 | table.menu td.item { 149 | width: 8em; 150 | font-style: italic; 151 | } 152 | 153 | table.menu td.desc { 154 | } 155 | 156 | span.menuref { 157 | background-color: #eeeeee; 158 | font-style: italic; 159 | border: 1px silver dotted; 160 | padding-left: 0.2em; 161 | padding-right: 0.2em; 162 | } 163 | 164 | .indent { 165 | margin-left: 2em; 166 | } 167 | 168 | .smallcaps { 169 | font-variant: small-caps; 170 | } 171 | 172 | .warning { 173 | color: red; 174 | font-weight: bold; 175 | } 176 | 177 | .todo, .link { 178 | background-color: #ffff77; 179 | } 180 | 181 | .link { 182 | color: green; 183 | border-bottom: 1px green dashed; 184 | } 185 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-analysis.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-analysis 14 | 15 | 16 | 17 | 18 |

19 | Analysis Errors Dialogue Box 20 |

21 |

22 | This dialogue box is displayed when the Edit | 23 | Analyse menu option is selected and errors are found in the 24 | current document. A scrollable list of errors is displayed. 25 |

26 | 27 | 28 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-bitset.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-bitset 14 | 15 | 16 | 17 | 18 |

19 | Bit Set Editor 20 |

21 |

22 | This dialogue box appears when you edit either of the File Flags or File 23 | Flags Mask FIXED FILE INFO items. 24 |

25 |

26 | The dialogue box has a check list box that displays all available flags. 27 | Those items which are included in the set are checked. To change which 28 | flags to include in the set check and uncheck items as required. 29 |

30 |

31 | Click OK to accept your changes. 32 |

33 |

34 | Note: the symbolic constants available when editing File 35 | Flags are determined by those in the File Flags Mask bit set. Even if this 36 | dialogue box is cancelled and automatic validation is switched off the entries in the File Flags 39 | bit set will be validated and corrected to reflect any recent changes to 40 | the File Flags Mask. 41 |

42 | 43 | 44 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-browserescomp.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-browserescomp 14 | 15 | 16 | 17 | 18 |

19 | Browse for Resource Compiler Dialogue Box 20 |

21 |

22 | This dialogue box is displayed when the browse button in the Specify Resource Compiler dialogue box is clicked. Use it to navigate 25 | to the required compiler program file and then click OK to enter 26 | the selected file name in the dialogue box's Path to resource 27 | compiler edit box. 28 |

29 |

30 | Click Cancel to return without changing the file name in the edit 31 | box. 32 |

33 | 34 | 35 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-comments.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-comments 14 | 15 | 16 | 17 | 18 |

19 | Comments Editor 20 |

21 |

22 | This dialogue box appears when the user chooses the 23 | Edit | RC Comments or 24 | Edit | VI Comments menu options. 25 |

26 |

27 | The dialogue box displays any existing comments of the selected type in a 28 | multi-line edit box. The existing comments can be either edited, replaced 29 | or deleted. Comments can be multi-line. Pressing return in the dialogue 30 | box enters a new line in the edit box - it doesn't close the dialogue box. 31 | Click OK to accept the changes. 32 |

33 |

34 | You can resize this dialogue as required. 35 |

36 |

37 | Note: Comments will appear at the head of a resource source file delimited by /* and */ symbols or in a version information file preceded by a ';' symbol. These symbols 42 | should not be included in the text entered in the dialogue box. The text 43 | is not validated. 44 |

45 | 46 | 47 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-compile.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-compile 14 | 15 | 16 | 17 | 18 |

19 | Compile To File Dialogue Box 20 |

21 |

22 | This standard Windows dialogue box appears when the user chooses the 23 | File | Compile menu option and no default 24 | compiler output folder has been specified. 25 |

26 |

27 | The dialogue box is used to enter the name and path of the compiler output 28 | file. It is recommended that file names with extension .res are used. 29 |

30 | 31 | 32 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-compilerdir.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-compilerdir 14 | 15 | 16 | 17 | 18 |

19 | Choose Compiler Output Folder Dialogue Box 20 |

21 |

22 | This dialogue box is displayed when the Edit | 23 | Compiler Output Folder menu item is selected. 24 |

25 |

26 | Specify the name of a folder to be used to receive resource files 27 | generated when the current document is compiled. The browse button can be 28 | used to select a folder or the folder's name can be entered in the edit 29 | control. Either an absolute path or a path relative to the .vi file 30 | location can be specified. 31 |

32 |

33 | Click OK to close the dialogue box and accept the folder. 34 |

35 | 36 | 37 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-encoding.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-encoding 14 | 15 | 16 | 17 | 18 |

19 | Choose .vi File Encoding Dialogue Box 20 |

21 |

22 | This dialogue box appears whenever you save a .vi file. It appears after 23 | you have chosen the file name and after any file overwrite permission is 24 | granted. 25 |

26 |

27 | It allows you to choose which encoding is used when the file is saved. 28 | There are two encoding options, chosen by selecting either the 29 | ANSI or UTF-8 radio buttons. 30 |

31 |

32 | The radio button that is selected by default when the dialogue box opens 33 | is the same as the encoding noted in the main window caption. 34 |

35 |

36 | Click OK to accept your choice. The file will be written with the 37 | chosen encoding. Clicking Cancel causes the save operation to be 38 | cancelled. 39 |

40 | 41 | 42 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-fileexport.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-fileexport 14 | 15 | 16 | 17 | 18 |

19 | Export File Dialogue Box 20 |

21 |

22 | This standard Windows dialogue box appears when the user chooses the 23 | File | Export menu option. It is used to 24 | choose the name, path and type of file to be exported. 25 |

26 |

27 | Select the required type of file using the drop-down list of file types. 28 | Available types are: 29 |

30 |
    31 |
  • 32 | Resource source files (.rc): the current document is exported 33 | in resource source file format with the .rc extension. Use the 36 | File | View RC Statements menu option to 37 | see what the contents of the file will look like. 38 |
  • 39 |
  • 40 | Resource binary file (.res): the current document is exported 41 | in binary resource format with the .res extension, ready for inclusion 42 | in an executable file. Note: This file type is only 43 | available if a resource compiler has been registered with the program. 46 |
  • 47 |
48 |

49 | If an invalid extension is entered an error message appears and the 50 | operation is cancelled. 51 |

52 | 53 | 54 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-fileopen.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-fileopen 14 | 15 | 16 | 17 | 18 |

19 | Open File Dialogue Box 20 |

21 |

22 | This standard Windows dialogue box appears when the user chooses the 23 | File | Open menu option. 24 |

25 |

26 | It allows the user to choose a version information file to open for editing. Only files with 29 | the .vi extension are displayed. If any other extension is used an error 30 | message appears and the operation is cancelled. The chosen file must 31 | exist. 32 |

33 | 34 | 35 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-filesave.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-filesave 14 | 15 | 16 | 17 | 18 |

19 | Save File Dialogue Box 20 |

21 |

22 | This standard Windows dialogue box appears when the user chooses the 23 | File | Save As menu option, or 24 | File | Save when the file has not yet been 25 | saved. 26 |

27 |

28 | It allows the user to choose file in which to save the current document as 29 | a version information file. The file must have a .vi extension. 32 | After saving the file name appears in the window caption and will be used 33 | each time the File | Save menu option is 34 | chosen. 35 |

36 |

37 | If the .vi extension is not used an error message is displayed and the 38 | file is not saved. 39 |

40 |

41 | If the file already exists then the user is asked to confirm that the 42 | file should be overwritten. 43 |

44 |

45 | Next, the Choose .vi File Encoding dialogue 46 | box appears to enable the text file encoding to be used for the .vi file 47 | to be chosen. 48 |

49 | 50 | 51 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-identifier.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-identifier 14 | 15 | 16 | 17 | 18 |

19 | Identifier Editor 20 |

21 |

22 | This dialogue box is displayed when the Edit | RC 23 | Identifier menu option is chosen. It allows the identifier used in the VERSIONINFO resource to be edited. When the dialogue box 28 | appears any existing identifier is highlighted in the edit box. Enter a 29 | new identifier or edit the existing one and then click OK to 30 | accept the changes. 31 |

32 |

33 | If the identifier is invalid an error message will be displayed and the 34 | dialogue box will not close. 35 |

36 |

37 | If you don't want to use an identifier then simply delete any existing one 38 | and press OK. 39 |

40 | 41 | 42 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-nohelp.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-nohelp 14 | 15 | 16 | 17 | 18 |

19 | No Help Available 20 |

21 |

22 | Sorry, there is no help available for this dialogue box. 23 |

24 | 25 | 26 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-numbers.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-numbers 14 | 15 | 16 | 17 | 18 |

19 | Number Editor 20 |

21 |

22 | This dialogue box appears when the FIXED FILE INFO File Type item is set 23 | to VFT_VXD and you edit the File Sub-Type. 24 |

25 |

26 | The current value of the item is displayed in hexadecimal format and is 27 | highlighted. Either enter a new value or edit the existing one. Numbers 28 | can be entered in either decimal or hexadecimal form. Hexadecimal numbers 29 | must be preceded by a $ character. 30 |

31 |

32 | Click OK to accept the entry. If the number is not valid an error 33 | message will be displayed. 34 |

35 | 36 | 37 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-picklist.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-picklist 14 | 15 | 16 | 17 | 18 |

19 | Pick List Editor 20 |

21 |

22 | This dialogue box appears when one of the FIXED FILE INFO items: 23 |

24 |
    25 |
  • 26 | File OS 27 |
  • 28 |
  • 29 | File Type 30 |
  • 31 |
  • 32 | File Sub-Type (when File Type = VFT_DRV or VFT_FONT) 33 |
  • 34 |
35 |

36 | or one of the TRANSLATION INFO items: 37 |

38 |
    39 |
  • 40 | Language 41 |
  • 42 |
  • 43 | Character Set 44 |
  • 45 |
46 |

47 | are edited. 48 |

49 |

50 | The dialogue box displays a drop-down pick list of all the valid symbolic 51 | constants (for FIXED FILE INFO items) or descriptions (for TRANSLATION 52 | INFO items) for the chosen item. You should select the desired value and 53 | click OK to accept your choice. 54 |

55 | 56 | 57 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-rescompiler.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-rescompiler 14 | 15 | 16 | 17 | 18 |

19 | Specify Resource Compiler Dialogue Box 20 |

21 |

22 | This dialogue box is used to register a resource compiler with Version 23 | Information Editor. The program uses the registered compiler when 24 | creating binary resource files. The following information is required: 25 |

26 |

27 | Path to resource compiler: The full path to the resource compiler 28 | to be used should be entered in this edit box. To select the path using a 29 | standard Windows dialogue box click the button adjacent to the edit box. 30 | This displays the Browse for Resource Compiler dialogue box from which the required 33 | program file can be chosen. 34 |

35 |

36 | Command line to use to compile a source file: The command line to 37 | pass to the resource compiler should be entered here. Two place holders 38 | should be included in the command line: <SRC> and <BIN>. These 39 | placeholders are replaced with the name of the source file to be compiled 40 | and the name of the output executable file respectively. The program 41 | recognises the Borland Resource Compiler (BRCC32) and will suggest an 42 | appropriate command line if BRCC32 is entered in the Path to resource 43 | compiler edit box. For other compilers the required command line may 44 | be found from the compiler's documentation. Note: It may 45 | be necessary to enclose the <SRC> and <BIN> place holders in 46 | double quotes. 47 |

48 |

49 | Click OK to accept the changes. 50 |

51 |

52 | Start-up checks 53 |

54 |

55 | When Version Information Editor first starts it checks to see if a 56 | resource compiler is present and displays a similar dialogue box if not. 57 | This dialogue box can be used as above to configure the compiler. 58 |

59 |

60 | To prevent the dialogue box from appearing on each start-up you can check 61 | the Don't perform this check again check box that appears only in 62 | this special version of the dialogue box. 63 |

64 | 65 | 66 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-setup.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-setup 14 | 15 | 16 | 17 | 18 |

19 | User Setup Dialogue Box 20 |

21 |

22 | This dialogue box allows the user to specify the state in which the 23 | program starts up. It is accessed using the Options 24 | | User Setup menu option. 25 |

26 |

27 | The options are specified by ticking or unticking check boxes, as follows: 28 |

29 |
    30 |
  • 31 | Automatic validation – sets the initial state of the 32 | Options | Automatic Validation menu item. 33 |
  • 34 |
  • 35 | Describe the file flags in main windows – sets the 36 | initial state of the Options | Describe File 37 | Flags menu option. 38 |
  • 39 |
  • 40 | Use UTF-8 as the default encoding for .vi files – ticking 41 | the box causes UTF-8 to be used as the default encoding for new projects 42 | while clearing the box causes the system default ANSI encoding to be 43 | used. 44 |
  • 45 |
46 |

47 | Click OK to accept any changes. 48 |

49 |

50 | Note: The Automatic validation and Describe 51 | the file flags in main windows settings take effect the next time the 52 | program is started. The Use UTF-8 as the default encoding for .vi 53 | files setting takes place the next time a new project is started: it 54 | doesn't affect the current project. 55 |

56 | 57 | 58 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-string.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-string 14 | 15 | 16 | 17 | 18 |

19 | String Information Editor 20 |

21 |

22 | This dialogue box appears when you edit any STRING INFO item for which 23 | editing is currently permitted. You can resize this dialogue box if you 24 | need a larger area in which to enter strings. 25 |

26 |

27 | The current value of the string is displayed in a multi-line edit box at 28 | the top of the dialogue box. The string can be edited as desired. 29 | Note: Pressing return doesn't enter a new line of text 30 | but may close the dialog box. This is because STRING INFO text must be on 31 | one logical line. 32 |

33 |

34 | Fields and Macros can be entered in the text as follows: 37 |

38 |
    39 |
  1. 40 | Place the cursor where the field/macro is to be entered in the text. 41 |
  2. 42 |
  3. 43 | Select the required field/macro from the Insert Field drop-down 44 | list. This list contains all valid fields/macros for the STRING INFO 45 | item being edited. 46 |
  4. 47 |
  5. 48 | Click the Insert button. 49 |
  6. 50 |
51 |

52 | Fields and macros can also be entered by typing them directly into the 53 | text, enclosing the name by angle brackets. To enter a < character in 54 | the text it must be entered as <<>. 55 |

56 |

57 | Click OK to accept your changes. Any trailing spaces are trimmed 58 | from the returned strings 59 |

60 |

61 | Note: When OK is clicked the entry is validated. 62 | If an unknown field or macro is encountered an error message is displayed. 63 | Dismissing the error message returns you to the dialogue box with the 64 | erroneous field/macro highlighted ready for correction. If automatic validation is switched on and no text (ignoring spaces) has 67 | been entered for a required STRING INFO item then a warning is displayed 68 | with the option of ignoring the warning or returning to the dialogue box 69 | to enter some text. 70 |

71 | 72 | 73 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-vernum.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-vernum 14 | 15 | 16 | 17 | 18 |

19 | Version Number Editor 20 |

21 |

22 | This dialogue box appears when you edit either of the File Version # or 23 | Product Version # FILE INFO items. 24 |

25 |

26 | Version numbers can be entered in two different ways, selected using the 27 | radio buttons at the top of the dialogue box window: Enter literal 28 | numbers and Enter macros or text. Each mode of operation is 29 | discussed separately below: 30 |

31 |

32 | Entry modes 33 |

34 |

35 | Literal numbers 36 |

37 |

38 | Version numbers are in four parts. The current value for each part is 39 | displayed in an edit box and the first value is highlighted. Edit the four 40 | parts of the version number as required then press OK to accept 41 | your changes. 42 |

43 |

44 | It is only possible to enter the digits 0-9 in the edit boxes since 45 | version numbers must be numeric. A blank entry is read as zero. 46 |

47 |

48 | As a shortcut you can increment any of the version numbers by one by 49 | clicking the +1 button under the relevant edit control. 50 |

51 |

52 | Macros or text 53 |

54 |

55 | Version numbers are entered in the Macros edit box as text. You 56 | can either enter literal version numbers, macros or a combination of the 57 | two. 58 |

59 |

60 | To enter a macro: 61 |

62 |
    63 |
  1. 64 | Place the cursor in the Macros edit box where you want the 65 | macro to be entered. 66 |
  2. 67 |
  3. 68 | Select the required macro name from the Insert Macro drop down 69 | list. 70 |
  4. 71 |
  5. 72 | Click the Insert button to copy the macro into the 73 | Macros edit box at the required location. 74 |
  6. 75 |
76 |

77 | You can also enter the macro name manually, but this is prone to error and 78 | not recommended. 79 |

80 |

81 | Whatever you enter must be, or in the case of macros, 82 | must resolve to, valid version numbers. Valid version numbers comprise of 83 | one to four non-negative numbers separated by either full stops 84 | (.) or commas (,), but not a mix of the two. 85 | Spaces may follow punctuation. 86 |

87 |

88 | Examples 89 |

90 |

91 | Assuming that macros <%version> and 92 | <%build> resolve to values 1.2.3 and 93 | 42 respectively, the following are examples are valid entries 94 | in the Macros edit box: 95 |

96 |
    97 |
  • 98 | 1.2.3.4 99 |
  • 100 |
  • 101 | 12, 34 102 |
  • 103 |
  • 104 | 42 105 |
  • 106 |
  • 107 | <%version>.<%build> 108 |
  • 109 |
  • 110 | <%version>, <%build> 111 |
  • 112 |
  • 113 | <%version>, 999 114 |
  • 115 |
  • 116 | 1, 2, 3, <%build> 117 |
  • 118 |
119 |

120 | Switching between entry modes 121 |

122 |

123 | If you enter a version number in literal entry mode, then switch to 124 | macro/text entry mode, the version number you entered will be copied into 125 | the Macros edit box, with each component of the version number 126 | separated by dots, e.g. 1.2.3.4 127 |

128 |

129 | Conversely if you enter a literal version number in macro/text entry mode 130 | and switch to literal entry mode then the version number text will be 131 | parsed and the result will be displayed in the four version number edit 132 | boxes. Version numbers with fewer than four parts will be right-padded 133 | with zeros, e.g. the text 1.2 will be interpreted as 134 | 1.2.0.0. Any invalid characters in the version string will be 135 | replaced by zeros, e.g. the text 1.FOO.9.3 will be 136 | interpreted as 1.0.9.3. 137 |

138 |

139 | However, if any macros are entered in macro/text entry mode then the 140 | Enter literal numbers radio button will be greyed out and literal 141 | entry mode will not be available. 142 |

143 | 144 | 145 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-viewmacros.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-viewmacros 14 | 15 | 16 | 17 | 18 |

19 | View Macros Values Dialogue Box 20 |

21 |

22 | This dialogue box is displayed when the user chooses the 23 | File | View Macro Values menu option. 24 |

25 |

26 | The dialogue displays either one or two tabs: the Macros tab 27 | and the Warnings tab, which is only displayed if there are 28 | warnings. 29 |

30 |

31 | All the currently defined macros 32 | are displayed in the Macros tab, along with their values. The 33 | macros are displayed in a table. 34 |

35 |

36 | Any externally referenced files that can't be found are noted in the 37 | Warnings tab. 38 |

39 | 40 | 41 | -------------------------------------------------------------------------------- /Source/Help/HTML/dlg-viewrc.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | dlg-viewrc 14 | 15 | 16 | 17 | 18 |

19 | View RC Statements Dialogue Box 20 |

21 |

22 | This dialogue box is displayed when the user chooses the 23 | File | View RC Statements menu option. 24 |

25 |

26 | The VERSIONINFO resource statement corresponding to the current 29 | document is displayed. The resource statement depends on the current 30 | document, the identifier and any resource file comments that have been specified. 35 |

36 |

37 | The information displayed here is exactly that which will be used to copy 38 | to the clipboard (see the Edit | Copy menu 39 | item) or to export as a resource source file (see the 40 | File | Export menu item). 41 |

42 | 43 | 44 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-analyse.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-analyse 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Analyse a document for errors. 20 |

21 |

22 | The current document can be analysed for errors by choosing the 23 | Edit | Analyse menu option. 24 |

25 |

26 | If any errors are found details are displayed in the Analysis Errors dialogue box. 29 |

30 | 31 | 32 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-commentrc.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-commentrc 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Include comments in a resource file 20 |

21 |

22 | Comments can be included in an exported resource source file by using the Edit | RC 25 | Comments menu option which displays the Comments Editor dialogue box. 28 |

29 |

30 | Enter multi-line comments as required. Do not enter the special 31 | /* and and */ comment delimiters as these will 32 | be added automatically. Be sure not to use the delimiters within the 33 | comment text as this is an error that will not be detected by the Comments 34 | Editor. 35 |

36 |

37 | Note that RC comments are recorded with preferences so use this facility to record any standard comments. 40 |

41 | 42 | 43 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-commentvi.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-commentvi 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Comment my version information document 20 |

21 |

22 | You can specify comments that will be included in saved version information files by using the Edit | 25 | VI Comments menu option which displays the Comments Editor dialogue box. 28 |

29 |

30 | Enter multi-line comments as required. The ; character is 31 | used to mark comment lines. Do not enter this yourself at the start of a 32 | line as it is added automatically. 33 |

34 |

35 | Note that VI comments are recorded with preferences so use this facility to record any standard comments. 38 | The program defines a standard set of VI Comments that is uses by default. 39 | To remove them delete them in the Comments Editor then save your preferences. 42 |

43 | 44 | 45 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-compile.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-compile 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Compile a binary resource file 20 |

21 |

22 | The current document can be compiled to a binary resource file by choosing the File | 25 | Compile menu option. 26 |

27 |

28 | If a default output folder for the compiler has been specified for this 29 | document, and the document has been saved, the output file has the same 30 | name as the document and is stored in the designated folder. Otherwise a 31 | dialogue box is displayed where the name of the .res file can be entered. 32 | To specify a default output folder use the Edit | 33 | Compiler Output Folder menu option. 34 |

35 |

36 | Note: A resource compiler must have been registered with this program before this facility can be used. 39 |

40 | 41 | 42 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-creatercfile.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-creatercfile 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Create a resource source file 20 |

21 |

22 | You can generate a resource source file from the current document by selecting the 25 | File | Export menu option. This displays a 26 | standard Windows save dialogue box. Select the Resource source files 27 | (*.rc) file type, enter a name for the exported file and click 28 | OK. 29 |

30 |

31 | The resulting .rc file contains just a single VERSIONINFO statement, along with any comments you have specified. It can be compiled into a binary 36 | resource file using a resource file compiler. 37 |

38 |

39 | If you have an existing resource file containing more than just version 40 | information you can insert the version information into the file. 43 |

44 | 45 | 46 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-customise.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-customise 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Customise the display 20 |

21 |

22 | Only one aspect of the main display can be customised, and that is how the 23 | File Flags and File Flags Mask bitsets are displayed. They can be 24 | displayed in one of two ways: 25 |

26 |
    27 |
  • 28 | using the symbolic constants for all the flags in the bit set 29 |
  • 30 |
  • 31 | the hexadecimal value of the bitset 32 |
  • 33 |
34 |

35 | Which option to use is controlled by the Options | 36 | Describe File Flags menu option. The the display state used when 37 | the application starts is specified in the User Setup dialogue box accessed from the 40 | Options | User Setup menu option. 41 |

42 | 43 | 44 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-editdoc.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-editdoc 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Edit a document 20 |

21 |

22 | You must first choose the document you wish to edit. This can either be 23 | a new document or you can open an existing document either by using the 26 | File | Open menu option or by dragging the 27 | file from Windows Explorer and dropping it on the window. 28 |

29 |

30 | There are four different aspects of the document that can be edited. 31 |

32 |

33 | Version information 34 |

35 |

36 | This is the most important aspect of the document and is displayed in the 37 | main window. This is divided into three distinct parts, each of which is 38 | described below. 39 |

40 |

41 | Version information items under each heading can be edited individually 42 | either by double clicking the item or by selecting it and choosing the 43 | Edit | Current Item menu option or pressing 44 | F2. A dialogue box suitable for editing the 45 | selected item is displayed.
Learn more. 48 |

49 |

50 | Fixed File Information 51 |

52 |

53 | The fixed file information items are numeric items, flags or bit-masks 54 | that define the file and product version numbers, the target operating 55 | system, the application type and some optional flags that provide further 56 | information about the build. 57 |

58 |

59 | Translation Information 60 |

61 |

62 | This section contains information about the language and character set 63 | used in the executable file. 64 |

65 |

66 | String Information 67 |

68 |

69 | This section contains string file information. There are 12 predefined 70 | entries each of which is labelled in the display. Each can take up to 128 71 | characters of text. 72 |

73 |

74 | The editor supports special fields and macros that can be inserted into string information items 77 | to enable the text to be automatically updated with the value of the 78 | field/macro. This is the most powerful feature of the Version Information 79 | Editor and greatly eases the updating of version information 80 | resources.
Learn how to use fields. 83 |

84 |

85 | Limitations 86 |

87 |

88 | Although the version information specification allows for more than one 89 | translation and a separate string file information section to be 90 | associated with each translation, this program supports only one 91 | translation and one string file information section. 92 |

93 |

94 | Custom string file information entries are also permitted but not 95 | supported by the program. 96 |

97 |

98 | Identifier 99 |

100 |

101 | Although not strictly required, an identifier for the version information 104 | resource can be specified.
Learn more. 107 |

108 | Version Information File Comments 109 |

110 |

111 | Comments can be specified that are added to the top of saved version information files. 116 |

117 |

118 | Resource file comments 119 |

120 |

121 | Comments can be specified for inclusion in generated resource source files. 126 | 127 | 128 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-editid.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-editid 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Edit an identifier 20 |

21 |

22 | The identifier used in the VERSIONINFO resource statement can be edited by choosing the 27 | Edit | RC Identifier menu option and entering 28 | the desired name in the resulting dialogue box. 31 |

32 |

33 | Only valid characters can be entered in the dialog box and you are limited 34 | to 32. The dialogue box validates the result and will not let you accept 35 | an invalid identifier. 36 |

37 | 38 | 39 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-edititem.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-edititem 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Edit a version information item 20 |

21 |

22 | Version information items are discrete pieces of version information, each 23 | displayed on a different line in the main editor window. 24 |

25 |

26 | Each item is edited by double clicking it or selecting it with the mouse 27 | or arrow keys an pressing F2 or choosing 28 | the Edit | Edit Current Item menu option. 29 |

30 |

31 | An editor dialogue box appears related to the type of item being edited. 32 | The following dialogue boxes are used: 33 |

34 |
    35 |
  • 36 |

    37 | Fixed File Info section 38 |

    39 | 66 |
  • 67 |
  • 68 |

    69 | Translation Info section 70 |

    71 |

    72 | The Pick List Editor is used to edit both the Language and 75 | Character Set items. 76 |

    77 |
  • 78 |
  • 79 |

    80 | String Info section 81 |

    82 |

    83 | Each string info item is edited using the String Editor. Note that this editor permits the use of fields and macros. 88 |

    89 |

    90 | When automatic validation is switched on an error message is displayed 93 | if the Private Build or Special Build items are 94 | selected, have no values and the appropriate File Flag is not 95 | set. In the case where these items have a value a warning appears 96 | giving the option of deleting the entry. 97 |

    98 |
  • 99 |
100 |

101 | To delete an item select it the press 102 | Ctrl+Del or select the 103 | Edit | Clear Current Item menu option. When 104 | cleared, fixed file and translation information items are reset to their 105 | system default value and string information items are cleared. 106 |

107 | 108 | 109 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-insertrcfile.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-insertrcfile 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Insert code into an existing resource source file 20 |

21 |

22 | Sometimes you may prefer to insert or update a version information statement in an existing resource source file rather than create a resource file containing 27 | only the version information statement. 28 |

29 |

30 | Version Information Editor offers no direct way to do this, but does 31 | provide some help to make the process easy. Here's what to do: 32 |

33 |
    34 |
  1. 35 | Copy the current document to the clipboard using the 36 | Edit | Copy menu option. The document is 37 | converted into a version information statement and placed on the clipboard in plain 40 | text format. 41 |
  2. 42 |
  3. 43 | Open the resource source file you want to update in a text editor. Find 44 | the location to insert the version information and delete any existing 45 | statement. * 46 |
  4. 47 |
  5. 48 | Paste the version information statement the Editor placed on the 49 | clipboard into the resource file. 50 |
  6. 51 |
  7. 52 | Save the resource file. 53 |
  8. 54 |
55 |

56 | * Only one version information statement is 57 | permitted in a resource file so it is important that any existing 58 | statement is deleted. 59 |

60 | 61 | 62 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-newdoc.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-newdoc 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Create a new document 20 |

21 |

22 | A new document is automatically opened when the program first starts. To 23 | discard an existing document and begin a new one simply select the 24 | File | New menu option then edit the document as usual. 27 |

28 |

29 | The new document takes default values from any preferences that have been saved. If there are no preferences then 32 | system default values are used. 33 |

34 |

35 | If the existing document has unsaved changes when 36 | File | New is selected then a dialogue box 37 | appears that gives the option of saving the changes, loosing the changes 38 | or cancelling the creation of the new document. 39 |

40 | 41 | 42 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-preferences.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-preferences 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Save my editing preferences 20 |

21 |

22 | Preferences can be edited and saved as follows: 25 |

26 |
    27 |
  1. 28 | Create a new document. 31 |
  2. 32 |
  3. 33 | Edit the document to to reflect all the default values you wish new 36 | documents to have. Leave any string information that varies between 37 | documents blank. 38 |
  4. 39 |
  5. 40 | If required set or edit the identifier. 43 |
  6. 44 |
  7. 45 | Set any comments to be used in the version information file. 50 |
  8. 51 |
  9. 52 | Set any comments to be written to any exported resource source file. 57 |
  10. 58 |
  11. 59 | Save the preferences using the File | Save As 60 | Preferences menu option. 61 |
  12. 62 |
  13. 63 | Close the document without saving unless you want to go on to use it to 64 | create a new version information file. 65 |
  14. 66 |
67 |

68 | These preferences will be used in all new documents until you either save 69 | different preferences or you revert to the program's default values by 70 | using the File | Clear Preferences menu 71 | option. 72 |

73 | 74 | 75 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-previewrc.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-previewrc 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Preview resource source code 20 |

21 |

22 | The resource source code that will be generated from the current document 23 | can be previewed by selecting the File | View RC 24 | Statements menu option. This displays a dialogue box containing the source code. 27 |

28 | 29 | 30 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-rescompiler.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-rescompiler 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Register a resource compiler 20 |

21 |

22 | In order to export binary resource files an external resource file compiler must be registered 25 | with the program. This is done by selecting the 26 | Options | Resource compiler menu option and 27 | providing the required information in the resulting Specify Resource Compiler dialogue box. 30 |

31 |

32 | When Version Information Editor starts up and there is no registered 33 | resource compiler the program automatically displays a dialogue box 34 | seeking this information. The display of this dialogue box can be switched 35 | off by ticking a check box. 36 |

37 | 38 | 39 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto-validate.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto-validate 14 | 15 | 16 | 17 | 18 |

19 | How do I ... Validate version information as it is entered 20 |

21 |

22 | Version information is validated as you enter it if the program's automatic validation option is switched on. This is done by toggling 25 | the Options | Automatic Validation menu 26 | option so that the menu item is checked. 27 |

28 |

29 | If you prefer this option to always be switched on use the User Setup dialogue box (accessed from the 32 | Options | User Setup menu option) and tick 33 | the Automatic validation check box. This has an effect the next 34 | time the program is started. 35 |

36 | 37 | 38 | -------------------------------------------------------------------------------- /Source/Help/HTML/howto.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | howto 14 | 15 | 16 | 17 | 18 |

19 | How do I? 20 |

21 |

22 | This section of the help file presents a series of brief "How Do 23 | I?" topics that explain how to do some of the most common tasks. 24 | Here's the list of topics: 25 |

26 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /Source/Help/HTML/index.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | index 14 | 15 | 16 | 17 | 18 |

19 | Welcome 20 |

21 |

22 | Welcome to Version Information Editor help. 23 |

24 |

25 | This help file has the following main topics: 26 |

27 |
    28 |
  • 29 | Overview:
    32 | Discusses the program's main features. Read this to familiarlise 33 | yourself with what the program can do. There may be a feature you have 34 | missed! 35 |
  • 36 |
  • 37 | Menus
    40 | Presents a list of all the available commands grouped under the main 41 | menu heading. Read this to familarise yourself with the available 42 | commands. 43 |
  • 44 |
  • 45 | How Do I? Section
    48 | A series of task oriented topics that explain how to get the most out 49 | of the program. Read these if you are new to the program or if you just 50 | want to remind yourself of how to do something. The topics about editing a version information document and fields and macros are particularly useful. 55 |
  • 56 |
  • 57 | Definitions
    60 | This section defines and clarifies some of the key concepts and terms 61 | used in the program and this help file. Check this section if there's 62 | some term you're not clear about. 63 |
  • 64 |
65 |

66 | There is also a more niche topic that discusses the command line options that can be used with the Editor, including some 69 | information on how to incorporate the program in an automated build 70 | system. 71 |

72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /Source/Help/HTML/menu-edit.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | menu-edit 14 | 15 | 16 | 17 | 18 |

19 | Edit Menu 20 |

21 | 22 | 23 | 26 | 33 | 34 | 35 | 38 | 44 | 45 | 46 | 49 | 61 | 62 | 63 | 66 | 74 | 75 | 76 | 79 | 87 | 88 | 89 | 92 | 99 | 100 | 101 | 104 | 113 | 114 | 115 | 118 | 124 | 125 | 126 | 129 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /Source/Help/HTML/menu-help.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | menu-help 14 | 15 | 16 | 17 | 18 |

19 | Help Menu 20 |

21 | 22 | 23 | 26 | 31 | 32 | 33 | 36 | 41 | 42 | 43 | 46 | 53 | 54 | 55 | 58 | 63 | 64 | 67 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /Source/Help/HTML/menu-options.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | menu-options 14 | 15 | 16 | 17 | 18 |

19 | Options Menu 20 |

21 | 22 | 23 | 26 | 34 | 35 | 36 | 39 | 49 | 50 | 51 | 54 | 60 | 61 | 62 | 65 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /Source/Help/HTML/menu.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | menu 14 | 15 | 16 | 17 | 18 |

19 | Main Menu 20 |

21 |

22 | The main menu has the following top level entries: 23 |

24 | 46 |

47 | Click the links to see the options available on each menu. 48 |

49 | 50 | 51 | -------------------------------------------------------------------------------- /Source/Help/HTML/overview.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | overview 14 | 15 | 16 | 17 | 18 |

19 | Overview 20 |

21 |

22 | The Version Information Editor greatly simplifies the creation of VERSIONINFO resource statements for inclusion in Windows resource files. These resources, when compiled by a resource file 27 | compiler, enable version information to be embedded in application, DLL 28 | and other types of file recognised by Windows. 29 |

30 |

31 | Key features of the editor are that it: 32 |

33 |
    34 |
  • 35 | Provides a graphical way of editing all the different components of a 36 | version information resource and can validate changes.
    Learn more. 39 |
  • 40 |
  • 41 | Has special fields and macros that can be embedded in string file information 44 | and, for macros, in the Fixed File Information Product & File 45 | Version Number fields. Fields and macros can be used to automate some 46 | common update tasks, such as keeping the version numbers in the 47 | ProductVersion and FileVersion string info items in 48 | sync with those in fixed file info.
    Learn how to use fields and macros. 51 |
  • 52 |
  • 53 | Can check edited documents for errors.
    Learn more. 56 |
  • 57 |
  • 58 | Can be configured to work with a 3rd party resource compiler to generate 61 | binary resource files. 62 |
  • 63 |
  • 64 | Supports comments in both the native version information file format and in exported resource files. 67 |
  • 68 |
  • 69 | Uses its own text based file format to store version information for 70 | later updating. The file format is simple enough to be hand edited if 71 | necessary. 72 |
  • 73 |
  • 74 | Can be used in automated build systems to generate resource source files 75 | from native version information files. This is achieved by using one of 76 | the progam's command line options that cause it to perform the code generation 79 | silently, without displaying a window. 80 |
  • 81 |
82 |

83 | For further information on using the program see the How Do I? topics. 86 |

87 | 88 | 89 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis-autovalidation.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis-autovalidation 14 | 15 | 16 | 17 | 18 |

19 | What is ... Auto-validation 20 |

21 |

22 | When automatic validation is switched on invalid information in a version information file is corrected as the file is loaded. This 25 | also applies to the preferences used when creating a new document. 26 |

27 |

28 | Additionally while editing the current document while automatic validation 29 | is switched on: 30 |

31 |
    32 |
  1. 33 | The user is warned when an attempt is made to delete string information 34 | that is compulsory. 35 |
  2. 36 |
  3. 37 | The "Private Build" and "Special Build" strings can 38 | only be edited if the appropriate File Flags are set, otherwise any 39 | values assigned to these string items will be deleted. 40 |
  4. 41 |
  5. 42 | Inappropriate File Sub-Types are inhibited. (Valid File Sub-Types are 43 | dependent on the File Type). 44 |
  6. 45 |
46 |

47 | When automatic validation is switched off many of these checks are not 48 | carried out. 49 |

50 |

51 | Automatic validation can be switched on or off using the 52 | Options | Automatic Validation menu option. 53 | The default setting for this feature can be set in the User Setup dialogue box. 56 |

57 | 58 | 59 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis-identifier.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis-identifier 14 | 15 | 16 | 17 | 18 |

19 | What is ... An Identifier 20 |

21 |

22 | A VERSIONINFO resource statement begins with a resource identifier 25 | which must have value 1. However, this value may be stored in a symbolic 26 | identifier. 27 |

28 |

29 | The user may specify an identifier to use for this purpose by choosing the 30 | Edit | RC Identifier menu option. The current 31 | preferences store the default identifier (if any). 34 |

35 |

36 | If an identifier is specified it has to be defined to have value 1 in the 37 | resource file. The editor creates a suitable definition if an 40 | identifier is specified. 41 |

42 |

43 | The maximum length of the identifier is 31 characters, it may only contain 44 | letters, digits and underscores and it may not begin with a digit. 45 |

46 | 47 | 48 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis-preferences.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis-preferences 14 | 15 | 16 | 17 | 18 |

19 | What are ... Preferences 20 |

21 |

22 | Preferences store default values that are used when a new document is created in the editor. They provide a mechanism for 25 | storing regularly used version information for speedy re-use. 26 |

27 |

28 | Preferences include: 29 |

30 | 50 |

51 | See here for details of how to create, save and delete preferences. 54 |

55 | 56 | 57 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis-resfile.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis-resfile 14 | 15 | 16 | 17 | 18 |

19 | What is ... A Resource File 20 |

21 | 22 |

23 | A resource file is a file containing the definition of various Windows 24 | resources to be used by an application, DLL or certain other Windows files. 25 | Such resources include: 26 |

27 |
    28 |
  • 29 | String Tables 30 |
  • 31 |
  • 32 | Bitmaps 33 |
  • 34 |
  • 35 | Icons 36 |
  • 37 |
  • 38 | Cursors 39 |
  • 40 |
41 |

42 | Of course resource files can also include version information. Version 43 | information in resource files is contained in a VERSIONINFO statement. 46 |

47 |

48 | Resource files are usually created as resource source (.rc) files and 49 | compiled into binary (.res) files by a resource compiler. These binary files 50 | are finally linked into applications by a linker. 51 |

52 |

53 | This program can create resource source files that contain a single VERSIONINFO 56 | statement but no other resources. It can also copy a VERSIONINFO statement 57 | to the clipboard for insertion into an existing resource file. 60 |

61 |

62 | If an external resource compiler is available Version Information Editor can 63 | use it to create a binary resource file containing just the version 64 | information.
More information. 67 |

68 | 69 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis-vifile.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis-vifile 14 | 15 | 16 | 17 | 18 |

19 | What is ... A Version Information file 20 |

21 |

22 | A version information file is the native file format used by the Version 23 | Information Editor to record the version information provided by the user. 24 |

25 |

26 | These files have a .vi extension and are plain text files that can be 27 | examined in a text editor. A simple format, akin to the Windows ini file 28 | format, is used and the files can easily be edited by hand. 29 |

30 |

31 | The text file can be saved in either the system default ANSI encoding or 32 | in the UTF-8 encoding. You can choose which encoding to use when the file 33 | is saved. The default encoding for new files can be specifed in the User Setup dialogue box. 36 |

37 |

38 | Version information files contain: 39 |

40 |
    41 |
  1. 42 | The version information needed to produce a VERSIONINFO resource statement. 45 |
  2. 46 |
  3. 47 | The name of any identifier used in the VERSIONINFO resource statement. 52 |
  4. 53 |
  5. 54 | Any macros. 55 |
  6. 56 |
  7. 57 | Any comments to be included in the resource source file. 60 |
  8. 61 |
  9. 62 | Any comments used to document the file itself. 63 |
  10. 64 |
  11. 65 | Any metadata used to configure the program. 66 |
  12. 67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis-vistatement.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis-vistatement 14 | 15 | 16 | 17 | 18 |

19 | What is ... A VERSIONINFO statement 20 |

21 |

22 | This is an important concept because the sole purpose of this program is 23 | to make it easy to create and update VERSIONINFO resource statements. 24 |

25 |

26 | A VERSIONINFO statement defines a resource within a resource file that 27 | provides information about an executable file's version along with 28 | additional related information. 29 |

30 |

31 | In brief, a VERSIONINFO statement can contain the following information: 32 |

33 |
    34 |
  • 35 | File and product version numbers, both as binary values and as strings. 36 |
  • 37 |
  • 38 | The target operating system. 39 |
  • 40 |
  • 41 | The type of file (application, DLL, device driver, font etc. and, for 42 | some file types, a sub-type). 43 |
  • 44 |
  • 45 | Flags indicating whether the executable is a debug release, pre-release, 46 | a special build etc. 47 |
  • 48 |
  • 49 | The target language. 50 |
  • 51 |
  • 52 | The character set used by the executable. 53 |
  • 54 |
  • 55 | A set of predefined string values stored as name / value pairs for such 56 | uses as general comments, file descriptions, name of company, copyright, 57 | name of product etc. 58 |
  • 59 |
60 |

61 | VERSIONINFO statements can have more than one language or character set, 62 | with different string information for each language / character set. They 63 | can also have additional string values with user-defined names. However 64 | these features are not supported by Version Information Editor at present. 65 |

66 |

67 | VERSIONINFO statements always have a resource type of VERSIONINFO and a 68 | resource id of 1. 69 |

70 | 71 | 72 | -------------------------------------------------------------------------------- /Source/Help/HTML/whatis.htm: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | whatis 14 | 15 | 16 | 17 | 18 |

19 | Definitions 20 |

21 |

22 | Topics in this section define some important concepts and terms used in 23 | the program and help file. Here's the list of definitions: 24 |

25 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /Source/Help/Index.hhk: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | 15 | 16 |
    17 |
  • 18 | 19 | 20 | 21 |
  • 22 | 23 | 24 | 25 |
  • 26 | 27 | 28 | 29 | 30 |
  • 31 | 32 | 33 | 34 |
  • 35 | 36 | 37 | 38 |
  • 39 | 40 | 41 | 42 |
  • 43 | 44 | 45 | 46 |
  • 47 | 48 | 49 | 50 |
  • 51 | 52 | 53 | 54 |
  • 55 | 56 | 57 | 58 |
  • 59 | 60 | 61 | 62 |
  • 63 | 64 | 65 | 66 |
  • 67 | 68 | 69 | 70 |
  • 71 | 72 | 73 | 74 |
  • 75 | 76 | 77 | 78 |
  • 79 | 80 | 81 | 82 |
  • 83 | 84 | 85 | 86 |
  • 87 | 88 | 89 | 90 |
  • 91 | 92 | 93 | 94 |
  • 95 | 96 | 97 | 98 |
  • 99 | 100 | 101 | 102 |
  • 103 | 104 | 105 | 106 |
  • 107 | 108 | 109 | 110 |
  • 111 | 112 | 113 | 114 |
  • 115 | 116 | 117 | 118 |
  • 119 | 120 | 121 | 122 |
  • 123 | 124 | 125 | 126 |
  • 127 | 128 | 129 | 130 |
  • 131 | 132 | 133 | 134 |
135 | 136 | -------------------------------------------------------------------------------- /Source/Help/VIEd.hhp: -------------------------------------------------------------------------------- 1 | ; This Source Code Form is subject to the terms of the Mozilla Public License, 2 | ; v. 2.0. If a copy of the MPL was not distributed with this file, You can 3 | ; obtain one at http://mozilla.org/MPL/2.0/ 4 | ; 5 | ; Copyright (C) 2011-2024, Peter Johnson (www.delphidabbler.com). 6 | ; 7 | ; VIEd HTML Help project file. 8 | 9 | 10 | [OPTIONS] 11 | Binary Index=No 12 | Compatibility=1.1 13 | Compiled file=..\..\_build\help\VIEd.chm 14 | Contents file=TOC.hhc 15 | Default topic=HTML\index.htm 16 | Display compile progress=No 17 | Index file=Index.hhk 18 | Language=0x809 English (United Kingdom) 19 | Title=Version Information Editor Help 20 | 21 | 22 | [FILES] 23 | HTML\index.htm 24 | HTML\cmdline.htm 25 | HTML\overview.htm 26 | HTML\license.htm 27 | HTML\dlg-nohelp.htm 28 | HTML\dlg-picklist.htm 29 | HTML\dlg-identifier.htm 30 | HTML\dlg-numbers.htm 31 | HTML\dlg-rescompiler.htm 32 | HTML\dlg-compilerdir.htm 33 | HTML\dlg-bitset.htm 34 | HTML\dlg-string.htm 35 | HTML\dlg-comments.htm 36 | HTML\dlg-setup.htm 37 | HTML\dlg-vernum.htm 38 | HTML\dlg-analysis.htm 39 | HTML\dlg-viewrc.htm 40 | HTML\dlg-viewmacros.htm 41 | HTML\dlg-fileopen.htm 42 | HTML\dlg-filesave.htm 43 | HTML\dlg-fileexport.htm 44 | HTML\dlg-compile.htm 45 | HTML\dlg-browserescomp.htm 46 | HTML\dlg-macros.htm 47 | HTML\dlg-encoding.htm 48 | HTML\menu.htm 49 | HTML\menu-file.htm 50 | HTML\menu-edit.htm 51 | HTML\menu-options.htm 52 | HTML\menu-help.htm 53 | HTML\howto.htm 54 | HTML\howto-analyse.htm 55 | HTML\howto-commentrc.htm 56 | HTML\howto-commentvi.htm 57 | HTML\howto-compile.htm 58 | HTML\howto-creatercfile.htm 59 | HTML\howto-customise.htm 60 | HTML\howto-editdoc.htm 61 | HTML\howto-editid.htm 62 | HTML\howto-edititem.htm 63 | HTML\howto-fields.htm 64 | HTML\howto-insertrcfile.htm 65 | HTML\howto-newdoc.htm 66 | HTML\howto-preferences.htm 67 | HTML\howto-previewrc.htm 68 | HTML\howto-rescompiler.htm 69 | HTML\howto-validate.htm 70 | HTML\whatis.htm 71 | HTML\whatis-autovalidation.htm 72 | HTML\whatis-fields.htm 73 | HTML\whatis-identifier.htm 74 | HTML\whatis-preferences.htm 75 | HTML\whatis-resfile.htm 76 | HTML\whatis-vifile.htm 77 | HTML\whatis-vistatement.htm 78 | -------------------------------------------------------------------------------- /Source/Install.iss: -------------------------------------------------------------------------------- 1 | ; This Source Code Form is subject to the terms of the Mozilla Public License, 2 | ; v. 2.0. If a copy of the MPL was not distributed with this file, You can 3 | ; obtain one at http://mozilla.org/MPL/2.0/ 4 | ; 5 | ; Copyright (C) 2011-2025, Peter Johnson (www.delphidabbler.com). 6 | ; 7 | ; Version Information Editor install file generation script for use with Inno 8 | ; Setup. 9 | ; 10 | ; The Unicode version of Inno Setup 5.4.0 or later is required. 11 | ; 12 | ; The following defines use these macros that are predefined by ISPP: 13 | ; SourcePath - path where this script is located 14 | ; GetStringFileInfo - gets requested version info string from an executable 15 | ; 16 | ; The following define, which must be defined on the command line using the 17 | ; /D option: 18 | ; AppShortName - short name of project. Exe file will be named by appending 19 | ; ".exe" 20 | ; AppVersion - version number of the application (must contain only digits, 21 | ; e.g. 1.2.3.4). 22 | ; AppVersionSuffix - any suffix to the application version number (must start) 23 | ; with "-" , e.g. "-beta.1" 24 | ; SetupOutDir - setup program output directory relative to project root 25 | ; SetupFileName - name of setup file to be created (without path) 26 | ; ExeInDir - directory containing compiled .exe file relative to project root 27 | ; DocsInDir - directory containing documentation relative to project root 28 | ; HelpInDir - directory containing compiled help file relative to project root 29 | 30 | 31 | #define ExeFile AppShortName + ".exe" 32 | #define HelpFile "VIEd.chm" 33 | #define LicenseFile "License.rtf" 34 | #define ReadmeFile "ReadMe.txt" 35 | #define ChangeLogFile "CHANGELOG.md" 36 | #define InstDocsDir "Docs" 37 | #define InstUninstDir "Uninstall" 38 | #define OutDir SourcePath + "..\" + SetupOutDir 39 | #define SrcExePath SourcePath + "..\" + ExeInDir + "\" 40 | #define SrcDocsPath SourcePath + "..\" + DocsInDir + "\" 41 | #define SrcHelpPath SourcePath + "..\" + HelpInDir + "\" 42 | #define ExeProg SrcExePath + ExeFile 43 | #define Company "DelphiDabbler.com" 44 | #define AppPublisher "DelphiDabbler" 45 | #define AppName "Version Information Editor" 46 | #define Copyright GetStringFileInfo(ExeProg, LEGAL_COPYRIGHT) 47 | #define WebAddress "delphidabbler.com" 48 | #define WebURL "https://" + WebAddress + "/" 49 | #define AppURL WebURL + "vied" 50 | #define FullAppVersion AppVersion + AppVersionSuffix 51 | #define RootPath SourcePath + "..\" 52 | 53 | [Setup] 54 | AppID={{C968D909-86D7-44CA-8ED1-7052DD327C09} 55 | AppName={#AppName} 56 | AppVersion={#AppVersion} 57 | AppVerName={#AppPublisher} {#AppName} {#FullAppVersion} 58 | AppPublisher={#AppPublisher} 59 | AppPublisherURL={#WebURL} 60 | AppSupportURL={#AppURL} 61 | AppUpdatesURL={#AppURL} 62 | AppReadmeFile={app}\{#InstDocsDir}\{#ReadmeFile} 63 | AppCopyright={#Copyright} ({#WebAddress}) 64 | AppComments= 65 | AppContact= 66 | DefaultDirName={pf}\{#AppPublisher}\VIEd 67 | DefaultGroupName={#AppName} 68 | AllowNoIcons=false 69 | LicenseFile={#SrcDocsPath}{#LicenseFile} 70 | Compression=lzma/ultra 71 | SolidCompression=true 72 | OutputDir={#OutDir} 73 | OutputBaseFilename={#SetupFileName} 74 | MinVersion=6.1sp1 75 | RestartIfNeededByRun=false 76 | PrivilegesRequired=poweruser 77 | UsePreviousAppDir=true 78 | UsePreviousGroup=true 79 | UsePreviousSetupType=false 80 | UsePreviousTasks=false 81 | ShowLanguageDialog=no 82 | LanguageDetectionMethod=none 83 | InternalCompressLevel=ultra 84 | InfoAfterFile= 85 | InfoBeforeFile= 86 | VersionInfoVersion={#AppVersion} 87 | VersionInfoTextVersion={#AppVersion} 88 | VersionInfoProductVersion={#AppVersion} 89 | VersionInfoProductTextVersion={#FullAppVersion} 90 | VersionInfoCompany={#Company} 91 | VersionInfoDescription=Installer for {#AppName} 92 | VersionInfoCopyright={#Copyright} 93 | UninstallFilesDir={app}\{#InstUninstDir} 94 | UpdateUninstallLogAppName=true 95 | UninstallDisplayIcon={app}\{#ExeFile} 96 | UserInfoPage=false 97 | 98 | [Files] 99 | ; Executable files 100 | Source: {#SrcExePath}{#ExeFile}; DestDir: {app}; Flags: uninsrestartdelete 101 | Source: {#SrcHelpPath}{#HelpFile}; DestDir: {app}; Flags: ignoreversion 102 | ; Documentation 103 | Source: {#SrcDocsPath}{#LicenseFile}; DestDir: {app}\{#InstDocsDir}; Flags: ignoreversion 104 | Source: {#SrcDocsPath}{#ReadmeFile}; DestDir: {app}\{#InstDocsDir}; Flags: isreadme ignoreversion 105 | Source: {#RootPath}{#ChangeLogFile}; DestDir: {app}\{#InstDocsDir}; Flags: ignoreversion 106 | 107 | [Icons] 108 | Name: {group}\{#AppName}; Filename: {app}\{#ExeFile} 109 | Name: {group}\{cm:UninstallProgram,{#AppName}}; Filename: {uninstallexe} 110 | 111 | [Run] 112 | Filename: {app}\{#ExeFile}; Description: {cm:LaunchProgram,{#AppName}}; Flags: nowait postinstall skipifsilent 113 | 114 | [Dirs] 115 | Name: {app}\{#InstDocsDir}; Flags: uninsalwaysuninstall 116 | Name: {app}\{#InstUninstDir}; Flags: uninsalwaysuninstall 117 | 118 | [Registry] 119 | ; Register application and its path 120 | Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{#ExeFile}; ValueType: string; ValueData: {app}\{#ExeFile}; Flags: uninsdeletekey 121 | Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{#ExeFile}; ValueType: string; ValueName: Path; ValueData: {app}\; Flags: uninsdeletekey 122 | 123 | [Messages] 124 | ; Brand installer 125 | BeveledLabel={#Company} 126 | -------------------------------------------------------------------------------- /Source/Resources.rc: -------------------------------------------------------------------------------- 1 | /* 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2008-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Resource file containing the program icon and manifest resources for VIEd. 9 | */ 10 | 11 | 12 | /* Program icon */ 13 | MAINICON ICON "Assets\VIEd.ico" 14 | 15 | /* Manifest file */ 16 | 1 24 "Assets\VIEd.manifest" 17 | -------------------------------------------------------------------------------- /Source/UCommonDlg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphidabbler/vied/84ecabf07a2273ac5face1386601a4ec59096e9b/Source/UCommonDlg.pas -------------------------------------------------------------------------------- /Source/UComparers.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2024, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Implements two text comparision classes for use with generic collections. 9 | } 10 | 11 | 12 | unit UComparers; 13 | 14 | interface 15 | 16 | uses 17 | // Delphi 18 | Generics.Defaults; 19 | 20 | type 21 | /// 22 | /// Case insenstive string equality comparer. 23 | /// 24 | TTextEqualityComparer = class(TEqualityComparer, 25 | IEqualityComparer 26 | ) 27 | public 28 | /// Checks if two strings are equal, ignoring case. 29 | function Equals(const Left, Right: string): Boolean; override; 30 | /// Gets hash of lower case version of given string. 31 | function GetHashCode(const Value: string): Integer; override; 32 | end; 33 | 34 | type 35 | /// 36 | /// Case senstive string equality comparer. 37 | /// 38 | TStringEqualityComparer = class(TEqualityComparer, 39 | IEqualityComparer 40 | ) 41 | public 42 | /// Checks if two strings are equal, taking account of case. 43 | /// 44 | function Equals(const Left, Right: string): Boolean; override; 45 | /// Gets hash of given string. 46 | function GetHashCode(const Value: string): Integer; override; 47 | end; 48 | 49 | implementation 50 | 51 | uses 52 | // VCL 53 | SysUtils, 54 | // Project 55 | UUtils; 56 | 57 | { TTextEqualityComparer } 58 | 59 | function TTextEqualityComparer.Equals(const Left, Right: string): Boolean; 60 | begin 61 | Result := SameText(Left, Right, loInvariantLocale); 62 | end; 63 | 64 | function TTextEqualityComparer.GetHashCode(const Value: string): Integer; 65 | begin 66 | // Comparison takes place (i.e. Equals gets called) only if hashes are same. 67 | // So we must ignore case in hash if two strings that differ only in case are 68 | // to be considered same. 69 | Result := ElfHash(LowerCase(Value)); 70 | end; 71 | 72 | { TStringEqualityComparer } 73 | 74 | function TStringEqualityComparer.Equals(const Left, Right: string): Boolean; 75 | begin 76 | Result := SameStr(Left, Right, loInvariantLocale); 77 | end; 78 | 79 | function TStringEqualityComparer.GetHashCode(const Value: string): Integer; 80 | begin 81 | Result := ElfHash(Value); 82 | end; 83 | 84 | end. 85 | -------------------------------------------------------------------------------- /Source/UDlgParent.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2008-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Provides code that sets the parent window of a dialogue box to a specified 9 | * window handle. This code required to enable dialogues to work correctly with 10 | * main form that appears in the Windows task bar. 11 | } 12 | 13 | 14 | unit UDlgParent; 15 | 16 | 17 | interface 18 | 19 | 20 | uses 21 | // Delphi 22 | Controls; 23 | 24 | 25 | type 26 | 27 | { 28 | TDlgParent: 29 | Static class that can set parent window handle of a dialog box. 30 | } 31 | TDlgParent = class(TObject) 32 | private 33 | class procedure SetParent(Dlg, Parent: TWinControl); 34 | {Sets a dialog box's parent window to window handle of a parent control. 35 | @param Dlg [in] Reference to dialog box to have parent set. 36 | @param Parent [in] Parent control that provides window handle. If Parent 37 | is nil either active form or main form handle is used. 38 | } 39 | public 40 | class procedure SetParentToOwner(Dlg: TWinControl); 41 | {Sets a dialog box's parent window to window handle of its owner control, 42 | if any. If owner is nil or has no window handle, handle of active form or 43 | main form is used. 44 | @param Dlg [in] Reference to dialog box to have parent set. 45 | } 46 | end; 47 | 48 | 49 | implementation 50 | 51 | 52 | uses 53 | // Delphi 54 | Forms, Windows; 55 | 56 | 57 | { TDlgParent } 58 | 59 | class procedure TDlgParent.SetParent(Dlg, Parent: TWinControl); 60 | {Sets a dialog box's parent window to window handle of a parent control. 61 | @param Dlg [in] Reference to dialog box to have parent set. 62 | @param Parent [in] Parent control that provides window handle. If Parent is 63 | nil either active form or main form handle is used. 64 | } 65 | var 66 | ParentWnd: THandle; // window handle of parent control 67 | begin 68 | Assert(Assigned(Dlg), // ** do not localise 69 | 'TDlgParent.SetParent: Dlg is nil'); 70 | if Assigned(Parent) then 71 | ParentWnd := Parent.Handle 72 | else if Assigned(Screen.ActiveCustomForm) then 73 | ParentWnd := Screen.ActiveCustomForm.Handle 74 | else if Assigned(Application.MainForm) then 75 | ParentWnd := Application.MainForm.Handle 76 | else 77 | ParentWnd := Application.Handle; 78 | Assert(ParentWnd <> 0, // ** do not localise 79 | 'TDlgParent.SetParent: Can''t get parent window'); 80 | SetWindowLong(Dlg.Handle, GWL_HWNDPARENT, ParentWnd); 81 | end; 82 | 83 | class procedure TDlgParent.SetParentToOwner(Dlg: TWinControl); 84 | {Sets a dialog box's parent window to window handle of its owner control, if 85 | any. If owner is nil or has no window handle, handle of active form or main 86 | form is used. 87 | @param Dlg [in] Reference to dialog box to have parent set. 88 | } 89 | begin 90 | if Dlg.Owner is TWinControl then 91 | SetParent(Dlg, Dlg.Owner as TWinControl) 92 | else 93 | SetParent(Dlg, nil); 94 | end; 95 | 96 | end. 97 | 98 | -------------------------------------------------------------------------------- /Source/UHelp.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2014, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Displays topics from HTML Help file. 9 | } 10 | 11 | 12 | unit UHelp; 13 | 14 | 15 | interface 16 | 17 | 18 | uses 19 | // Delphi 20 | Windows; 21 | 22 | 23 | type 24 | /// 25 | /// Record that provides methods used to manage the HTML help system. 26 | /// 27 | THelp = record 28 | strict private 29 | /// Returns fully qualified name of help file. 30 | class function HelpFileName: string; static; 31 | /// Returns fully specified topic URL from a topic name. 32 | /// Name of topic is same as topic HTML file, without the 33 | /// extension. 34 | class function TopicURL(const TopicName: string): string; static; 35 | /// Calss the HtmlHelp API with a specified command and 36 | /// parameters. 37 | /// LongWord [in] Command to send to HTML Help. 38 | /// 39 | /// string [in] Names an HTML topic file within the 40 | /// help file, without extension. May be '' if no specific topic is 41 | /// required. 42 | /// LongWord [in] Command dependent data to pass to HTML 43 | /// Help. 44 | class procedure DoAppHelp(const Command: LongWord; 45 | const TopicName: string; const Data: LongWord); static; 46 | public 47 | const 48 | /// Topic displayed when a dialog box has no associated a-link 49 | /// keyword or a-link keyword matches no dialog box. 50 | DlgErrTopic = 'dlg-nohelp'; 51 | public 52 | /// Displays help contents. 53 | class procedure Contents; static; 54 | /// Displays a given help topic. 55 | /// string [in] Help topic to display. This must be the 56 | /// name of the topic HTML file, without the extension. 57 | class procedure ShowTopic(Topic: string); static; 58 | /// Closes down the help system. 59 | class procedure Quit; static; 60 | end; 61 | 62 | 63 | implementation 64 | 65 | 66 | uses 67 | // Delphi 68 | SysUtils; 69 | 70 | 71 | { THelp } 72 | 73 | class procedure THelp.Contents; 74 | begin 75 | DoAppHelp(HH_DISPLAY_TOC, '', 0); 76 | end; 77 | 78 | class procedure THelp.DoAppHelp(const Command: LongWord; 79 | const TopicName: string; const Data: LongWord); 80 | var 81 | HelpURL: string; // URL of help file, or topic with help file 82 | begin 83 | if TopicName = '' then 84 | HelpURL := HelpFileName 85 | else 86 | HelpURL := TopicURL(TopicName); 87 | HtmlHelp(GetDesktopWindow(), PChar(HelpURL), Command, Data); 88 | end; 89 | 90 | class function THelp.HelpFileName: string; 91 | begin 92 | Result := ChangeFileExt(ParamStr(0), '.chm'); 93 | end; 94 | 95 | class procedure THelp.Quit; 96 | begin 97 | HtmlHelp(0, nil, HH_CLOSE_ALL, 0); 98 | end; 99 | 100 | class procedure THelp.ShowTopic(Topic: string); 101 | begin 102 | DoAppHelp(HH_DISPLAY_TOPIC, Topic, 0); 103 | end; 104 | 105 | class function THelp.TopicURL(const TopicName: string): string; 106 | begin 107 | Result := HelpFileName + '::/HTML/' + TopicName + '.htm'; 108 | end; 109 | 110 | end. 111 | 112 | -------------------------------------------------------------------------------- /Source/UMutableEnvVars.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2024, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Implments a class that records system environment variables and permits their 9 | * values to be updated. 10 | } 11 | 12 | 13 | unit UMutableEnvVars; 14 | 15 | interface 16 | 17 | uses 18 | Generics.Collections, 19 | Classes; 20 | 21 | 22 | type 23 | TEnvironmentVar = TPair; 24 | 25 | TMutableEnvVars = class(TObject) 26 | strict private 27 | var 28 | fEnvVars: TDictionary; 29 | 30 | class procedure GetAllSystemEnvVars(const EnvVars: TStrings); 31 | procedure RecordSystemEnvVars; 32 | public 33 | { TODO: Remove any unused methods } 34 | constructor Create; 35 | destructor Destroy; override; 36 | procedure AfterConstruction; override; 37 | procedure AddOrSet(const E: TEnvironmentVar); 38 | function Contains(const Name: string): Boolean; 39 | function GetValue(const Name: string): string; 40 | function TryGetValue(const Name: string; out Value: string): Boolean; 41 | end; 42 | 43 | implementation 44 | 45 | uses 46 | SysUtils, 47 | Generics.Defaults, 48 | Windows, 49 | 50 | UComparers; 51 | 52 | { TMutableEnvVars } 53 | 54 | procedure TMutableEnvVars.AddOrSet(const E: TEnvironmentVar); 55 | begin 56 | fEnvVars.AddOrSetValue(E.Key, E.Value); 57 | end; 58 | 59 | procedure TMutableEnvVars.AfterConstruction; 60 | begin 61 | inherited; 62 | RecordSystemEnvVars; 63 | end; 64 | 65 | function TMutableEnvVars.Contains(const Name: string): Boolean; 66 | begin 67 | Result := fEnvVars.ContainsKey(Name); 68 | end; 69 | 70 | constructor TMutableEnvVars.Create; 71 | begin 72 | inherited Create; 73 | fEnvVars := TDictionary.Create(TTextEqualityComparer.Create); 74 | end; 75 | 76 | destructor TMutableEnvVars.Destroy; 77 | begin 78 | fEnvVars.Free; 79 | inherited; 80 | end; 81 | 82 | class procedure TMutableEnvVars.GetAllSystemEnvVars(const EnvVars: TStrings); 83 | var 84 | PEnvVars: PChar; // pointer to start of environment block 85 | PEnvEntry: PChar; // pointer to an environment string in block 86 | begin 87 | Assert(Assigned(EnvVars)); 88 | EnvVars.Clear; 89 | // Get reference to environment block for this process 90 | PEnvVars := GetEnvironmentStrings; 91 | if PEnvVars <> nil then 92 | begin 93 | // We have a block: extract strings from it 94 | // Env strings are #0 terminated and list ends an additional #0, e.g.: 95 | // Foo=Lorem#0Bar=Ipsum#0Raboof=Dolore#0#0 96 | PEnvEntry := PEnvVars; 97 | try 98 | while PEnvEntry^ <> #0 do 99 | begin 100 | EnvVars.Add(PEnvEntry); 101 | Inc(PEnvEntry, StrLen(PEnvEntry) + 1); // +1 to skip terminating #0 102 | end; 103 | finally 104 | FreeEnvironmentStrings(PEnvVars); 105 | end; 106 | end; 107 | end; 108 | 109 | function TMutableEnvVars.GetValue(const Name: string): string; 110 | begin 111 | Result := fEnvVars[Name]; 112 | end; 113 | 114 | procedure TMutableEnvVars.RecordSystemEnvVars; 115 | var 116 | AllEnvVars: TStringList; 117 | Idx: Integer; 118 | Name, Value: string; 119 | begin 120 | AllEnvVars := TStringList.Create; 121 | try 122 | GetAllSystemEnvVars(AllEnvVars); 123 | for Idx := 0 to Pred(AllEnvVars.Count) do 124 | begin 125 | Name := Trim(AllEnvVars.Names[Idx]); 126 | // ignore system env vars with empty name (they can exist) 127 | if Name <> '' then 128 | begin 129 | Value := AllEnvVars.ValueFromIndex[Idx]; 130 | // add env var to dictionary: overwrite any duplicates 131 | // duplicates shouldn't happen but might because we trimmed the names 132 | fEnvVars.AddOrSetValue(Name, Value); 133 | end; 134 | end; 135 | finally 136 | AllEnvVars.Free; 137 | end; 138 | end; 139 | 140 | function TMutableEnvVars.TryGetValue(const Name: string; 141 | out Value: string): Boolean; 142 | begin 143 | if not Contains(Name) then 144 | Exit(False); 145 | Value := GetValue(Name); 146 | Result := True; 147 | end; 148 | 149 | end. 150 | -------------------------------------------------------------------------------- /Source/UVIFile.pas: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 2024, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Loads, saves and provides information about a .vi file. 9 | } 10 | 11 | unit UVIFile; 12 | 13 | interface 14 | 15 | uses 16 | // Project 17 | UFileIO; 18 | 19 | type 20 | /// Encapsulates a physical .vi file. 21 | TVIFile = class(TObject) 22 | strict private 23 | var 24 | fName: string; 25 | public 26 | /// Name of the .vi file, including path, or empty string the file 27 | /// has not been saved or loaded. 28 | property Name: string read fName; 29 | /// Saves the .vi file. 30 | /// [in] the name of the file. Stored in the 31 | /// Name property. 32 | /// [in] The content to be written to the file. 33 | /// 34 | procedure Save(const AFileName: string; const AContent: TFileContent); 35 | /// Loads the .vi file. 36 | /// [in] the name of the file. Stored in the 37 | /// Name property. 38 | /// TFileContent. The content of the .vi file. 39 | function Load(const AFileName: string): TFileContent; 40 | /// Checks whether the file has been saved yet. 41 | function IsSaved: Boolean; 42 | /// Clears file name, indicating that the file has not yet been 43 | /// saved. 44 | procedure Clear; 45 | /// Directory of the .vi file name or empty string if not set. 46 | /// 47 | function FileDir: string; 48 | end; 49 | 50 | implementation 51 | 52 | uses 53 | // VCL 54 | IOUtils; 55 | 56 | { TVIFile } 57 | 58 | procedure TVIFile.Clear; 59 | begin 60 | fName := ''; 61 | end; 62 | 63 | function TVIFile.FileDir: string; 64 | begin 65 | if IsSaved then 66 | Result := TPath.GetDirectoryName(fName) 67 | else 68 | Result := ''; 69 | end; 70 | 71 | function TVIFile.IsSaved: Boolean; 72 | begin 73 | Result := fName <> ''; 74 | end; 75 | 76 | function TVIFile.Load(const AFileName: string): TFileContent; 77 | begin 78 | fName := AFileName; 79 | Result := TFileIO.ReadFile(AFileName); 80 | end; 81 | 82 | procedure TVIFile.Save(const AFileName: string; const AContent: TFileContent); 83 | begin 84 | fName := AFileName; 85 | TFileIO.WriteFile(AFileName, AContent); 86 | end; 87 | 88 | end. 89 | -------------------------------------------------------------------------------- /Source/UVerUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphidabbler/vied/84ecabf07a2273ac5face1386601a4ec59096e9b/Source/UVerUtils.pas -------------------------------------------------------------------------------- /Source/VERSION: -------------------------------------------------------------------------------- 1 | release=2.17.0 2 | suffix= 3 | -------------------------------------------------------------------------------- /Source/VIEd.dpr: -------------------------------------------------------------------------------- 1 | { 2 | * This Source Code Form is subject to the terms of the Mozilla Public License, 3 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can 4 | * obtain one at http://mozilla.org/MPL/2.0/ 5 | * 6 | * Copyright (C) 1998-2025, Peter Johnson (www.delphidabbler.com). 7 | * 8 | * Version Information Editor project file. 9 | } 10 | 11 | 12 | program VIEd; 13 | 14 | 15 | uses 16 | Forms, 17 | FmMain in 'FmMain.pas' {MainForm}, 18 | FmGenericDlg in 'FmGenericDlg.pas' {GenericDlg}, 19 | FmGenericOKDlg in 'FmGenericOKDlg.pas' {GenericOKDlg}, 20 | FmGenericViewDlg in 'FmGenericViewDlg.pas' {GenericViewDlg}, 21 | FmDropDownListEd in 'FmDropDownListEd.pas' {DropDownListEditor}, 22 | FmIdEd in 'FmIdEd.pas' {IdEditor}, 23 | FmNumberEd in 'FmNumberEd.pas' {NumEditor}, 24 | FmResCompiler in 'FmResCompiler.pas' {ResCompilerDlg}, 25 | FmResCompilerCheck in 'FmResCompilerCheck.pas' {ResCompilerCheckDlg}, 26 | FmResOutputDir in 'FmResOutputDir.pas' {ResOutputDirDlg}, 27 | FmSetEd in 'FmSetEd.pas' {SetEditor}, 28 | FmStringEd in 'FmStringEd.pas' {StringEditor}, 29 | FmUserSetup in 'FmUserSetup.pas' {UserSetupDlg}, 30 | FmViewList in 'FmViewList.pas' {ViewListDlg}, 31 | FmVerNumEd in 'FmVerNumEd.pas' {VerNumEditor}, 32 | UCommonDlg in 'UCommonDlg.pas', 33 | UDlgParent in 'UDlgParent.pas', 34 | UHelp in 'UHelp.pas', 35 | UMemoCaretPosDisplayMgr in 'UMemoCaretPosDisplayMgr.pas', 36 | UMsgDlgs in 'UMsgDlgs.pas', 37 | UResCompiler in 'UResCompiler.pas', 38 | USettings in 'USettings.pas', 39 | UUtils in 'UUtils.pas', 40 | UVerUtils in 'UVerUtils.pas', 41 | UVInfo in 'UVInfo.pas', 42 | FmMacroEd in 'FmMacroEd.pas' {MacroEditor}, 43 | UVIData in 'UVIData.pas', 44 | UFileIO in 'UFileIO.pas', 45 | FmFileEncoding in 'FmFileEncoding.pas' {FileEncodingDlg}, 46 | UMacros in 'UMacros.pas', 47 | UVIFile in 'UVIFile.pas', 48 | UParams in 'UParams.pas', 49 | UMutableEnvVars in 'UMutableEnvVars.pas', 50 | UComparers in 'UComparers.pas', 51 | FmViewMacros in 'FmViewMacros.pas' {ViewMacrosDlg}; 52 | 53 | {$Resource Resources.res} 54 | {$Resource Version.res} 55 | 56 | 57 | begin 58 | Application.Title := 'Version Information Editor'; 59 | Application.MainFormOnTaskBar := True; 60 | Application.ModalPopupMode := pmAuto; 61 | Application.CreateForm(TMainForm, MainForm); 62 | Application.Run; 63 | end. 64 | 65 | -------------------------------------------------------------------------------- /Source/Version.vi: -------------------------------------------------------------------------------- 1 | ; This Source Code Form is subject to the terms of the Mozilla Public License, 2 | ; v. 2.0. If a copy of the MPL was not distributed with this file, You can 3 | ; obtain one at http://mozilla.org/MPL/2.0/ 4 | ; 5 | ; Copyright (C) 2008-2024, Peter Johnson (www.delphidabbler.com). 6 | ; 7 | ; Version information description file used to create Version.res resource file 8 | ; Build this file with DelphiDabbler Version Information Editor. Compile the 9 | ; resulting .rc file using the Borland BRCC32 resource compiler. 10 | 11 | [Macros] 12 | Define:filever=v<#F1>.<#F2>.<#F3> 13 | Import:ver=VERSION 14 | 15 | [Fixed File Info] 16 | File Version #=<%ver.release> 17 | Product Version #=<%ver.release> 18 | File Sub-Type=0 19 | File OS=4 20 | File Type=1 21 | File Flags=0 22 | File Flags Mask=0 23 | 24 | [Variable File Info] 25 | Character Set=1252 26 | Language=2057 27 | 28 | [String File Info] 29 | File Description=Version Information Editor executable file <%filever> 30 | Product Version=<%ver.release><%ver.suffix> 31 | Comments=This program is released under an open source license. See the file "License.rtf" distributed with the program. 32 | Legal Copyright=Copyright © P D Johnson, 1998- 33 | Internal Name= 34 | Company Name=DelphiDabbler 35 | Original File Name=VIEd.exe 36 | Private Build= 37 | Product Name=Version Information Editor 38 | Special Build= 39 | Legal Trademark= 40 | File Version=<%filever> 41 | 42 | [Configuration Details] 43 | ResOutputDir= 44 | NumRCComments=0 45 | Identifier= 46 | FileVersion=2 47 | --------------------------------------------------------------------------------