home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d12345 / CHEMPLOT.ZIP / TPlot / Plottooledit.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-01  |  7KB  |  243 lines

  1. unit Plottooledit;
  2.  
  3. {$I Plot.inc}
  4.  
  5. {-----------------------------------------------------------------------------
  6. The contents of this file are subject to the Q Public License
  7. ("QPL"); you may not use this file except in compliance
  8. with the QPL. You may obtain a copy of the QPL from 
  9. the file QPL.html in this distribution, derived from:
  10.  
  11. http://www.trolltech.com/products/download/freelicense/license.html
  12.  
  13. The QPL prohibits development of proprietary software. 
  14. There is a Professional Version of this software available for this.
  15. Contact sales@chemware.hypermart.net for more information.
  16.  
  17. Software distributed under the QPL is distributed on an "AS IS" basis,
  18. WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the QPL for
  19. the specific language governing rights and limitations under the QPL.
  20.  
  21. The Original Code is: ToolEdit.pas, released 12 May 2001.
  22.  
  23. The Initial Developer of the Original Code is Mat Ballard.
  24. Portions created by Mat Ballard are Copyright (C) 1999 Mat Ballard.
  25. Portions created by Microsoft are Copyright (C) 1998, 1999 Microsoft Corp.
  26. All Rights Reserved.
  27.  
  28. Contributor(s): Mat Ballard                 e-mail: mat.ballard@chemware.hypermart.net.
  29.  
  30. Last Modified: 04/19/2001
  31. Current Version: 2.00
  32.  
  33. You may retrieve the latest version of this file from:
  34.  
  35.         http://Chemware.hypermart.net/
  36.  
  37. This work was created with the Project JEDI VCL guidelines:
  38.  
  39.         http://www.delphi-jedi.org/Jedi:VCLVCL
  40.  
  41. in mind.
  42.  
  43. Purpose:
  44. To facilitate user manipluation of the TPlot ToolBar.
  45.  
  46. Known Issues:
  47.         - renamed to Plottooledit.pas to avoid namespace clash with RXLib
  48. -----------------------------------------------------------------------------}
  49.  
  50. interface
  51.  
  52. uses
  53.   Classes, SysUtils,
  54. {$IFDEF WINDOWS}
  55.   WinTypes, WinProcs,
  56.   Buttons, Controls, Forms, Graphics, StdCtrls,
  57.   ExtCtrls, ToolWin, ComCtrls, QControls, QStdCtrls, QExtCtrls, QComCtrls,
  58.   QButtons;
  59. {$ENDIF}
  60. {$IFDEF WIN32}
  61.   Windows,
  62.   Buttons, Controls, Forms, {Graphics, }StdCtrls,
  63.   ExtCtrls, ToolWin, ComCtrls;
  64. {$ENDIF}
  65. {$IFDEF LINUX}
  66.   QButtons, QControls, QForms, QGraphics, QStdCtrls,
  67.   QExtCtrls, QComCtrls;
  68. {$ENDIF}
  69.  
  70.  
  71.  
  72. type
  73.   TToolBarEditForm = class(TForm)
  74.     HelpBitBtn: TBitBtn;
  75.     CancelBitBtn: TBitBtn;
  76.     OKBitBtn: TBitBtn;
  77.     ApplyBitBtn: TBitBtn;
  78.     {DisplayToolBar: TToolBar;}
  79.     MiddlePanel: TPanel;
  80.     {ControlToolBar: TToolBar;  }
  81.     TopPanel: TPanel;
  82.     Label1: TLabel;
  83.     Label2: TLabel;
  84.     DisplayToolBar: TToolBar;
  85.     ControlToolBar: TToolBar;
  86.     procedure FormCreate(Sender: TObject);
  87.     procedure FormResize(Sender: TObject);
  88.     procedure ApplyBitBtnClick(Sender: TObject);
  89.   private
  90.     OriginalHeight: Integer;
  91.     FMaster: TToolBar;
  92.  
  93.     procedure ControlClick(Sender: TObject);
  94.     {procedure DisplayMouseDown(Sender: TObject;
  95.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);}
  96.  
  97.   public
  98.     procedure SetupButtons(Master: TToolBar);
  99.  
  100.   end;
  101.  
  102. var
  103.   ToolBarEditForm: TToolBarEditForm;
  104.  
  105. implementation
  106.  
  107. {$R *.dfm}
  108.  
  109. uses
  110.   Plottoolbar;
  111.  
  112. procedure TToolBarEditForm.FormCreate(Sender: TObject);
  113. begin
  114. {$IFDEF MSWINDOWS}
  115.   Self.BorderStyle := bsSizeable;
  116. {$ENDIF}
  117. {$IFDEF LINUX}
  118.   Self.BorderStyle := fbsSizeable;
  119. {$ENDIF}
  120.   Self.Scaled := FALSE;
  121.   Self.HorzScrollBar.Visible := FALSE;
  122.   Self.VertScrollBar.Visible := FALSE;
  123.  
  124.   Self.Left := 10;
  125.   Self.Top := 10;
  126.   Self.ClientWidth := ApplyBitBtn.Left + ApplyBitBtn.Width + OkBitBtn.Left;
  127.   OriginalHeight := ApplyBitBtn.Top + 3*ApplyBitBtn.Height div 2;
  128.   Self.ClientHeight := OriginalHeight;
  129. end;
  130.  
  131. procedure TToolBarEditForm.SetupButtons(Master: TToolBar);
  132. var
  133.   i: Integer;
  134.   TempToolButton: TToolButton;
  135. begin
  136.   FMaster := Master;
  137.   DisplayToolBar.Images := FMaster.Images;
  138.   ControlToolBar.Images := FMaster.Images;
  139. {$IFDEF MSWINDOWS}
  140.   for i := FMaster.ButtonCount-1 downto 0 do
  141. {$ENDIF}
  142. {$IFDEF LINUX}
  143.   for i := 0 to FMaster.ButtonCount-1 do
  144. {$ENDIF}
  145.   begin
  146.     TempToolButton := TToolButton.Create(DisplayToolBar);
  147.     {TempToolButton.OnMouseDown := DisplayMouseDown;}
  148. {$IFDEF MSWINDOWS}
  149.     TempToolButton.Caption := FMaster.Buttons[i].Caption;
  150.     TempToolButton.Hint := FMaster.Buttons[i].Hint;
  151.     TempToolButton.ImageIndex := FMaster.Buttons[i].ImageIndex;
  152.     TempToolButton.Style := FMaster.Buttons[i].Style;
  153.     TempToolButton.Tag := i;
  154.     TempToolButton.Width := FMaster.Buttons[i].Width;
  155. {$ENDIF}
  156. {$IFDEF LINUX}
  157.     TempToolButton.Caption := TToolButton(FMaster.Controls[i]).Caption;
  158.     TempToolButton.Hint := TToolButton(FMaster.Controls[i]).Hint;
  159.     TempToolButton.ImageIndex := TToolButton(FMaster.Controls[i]).ImageIndex;
  160.     TempToolButton.Style := TToolButton(FMaster.Controls[i]).Style;
  161.     TempToolButton.Tag := TToolButton(FMaster.Controls[i]).Tag;
  162.     TempToolButton.Width := TToolButton(FMaster.Controls[i]).Width;
  163. {$ENDIF}
  164.     TempToolButton.Parent := DisplayToolBar;
  165.   end;
  166.  
  167. {$IFDEF MSWINDOWS}
  168.   for i := FMaster.ButtonCount-1 downto 0 do
  169. {$ENDIF}
  170. {$IFDEF LINUX}
  171.   for i := 0 to FMaster.ButtonCount-1 do
  172. {$ENDIF}
  173.   begin
  174.     TempToolButton := TToolButton.Create(ControlToolBar);
  175. {$IFDEF MSWINDOWS}
  176.     TempToolButton.Caption := FMaster.Buttons[i].Caption;
  177.     TempToolButton.Hint := FMaster.Buttons[i].Hint;
  178.     TempToolButton.ImageIndex := FMaster.Buttons[i].ImageIndex;
  179.     TempToolButton.Style := FMaster.Buttons[i].Style;
  180.     TempToolButton.Tag := i;
  181.     TempToolButton.Width := FMaster.Buttons[i].Width;
  182. {$ENDIF}
  183. {$IFDEF LINUX}
  184.     TempToolButton.Caption := TToolButton(FMaster.Controls[i]).Caption;
  185.     TempToolButton.Hint := TToolButton(FMaster.Controls[i]).Hint;
  186.     TempToolButton.ImageIndex := TToolButton(FMaster.Controls[i]).ImageIndex;
  187.     TempToolButton.Style := TToolButton(FMaster.Controls[i]).Style;
  188.     TempToolButton.Tag := TToolButton(FMaster.Controls[i]).Tag;
  189.     TempToolButton.Width := TToolButton(FMaster.Controls[i]).Width;
  190. {$ENDIF}
  191.     if (TempToolButton.Style = tbsButton) then
  192.       TempToolButton.Style := tbsCheck;
  193.     TempToolButton.OnClick := ControlClick;
  194.     TempToolButton.Parent := ControlToolBar;
  195.   end;
  196. end;
  197.  
  198. procedure TToolBarEditForm.ControlClick(Sender: TObject);
  199. {$IFDEF LINUX}
  200. var
  201.   TargetIndex: Integer;
  202.   i,
  203.   TheTag: Integer;
  204. {$ENDIF}
  205. begin
  206. {$IFDEF LINUX}
  207.   TargetIndex := -1;
  208. {Why do it on tags ? Because Linux does amazing things to the order !}
  209.   TheTag := TToolButton(Sender).Tag;
  210.   for i := 0 to DisplayToolBar.ButtonCount-1 do
  211.   begin
  212.     if (TToolButton(DisplayToolBar.Controls[i]).Tag = TheTag) then
  213.     begin
  214.       TargetIndex := i;
  215.       break;
  216.     end;
  217.   end;
  218.   DisplayToolBar.Controls[TargetIndex].Visible :=
  219. {$ENDIF}
  220.  
  221. {$IFDEF MSWINDOWS}
  222.   DisplayToolBar.Buttons[TToolButton(Sender).Tag].Visible :=
  223. {$ENDIF}
  224.     not TToolButton(Sender).Down;
  225. end;
  226.  
  227. procedure TToolBarEditForm.FormResize(Sender: TObject);
  228. begin
  229.   Self.ClientHeight := OriginalHeight;
  230. end;
  231.  
  232. {procedure TToolBarEditForm.DisplayMouseDown(Sender: TObject;
  233.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  234. begin
  235. end;}
  236.  
  237. procedure TToolBarEditForm.ApplyBitBtnClick(Sender: TObject);
  238. begin
  239.   TPlotToolBar(FMaster).ApplyChanges(DisplayToolBar);
  240. end;
  241.  
  242. end.
  243.