From e5d8eebe9f019998885619be54a40dc4f56b5436 Mon Sep 17 00:00:00 2001 From: wp_xyz Date: Sun, 26 Dec 2021 23:19:59 +0100 Subject: [PATCH] Examples: Restructure combobox sample project. --- .../simple/rad/combobox/combobox_demo.lpi | 78 +++++++++ .../simple/rad/combobox/combobox_demo.lpr | 25 +++ examples/simple/rad/combobox/comboboxform.lfm | 160 ++++++++++++++++++ examples/simple/rad/combobox/comboboxform.pas | 141 +++++++++++++++ .../runtime/combobox/combobox_demo.lpi} | 24 ++- .../runtime/combobox/combobox_demo.pp} | 53 ++---- 6 files changed, 429 insertions(+), 52 deletions(-) create mode 100644 examples/simple/rad/combobox/combobox_demo.lpi create mode 100644 examples/simple/rad/combobox/combobox_demo.lpr create mode 100644 examples/simple/rad/combobox/comboboxform.lfm create mode 100644 examples/simple/rad/combobox/comboboxform.pas rename examples/{combobox.lpi => simple/runtime/combobox/combobox_demo.lpi} (63%) rename examples/{combobox.pp => simple/runtime/combobox/combobox_demo.pp} (93%) diff --git a/examples/simple/rad/combobox/combobox_demo.lpi b/examples/simple/rad/combobox/combobox_demo.lpi new file mode 100644 index 0000000000..9f5a2b886a --- /dev/null +++ b/examples/simple/rad/combobox/combobox_demo.lpi @@ -0,0 +1,78 @@ + + + + + + + + + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> + </General> + <BuildModes> + <Item Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + </RunParams> + <RequiredPackages> + <Item> + <PackageName Value="LCL"/> + </Item> + </RequiredPackages> + <Units> + <Unit> + <Filename Value="combobox_demo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + <Unit> + <Filename Value="comboboxform.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="ComboBoxForm"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="combobox_demo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions> + <Item> + <Name Value="EAbort"/> + </Item> + <Item> + <Name Value="ECodetoolError"/> + </Item> + <Item> + <Name Value="EFOpenError"/> + </Item> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/examples/simple/rad/combobox/combobox_demo.lpr b/examples/simple/rad/combobox/combobox_demo.lpr new file mode 100644 index 0000000000..1cfc541fbf --- /dev/null +++ b/examples/simple/rad/combobox/combobox_demo.lpr @@ -0,0 +1,25 @@ +program combobox_demo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX} + cthreads, + {$ENDIF} + {$IFDEF HASAMIGA} + athreads, + {$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, ComboBoxForm + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Scaled:=True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/examples/simple/rad/combobox/comboboxform.lfm b/examples/simple/rad/combobox/comboboxform.lfm new file mode 100644 index 0000000000..ccdbf2e77c --- /dev/null +++ b/examples/simple/rad/combobox/comboboxform.lfm @@ -0,0 +1,160 @@ +object Form1: TForm1 + Left = 270 + Height = 423 + Top = 131 + Width = 714 + Caption = 'ComboBox Demo v0.2' + ClientHeight = 403 + ClientWidth = 714 + Menu = mnuMain + LCLVersion = '2.3.0.0' + object Button2: TButton + Left = 50 + Height = 30 + Top = 40 + Width = 120 + Caption = 'Add item' + OnClick = Button2Click + TabOrder = 0 + end + object Button1: TButton + Left = 50 + Height = 30 + Top = 80 + Width = 120 + Caption = 'Edit -> Combo' + OnClick = Button1Click + TabOrder = 1 + end + object Button3: TButton + Left = 50 + Height = 30 + Top = 120 + Width = 120 + Caption = 'Combo -> Edit' + OnClick = Button3Click + TabOrder = 2 + end + object Button4: TButton + Left = 50 + Height = 30 + Top = 160 + Width = 120 + Caption = 'Enabled On/Off' + OnClick = Button4Click + TabOrder = 3 + end + object Button5: TButton + Left = 50 + Height = 30 + Top = 200 + Width = 120 + Caption = 'Dump' + OnClick = Button5Click + TabOrder = 4 + end + object Button6: TButton + Left = 50 + Height = 30 + Top = 240 + Width = 120 + Caption = 'Index ?' + OnClick = Button6Click + TabOrder = 5 + end + object Button7: TButton + Left = 49 + Height = 30 + Top = 280 + Width = 120 + Caption = 'Select All' + OnClick = Button7Click + TabOrder = 6 + end + object Label1: TLabel + Left = 320 + Height = 15 + Top = 50 + Width = 29 + Caption = 'TEdit:' + end + object Edit1: TEdit + Left = 500 + Height = 23 + Top = 50 + Width = 70 + OnChange = ComboOnChange + OnClick = ComboOnClick + TabOrder = 7 + Text = 'Edit1' + end + object Label2: TLabel + Left = 320 + Height = 15 + Top = 100 + Width = 101 + Caption = 'Combo (unsorted):' + end + object ComboBox1: TComboBox + Left = 500 + Height = 23 + Top = 100 + Width = 170 + ItemHeight = 15 + ItemIndex = 1 + Items.Strings = ( + 'wohh!' + '22222!' + '33333!' + 'abcde!' + ) + OnChange = ComboOnChange + OnClick = ComboOnClick + TabOrder = 8 + Text = '22222!' + end + object Label3: TLabel + Left = 320 + Height = 15 + Top = 150 + Width = 87 + Caption = 'Combo (sorted):' + end + object ComboBox2: TComboBox + Left = 500 + Height = 23 + Top = 150 + Width = 170 + ItemHeight = 15 + ItemIndex = 1 + Items.Strings = ( + '22222!' + '33333!' + 'abcde!' + 'wohhh!' + ) + Sorted = True + Style = csDropDownList + TabOrder = 9 + Text = '33333!' + end + object Memo1: TMemo + Left = 235 + Height = 176 + Top = 200 + Width = 435 + ScrollBars = ssBoth + TabOrder = 10 + end + object mnuMain: TMainMenu + Left = 242 + Top = 75 + object itmFile: TMenuItem + Caption = '&File' + object itmFileQuit: TMenuItem + Caption = '&Quit' + OnClick = itmFileQuitClick + end + end + end +end diff --git a/examples/simple/rad/combobox/comboboxform.pas b/examples/simple/rad/combobox/comboboxform.pas new file mode 100644 index 0000000000..b71703146d --- /dev/null +++ b/examples/simple/rad/combobox/comboboxform.pas @@ -0,0 +1,141 @@ +unit ComboBoxForm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Menus; + +type + + { TForm1 } + + TForm1 = class(TForm) + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Button5: TButton; + Button6: TButton; + Button7: TButton; + ComboBox1: TComboBox; + ComboBox2: TComboBox; + Edit1: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + itmFile: TMenuItem; + itmFileQuit: TMenuItem; + mnuMain: TMainMenu; + Memo1: TMemo; + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Button3Click(Sender: TObject); + procedure Button4Click(Sender: TObject); + procedure Button5Click(Sender: TObject); + procedure Button6Click(Sender: TObject); + procedure Button7Click(Sender: TObject); + procedure ComboOnChange(Sender: TObject); + procedure ComboOnClick(Sender: TObject); + procedure itmFileQuitClick(Sender: TObject); + private + + public + + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.Button1Click(Sender: TObject); +begin + if Assigned(ComboBox1) and Assigned(Edit1) then + ComboBox1.Text := Edit1.Text; +end; + +procedure TForm1.Button2Click(Sender: TObject); +begin + ComboBox1.Items.Add(Edit1.Text); + ComboBox2.Items.Add(Edit1.Text); +end; + +procedure TForm1.Button3Click(Sender: TObject); +begin + if Assigned(ComboBox1) and Assigned(Edit1) then + Edit1.Text := ComboBox1.Text; +end; + +procedure TForm1.Button4Click(Sender: TObject); +begin + if Assigned(ComboBox1) then + ComboBox1.Enabled := not ComboBox1.Enabled; +end; + +procedure TForm1.Button5Click(Sender: TObject); +var + i: integer; +begin + if Assigned(ComboBox1) then + begin + i := 0; + while i < ComboBox1.Items.Count do + begin + if Assigned(Memo1) then + Memo1.Lines.Add(ComboBox1.Items[i]); + inc (i); + end; + end; +end; + +procedure TForm1.Button6Click(Sender: TObject); +var + s: string; +begin + if Assigned(ComboBox1) then + begin + s := Format ('%x', [ComboBox1.ItemIndex]); + if Assigned(Memo1) then + Memo1.Lines.Add (s); + end; +end; + +procedure TForm1.Button7Click(Sender: TObject); +begin + Edit1.SelectAll; + ComboBox1.SelectAll; +end; + +procedure TForm1.ComboOnChange(Sender: TObject); +var + s: string; +begin + if Sender is TEdit then + s := TControl(Sender).Name + ':TEdit - ' + else if Sender is TComboBox then + s := TControl(Sender).Name + ':TComboBox - ' + else + s := 'UNKNOWN'; + if Assigned(Memo1) then + Memo1.Lines.Add(s + 'OnChange'); +end; + +procedure TForm1.ComboOnClick(Sender: TObject); +begin + if Assigned(Memo1) then + Memo1.Lines.Add('OnClick'); +end; + +procedure TForm1.itmFileQuitClick(Sender: TObject); +begin + Close; +end; + +end. + diff --git a/examples/combobox.lpi b/examples/simple/runtime/combobox/combobox_demo.lpi similarity index 63% rename from examples/combobox.lpi rename to examples/simple/runtime/combobox/combobox_demo.lpi index 04f6119709..5e93a865e2 100644 --- a/examples/combobox.lpi +++ b/examples/simple/runtime/combobox/combobox_demo.lpi @@ -1,27 +1,25 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="10"/> + <Version Value="12"/> <General> <Flags> <SaveOnlyProjectUnits Value="True"/> <LRSInOutputDirectory Value="False"/> + <CompatibilityMode Value="True"/> </Flags> - <MainUnit Value="0"/> </General> <BuildModes Count="1"> <Item1 Name="default" Default="True"/> </BuildModes> <PublishOptions> <Version Value="2"/> - <IgnoreBinaries Value="False"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> </PublishOptions> <RunParams> - <local> - <FormatVersion Value="1"/> - </local> + <FormatVersion Value="2"/> + <Modes Count="1"> + <Mode0 Name="default"/> + </Modes> </RunParams> <RequiredPackages Count="1"> <Item1> @@ -30,13 +28,13 @@ </RequiredPackages> <Units Count="1"> <Unit0> - <Filename Value="combobox.pp"/> + <Filename Value="combobox_demo.pp"/> <IsPartOfProject Value="True"/> - <UnitName Value="ComboBox"/> + <UnitName Value="ComboBox_Demo"/> <IsVisibleTab Value="True"/> - <TopLine Value="16"/> - <CursorPos X="28" Y="32"/> - <UsageCount Value="20"/> + <TopLine Value="34"/> + <CursorPos X="53" Y="55"/> + <UsageCount Value="21"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit0> diff --git a/examples/combobox.pp b/examples/simple/runtime/combobox/combobox_demo.pp similarity index 93% rename from examples/combobox.pp rename to examples/simple/runtime/combobox/combobox_demo.pp index 23357404f8..25812fba6c 100644 --- a/examples/combobox.pp +++ b/examples/simple/runtime/combobox/combobox_demo.pp @@ -1,7 +1,7 @@ { /*************************************************************************** - combobox.pp - ------------- + combobox_demo.pp + ---------------- Example/test program for combobox usage in lcl @@ -26,7 +26,7 @@ * * *************************************************************************** } -program ComboBox; +program ComboBox_Demo; {$mode objfpc}{$H+} @@ -35,7 +35,7 @@ uses SysUtils, Extctrls, Controls; type - TForm1 = class(TFORM) + TForm1 = class(TForm) public Label1: TLabel; Label2: TLabel; @@ -76,7 +76,7 @@ var constructor TForm1.Create(AOwner: TComponent); begin inherited CreateNew(AOwner, 1); - Caption := 'ComboBox Demo v 0.1'; + Caption := 'ComboBox Demo v0.2'; LoadMainMenu; end; @@ -119,7 +119,7 @@ Begin begin if assigned (Memo1) then Memo1.Lines.Add (ComboBox1.Items[i]); - inc (i); + inc (i); end; end; End; @@ -145,7 +145,7 @@ end; procedure TForm1.ComboOnChange (Sender:TObject); var - s : shortstring; + s : shortstring; begin if sender is TEdit then s := TCOntrol(Sender).name+':TEdit - ' @@ -176,52 +176,42 @@ begin OnDestroy := @FormKill; { set the height and width } - Height := 350; + Height := 420; Width := 700; - { Create 2 buttons inside the groupbox } Button2 := TButton.Create(Self); Button2.Parent := Self; Button2.Left := 50; Button2.Top := 40; Button2.Width := 120; Button2.Height := 30; - Button2.Show; Button2.Caption := 'Add item'; Button2.OnClick := @Button2Click; - - Button1 := TButton.Create(Self); Button1.Parent := Self; Button1.Left := 50; Button1.Top := 80; Button1.Width := 120; Button1.Height := 30; - Button1.Show; Button1.Caption := 'Edit->Combo'; Button1.OnClick := @Button1Click; - - { Create 2 more buttons outside the groupbox } Button3 := TButton.Create(Self); Button3.Parent := Self; Button3.Left := 50; Button3.Top := 120; Button3.Width := 120; Button3.Height := 30; - Button3.Show; Button3.Caption := 'Combo->Edit'; Button3.OnClick := @Button3Click; - Button4 := TButton.Create(Self); Button4.Parent := Self; Button4.Left := 50; Button4.Top := 160; Button4.Width := 120; Button4.Height := 30; - Button4.Show; Button4.Caption := 'Enabled On/Off'; Button4.OnClick := @Button4Click; @@ -231,7 +221,6 @@ begin Button5.Top := 200; Button5.Width := 120; Button5.Height := 30; - Button5.Show; Button5.Caption := 'Dump'; Button5.OnClick := @Button5Click; @@ -241,7 +230,6 @@ begin Button6.Top := 240; Button6.Width := 120; Button6.Height := 30; - Button6.Show; Button6.Caption := 'Index ?'; Button6.OnClick := @Button6Click; @@ -251,11 +239,9 @@ begin Button7.Top := 280; Button7.Width := 120; Button7.Height := 30; - Button7.Show; Button7.Caption := 'Select All'; Button7.OnClick := @Button7Click; - { Create a label for the edit field } label1 := TLabel.Create(Self); label1.Parent := self; @@ -263,10 +249,8 @@ begin label1.left := 320; label1.Height := 20; label1.Width := 130; - label1.Show; label1.Caption := 'TEdit :'; - Edit1 := TEdit.Create (self); with Edit1 do begin @@ -275,13 +259,11 @@ begin Top := 50; Width := 70; Height := 20; - OnChange := @ComboOnChange; + OnChange := @ComboOnChange; OnClick := @ComboOnClick; - Name := 'Edit1'; - Show; + Name := 'Edit1'; end; - { Create a label for the 1st combobox } label2 := TLabel.Create(Self); label2.Parent := self; @@ -290,14 +272,13 @@ begin label2.Height := 20; label2.Width := 130; label2.Enabled:= true; - label2.Show; label2.Caption := 'Combo (unsorted)'; label2.Enabled:= true; - { Create the menu now } { WARNING: If you do it after creation of the combo, the menu will not - appear. Reason is unknown by now!!!!!!} + appear. Reason is unknown by now!!!!!! + wp: No longer true for Laz 2.3/win32 } mnuMain := TMainMenu.Create(Self); Menu := mnuMain; itmFile := TMenuItem.Create(Self); @@ -313,7 +294,7 @@ begin begin Parent := self; Left := 500; - Top := 100; + Top := 100; Width := 170; Height := 20; Style := csDropDown; @@ -325,10 +306,8 @@ begin OnChange := @ComboOnChange; OnClick := @ComboOnClick; Name := 'ComboBox1'; - Show; end; - { Create a label for the 2nd combobox } label3 := TLabel.Create(Self); label3.Parent := self; @@ -336,10 +315,8 @@ begin label3.left := 320; label3.Height := 20; label3.Width := 130; - label3.Show; label3.Caption := 'Combo (sorted)'; - ComboBox2 := TComboBox.Create (self); with ComboBox2 do begin @@ -358,10 +335,8 @@ begin OnChange := @ComboOnChange; OnClick := @ComboOnClick; Sorted := true; - Show; end; - Memo1 := TMemo.Create(Self); with Memo1 do begin @@ -371,7 +346,6 @@ begin Top := 200; Width := 335; Height := 155; - Show; end; @@ -385,6 +359,7 @@ end; {------------------------------------------------------------------------------} begin + Application.Title:=''; Application.Initialize; { calls InitProcedure which starts up GTK } Application.CreateForm(TForm1, Form1); Application.Run;