{****************************************************************** 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, JvComponentBase, JvExtComponent; 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, 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', '')); if aTabSheet = nil then aTabSheet := createTabSheet(IniFileCompsUsed.ReadString(compUsedSL[J], 'Tab', '')); // check if for that comp a ImgBtn already created found := False; for K := 0 to aTabSheet.ControlCount - 1 do if aTabSheet.Controls[K].Name = compUsedSL[J] then begin aTabSheet.Controls[K].Hint := aTabSheet.Controls[K].Hint + ',' + allDemoFrms[I]; found := True; end; if found = False then begin aJvBitBtn := TJvBitBtn.Create(Self); aJvBitBtn.Parent := Self; aJvBitBtn.Name := compUsedSL[J]; aJvBitBtn.Left := aTabSheet.Tag; aTabSheet.Tag := aTabSheet.Tag + 30; aJvBitBtn.Top := 2; aJvBitBtn.Width := 25; aJvBitBtn.Height := 25; aJvBitBtn.ShowHint := False; aJvBitBtn.OnClick := CompClick; aFileName := gBitmapFilePath + 'T' + compUsedSL[J] + '.BMP'; { if not FileExists(AFileName) and (aTabSheet.Caption <> 'none') then MessageDlg('File "' + AFileName + '" for Bitmap not found!', mtError, [mbOk], 0) else } try if aTabSheet.Caption <> 'none' then aJvBitBtn.Glyph.LoadFromFile(AFileName); except end; aJvBitBtn.Hint := allDemoFrms[I]; aJvBitBtn.caption := ''; aJvBitBtn.Parent := aTabSheet; JvListBoxDemosCompNameSorted.items.add(compUsedSL[J]); end; end; end; end; finally IniFile.Free; IniFileCompsUsed.Free; allDemoFrms.Free; compUsedSL.Free; end; end; procedure TMainform.FormDestroy(Sender: TObject); var I: Integer; begin for I := 1 to MAX_FORMS do if (TheFormArray[I] <> nil) then TheFormArray[I].Free; end; procedure TMainform.CreateDemoForm(const ID: Integer; ShowForm: Boolean); begin // free the last Demo Form FreeAndNil(TheFormArray[FormID]); case ID of 1: TheFormArray[ID] := TJvFormsFrm.Create(nil); 2: TheFormArray[ID] := TJvDialogs.Create(nil); // 3: TheFormArray[ID] := TGLDemoFrm.Create(nil); 4: TheFormArray[ID] := TJvLabelsFrm.Create(nil); 5: TheFormArray[ID] := TRaHtHintsMainForm.Create(nil); 6: TheFormArray[ID] := TJvZoomMainForm.Create(nil); 7: TheFormArray[ID] := TJvEdits.Create(nil); 8: TheFormArray[ID] := TSearchingFormMain.Create(nil); 9: TheFormArray[ID] := TJvPanelsFrm.Create(nil); 10: TheFormArray[ID] := TfglXMLSerializerDemo.Create(nil); 11: TheFormArray[ID] := TJvSearchFileMainForm.Create(nil); 12: TheFormArray[ID] := TJvDateTimeFrm.Create(nil); 13: TheFormArray[ID] := TJvChoosersFrm.Create(nil); 14: TheFormArray[ID] := TJvControls.Create(nil); 15: TheFormArray[ID] := TJvAniMainForm.Create(nil); // 16 : TheFormArray[ID] := TJvMousePositionnerMainForm.Create(nil); 17: TheFormArray[ID] := TJvDataEmbeddedMainForm.Create(nil); 18: TheFormArray[ID] := TBmpAnimMainForm.Create(nil); 19: TheFormArray[ID] := TArrowButtonMainForm.Create(nil); 20: TheFormArray[ID] := TJvClipboardViewerMainForm.Create(nil); 21: TheFormArray[ID] := TJvBrowseFolderMainForm.Create(nil); 22: TheFormArray[ID] := TInstallLabelMainForm.Create(nil); 24: TheFormArray[ID] := TJvLogFileMainForm.Create(nil); 25: TheFormArray[ID] := TOLBarMainForm.Create(nil); 27: TheFormArray[ID] := TChangeNotificationMainForm.Create(nil); 28: TheFormArray[ID] := TCreateProcessExampleMainForm.Create(nil); 29: TheFormArray[ID] := TJvNTEventLogMainForm.Create(nil); 30: TheFormArray[ID] := TJvAppHotKeyDemoMainForm.Create(nil); 31: TheFormArray[ID] := TJvWindowsTitleMainForm.Create(nil); // 32 : TheFormArray[ID] := TJvSpecialProgressMainForm.Create(nil); 33: TheFormArray[ID] := TJvColorComboDemoMainForm.Create(nil); 34: TheFormArray[ID] := TContentScrollerMainForm.Create(nil); 35: TheFormArray[ID] := TMailExampleMainForm.Create(nil); 36: TheFormArray[ID] := TJvTreeViewAsMenuMainForm.Create(nil); 37: TheFormArray[ID] := TListCombMainForm.Create(nil); 38: TheFormArray[ID] := TJvDBDateTimePickerMainForm.Create(nil); 39: TheFormArray[ID] := TJvInspectorDBDemoMainForm.Create(nil); 40: TheFormArray[ID] := TJvMruListMainForm.Create(nil); 41: TheFormArray[ID] := TFileListBoxMainForm.Create(nil); 42: TheFormArray[ID] := TJvButtons.Create(nil); 43: TheFormArray[ID] := TJvBalloonHintMainForm.Create(nil); 44: TheFormArray[ID] := TDSADialogsMainForm.Create(nil); 45: TheFormArray[ID] := TfrmMessageDlgEditor.Create(nil); 46: TheFormArray[ID] := TJvHTMLParserMainForm.Create(nil); 47: TheFormArray[ID] := TJvLinkLabelMainForm.Create(nil); 48: TheFormArray[ID] := TJvScreenCaptureMainForm.Create(nil); 49: TheFormArray[ID] := TJvShellHookDemoMainForm.Create(nil); 50: TheFormArray[ID] := TJvShFileOperationMainForm.Create(nil); 51: TheFormArray[ID] := TJvSystemPopupMainForm.Create(nil); 52: TheFormArray[ID] := TJvSystemPopup2MainForm.Create(nil); 53: TheFormArray[ID] := TJvThumbnailMainForm.Create(nil); // 54 : TheFormArray[ID] := TJvTranslatorMainForm.Create(nil); // 55 : TheFormArray[ID] := TJvWndProcHookDemoMainForm.Create(nil); // 56 : TheFormArray[ID] := TJvWndProcHookDemoMainForm.Create(nil); 57: TheFormArray[ID] := TRegTVMainForm.Create(nil); 58: TheFormArray[ID] := TRunDll32MainForm.Create(nil); 59: TheFormArray[ID] := TJvScrollingWindowMainForm.Create(nil); 60: TheFormArray[ID] := TTimelineMainForm.Create(nil); 61: TheFormArray[ID] := TTipOfDayMainForm.Create(nil); 62: TheFormArray[ID] := TTMTimeLineMainForm.Create(nil); 63: TheFormArray[ID] := TTransBtnFormMain.Create(nil); 64: TheFormArray[ID] := TJvZLibMultipleMainForm.Create(nil); 65: TheFormArray[ID] := TWelcomeForm.Create(nil); 66: TheFormArray[ID] := TOtherMainForm.Create(nil); 67: TheFormArray[ID] := TProfiler32MainForm.Create(nil); 68: TheFormArray[ID] := TFindReplaceMainForm.Create(nil); 69: TheFormArray[ID] := TJvPlaylistMainForm.Create(nil); // 70 : TheFormArray[ID] := TImageWindowMainForm.Create(nil); 71: TheFormArray[ID] := TRessourcesForm.Create(nil); 72: TheFormArray[ID] := TConsoleExampleMainForm.Create(nil); 73: TheFormArray[ID] := TJvAppStorageBaseMainFrm.Create(nil); 74: TheFormArray[ID] := TJvAppStorageSelListMainfrm.Create(nil); 75: TheFormArray[ID] := TJvAppStorageSubStorageMainForm.Create(nil); 76: TheFormArray[ID] := TJvAviCapDemoFrm.Create(nil); 77: TheFormArray[ID] := TJvBackgroundDemoFrm.Create(nil); 78: begin TheFormArray[ID] := TMDIMainForm.Create(nil); // TMDIMainForm.Create(Application) // TBkgndImageSettings.Create(Application); // TMDIChildForm.Create(Application); end; 79: TheFormArray[ID] := TJvBehaviorLblMainFrm.Create(nil); 80: TheFormArray[ID] := TSimpleMainForm.Create(nil); 81: TheFormArray[ID] := TfrmInspector.Create(nil); 82: TheFormArray[ID] := TLEDDemoMain.Create(nil); 83: TheFormArray[ID] := TStarfieldMainForm.Create(nil); 84: TheFormArray[ID] := TJvCharMapMainFrm.Create(nil); 85: TheFormArray[ID] := TJvChartDemoForm.Create(nil); 86: TheFormArray[ID] := TJvCheckBoxRadioBtnFrm.Create(nil); 87: TheFormArray[ID] := TfrmCheckTVDemo.Create(nil); 88: TheFormArray[ID] := TControlsExampleMainForm.Create(nil); 89: TheFormArray[ID] := TCsvDataSourceForm.Create(nil); 90: TheFormArray[ID] := TJvID3v1MainForm.Create(nil); 91: TheFormArray[ID] := TJvID3v2MainForm.Create(nil); 92: TheFormArray[ID] := TJvHiddenGemsForm.Create(nil); 93: TheFormArray[ID] := TJvComboListBoxDemoFrm.Create(nil); 94: TheFormArray[ID] := TJvComputerInfoExDemoFrm.Create(nil); 95: TheFormArray[ID] := TJvDBActionMainFrm.Create(nil); 96: TheFormArray[ID] := TJvDBFindEditDemoFrm.Create(nil); 97: TheFormArray[ID] := TJvDBGridExportDemoMainFrm.Create(nil); 98: TheFormArray[ID] := TJvDBHTLabelDemoMainFrm.Create(nil); 99: TheFormArray[ID] := TJvDBImageDemoMainFrm.Create(nil); 100: TheFormArray[ID] := TJvDbMaskEditDemoFrm.Create(nil); 101: TheFormArray[ID] := TJvDBSearchDemoMainFrm.Create(nil); 102: TheFormArray[ID] := TJvDesktopAlertDemoFrm.Create(nil); 103: TheFormArray[ID] := TWebMapperDemoMainFrm.Create(nil); 104: TheFormArray[ID] := TUseCaseDemoMainFrm.Create(nil); 105: TheFormArray[ID] := TDependencyWalkerDemoMainFrm.Create(nil); 106: TheFormArray[ID] := TJvDialogsDemoFrm.Create(nil); 107: TheFormArray[ID] := TJvDomainUpDownDemoMainFrm.Create(nil); 108: TheFormArray[ID] := TJvDotNetDemoMainFrm.Create(nil); 109: TheFormArray[ID] := TJvErrorIndicatorMainDemoFrm.Create(nil); 110: TheFormArray[ID] := TJvFooterAndGroupHeaderDemoFrm.Create(nil); 111: TheFormArray[ID] := TJvFullColorCircleDlgMainFrm.Create(nil); 112: TheFormArray[ID] := TJvFullColorDialogMainFrm.Create(nil); 113: TheFormArray[ID] := TEditorMainForm.Create(nil); 114: TheFormArray[ID] := TAnimatorForm.Create(nil); 115: TheFormArray[ID] := TJvMouseGestureDemoMainFrm.Create(nil); 116: TheFormArray[ID] := TJvNavPaneDemoMainFrm.Create(nil); 117: TheFormArray[ID] := TfBouncingBalls.Create(nil); 118: TheFormArray[ID] := TfrmDiningPhilosophers.Create(nil); 119: TheFormArray[ID] := TJvMarkupLabelDemoMainFrm.Create(nil); 120: TheFormArray[ID] := TJvMenusExampleMainFrm.Create(nil); 121: TheFormArray[ID] := TJvOutlookBarCustomDrawDemoMainFrm.Create(nil); 122: TheFormArray[ID] := TPackageModifierMainFrm.Create(nil); 123: TheFormArray[ID] := TJvPageListTreeViewMainFrm.Create(nil); 124: TheFormArray[ID] := TJvPanelDemoMainFrm.Create(nil); {$IFDEF INCLUDE_DEVEXP_CX} 125: TheFormArray[ID] := TJvParameterListDemoMainFrm.Create(nil); {$ENDIF INCLUDE_DEVEXP_CX} //125: TheFormArray[ID] := T .Create(nil); //126: TheFormArray[ID] := T .Create(nil); //127: TheFormArray[ID] := T .Create(nil); //128: TheFormArray[ID] := T .Create(nil); //129: TheFormArray[ID] := T .Create(nil); else TheFormArray[ID] := TfrEmpty.Create(nil); end; //Execute the forms appearance only if they need to be shown if ShowForm then begin // embed the form in JvCaptionPanel1 TheFormArray[ID].Parent := JvCaptionPanel1; TheFormArray[ID].BorderStyle := bsNone; TheFormArray[ID].Scaled := False; TheFormArray[ID].Visible := True; TheFormArray[ID].left := 0; TheFormArray[ID].top := 25; //take the with, heigth and caption from the form JvCaptionPanel1.width := TheFormArray[ID].Width + 5; JvCaptionPanel1.height := TheFormArray[ID].height + 30; JvCaptionPanel1.Caption := TheFormArray[ID].Caption; // check if the form has a MainMenu and plug it in {$IFDEF COMPILER6_UP} if TheFormArray[ID].Menu <> nil then begin TheToolBar := TJvToolBar.Create(TheFormArray[ID]); TheToolBar.Parent := TheFormArray[ID]; TheToolBar.Menu := TheFormArray[ID].Menu; TheToolBar.Flat := True; end; {$ENDIF COMPILER6_UP} end; //save the last form ID FormID := ID; end; procedure TMainform.FormShow(Sender: TObject); var IniFile: TIniFile; IniFileName: string; begin IniFileName := ExtractFilePath(Application.ExeName) + 'data\JvMegaDemoConfig.ini'; if not FileExists(IniFileName) then begin MessageDlg( 'JVCL MegaDemo Configuration File ''' + IniFileName + ''' not found!'#13 + 'Programm will be aborted!', mtError, [mbOK], 0); Exit; end; IniFile := TIniFile.Create(IniFileName); gBitmapFilePath := IniFile.ReadString('Main', 'BitmapFilePath', ''); if FileExists(ExtractFilePath(Application.ExeName) + 'Help\JVCL3.HLP') then Application.HelpFile := ExtractFilePath(Application.ExeName) + 'Help\JVCL3.HLP' else Application.HelpFile := IniFile.ReadString('Main', 'HelpFile', ''); { if not FileExists(Application.HelpFile) then if MessageDlg( 'JVCL MegaDemo Help File ''' + Application.HelpFile + ''' was not found!'#13 + 'Do you want to open the config file?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then ShellExecute(0, nil, PChar('"' + IniFile.FileName + '"'), nil, nil, SW_SHOWNORMAL); } FreeAndNil(IniFile); //Show the Welcome-Frame CreateDemoForm(65); ReadAllDemosFromIni; // workaround, because anchors seems not to work here JvPageControlComps.width := self.width - 40; end; procedure TMainform.btnLoadIdeClick(Sender: TObject); var aFileStringList: TStringList; SearchPathExpr: string; begin if ModuleOfAddr(TheFormArray[FormID].ClassInfo) = '' then begin MessageDlg( 'This functionality is disabled unless you build the demo from the'#13 + 'Delphi IDE with map file generation enabled.', mtWarning, [mbOK], 0); Exit; end; screen.Cursor := crHourGlass; // uses the function 'ModuleOfAddr' from JclDebug unit to get the unit name SearchPathExpr := ExtractFilePath(Application.ExeName) + ModuleOfAddr(TheFormArray[FormID].ClassInfo) + '.pas'; StrReplace(SearchPathExpr, '\bin', '\examples', [rfIgnoreCase]); // uses AdvBuildFileList to get the file location in the example diretory tree aFileStringList := TStringList.create; AdvBuildFileList(SearchPathExpr, faAnyFile, aFileStringList, amAny, [flFullNames, flRecursive], '', nil); screen.Cursor := crDefault; if aFileStringList.Count < 1 then MessageDlg('File not found', mtError, [mbOK], 0) else ShellExecute(0, nil, PChar('"' + aFileStringList.Strings[0] + '"'), nil, nil, SW_SHOWNORMAL); StatusBar.SimpleText := 'file ''' + aFileStringList.Strings[0] + ''' has been launched'; aFileStringList.free; end; procedure TMainform.CompClick(Sender: TObject); procedure addWithFormat(aStr: string); begin JvRichEditHints.selattributes.style := [fsBold]; // set bold attribute JvRichEditHints.selattributes.Color := clNavy; // color to blue JvRichEditHints.seltext := aStr; JvRichEditHints.selattributes.style := []; // revert to normal JvRichEditHints.selattributes.Color := clBlack; // JvRichEditHints.selstart := JvRichEditHints.getTextLen; // set caret to end of text end; var aSL, allSections, tempSL: TStringList; I, J: Integer; IniFile: TIniFile; begin if (JvListBoxAllDemos.ItemIndex = -1) and (Sender = JvListBoxAllDemos) then // File is loading of nothing is selected Exit; aSL := TStringList.Create; IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\data\JvMegaDemoAllDemoForms.ini'); JvRichEditHints.Text := ''; // there are 3 possible callers for his method: if Sender is TJvXPBarItem then aSL.CommaText := IntToStr(TJvXPBarItem(sender).Tag) else if Sender = JvListBoxAllDemos then begin // we have only the Demo Title, so we have to search for it in the while ini file IniFile.ReadSections(aSL); for I := 0 to aSL.Count - 1 do if IniFile.ReadString(aSL[I], 'Title', '') = JvListBoxAllDemos.Items[JvListBoxAllDemos.ItemIndex] then begin aSL.CommaText := aSL[I]; Break; end; end else if Sender = JvListBoxDemosCompNameSorted then begin addWithFormat(JvListBoxDemosCompNameSorted.Items[JvListBoxDemosCompNameSorted.ItemIndex]); JvRichEditHints.Lines.add(' is used in following Demos:'); // we have one the Comonent Name, so we have to search in whole ini, in the comma seperated valuues allSections := TStringList.create; tempSL := TStringList.create; IniFile.ReadSections(allSections); for I := 0 to allSections.Count - 1 do begin tempSL.CommaText := IniFile.ReadString(allSections[I], 'compsUsed', ''); for J := 0 to tempSL.count - 1 do if tempSL[J] = JvListBoxDemosCompNameSorted.Items[JvListBoxDemosCompNameSorted.ItemIndex] then aSL.Add(allSections[I]); end; allSections.Free; tempSL.Free; end else // the comps in the "Comps as in the Delphi IDE" begin aSL.CommaText := (Sender as TControl).Hint; addWithFormat((Sender as TControl).Name); JvRichEditHints.Lines.add(' is used in following Demos:'); end; // in the CommaText of the StringList aSL are now the DemoFormId[s] for I := 0 to aSL.Count - 1 do begin JvRichEditHints.Lines.Add(''); addWithFormat('http:' + aSL[I] + ' ' + IniFile.ReadString(aSL[I], 'Title', '')); JvRichEditHints.Lines.Add(''); JvRichEditHints.Lines.Add(IniFile.ReadString(aSL[I], 'Descr', '')); end; FreeAndNil(aSL); FreeAndNil(IniFile); end; procedure TMainform.JvNavPanelBtnIdePageCtrlClick(Sender: TObject); begin JvXPBarIDE.Collapsed := not JvXPBarIDE.Collapsed; end; procedure TMainform.ShowJVCLAboutDlg(Sender: TObject); begin JvJVCLAboutComp.Execute; end; procedure TMainform.ShellExecHint(Sender: TObject); var aFileName: string; begin if Sender is TControl then aFileName := TControl(Sender).Hint else if Sender is TJvXPBarItem then aFileName := TJvXPBarItem(Sender).Hint else begin MessageDlg('Unknown Sender Type! Could not extract FileName from Hint', mtError, [mbOK], 0); Exit; end; // check if aFileName is a real filename if (pos('http', aFileName) = 0) and (pos('mailto', aFileName) = 0) then begin aFileName := ExtractFileDir(Application.ExeName) + '\' + aFileName; if not FileExists(aFilename) then begin MessageDlg('File ''' + aFilename + ''' could not be found!', mtError, [mbOK], 0); Exit; end; end; screen.Cursor := crHourGlass; ShellExecute(0, nil, PChar(aFileName), nil, nil, SW_SHOWNORMAL); StatusBar.SimpleText := 'file ''' + aFileName + ''' has been launched'; screen.Cursor := crDefault; end; procedure TMainform.JvNavPanelBtnExitClick(Sender: TObject); begin close; end; procedure TMainform.JvXPBarIDECollapsedChange(Sender: TObject; Collapsing: Boolean); begin if Collapsing then JvCaptionPanel1.Top := JvCaptionPanel1.Top - 83 else JvCaptionPanel1.Top := JvCaptionPanel1.Top + 83; end; procedure TMainform.WinXPBarEnsureOnlyOneExpanded(Sender: TObject; Collapsing: Boolean); // this procedure ensures that only one group is expanded - if the user choose so var I: Integer; begin if JvCheckBoxAllowOnlyOneExpanded.Checked = False then Exit; if Collapsing then Exit; // collapse all other JvXPBars except the sender for I := 0 to JvXPContainer1.ControlCount - 1 do if JvXPContainer1.Controls[I] <> Sender then TJvXPBar(JvXPContainer1.Controls[I]).collapsed := True; end; procedure TMainform.JvRichEditHintsURLClick(Sender: TObject; const URLText: string; Button: TMouseButton); begin if StrIsDigit(copy(UrlText, 6, 99)) then self.CreateDemoForm(StrToInt(copy(UrlText, 6, 99))) else ShellExecute(0, nil, PChar('"' + UrlText + '"'), nil, nil, SW_SHOWNORMAL); end; procedure TMainform.JvListBoxAllDemosChange(Sender: TObject); var IniFile: TIniFile; allDemoFrms: TStringList; I: Integer; begin IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\data\JvMegaDemoAllDemoForms.ini'); allDemoFrms := TStringList.Create; try IniFile.ReadSections(allDemoFrms); for I := 0 to allDemoFrms.Count - 1 do begin JvListBoxAllDemos.Items.AddObject(IniFile.ReadString(allDemoFrms[I], 'Title', ''), nil) end; finally IniFile.Free; allDemoFrms.Free; end; end; procedure TMainform.JvNavPanelBtnJumpHelpClick(Sender: TObject); var I: Integer; firstLine: string; begin // get the first word in the JvRichedit, becaues it is the component Name // not a very nice design, but at least it works firstLine := JvRichEditHints.Lines[0]; if firstLine = '' then begin MessageDlg( 'This function is only availible when a component from the PageControl in '#13 + '''Components as in the Delphi IDE'' is the current item!', mtWarning, [mbOK], 0); Exit; end; I := 0; while firstLine[I] <> ' ' do inc(I); Application.HelpKeyword('T' + copy(FirstLine, 1, I - 1)); StatusBar.SimpleText := 'help topic ''T' + copy(FirstLine, 1, I - 1) + ''' has been launched'; end; procedure TMainform.JvXPBarSearchByCompNameAfterCollapsedChange( Sender: TObject; Collapsing: Boolean); begin JvEdtCompSearch.SetFocus; end; procedure TMainform.JvXPBarBrowseDemosAfterCollapsedChange( Sender: TObject; Collapsing: Boolean); begin JvListBoxAllDemos.SetFocus; end; procedure TMainform.JvNavPanelButton1Click(Sender: TObject); var A, B: Double; begin A := 0; B := 0; ShowMessageFmt('%f', [A / B]); end; end.