{ /*************************************************************************** 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 . You can also * * obtain it by writing to the Free Software Foundation, * * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 Create(AOwner); 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; Items.Add ('wohhh!'); Items.Add ('22222!'); ItemIndex := 1; Items.Add ('33333!'); Items.Add ('abcde!'); Name := 'ComboBox2'; 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. { $Log$ Revision 1.8 2002/10/30 13:44:29 lazarus MG: fixed examples Revision 1.7 2002/10/29 08:22:32 lazarus MG: added interfaces unit Revision 1.6 2002/09/07 20:30:50 lazarus Make TComboboxes sort again, including in OI Revision 1.5 2002/08/30 06:46:03 lazarus Use comboboxes. Use history. Prettify the dialog. Preselect text on show. Make the findreplace a dialog. Thus removing resiying code (handled by Anchors now anyway). Make Anchors work again and publish them for various controls. SelStart and Co. for TEdit, SelectAll procedure for TComboBox and TEdit. Clean up and fix some bugs for TComboBox, plus selection stuff. Revision 1.4 2002/05/10 06:57:50 lazarus MG: updated licenses Revision 1.3 2000/11/29 21:22:35 lazarus New Object Inspector code Shane Revision 1.2 2000/07/23 19:04:42 lazarus enhanced examples, stoppok Revision 1.1 2000/07/13 10:28:20 michael + Initial import Revision 1.1 2000/07/03 18:10:37 lazarus New example for Comboboxes, stoppok }