diff --git a/examples/combobox.lpi b/examples/combobox.lpi index 04f6119709..8d26ae2357 100644 --- a/examples/combobox.lpi +++ b/examples/combobox.lpi @@ -1,48 +1,81 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="10"/> + <Version Value="12"/> + <PathDelim Value="\"/> <General> <Flags> - <SaveOnlyProjectUnits Value="True"/> - <LRSInOutputDirectory Value="False"/> + <CompatibilityMode Value="True"/> </Flags> - <MainUnit Value="0"/> + <SessionStorage Value="InProjectDir"/> + <Title Value="combobox"/> + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> </General> <BuildModes Count="1"> - <Item1 Name="default" Default="True"/> + <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"/> + <UseFileFilters Value="True"/> </PublishOptions> <RunParams> - <local> - <FormatVersion Value="1"/> - </local> + <FormatVersion Value="2"/> </RunParams> <RequiredPackages Count="1"> <Item1> <PackageName Value="LCL"/> </Item1> </RequiredPackages> - <Units Count="1"> + <Units Count="2"> <Unit0> - <Filename Value="combobox.pp"/> + <Filename Value="combobox.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="ComboBox"/> - <IsVisibleTab Value="True"/> - <TopLine Value="16"/> - <CursorPos X="28" Y="32"/> - <UsageCount Value="20"/> - <Loaded Value="True"/> - <LoadedDesigner Value="True"/> </Unit0> + <Unit1> + <Filename Value="comboboxfrm.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="ComboBoxFrm"/> + </Unit1> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="combobox"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> </CONFIG> diff --git a/examples/combobox.lpr b/examples/combobox.lpr new file mode 100644 index 0000000000..672b3676de --- /dev/null +++ b/examples/combobox.lpr @@ -0,0 +1,53 @@ +{ + /*************************************************************************** + combobox.pp + ------------- + Example/test program for combobox usage in lcl + + + ***************************************************************************/ + + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. * + * * + *************************************************************************** +} +program combobox; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX} + cthreads, + {$ENDIF} + {$IFDEF HASAMIGA} + athreads, + {$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, ComboBoxFrm + { 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/combobox.pp b/examples/combobox.pp deleted file mode 100644 index 23357404f8..0000000000 --- a/examples/combobox.pp +++ /dev/null @@ -1,392 +0,0 @@ -{ - /*************************************************************************** - combobox.pp - ------------- - Example/test program for combobox usage in lcl - - - ***************************************************************************/ - - *************************************************************************** - * * - * This source is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This code is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * General Public License for more details. * - * * - * A copy of the GNU General Public License is available on the World * - * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * - * obtain it by writing to the Free Software Foundation, * - * Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. * - * * - *************************************************************************** -} -program ComboBox; - -{$mode objfpc}{$H+} - -uses - Interfaces, Classes, StdCtrls, Forms, Buttons, Menus, ComCtrls, - SysUtils, Extctrls, Controls; - -type - TForm1 = class(TFORM) - public - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - Button1: TButton; - Button2: TButton; - Button3: TButton; - Button4: TButton; - Button5: TButton; - Button6: TButton; - Button7: TButton; - Edit1: TEdit; - mnuMain: TMainMenu; - itmFileQuit: TMenuItem; - itmFile: TMenuItem; - ComboBox1: TComboBox; - ComboBox2: TComboBox; - Memo1: TMemo; - constructor Create(AOwner: TComponent); override; - procedure LoadMainMenu; - procedure FormKill(Sender: TObject); - procedure mnuQuitClicked(Sender: TObject); - protected - 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); - end; - -var - Form1 : TForm1; - -constructor TForm1.Create(AOwner: TComponent); -begin - inherited CreateNew(AOwner, 1); - Caption := 'ComboBox Demo v 0.1'; - LoadMainMenu; -end; - -procedure TForm1.Button1Click(Sender : TObject); -Begin - if assigned (ComboBox1) and assigned (edit1) - then ComboBox1.Text := edit1.text; -End; - -procedure TForm1.Button2Click(Sender : TObject); -Begin -{ if assigned (ComboBox1) - then Combobox1.Items.Add ('item ' + IntToStr (comboBox1.Items.Count)); - if assigned (ComboBox2) - then Combobox2.Items.Add ('item ' + IntToStr (comboBox2.Items.Count));} - 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 : shortstring; -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 : shortstring; -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.FormKill(Sender : TObject); -Begin - -End; - -{------------------------------------------------------------------------------} -procedure TForm1.LoadMainMenu; - -begin - OnDestroy := @FormKill; - - { set the height and width } - Height := 350; - 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; - - Button5 := TButton.Create(Self); - Button5.Parent := Self; - Button5.Left := 50; - Button5.Top := 200; - Button5.Width := 120; - Button5.Height := 30; - Button5.Show; - Button5.Caption := 'Dump'; - Button5.OnClick := @Button5Click; - - Button6 := TButton.Create(Self); - Button6.Parent := Self; - Button6.Left := 50; - Button6.Top := 240; - Button6.Width := 120; - Button6.Height := 30; - Button6.Show; - Button6.Caption := 'Index ?'; - Button6.OnClick := @Button6Click; - - Button7 := TButton.Create(Self); - Button7.Parent := Self; - Button7.Left := 50; - 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; - label1.top := 50; - label1.left := 320; - label1.Height := 20; - label1.Width := 130; - label1.Show; - label1.Caption := 'TEdit :'; - - - Edit1 := TEdit.Create (self); - with Edit1 do - begin - Parent := self; - Left := 500; - Top := 50; - Width := 70; - Height := 20; - OnChange := @ComboOnChange; - OnClick := @ComboOnClick; - Name := 'Edit1'; - Show; - end; - - - { Create a label for the 1st combobox } - label2 := TLabel.Create(Self); - label2.Parent := self; - label2.top := 100; - label2.left := 320; - 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!!!!!!} - mnuMain := TMainMenu.Create(Self); - Menu := mnuMain; - itmFile := TMenuItem.Create(Self); - itmFile.Caption := '&File'; - mnuMain.Items.Add(itmFile); - itmFileQuit := TMenuItem.Create(Self); - itmFileQuit.Caption := '&Quit'; - itmFileQuit.OnClick := @mnuQuitClicked; - itmFile.Add(itmFileQuit); - - ComboBox1 := TComboBox.Create (self); - with ComboBox1 do - begin - Parent := self; - Left := 500; - Top := 100; - Width := 170; - Height := 20; - Style := csDropDown; - Items.Add ('wohhh!'); - Items.Add ('22222!'); - ItemIndex := 1; - Items.Add ('33333!'); - Items.Add ('abcde!'); - OnChange := @ComboOnChange; - OnClick := @ComboOnClick; - Name := 'ComboBox1'; - Show; - end; - - - { Create a label for the 2nd combobox } - label3 := TLabel.Create(Self); - label3.Parent := self; - label3.top := 150; - label3.left := 320; - label3.Height := 20; - label3.Width := 130; - label3.Show; - label3.Caption := 'Combo (sorted)'; - - - ComboBox2 := TComboBox.Create (self); - with ComboBox2 do - begin - Parent := self; - Left := 500; - Top := 150; - Width := 170; - Height := 20; - Style := csDropDownList; - Items.Add ('wohhh!'); - Items.Add ('22222!'); - ItemIndex := 1; - Items.Add ('33333!'); - Items.Add ('abcde!'); - Name := 'ComboBox2'; - OnChange := @ComboOnChange; - OnClick := @ComboOnClick; - Sorted := true; - Show; - end; - - - Memo1 := TMemo.Create(Self); - with Memo1 do - begin - Parent := Self; - Scrollbars := ssBoth; - Left := 200; - Top := 200; - Width := 335; - Height := 155; - Show; - end; - - -end; - -{------------------------------------------------------------------------------} -procedure TForm1.mnuQuitClicked(Sender : TObject); -begin - Close; -end; -{------------------------------------------------------------------------------} - -begin - Application.Initialize; { calls InitProcedure which starts up GTK } - Application.CreateForm(TForm1, Form1); - Application.Run; -end. - diff --git a/examples/comboboxfrm.lfm b/examples/comboboxfrm.lfm new file mode 100644 index 0000000000..ccdbf2e77c --- /dev/null +++ b/examples/comboboxfrm.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/comboboxfrm.pas b/examples/comboboxfrm.pas new file mode 100644 index 0000000000..3235fd7d49 --- /dev/null +++ b/examples/comboboxfrm.pas @@ -0,0 +1,141 @@ +unit ComboBoxFrm; + +{$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. +