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

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, SysUtils, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Grids, StdCtrls, Buttons, ExtCtrls, Menus,
  8.   About;
  9.  
  10. type
  11.   TMainForm = class(TForm)
  12.     StringGrid1: TStringGrid;
  13.     FontCB: TComboBox;
  14.     FontLabel: TLabel;
  15.     CloseBitBtn: TBitBtn;
  16.     CopyEdit: TEdit;
  17.     CopyLabel: TLabel;
  18.     SelectBitBtn: TBitBtn;
  19.     ClipBitBtn: TBitBtn;
  20.     CharLabel: TLabel;
  21.     Bevel1: TBevel;
  22.     ClearBitBtn: TBitBtn;
  23.     MainMenu1: TMainMenu;
  24.     FileMenu: TMenuItem;
  25.     FileExit: TMenuItem;
  26.     HelpMenu: TMenuItem;
  27.     HelpAbout: TMenuItem;
  28.     procedure FormCreate(Sender: TObject);
  29.     procedure FontCBChange(Sender: TObject);
  30.     procedure FontCBKeyDown(Sender: TObject; var Key: Word;
  31.       Shift: TShiftState);
  32.     procedure StringGrid1DblClick(Sender: TObject);
  33.     procedure StringGrid1KeyDown(Sender: TObject;
  34.       var Key: Word; Shift: TShiftState);
  35.     procedure StringGrid1SelectCell(Sender: TObject;
  36.       Col, Row: Longint; var CanSelect: Boolean);
  37.     procedure FileExitClick(Sender: TObject);
  38.     procedure HelpAboutClick(Sender: TObject);
  39.     procedure SelectBitBtnClick(Sender: TObject);
  40.     procedure ClipBitBtnClick(Sender: TObject);
  41.     procedure ClearBitBtnClick(Sender: TObject);
  42.   private
  43.     { Private declarations }
  44.   public
  45.     { Public declarations }
  46.   end;
  47.  
  48. var
  49.   MainForm: TMainForm;
  50.  
  51. implementation
  52.  
  53. {$R *.DFM}
  54.  
  55. { Initialize controls }
  56. procedure TMainForm.FormCreate(Sender: TObject);
  57. var
  58.   Ascii, IRow, ICol: Integer;
  59. begin
  60. { Initialize FontCB ComboBox with font names }
  61.   FontCB.Items := Screen.Fonts;
  62. { Show current StringGrid font in FontCB's edit box }
  63.   FontCB.ItemIndex :=
  64.     FontCB.Items.IndexOf(StringGrid1.Font.Name);
  65. { Insert characters into grid }
  66.   Ascii := 0;
  67.   with StringGrid1 do
  68.   for IRow := 0 to RowCount do
  69.     for ICol := 0 to ColCount do
  70.     begin
  71.       Cells[ICol, IRow] := Chr(Ascii);
  72.       Inc(Ascii);
  73.     end;
  74. { Assign sample character and font }
  75.   with StringGrid1 do
  76.     CharLabel.Caption := Cells[Row, Col];
  77.   CharLabel.Font.Name := StringGrid1.Font.Name;
  78. end;
  79.  
  80. { Change grid, edit box, and sample to selected font }
  81. procedure TMainForm.FontCBChange(Sender: TObject);
  82. begin
  83.   StringGrid1.Font.Name := FontCB.Text;
  84.   CopyEdit.Text := '';  { Optional: Erase current entries }
  85.   CopyEdit.Font := StringGrid1.Font;
  86.   CharLabel.Font.Name := StringGrid1.Font.Name;
  87. end;
  88.  
  89. { Close FontCB drop-down list on pressing Enter or Esc }
  90. procedure TMainForm.FontCBKeyDown(Sender: TObject;
  91.   var Key: Word; Shift: TShiftState);
  92. begin
  93.   if Key in [vk_Return, vk_Escape] then
  94.   begin
  95.     FontCB.DroppedDown := False;
  96.     Key := 0;
  97.   end;
  98. end;
  99.  
  100. { Grid double-click event handler }
  101. procedure TMainForm.StringGrid1DblClick(Sender: TObject);
  102. begin
  103.   with CopyEdit, StringGrid1 do
  104.     Text := Text + Cells[Col, Row];
  105. end;
  106.  
  107. { Select character on pressing Enter or Space }
  108. procedure TMainForm.StringGrid1KeyDown(Sender: TObject;
  109.   var Key: Word; Shift: TShiftState);
  110. begin
  111.   if Key in [vk_Return, vk_Space] then
  112.     StringGrid1DblClick(Sender);  // Same as double-click grid
  113. end;
  114.  
  115. { Show selected character }
  116. procedure TMainForm.StringGrid1SelectCell(Sender: TObject; Col,
  117.   Row: Longint; var CanSelect: Boolean);
  118. begin
  119.   CharLabel.Caption := StringGrid1.Cells[Col, Row];
  120. end;
  121.  
  122. { File|Exit menu command }
  123. procedure TMainForm.FileExitClick(Sender: TObject);
  124. begin
  125.   Close;
  126. end;
  127.  
  128. { Help|About menu command }
  129. procedure TMainForm.HelpAboutClick(Sender: TObject);
  130. begin
  131.   AboutForm.ShowModal;
  132. end;
  133.  
  134. { Select button click handler }
  135. procedure TMainForm.SelectBitBtnClick(Sender: TObject);
  136. begin
  137.   StringGrid1DblClick(Sender);  // Same as double-clicking grid
  138. end;
  139.  
  140. { Copy selected characters to clipboard }
  141. procedure TMainForm.ClipBitBtnClick(Sender: TObject);
  142. begin
  143.   with CopyEdit do
  144.   begin
  145.     if SelLength = 0 then
  146.       SelectAll;       { Select all text if none selected }
  147.     CopyToClipboard;   { Copy selected text to clipboard }
  148.   end;
  149. end;
  150.  
  151. { Clear text in copy-to edit box }
  152. procedure TMainForm.ClearBitBtnClick(Sender: TObject);
  153. begin
  154.   CopyEdit.Text := '';
  155. end;
  156.  
  157. end.
  158.