home *** CD-ROM | disk | FTP | other *** search
/ Delphi 4 Bible / Delphi_4_Bible_Tom_Swan_IDG_Books_1998.iso / source / TOOLBAR2 / MAIN.PAS < prev    next >
Pascal/Delphi Source File  |  1998-04-13  |  4KB  |  137 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, Calendar;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     ToolbarPanel: TPanel;
  12.     RingSB: TSpeedButton;
  13.     DateSB: TSpeedButton;
  14.     TimeSB: TSpeedButton;
  15.     CalendarSB: TSpeedButton;
  16.     ExitSB: TSpeedButton;
  17.     Label1: TLabel;
  18.     Label2: TLabel;
  19.     Label3: TLabel;
  20.     Label4: TLabel;
  21.     Label5: TLabel;
  22.     Label6: TLabel;
  23.     Bevel1: TBevel;
  24.     Calendar1: TCalendar;
  25.     procedure SBMouseDown(Sender: TObject; Button: TMouseButton;
  26.       Shift: TShiftState; X, Y: Integer);
  27.     procedure SBMouseUp(Sender: TObject; Button: TMouseButton;
  28.       Shift: TShiftState; X, Y: Integer);
  29.     procedure RingSBClick(Sender: TObject);
  30.     procedure DateSBClick(Sender: TObject);
  31.     procedure TimeSBClick(Sender: TObject);
  32.     procedure CalendarSBClick(Sender: TObject);
  33.     procedure ExitSBClick(Sender: TObject);
  34.   private
  35.     { Private declarations }
  36.     function InToolbar(Sender: TObject): Boolean;
  37.   public
  38.     { Public declarations }
  39.   end;
  40.  
  41. var
  42.   MainForm: TMainForm;
  43.  
  44. implementation
  45.  
  46. {$R *.DFM}
  47.  
  48. const
  49.   isNotInToolbar = 0;     { SpeedButton Tag flag }
  50.   isInToolbar    = 1;     { SpeedButton Tag flag }
  51.  
  52. {- Returns True if Sender is in the toolbar }
  53. function TMainForm.InToolbar(Sender: TObject): Boolean;
  54. begin
  55.   with Sender as TSpeedButton do
  56.   if Tag = isNotInToolbar then
  57.   begin
  58.     Tag := isInToolbar;   { Set Tag flag }
  59.     Result := False;      { Return function result = False }
  60.   end else
  61.     Result := True;       { Return function result = True }
  62. end;
  63.  
  64. {- Assign OnClick event handlers for buttons not in toolbar }
  65. procedure TMainForm.SBMouseDown(Sender: TObject; Button: TMouseButton;
  66.   Shift: TShiftState; X, Y: Integer);
  67. begin
  68.   with Sender as TSpeedButton do
  69.   if Tag = isNotInToolbar then
  70.   begin { Assign OnClick event handler to a button }
  71.     if Sender = RingSB then
  72.       RingSB.OnClick := RingSBClick
  73.     else if Sender = DateSB then
  74.       DateSB.OnClick := DateSBClick
  75.     else if Sender = TimeSB then
  76.       TimeSB.OnClick := TimeSBClick
  77.     else if Sender = CalendarSB then
  78.       CalendarSB.OnClick := CalendarSBClick
  79.     else if Sender = ExitSB then
  80.       ExitSB.OnClick := ExitSBClick;
  81.   end;
  82. end;
  83.  
  84. {- Move buttons into the toolbar }
  85. procedure TMainForm.SBMouseUp(Sender: TObject; Button: TMouseButton;
  86.   Shift: TShiftState; X, Y: Integer);
  87. begin
  88.   with Sender as TSpeedButton do
  89.   if Tag = isNotInToolbar then
  90.   begin  { Move button into the toolbar }
  91.     Parent := ToolbarPanel;  { Toolbar now owns the button }
  92.     Top := 0;                { Reposition button }
  93.   end;
  94. end;
  95.  
  96. {- Respond to Ring button click }
  97. procedure TMainForm.RingSBClick(Sender: TObject);
  98. begin
  99.   if InToolbar(Sender) then
  100.     MessageBeep(0);
  101. end;
  102.  
  103. {- Respond to Date button click }
  104. procedure TMainForm.DateSBClick(Sender: TObject);
  105. begin
  106.   if InToolbar(Sender) then
  107.     ShowMessage('The date is ' + DateToStr(Date));
  108. end;
  109.  
  110. {- Respond to Time button click }
  111. procedure TMainForm.TimeSBClick(Sender: TObject);
  112. begin
  113.   if InToolbar(Sender) then
  114.     ShowMessage('The time is ' + TimeToStr(Time));
  115. end;
  116.  
  117. {- Respond to Calendar button click }
  118. procedure TMainForm.CalendarSBClick(Sender: TObject);
  119. begin
  120.   if InToolbar(Sender) then
  121.   with Calendar1 do
  122.   begin
  123.     Align := alClient;
  124.     Visible := not Visible;
  125.   end;
  126. end;
  127.  
  128. {- Respond to Exit button click }
  129. procedure TMainForm.ExitSBClick(Sender: TObject);
  130. begin
  131.   if InToolbar(Sender) then
  132.     Close;
  133. end;
  134.  
  135. end.
  136.  
  137.