home *** CD-ROM | disk | FTP | other *** search
/ Chip: Shareware for Win 95 / Chip-Shareware-Win95.bin / ostatni / delphi / ruzne / rzcomps.exe / DEMO / LABELFRM.PA_ / LABELFRM.PA
Text File  |  1996-10-18  |  9KB  |  344 lines

  1. unit Labelfrm;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, Rzlabel, ExtCtrls, Spin, Buttons, RzTrkBar,
  8.   DsgnIntf, RzCmboBx, Tabs, RzPanel;
  9.  
  10. type
  11.   TFrmLabel = class(TForm)
  12.     GrpPreview: TGroupBox;
  13.     LblPreview: TRzLabel;
  14.     BtnOK: TButton;
  15.     PnlWorkspace: TRzPanel;
  16.     NbkFormat: TNotebook;
  17.     Label2: TLabel;
  18.     Label3: TLabel;
  19.     Label6: TLabel;
  20.     TrkPointSize: TRzTrackBar;
  21.     CbxFontColor: TRzColorComboBox;
  22.     GrpFontStyle: TGroupBox;
  23.     ChkBold: TCheckBox;
  24.     ChkItalic: TCheckBox;
  25.     ChkStrikeout: TCheckBox;
  26.     ChkUnderline: TCheckBox;
  27.     GrpTextStyle: TRadioGroup;
  28.     GrpShadow: TGroupBox;
  29.     Label4: TLabel;
  30.     Label5: TLabel;
  31.     TrkShadow: TRzTrackBar;
  32.     CbxShadowColor: TRzColorComboBox;
  33.     GrpRotation: TGroupBox;
  34.     LblAngle: TLabel;
  35.     TrkAngle: TRzTrackBar;
  36.     Chk15Degrees: TCheckBox;
  37.     PnlStyleTab: TRzPanel;
  38.     PnlFontTab: TRzPanel;
  39.     Label1: TLabel;
  40.     EdtCaption: TEdit;
  41.     CbxFonts: TRzFontComboBox;
  42.     RzLabel1: TRzLabel;
  43.     RzLabel2: TRzLabel;
  44.     RzLabel3: TRzLabel;
  45.     procedure EdtCaptionChange(Sender: TObject);
  46.     procedure GrpTextStyleClick(Sender: TObject);
  47.     procedure TrkPointSizeDrawTick( TrackBar: TRzTrackBar; Canvas: TCanvas;
  48.                                     Location: TPoint; Index: Integer );
  49.     procedure TrkPointSizeChange(Sender: TObject);
  50.     procedure TrkShadowChange(Sender: TObject);
  51.     procedure FormCreate(Sender: TObject);
  52.     procedure CbxFontsChange(Sender: TObject);
  53.     procedure ChkBoldClick(Sender: TObject);
  54.     procedure ChkItalicClick(Sender: TObject);
  55.     procedure ChkStrikeoutClick(Sender: TObject);
  56.     procedure ChkUnderlineClick(Sender: TObject);
  57.     procedure CbxFontColorChange(Sender: TObject);
  58.     procedure CbxShadowColorChange(Sender: TObject);
  59.     procedure TrkAngleDrawTick(TrackBar: TRzTrackBar; Canvas: TCanvas;
  60.       Location: TPoint; Index: Integer);
  61.     procedure Chk15DegreesClick(Sender: TObject);
  62.     procedure TrkAngleChange(Sender: TObject);
  63.     procedure PnlFontTabMouseDown(Sender: TObject; Button: TMouseButton;
  64.       Shift: TShiftState; X, Y: Integer);
  65.     procedure PnlStyleTabMouseDown(Sender: TObject; Button: TMouseButton;
  66.       Shift: TShiftState; X, Y: Integer);
  67.   public
  68.     procedure UpdateControls;
  69.   end;
  70.  
  71. var
  72.   FrmLabel : TFrmLabel;
  73.  
  74.  
  75.  
  76. implementation
  77.  
  78. {$R *.DFM}
  79.  
  80.  
  81.  
  82.  
  83. {=================================================}
  84. {== Implementation Specific Types and Constants ==}
  85. {=================================================}
  86.  
  87. const                                           { Support Point Size Track Bar }
  88.   PointSizes : array[ 0..17 ] of string[ 2 ] =
  89.     ( '6', '8', '9', '10', '11', '12', '14', '16', '18', '20',
  90.       '22', '24', '28', '32', '40', '48', '64', '72' );
  91.  
  92.  
  93. {=============================}
  94. {== TRzLabelEditDlg Methods ==}
  95. {=============================}
  96.  
  97. {= NOTE:  All changes made through the control on this dialog box affect only =}
  98. {=        the preview label (LblPreview).  Only if the OK button is pressed   =}
  99. {=        are the changes reflected in the selected component.                =}
  100.  
  101.  
  102. procedure TFrmLabel.FormCreate(Sender: TObject);
  103. begin
  104.   NbkFormat.PageIndex := 0;
  105.   UpdateControls;
  106.   TrkPointSize.Hint := 'This is an RzTrackBar using'#13'owner-draw tick marks for'#13'point sizes.';
  107. end;
  108.  
  109.  
  110. procedure TFrmLabel.UpdateControls;
  111.  
  112.   function PositionFromPointSize( P : Integer ) : Integer;
  113.   var
  114.     I : Integer;
  115.   begin
  116.     I := 0;
  117.     while ( I < 18 ) and ( StrToInt( PointSizes[ I ] ) <> P ) do
  118.       Inc( I );
  119.     if I = 18 then
  120.       Result := 2
  121.     else
  122.       Result := I;
  123.   end;
  124.  
  125. begin {= TRzLabelEditDlg.UpdateControls =}
  126.   EdtCaption.Text := LblPreview.Caption;
  127. {  CbxFonts.ItemIndex := CbxFonts.Items.IndexOf( LblPreview.Font.Name );}
  128.   CbxFonts.SelectedFont := LblPreview.Font;
  129.   CbxFontColor.SelectedColor := LblPreview.Font.Color;
  130.   TrkPointSize.Position := PositionFromPointSize( LblPreview.Font.Size );
  131.  
  132.   { Font Styles }
  133.   ChkBold.Checked := fsBold in LblPreview.Font.Style;
  134.   ChkItalic.Checked := fsItalic in LblPreview.Font.Style;
  135.   ChkStrikeout.Checked := fsStrikeout in LblPreview.Font.Style;
  136.   ChkUnderline.Checked := fsUnderline in LblPreview.Font.Style;
  137.  
  138.   { Text Style }
  139.   GrpTextStyle.ItemIndex := Ord( LblPreview.TextStyle );
  140.  
  141.   { Shadow Options }
  142.   CbxShadowColor.SelectedColor := LblPreview.ShadowColor;
  143.   TrkShadow.Position := LblPreview.ShadowDepth;
  144.  
  145.   { Rotation Options }
  146.   TrkAngle.Position := LblPreview.Angle;
  147. end; {= TRzLabelEditDlg.UpdateControls =}
  148.  
  149.  
  150. procedure TFrmLabel.EdtCaptionChange(Sender: TObject);
  151. begin
  152.   LblPreview.Caption := EdtCaption.Text;
  153. end;
  154.  
  155.  
  156. procedure TFrmLabel.CbxFontsChange(Sender: TObject);
  157. begin
  158.   LblPreview.Font.Name := CbxFonts.FontName;
  159. end;
  160.  
  161.  
  162. {= TRzLabelEditDlg.TrkPointSizeDrawTick                                       =}
  163. {=   Owner draw method is used to display point values at each tick mark.     =}
  164.  
  165. procedure TFrmLabel.TrkPointSizeDrawTick(TrackBar: TRzTrackBar;
  166.   Canvas: TCanvas; Location: TPoint; Index: Integer);
  167. var
  168.   W : Integer;
  169. begin
  170.   Canvas.Brush.Color := TrackBar.Color;
  171.   Canvas.Font.Name := 'Small Fonts';
  172.   Canvas.Font.Size := 7;
  173.   Canvas.Font.Style := [];
  174.   W := Canvas.TextWidth( PointSizes[ Index ] );
  175.   Canvas.TextOut( Location.X - (W div 2), 1, PointSizes[ Index ] );
  176. end;
  177.  
  178.  
  179. procedure TFrmLabel.TrkPointSizeChange(Sender: TObject);
  180. begin
  181.   LblPreview.Font.Size := StrToInt( PointSizes[ TrkPointSize.Position ] );
  182. end;
  183.  
  184.  
  185. procedure TFrmLabel.ChkBoldClick(Sender: TObject);
  186. begin
  187.   if ChkBold.Checked then
  188.     LblPreview.Font.Style := LblPreview.Font.Style + [ fsBold ]
  189.   else
  190.     LblPreview.Font.Style := LblPreview.Font.Style - [ fsBold ]
  191. end;
  192.  
  193.  
  194. procedure TFrmLabel.ChkItalicClick(Sender: TObject);
  195. begin
  196.   if ChkItalic.Checked then
  197.     LblPreview.Font.Style := LblPreview.Font.Style + [ fsItalic ]
  198.   else
  199.     LblPreview.Font.Style := LblPreview.Font.Style - [ fsItalic ]
  200. end;
  201.  
  202.  
  203. procedure TFrmLabel.ChkStrikeoutClick(Sender: TObject);
  204. begin
  205.   if ChkStrikeout.Checked then
  206.     LblPreview.Font.Style := LblPreview.Font.Style + [ fsStrikeout ]
  207.   else
  208.     LblPreview.Font.Style := LblPreview.Font.Style - [ fsStrikeout ]
  209. end;
  210.  
  211.  
  212. procedure TFrmLabel.ChkUnderlineClick(Sender: TObject);
  213. begin
  214.   if ChkUnderline.Checked then
  215.     LblPreview.Font.Style := LblPreview.Font.Style + [ fsUnderline ]
  216.   else
  217.     LblPreview.Font.Style := LblPreview.Font.Style - [ fsUnderline ]
  218. end;
  219.  
  220.  
  221. procedure TFrmLabel.GrpTextStyleClick(Sender: TObject);
  222. begin
  223.   LblPreview.TextStyle := TTextStyle( GrpTextStyle.ItemIndex );
  224.  
  225.   TrkShadow.Enabled := LblPreview.TextStyle = tsShadow;
  226.   CbxShadowColor.Enabled := LblPreview.TextStyle = tsShadow;
  227. end;
  228.  
  229.  
  230. procedure TFrmLabel.TrkShadowChange(Sender: TObject);
  231. begin
  232.   LblPreview.ShadowDepth := TrkShadow.Position;
  233. end;
  234.  
  235.  
  236. procedure TFrmLabel.CbxFontColorChange(Sender: TObject);
  237. begin
  238.   LblPreview.Font.Color := CbxFontColor.SelectedColor;
  239. end;
  240.  
  241.  
  242. procedure TFrmLabel.CbxShadowColorChange(Sender: TObject);
  243. begin
  244.   LblPreview.ShadowColor := CbxShadowColor.SelectedColor;
  245. end;
  246.  
  247.  
  248. procedure TFrmLabel.TrkAngleDrawTick(TrackBar: TRzTrackBar;
  249.   Canvas: TCanvas; Location: TPoint; Index: Integer);
  250. var
  251.   W, Degree : Integer;
  252. begin
  253.   if Chk15Degrees.Checked then
  254.     Degree := Index * 15
  255.   else
  256.     Degree := Index;
  257.  
  258.   if ( Degree mod 90 ) = 0 then
  259.   begin
  260.     Canvas.Brush.Color := TrackBar.Color;
  261.     Canvas.Font.Name := 'Small Fonts';
  262.     Canvas.Font.Size := 7;
  263.     Canvas.Font.Style := [];
  264.     W := Canvas.TextWidth( IntToStr( Degree ) );
  265.     Canvas.TextOut( Location.X - (W div 2), 1, IntToStr( Degree ) );
  266.   end;
  267. end;
  268.  
  269.  
  270. procedure TFrmLabel.Chk15DegreesClick(Sender: TObject);
  271. begin
  272.   if Chk15Degrees.Checked then
  273.   begin
  274.     TrkAngle.Position := TrkAngle.Position div 15;
  275.     TrkAngle.Max := 24;
  276.   end
  277.   else
  278.   begin
  279.     TrkAngle.Max := 360;
  280.     TrkAngle.Position := TrkAngle.Position * 15;
  281.   end;
  282. end;
  283.  
  284.  
  285. procedure TFrmLabel.TrkAngleChange(Sender: TObject);
  286. var
  287.   Angle : Integer;
  288. begin
  289.   if Chk15Degrees.Checked then
  290.     Angle := TrkAngle.Position * 15
  291.   else
  292.     Angle := TrkAngle.Position;
  293.   LblAngle.Caption := IntToStr( Angle ) + '░';
  294.   LblPreview.Angle := Angle;
  295. {  CbxFonts.ItemIndex := CbxFonts.Items.IndexOf( LblPreview.Font.Name );}
  296.   CbxFonts.SelectedFont := LblPreview.Font;
  297.  
  298. end;
  299.  
  300.  
  301. procedure TFrmLabel.PnlFontTabMouseDown(Sender: TObject;
  302.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  303. begin
  304.   with PnlStyleTab do
  305.   begin
  306.     SendToBack;
  307.     Top := PnlWorkspace.Top - 19;
  308.   end;
  309.  
  310.   with PnlFontTab do
  311.   begin
  312.     BringToFront;
  313.     Top := PnlWorkspace.Top - 21;
  314.   end;
  315.  
  316.   NbkFormat.PageIndex := 0;
  317. end;
  318.  
  319.  
  320. procedure TFrmLabel.PnlStyleTabMouseDown(Sender: TObject;
  321.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  322. begin
  323.   with PnlFontTab do
  324.   begin
  325.     SendToBack;
  326.     Top := PnlWorkspace.Top - 19;
  327.   end;
  328.  
  329.   with PnlStyleTab do
  330.   begin
  331.     BringToFront;
  332.     Top := PnlWorkspace.Top - 21;
  333.   end;
  334.  
  335.   NbkFormat.PageIndex := 1;
  336.   if Chk15Degrees.Checked then
  337.     TrkAngle.Position := LblPreview.Angle div 15
  338.   else
  339.     TrkAngle.Position := LblPreview.Angle;
  340. end;
  341.  
  342.  
  343. end.
  344.