📄 unitmain.pas
字号:
{******************************************************************
JEDI-VCL Demo
Copyright (C) 2002 Project JEDI
Original author: Ralf Grenzing [Ralf dot Grenzing@gmx.de]
Uwe Rupprecht [uwe-rupprecht@gmx.de]
Contributor(s): Michael Beck (mbeck1@compuserve.com)
Settings part based on work of Angus Johnson - ajohnson@rpi.net.au
You may retrieve the latest version of this file at the JEDI-JVCL
home page, located at http://jvcl.sourceforge.net
The contents of this file are used with permission, subject to
the Mozilla Public License Version 1.1 (the "License"); you may
not use this file except in compliance with the License. You may
obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1_1Final.html
Software distributed under the License is distributed on an
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
******************************************************************}
unit Unitmain;
{$I jvcl.inc}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
JvButton, JvNavigationPane, JvBaseDlg, JvJVCLAboutForm, JvAutoComplete,
ImgList, JvComponent, Buttons, JvExButtons, JvBitBtn, ComCtrls,
JvExComCtrls, JvComCtrls, StdCtrls, JvExStdCtrls, JvRichEdit, JvEdit,
JvListBox, JvExControls, JvLabel, JvXPBar, JvXPCore, JvXPContainer,
ExtCtrls, JvExExtCtrls, JvSplitter, JvCtrls, JvCaptionPanel, JvToolBar,
JvAppStorageBaseMainFrmU, ControlsExampleMainFormU, JvCheckBox,
JvHtControls, JvStatusBar, JvNetscapeSplitter, JvDbMaskEditDemoForm,
JvOutlookBarCustomDrawDemoMainForm;
type
TMainform = class(TForm)
JvCaptionPanel1: TJvCaptionPanel;
JvNavPaneStyleMan: TJvNavPaneStyleManager;
LargeImages: TImageList;
PanelTop: TPanel;
aJvImgBtn: TJvImgBtn;
sbxWinXPBar: TScrollBox;
JvXPContainer1: TJvXPContainer;
JvXPBarBrowseDemos: TJvXPBar;
jvXPBarSettings: TJvXPBar;
JvXPBarIDE: TJvXPBar;
Panel4: TPanel;
JvListBoxAllDemos: TJvListBox;
JvLookupAutoCompl: TJvLookupAutoComplete;
aJvBitBtn: TJvBitBtn;
JvRichEditHints: TJvRichEdit;
JvSplitter1: TJvSplitter;
JvJVCLAboutComp: TJvJVCLAboutComponent;
JvNavPanelButton2: TJvNavPanelButton;
JvNavPanelButton3: TJvNavPanelButton;
JvNavPanelBtnIdePageCtrl: TJvNavPanelButton;
JvNavPanelBtnLoadFormInIDE: TJvNavPanelButton;
JvNavPanelBtnJumpHelp: TJvNavPanelButton;
JvNavPanelBtnExit: TJvNavPanelButton;
JvXPBarInformation: TJvXPBar;
JvPageControlComps: TJvPageControl;
JvXPBarSearchByCompName: TJvXPBar;
Panel2: TPanel;
JvLabel2: TJvLabel;
JvListBoxDemosCompNameSorted: TJvListBox;
JvEdtCompSearch: TJvEdit;
JvLabel1: TJvLabel;
Panel1: TPanel;
JvLabel3: TJvLabel;
JvCheckBoxAllowOnlyOneExpanded: TJvCheckBox;
JvLabel4: TJvLabel;
JvLabel5: TJvLabel;
StatusBar: TJvStatusBar;
JvNavPanelButton1: TJvNavPanelButton;
JvNetscapeSplitter1: TJvNetscapeSplitter;
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CreateDemoForm(const ID: Integer; ShowForm: Boolean = True);
procedure btnLoadIdeClick(Sender: TObject);
procedure CompClick(Sender: TObject);
procedure JvNavPanelBtnIdePageCtrlClick(Sender: TObject);
procedure ShowJVCLAboutDlg(Sender: TObject);
procedure ShellExecHint(Sender: TObject);
procedure JvNavPanelBtnExitClick(Sender: TObject);
procedure JvXPBarIDECollapsedChange(Sender: TObject; Collapsing: Boolean);
procedure WinXPBarEnsureOnlyOneExpanded(Sender: TObject; Collapsing: Boolean);
procedure JvRichEditHintsURLClick(Sender: TObject;
const URLText: string; Button: TMouseButton);
procedure JvListBoxAllDemosChange(Sender: TObject);
procedure JvNavPanelBtnJumpHelpClick(Sender: TObject);
procedure JvXPBarSearchByCompNameAfterCollapsedChange(Sender: TObject;
Collapsing: Boolean);
procedure JvXPBarBrowseDemosAfterCollapsedChange(
Sender: TObject; Collapsing: Boolean);
procedure JvNavPanelButton1Click(Sender: TObject);
private
procedure ReadAllDemosFromIni;
end;
const
MAX_FORMS = 150;
var
Mainform: TMainform;
TheToolBar: TJvToolBar;
TheFormArray: array[1..MAX_FORMS] of TForm;
FormID: Integer;
gBitmapFilePath: string;
implementation
uses
JvFrameEmpty, hello, JvLabelsU, JvFormsU, JvDialogsU, JvButtonsU, JvDateTimeU,
ArrowButtonMainFormU, JvPanelsU, JvChoosersU, JvControlsU, JvSearchFiles, JvWinDialogsU,
JvEditsU, JvAniMainFormU, JvSearchFileMainFormU, JvNTEventLogMainFormU, JvMruListMainFormU,
JvLogFileMainFormU, InstallLabelMainFormU, JvDBDateTimePickerMainFormU, ContentScrollerMainFormU,
JvDataEmbeddedMainFormU, JvBrowseFolderMainFormU,
JvClipboardViewerMainFormU, JvZoomMainFormU, JvWindowsTitleMainFomU,
RaHtHintsMainFormU, FileListBoxMainFormU, JvTreeViewAsMenuMainFormU,
ListCombMainFormU, JvBalloonHintMainFormU, JvHTMLParserMainFormU,
JvLinkLabelMainFormU, JvScreenCaptureMainFormU,
JvShFileOperationMainFormU, JvSystemPopup2MainFormU, JvSystemPopupMainFormU,
JvThumbnailMainFormU, RegTVMainFormU, RunDll32MainFormU, TimelineMainFormU,
TipOfDayMainFormU, TMTimeLineMainFormU, FindReplaceMainFormU, JvPlayListMainFormU,
JvZLibMultipleMainFormU, OtherStandAlone, Profiler32MainFormU,
RessourcesFormMain, SearchingForm, JclDebug, JclStrings, JclFileUtils, ShellAPI,
IniFiles, CreateProcessExampleMainFormU, ConsoleExampleMainFormU, glDemo,
XMLSerializerMainFormU, JvAppHotKeyDemoMainFormU, JvAppStorageSelListMainfrmU,
JvAppStorageSubStorageMainFrm, JvAviCapDemoFrmU, TVDemoMain, MDIBkgndDemoMain,
MDIBkgndDemoSettings, MDIBkgndDemoChld, JvBehaviorLblMainFrmU, BmpAnimMainFormU,
ChangeNotificationMainFormU, OLBarMainFormU, MailExampleMainFormU,
JvInspectorDBDemoMainFormU, InspectorSimpleExampleMain, InspectorExampleMain,
TransBtnFormMainU, JvShellHookDemoMainFormU, ScrollWinMainFormU, LEDMain,
StarFieldMain, JvCharMapMainFrmU, JvChartDemoFm, JvCheckBoxRadioBtnFrmU,
CheckTVDemoFrm, JvColorComboDemoMainFormU, CsvDataSourceDemoFm, JvID3v1MainFormU,
JvID3v2MainFormU, JvHiddenGems, DSADialogsMainFormU, MessageDlgEditorMain,
JvComboListBoxDemoForm, JvComputerInfoExDemoForm, JvDBActionMainForm,
JvDBFindEditDemoForm, JvDBGridExportDemoMainForm, JvDBHTLabelDemoMainForm,
JvDBImageDemoMainForm, JvDBSearchDemoMainForm, JvDesktopAlertDemoForm,
WebMapperDemoMainForm, UseCaseDemoMainForm, DependencyWalkerDemoMainForm,
fDialogs, JvDomainUpDownDemoMainForm, JvDotNetDemoMainForm,
JvErrorIndicatorMainDemoForm, JvFooterAndGroupHeaderDemoForm,
JvFullColorCircleDialogMainForm, JvFullColorDialogMainForm,
EditorMainFormU, GIFMAIN, uJvMouseGesture, JvNavPaneDemoMainForm, fBalls,
fPhilosophers, JvMarkupLabelDemoMainForm, JvMenusExampleMainForm,
PackageModifierMainForm, JvPageListTreeViewMainForm, JvPanelDemoFrm;
{$R *.dfm}
procedure TMainform.ReadAllDemosFromIni;
var
IniFile, IniFileCompsUsed: TIniFile;
allDemoFrms, compUsedSL: TStringList;
I, J, K: Integer;
aTabSheet: TTabSheet;
aJvXPBar: TJvXPBar;
aFileName: string;
found: Boolean;
function getJvXPBarByCaption(aCaption: string): TJvXPBar;
var
I: Integer;
begin
Result := nil;
for I := 0 to JvXPContainer1.ControlCount - 1 do
if TJvXPBar(JvXPContainer1.Controls[I]).caption = aCaption then
begin
Result := TJvXPBar(JvXPContainer1.Controls[I]);
Exit;
end;
end;
function createJvXPBar(aCaption: string): TJvXPBar;
begin
Result := TJvXPBar.Create(Self);
Result.Parent := JvXPContainer1;
Result.Caption := aCaption;
Result.Collapsed := True;
Result.ShowItemFrame := False;
Result.RoundedItemFrame := 0;
Result.Align := alTop;
Result.ParentFont := False;
Result.Colors.BodyColor := clInfoBK;
Result.HeaderFont.Color := clBlack;
Result.Font.Color := clNavy; // color of items
Result.HeaderFont.Size := 11;
Font.Color := clNavy; // color of items
Result.Colors.GradientFrom := $00F4E2E1;
Result.Colors.GradientTo := $00B09494;
Result.HotTrackColor := clBlack;
end;
function getTabsSheetByCaption(aCaption: string): TTabSheet;
var
I: Integer;
begin
Result := nil;
for I := 0 to JvPageControlComps.PageCount - 1 do
begin
if JvPageControlComps.Pages[I].Caption = aCaption then
begin
Result := JvPageControlComps.Pages[I];
Exit;
end;
end;
end;
function createTabSheet(aCaption: string): TTabSheet;
begin
Result := TTabSheet.Create(self);
Result.Parent := JvPageControlComps;
Result.caption := aCaption;
Result.PageControl := JvPageControlComps;
end;
begin
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\data\JvMegaDemoAllDemoForms.ini');
IniFileCompsUsed := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\data\JvMegaDemoCompsTabs.ini');
allDemoFrms := TStringList.Create;
compUsedSL := TStringList.Create;
try
IniFile.ReadSections(allDemoFrms);
for I := 0 to allDemoFrms.Count - 1 do
begin
if IniFile.ReadString(allDemoFrms[I], 'Title', '') = '' then
begin
MessageDlg('Demo Form Id ' + allDemoFrms[I] + ' has no title!', mtError, [mbOK], 0);
Exit;
end;
// add entry to the ListBox of all Demos
JvListBoxAllDemos.Items.Add(IniFile.ReadString(allDemoFrms[I], 'Title', ''));
// add an entry to the XPBars
if IniFile.ReadString(allDemoFrms[I], 'XPBar', '') <> '' then
begin
aJvXPBar := getJvXPBarByCaption(IniFile.ReadString(allDemoFrms[I], 'XPBar', ''));
if aJvXPBar = nil then
aJvXPBar := createJvXPBar(IniFile.ReadString(allDemoFrms[I], 'XPBar', ''));
with aJvXPBar.Items.Add do
begin
Caption := IniFile.ReadString(allDemoFrms[I], 'Title', '');
Hint := IniFile.ReadString(allDemoFrms[I], 'descr', '');
ImageIndex := IniFile.ReadInteger(allDemoFrms[I], 'ImageIdx', -1);
Tag := StrToInt(allDemoFrms[I]);
OnClick := CompClick;
end;
end;
// add an entry for every to the "components as in thh Delphi IDE"
if IniFile.ReadString(allDemoFrms[I], 'compsUsed', '') <> '' then
begin
compUsedSL.commaText := IniFile.ReadString(allDemoFrms[I], 'compsUsed', '');
for J := 0 to compUsedSL.count - 1 do
begin
aTabSheet := getTabsSheetByCaption(IniFileCompsUsed.ReadString(compUsedSL[J], 'Tab', ''));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -