home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 January / Chip_1999-01_cd.bin / zkuste / delphi / QDB / QDBG.ZIP / QDBGEdt.pas < prev    next >
Pascal/Delphi Source File  |  1998-07-29  |  8KB  |  272 lines

  1. unit QDBGEdt;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Menus, QDB, QDBView, StdCtrls, QDBGrids;
  8.  
  9. type
  10.   TQDBGridEditDlg = class(TForm)
  11.     PopupMenu1: TPopupMenu;
  12.     ColumnMenu: TMenuItem;
  13.     TitleMenu: TMenuItem;
  14.     CellsMenu: TMenuItem;
  15.     TitleCaptionMenu: TMenuItem;
  16.     TitleAlignmentMenu: TMenuItem;
  17.     CellColorMenu: TMenuItem;
  18.     CellAlignmentMenu: TMenuItem;
  19.     TitleFontMenu: TMenuItem;
  20.     CellFontMenu: TMenuItem;
  21.     ColumnFieldTypeMenu: TMenuItem;
  22.     ColumnButtonStyleMenu: TMenuItem;
  23.     ColumnReadOnlyMenu: TMenuItem;
  24.     ColumnButtonStyleAuto: TMenuItem;
  25.     ColumnButtonStyleButtonsis: TMenuItem;
  26.     ColumnButtonStyleNone: TMenuItem;
  27.     esSinple1: TMenuItem;
  28.     esMemo1: TMenuItem;
  29.     e1: TMenuItem;
  30.     string1: TMenuItem;
  31.     graphic1: TMenuItem;
  32.     strings1: TMenuItem;
  33.     date1: TMenuItem;
  34.     time1: TMenuItem;
  35.     datetime1: TMenuItem;
  36.     Editable1: TMenuItem;
  37.     Readoly1: TMenuItem;
  38.     Left1: TMenuItem;
  39.     Center1: TMenuItem;
  40.     Right1: TMenuItem;
  41.     Left2: TMenuItem;
  42.     Center2: TMenuItem;
  43.     Right2: TMenuItem;
  44.     FontDialog: TFontDialog;
  45.     ColorDialog: TColorDialog;
  46.     integers1: TMenuItem;
  47.     richstrings1: TMenuItem;
  48.     thing1: TMenuItem;
  49.     CancelButton: TButton;
  50.     OKButton: TButton;
  51.     QDBGrid: TQDBGrid;
  52.     procedure ColumnButtonStyleMenuClick(Sender: TObject);
  53.     procedure FormShow(Sender: TObject);
  54.     procedure ColumnButtonStyleItemsClick(Sender: TObject);
  55.     procedure QDBGridMouseDown(Sender: TObject; Button: TMouseButton;
  56.       Shift: TShiftState; X, Y: Integer);
  57.     procedure ColumnFieldTypeMenuClick(Sender: TObject);
  58.     procedure ColumnFieldTypeItemClick(Sender: TObject);
  59.     procedure ColumnReadOnlyMenuClick(Sender: TObject);
  60.     procedure ReadOnlyItemClick(Sender: TObject);
  61.     procedure TitleAlignmentMenuClick(Sender: TObject);
  62.     procedure TitleAlignmentItemClick(Sender: TObject);
  63.     procedure AlignmentItemClick(Sender: TObject);
  64.     procedure CellAlignmentMenuClick(Sender: TObject);
  65.     procedure CellColorMenuClick(Sender: TObject);
  66.     procedure TitleFontMenuClick(Sender: TObject);
  67.     procedure CellFontMenuClick(Sender: TObject);
  68.     procedure TitleCaptionMenuClick(Sender: TObject);
  69.   private
  70.     { Private declarations }
  71.   public
  72.     { Public declarations }
  73.     PoppedCol: TColumn;
  74.   end;
  75.  
  76. var
  77.   QDBGridEditDlg: TQDBGridEditDlg;
  78.  
  79. implementation
  80.  
  81. {$R *.DFM}
  82.  
  83. type
  84.   THack = class(TQDBGrid);
  85.  
  86. procedure TQDBGridEditDlg.ColumnButtonStyleMenuClick(Sender: TObject);
  87. begin
  88.   with ColumnButtonStyleMenu do
  89.   begin
  90.     TMenuItem(Items[ord(PoppedCol.ButtonStyle)]).Checked:=true;
  91.   end;
  92. end;
  93.  
  94. procedure TQDBGridEditDlg.FormShow(Sender: TObject);
  95. var
  96.   n: integer;
  97. begin
  98.   with QDBGrid do
  99.   begin
  100.     for n:= FixedCols to Columns.Count-1 do
  101.       Columns[n].PopupMenu:=PopupMenu1;
  102.   end;
  103. end;
  104.  
  105. procedure TQDBGridEditDlg.ColumnButtonStyleItemsClick(Sender: TObject);
  106. var
  107.   ThisMenuItem: TMenuItem ;
  108.   n: integer;
  109. begin
  110.   ThisMenuItem:=(Sender as TMenuItem);
  111.   for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  112.   if QDBGrid.Columns[n].Selected then
  113.     QDBGrid.Columns[n].ButtonStyle:= TColumnButtonStyle(ThisMenuItem.MenuIndex);
  114.   PoppedCol.ButtonStyle := TColumnButtonStyle(ThisMenuItem.MenuIndex);
  115.   THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  116. end;
  117.  
  118. procedure TQDBGridEditDlg.QDBGridMouseDown(Sender: TObject;
  119.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  120. var
  121.   ACol, ARow: longint;
  122.   P: TPoint;
  123. begin
  124.   if (Button = mbRight) then
  125.   begin
  126.     QDBGrid.MouseToCell(X,Y, ACol, ARow);
  127.     PoppedCol:=QDBGrid.Columns[ACol];
  128.     P:=QDBGrid.ClientToScreen(Point(X,Y));
  129.     if Assigned(PoppedCol.PopupMenu) then
  130.       PoppedCol.PopupMenu.Popup(P.X,P.Y);
  131.   end;
  132. end;
  133.  
  134. procedure TQDBGridEditDlg.ColumnFieldTypeMenuClick(Sender: TObject);
  135. begin
  136.   with ColumnFieldTypeMenu do
  137.   begin
  138.     if PoppedCol.FieldType <> ftunknown then
  139.       TMenuItem(Items[ord(PoppedCol.FieldType)-1]).Checked:=true;
  140.   end;
  141. end;
  142.  
  143. procedure TQDBGridEditDlg.ColumnFieldTypeItemClick(Sender: TObject);
  144. var
  145.   ThisMenuItem: TMenuItem ;
  146.   n: integer;
  147. begin
  148.   ThisMenuItem:=(Sender as TMenuItem);
  149.   // +1 because of ftunknown
  150.   for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  151.     if QDBGrid.Columns[n].Selected then
  152.       QDBGrid.Columns[n].FieldType:= TQDBFieldType(ThisMenuItem.MenuIndex+1);
  153.   PoppedCol.FieldType := TQDBFieldType(ThisMenuItem.MenuIndex+1);
  154.   THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  155. end;
  156.  
  157. procedure TQDBGridEditDlg.ColumnReadOnlyMenuClick(Sender: TObject);
  158. begin
  159.   with ColumnReadOnlyMenu do
  160.   begin
  161.     TMenuItem(Items[ord(PoppedCol.ReadOnly)]).Checked:=true;
  162.   end;
  163. end;
  164.  
  165. procedure TQDBGridEditDlg.ReadOnlyItemClick(Sender: TObject);
  166. var
  167.   ThisMenuItem: TMenuItem ;
  168.   n: integer;
  169. begin
  170.   ThisMenuItem:=(Sender as TMenuItem);
  171.   for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  172.     if QDBGrid.Columns[n].Selected then
  173.       QDBGrid.Columns[n].ReadOnly:= boolean(ThisMenuItem.MenuIndex);
  174.   PoppedCol.ReadOnly := boolean(ThisMenuItem.MenuIndex);
  175.   THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  176. end;
  177.  
  178. procedure TQDBGridEditDlg.TitleAlignmentMenuClick(Sender: TObject);
  179. begin
  180.   with TitleAlignmentMenu do
  181.   begin
  182.     TMenuItem(Items[ord(PoppedCol.TitleAlignment)]).Checked:=true;
  183.   end;
  184. end;
  185.  
  186. procedure TQDBGridEditDlg.TitleAlignmentItemClick(Sender: TObject);
  187. var
  188.   ThisMenuItem: TMenuItem ;
  189.   n: integer;
  190. begin
  191.   ThisMenuItem:=(Sender as TMenuItem);
  192.   for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  193.     if QDBGrid.Columns[n].Selected then
  194.       QDBGrid.Columns[n].TitleAlignment:= TAlignment(ThisMenuItem.MenuIndex);
  195.   PoppedCol.TitleAlignment := TAlignment(ThisMenuItem.MenuIndex);
  196.   THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  197. end;
  198.  
  199. procedure TQDBGridEditDlg.AlignmentItemClick(Sender: TObject);
  200. var
  201.   ThisMenuItem: TMenuItem ;
  202.   n: integer;
  203. begin
  204.   ThisMenuItem:=(Sender as TMenuItem);
  205.   for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  206.     if QDBGrid.Columns[n].Selected then
  207.       QDBGrid.Columns[n].Alignment:= TAlignment(ThisMenuItem.MenuIndex);
  208.   PoppedCol.Alignment := TAlignment(ThisMenuItem.MenuIndex);
  209.   THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  210. end;
  211.  
  212. procedure TQDBGridEditDlg.CellAlignmentMenuClick(Sender: TObject);
  213. begin
  214.   with CellAlignmentMenu do
  215.   begin
  216.     TMenuItem(Items[ord(PoppedCol.Alignment)]).Checked:=true;
  217.   end;
  218. end;
  219.  
  220. procedure TQDBGridEditDlg.CellColorMenuClick(Sender: TObject);
  221. var
  222.   n: integer;
  223. begin
  224.   ColorDialog.Color:=PoppedCol.Color;
  225.   if ColorDialog.Execute then
  226.   begin
  227.     for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  228.       if QDBGrid.Columns[n].Selected then
  229.         QDBGrid.Columns[n].Color:= ColorDialog.Color;
  230.     PoppedCol.Color:=ColorDialog.Color;
  231.     THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  232.   end;
  233. end;
  234.  
  235. procedure TQDBGridEditDlg.TitleFontMenuClick(Sender: TObject);
  236. var
  237.   n: integer;
  238. begin
  239.   FontDialog.Font:=PoppedCol.TitleFont;
  240.   if FontDialog.Execute then
  241.   begin
  242.     for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  243.       if QDBGrid.Columns[n].Selected then
  244.         QDBGrid.Columns[n].TitleFont:= FontDialog.Font;
  245.     PoppedCol.TitleFont:=FontDialog.Font;
  246.     THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  247.   end;
  248. end;
  249.  
  250. procedure TQDBGridEditDlg.CellFontMenuClick(Sender: TObject);
  251. var
  252.   n: integer;
  253. begin
  254.   FontDialog.Font:=PoppedCol.Font;
  255.   if FontDialog.Execute then
  256.   begin
  257.     for n:= QDBGrid.FixedCols to QDBGrid.Columns.Count-1 do
  258.       if QDBGrid.Columns[n].Selected then
  259.         QDBGrid.Columns[n].Font:= FontDialog.Font;
  260.     PoppedCol.Font:=FontDialog.Font;
  261.     THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  262.   end;
  263. end;
  264.  
  265. procedure TQDBGridEditDlg.TitleCaptionMenuClick(Sender: TObject);
  266. begin
  267.   PoppedCol.Title:=InputBox('Column Title Editor', 'Enter the new column title' , PoppedCol.Title);
  268.   THack(QDBGrid).InvalidateCol(PoppedCol.Index);
  269. end;
  270.  
  271. end.
  272.