mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 02:40:00 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			335 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			335 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
 {
 | 
						|
 /***************************************************************************
 | 
						|
                          trackbar - example
 | 
						|
                          ------------------
 | 
						|
 | 
						|
		   Just a simple example to show & verify functionality
 | 
						|
		   of the lazarus TTrackbar class.
 | 
						|
 | 
						|
                   Initial Revision  : Sun Aug 05 1999
 | 
						|
 | 
						|
                   by Stefan Hille <stoppok@osibisa.ms.sub.org>
 | 
						|
 | 
						|
  TODO: - button "orientation" will crash the program if pressed
 | 
						|
        - add a label which displays current trackbar value and is updated
 | 
						|
	  by a procedure connected to "OnChange"
 | 
						|
 ***************************************************************************/
 | 
						|
 | 
						|
 ***************************************************************************
 | 
						|
 *                                                                         *
 | 
						|
 *   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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.        *
 | 
						|
 *                                                                         *
 | 
						|
 ***************************************************************************
 | 
						|
}
 | 
						|
program Trackbar;
 | 
						|
 | 
						|
{$mode objfpc}{$H+}
 | 
						|
 | 
						|
uses
 | 
						|
  Interfaces, Classes, Forms, Buttons, Menus, ComCtrls,
 | 
						|
  SysUtils, Controls;
 | 
						|
 | 
						|
type
 | 
						|
	TForm1 = class(TFORM)
 | 
						|
	public
 | 
						|
	  Button1: TButton;
 | 
						|
    	  Button2: TButton;
 | 
						|
	  Button3: TButton;
 | 
						|
	  Button4: TButton;
 | 
						|
	  Button5: TButton;
 | 
						|
       	  Button6: TButton;
 | 
						|
	  Button7: TButton;
 | 
						|
       	  Button8: TButton;
 | 
						|
	  Track1 : TTRackBar;
 | 
						|
	  Track2 : TTRackBar;
 | 
						|
          mnuMain: TMainMenu;
 | 
						|
          itmFile: TMenuItem;
 | 
						|
          itmFileQuit: TMenuItem;
 | 
						|
          constructor Create(AOwner: TComponent); override;	
 | 
						|
          procedure LoadMainMenu;
 | 
						|
	  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 Button8CLick(Sender : TObject);
 | 
						|
	  procedure Track1Change(Sender : TObject);
 | 
						|
	end;
 | 
						|
 | 
						|
var
 | 
						|
Form1 : TForm1;
 | 
						|
 | 
						|
constructor TForm1.Create(AOwner: TComponent);	
 | 
						|
begin
 | 
						|
   inherited Create(AOwner);
 | 
						|
   Caption := 'TrackBar Demo v0.1';
 | 
						|
   LoadMainMenu;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TForm1.Button1Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
        Track1.Max := Track1.Max + 1;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button2Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (track1) then begin
 | 
						|
	if Track1.orientation = trHorizontal
 | 
						|
	  then Track1.orientation := trVertical
 | 
						|
	  else Track1.orientation := trHorizontal;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button3Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
        writeln ('Setting new position');
 | 
						|
	Track1.Position := Track1.Position + 1;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button4Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
     writeln ('Setting new position for scale. Old:', ord (Track1.ScalePos));
 | 
						|
     case Track1.ScalePos of
 | 
						|
       trLeft  : Track1.ScalePos := trRight;
 | 
						|
       trRight : Track1.ScalePos := trTop;
 | 
						|
       trTop   : Track1.ScalePos := trBottom; 
 | 
						|
       trBottom: Track1.ScalePos := trLeft; 
 | 
						|
     end;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button5Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
        writeln ('Toggling ShowScalePos');
 | 
						|
	Track1.ShowScale := not Track1.ShowScale;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button6Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button7Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
        writeln ('Incrementing LineSize');
 | 
						|
	Track1.LineSize := Track1.LineSize + 1;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Button8Click(Sender : TObject);
 | 
						|
Begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
        writeln ('Incrementing PageSize');
 | 
						|
	Track1.PageSize := Track1.PageSize + 1;
 | 
						|
   end;
 | 
						|
End;
 | 
						|
 | 
						|
procedure TForm1.Track1Change(Sender : TObject);
 | 
						|
begin
 | 
						|
   if assigned (Track1) then begin
 | 
						|
        writeln ('*** CALLBACK ONCHANGE!!!!! ***');
 | 
						|
	Track1.PageSize := Track1.PageSize + 1;
 | 
						|
   end;
 | 
						|
end;
 | 
						|
 | 
						|
{------------------------------------------------------------------------------}
 | 
						|
procedure TForm1.LoadMainMenu;
 | 
						|
 | 
						|
begin
 | 
						|
	{ set the height and width }
 | 
						|
	Height := 350;
 | 
						|
	Width := 700;
 | 
						|
 | 
						|
	{ Setting up horizontal trackbar }
 | 
						|
	Track1 := TTrackBar.Create (Self);
 | 
						|
	Track1.Parent := Self;
 | 
						|
	Track1.Left := 50;
 | 
						|
	Track1.Top := 150;
 | 
						|
	Track1.Width := 140;
 | 
						|
	Track1.Height := 140;
 | 
						|
	Track1.Min := 0;
 | 
						|
	Track1.Max := 100;
 | 
						|
	Track1.OnChange := @Track1Change;
 | 
						|
	Track1.Show; 
 | 
						|
 | 
						|
	{ Setting up vertical trackbar }
 | 
						|
	Track2 := TTrackBar.Create (Self);
 | 
						|
	Track2.Parent := Self;
 | 
						|
	Track2.Orientation := trVertical;
 | 
						|
	Track2.Left := 500;
 | 
						|
	Track2.Top := 150;
 | 
						|
	Track2.Width := 20;
 | 
						|
	Track2.Height := 100;
 | 
						|
	Track2.Min := 0;
 | 
						|
	Track2.Max := 100;
 | 
						|
	Track2.Show; 
 | 
						|
 | 
						|
	{ create some buttons to change trackbar properties }
 | 
						|
	Button2 := TButton.Create(Self);
 | 
						|
	button2.Parent := Self;
 | 
						|
	Button2.Left := 200;
 | 
						|
	Button2.Top := 30;
 | 
						|
	Button2.Width := 100;
 | 
						|
	Button2.Height := 30;
 | 
						|
	Button2.Caption := 'Orientation';
 | 
						|
	Button2.OnClick := @Button2Click;
 | 
						|
	Button2.Show;
 | 
						|
 | 
						|
	Button1 := TButton.Create(Self);
 | 
						|
	button1.Parent := Self;
 | 
						|
	Button1.Left := 200;
 | 
						|
	Button1.Top := 70;
 | 
						|
	Button1.Width := 100;
 | 
						|
	Button1.Height := 30;
 | 
						|
	Button1.Caption := 'Max++';
 | 
						|
	Button1.OnClick := @Button1Click;
 | 
						|
	Button1.Show;
 | 
						|
 | 
						|
	Button3 := TButton.Create(Self);
 | 
						|
	button3.Parent := Self;
 | 
						|
	Button3.Left := 200;
 | 
						|
	Button3.Top := 110;
 | 
						|
	Button3.Width := 100;
 | 
						|
	Button3.Height := 30;
 | 
						|
	Button3.Show;
 | 
						|
	Button3.Caption := 'Position++';
 | 
						|
	Button3.OnClick := @Button3Click;
 | 
						|
 | 
						|
	Button4 := TButton.Create(Self);
 | 
						|
	button4.Parent := Self;
 | 
						|
	Button4.Left := 350;
 | 
						|
	Button4.Top := 30;
 | 
						|
	Button4.Width := 130;
 | 
						|
	Button4.Height := 30;
 | 
						|
	Button4.Show;
 | 
						|
	Button4.Caption := 'GTK: TextPos';
 | 
						|
	Button4.OnClick := @Button4Click;
 | 
						|
 | 
						|
	Button5 := TButton.Create(Self);
 | 
						|
	button5.Parent := Self;
 | 
						|
	Button5.Left := 350;
 | 
						|
	Button5.Top := 70;
 | 
						|
	Button5.Width := 130;
 | 
						|
	Button5.Height := 30;
 | 
						|
	Button5.Show;
 | 
						|
	Button5.Caption := 'GTK: Show Text';
 | 
						|
	Button5.OnClick := @Button5Click;
 | 
						|
 | 
						|
	Button6 := TButton.Create(Self);
 | 
						|
	button6.Parent := Self;
 | 
						|
	Button6.Left := 350;
 | 
						|
	Button6.Top := 110;
 | 
						|
	Button6.Width := 130;
 | 
						|
	Button6.Height := 30;
 | 
						|
	Button6.Show;
 | 
						|
	Button6.Caption := '---';
 | 
						|
	Button6.Visible := false;
 | 
						|
	Button6.OnClick := @Button6Click;
 | 
						|
 | 
						|
	Button7 := TButton.Create(Self);
 | 
						|
	button7.Parent := Self;
 | 
						|
	Button7.Left := 200;
 | 
						|
	Button7.Top := 150;
 | 
						|
	Button7.Width := 100;
 | 
						|
	Button7.Height := 30;
 | 
						|
	Button7.Show;
 | 
						|
	Button7.Caption := 'LineSize++';
 | 
						|
	Button7.OnClick := @Button7Click;
 | 
						|
 | 
						|
	Button8 := TButton.Create(Self);
 | 
						|
	button8.Parent := Self;
 | 
						|
	Button8.Left := 350;
 | 
						|
	Button8.Top := 150;
 | 
						|
	Button8.Width := 130;
 | 
						|
	Button8.Height := 30;
 | 
						|
	Button8.Caption := 'PageSize++';
 | 
						|
	Button8.OnClick := @Button8Click;
 | 
						|
	Button8.Show;
 | 
						|
 | 
						|
	{ create a menubar }
 | 
						|
   mnuMain := TMainMenu.Create(Self);
 | 
						|
   Menu := mnuMain;
 | 
						|
 | 
						|
   itmFile := TMenuItem.Create(Self);
 | 
						|
   itmFile.Caption := 'File';
 | 
						|
   Menu.Items.Add(itmFile);
 | 
						|
 | 
						|
   itmFileQuit := TMenuItem.Create(Self);
 | 
						|
   itmFileQuit.Caption := 'Quit';
 | 
						|
   itmFileQuit.OnClick := @mnuQuitClicked;
 | 
						|
   itmFile.Add(itmFileQuit);
 | 
						|
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.7  2002/10/30 13:44:29  lazarus
 | 
						|
  MG: fixed examples
 | 
						|
 | 
						|
  Revision 1.6  2002/10/30 12:37:25  lazarus
 | 
						|
  MG: mouse cursors are now allocated on demand
 | 
						|
 | 
						|
  Revision 1.5  2002/10/29 08:22:33  lazarus
 | 
						|
  MG: added interfaces unit
 | 
						|
 | 
						|
  Revision 1.4  2002/05/10 06:57:50  lazarus
 | 
						|
  MG: updated licenses
 | 
						|
 | 
						|
  Revision 1.3  2002/02/01 10:13:09  lazarus
 | 
						|
  Keith: Fixes for Win32
 | 
						|
 | 
						|
  Revision 1.2  2000/07/23 19:04:42  lazarus
 | 
						|
  enhanced examples, stoppok
 | 
						|
 | 
						|
  Revision 1.3  2000/06/18 08:07:18  lazarus
 | 
						|
   Enhanced trackbar example. stoppok
 | 
						|
 | 
						|
  Revision 1.2  1999/12/29 00:40:27  lazarus
 | 
						|
 | 
						|
    Changes to make trackbar/progressbar working again.
 | 
						|
        stopppok
 | 
						|
 | 
						|
  Revision 1.1  1999/09/17 20:54:02  lazarus
 | 
						|
 | 
						|
    Added example for TTrackbar.
 | 
						|
      stoppok
 | 
						|
 | 
						|
}
 |