Advertisement
DouglasSouza2019

Untitled

Jun 14th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.74 KB | None | 0 0
  1. unit MyDBGrid;
  2.  
  3. interface
  4.  
  5. uses
  6.   vcl.DBGrids, System.Classes, Winapi.Windows, System.SysUtils,
  7.   FireDAC.Comp.Client, FireDAC.Stan.Intf, Data.DB;
  8.  
  9. type
  10.   TMyDBGrid = class(TDBGrid)
  11.   private
  12.     FTitleCenter: Boolean;
  13.     FOrdenarColunas: Boolean;
  14.     procedure SetTitleCenter(const Value: Boolean);
  15.     procedure SetOrdenarColunas(const Value: Boolean);
  16.  
  17.   protected
  18.     procedure KeyDown(var key: word; Shift: TShiftState); override;
  19.     procedure TitleClick(Column: TColumn); override;
  20.     procedure SetColumnAttributes; override;
  21.   public
  22.     constructor Create(AOwner: TComponent); override;
  23.     procedure CentralizarTitulo;
  24.   published
  25.     property OrdenarColunas: Boolean read FOrdenarColunas
  26.       write SetOrdenarColunas default True;
  27.     property TitleCenter: Boolean read FTitleCenter write SetTitleCenter
  28.       default True;
  29.   end;
  30.  
  31. procedure Register;
  32.  
  33. implementation
  34.  
  35. { TMyDBGrid }
  36.  
  37. procedure Register;
  38. begin
  39.   RegisterComponents('MyComponentes', [TMyDBGrid]);
  40. end;
  41.  
  42. procedure TMyDBGrid.CentralizarTitulo;
  43. var
  44.   I: integer;
  45. begin
  46.   for I := 0 to Self.Columns.Count - 1 do
  47.     Columns[I].Title.Alignment := taCenter;
  48. end;
  49.  
  50. constructor TMyDBGrid.Create(AOwner: TComponent);
  51. begin
  52.   inherited;
  53.   FTitleCenter := True;
  54.   FOrdenarColunas := True;
  55. end;
  56.  
  57. procedure TMyDBGrid.KeyDown(var key: word; Shift: TShiftState);
  58. begin
  59.   if (Shift = [ssCtrl]) and (key = VK_DELETE) then
  60.     Abort;
  61.   inherited;
  62. end;
  63.  
  64. procedure TMyDBGrid.SetColumnAttributes;
  65. begin
  66.   inherited;
  67.   if (FTitleCenter) then
  68.     CentralizarTitulo;
  69. end;
  70.  
  71. procedure TMyDBGrid.SetOrdenarColunas(const Value: Boolean);
  72. begin
  73.   FOrdenarColunas := Value;
  74. end;
  75.  
  76. procedure TMyDBGrid.SetTitleCenter(const Value: Boolean);
  77. begin
  78.   FTitleCenter := Value;
  79. end;
  80.  
  81. procedure TMyDBGrid.TitleClick(Column: TColumn);
  82. begin
  83.   inherited;
  84.   if FOrdenarColunas then
  85.   begin
  86.     if (DataSource.DataSet is TFDMemTable) then
  87.       if Assigned(TFDMemTable(DataSource.DataSet)) then
  88.         if TFDMemTable(DataSource.DataSet).Active then
  89.           if not(TFDMemTable(DataSource.DataSet).FieldByName(Column.FieldName)
  90.             .FieldKind in [fkLookup, fkCalculated]) then
  91.             TFDMemTable(DataSource.DataSet).IndexFieldNames := Column.FieldName;
  92.  
  93.     if (DataSource.DataSet is TFDQuery) then
  94.       if Assigned(TFDQuery(DataSource.DataSet)) then
  95.         if TFDQuery(DataSource.DataSet).Active then
  96.           if not(TFDQuery(DataSource.DataSet).FieldByName(Column.FieldName)
  97.             .FieldKind in [fkLookup, fkCalculated]) then
  98.             TFDQuery(DataSource.DataSet).IndexFieldNames := Column.FieldName;
  99.  
  100.     if Assigned(DataSource.DataSet) then
  101.       if DataSource.DataSet.Active then
  102.         DataSource.DataSet.First;
  103.   end;
  104. end;
  105.  
  106. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement