Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit MyDBGrid;
- interface
- uses
- vcl.DBGrids, System.Classes, Winapi.Windows, System.SysUtils,
- FireDAC.Comp.Client, FireDAC.Stan.Intf, Data.DB;
- type
- TMyDBGrid = class(TDBGrid)
- private
- FTitleCenter: Boolean;
- FOrdenarColunas: Boolean;
- procedure SetTitleCenter(const Value: Boolean);
- procedure SetOrdenarColunas(const Value: Boolean);
- protected
- procedure KeyDown(var key: word; Shift: TShiftState); override;
- procedure TitleClick(Column: TColumn); override;
- procedure SetColumnAttributes; override;
- public
- constructor Create(AOwner: TComponent); override;
- procedure CentralizarTitulo;
- published
- property OrdenarColunas: Boolean read FOrdenarColunas
- write SetOrdenarColunas default True;
- property TitleCenter: Boolean read FTitleCenter write SetTitleCenter
- default True;
- end;
- procedure Register;
- implementation
- { TMyDBGrid }
- procedure Register;
- begin
- RegisterComponents('MyComponentes', [TMyDBGrid]);
- end;
- procedure TMyDBGrid.CentralizarTitulo;
- var
- I: integer;
- begin
- for I := 0 to Self.Columns.Count - 1 do
- Columns[I].Title.Alignment := taCenter;
- end;
- constructor TMyDBGrid.Create(AOwner: TComponent);
- begin
- inherited;
- FTitleCenter := True;
- FOrdenarColunas := True;
- end;
- procedure TMyDBGrid.KeyDown(var key: word; Shift: TShiftState);
- begin
- if (Shift = [ssCtrl]) and (key = VK_DELETE) then
- Abort;
- inherited;
- end;
- procedure TMyDBGrid.SetColumnAttributes;
- begin
- inherited;
- if (FTitleCenter) then
- CentralizarTitulo;
- end;
- procedure TMyDBGrid.SetOrdenarColunas(const Value: Boolean);
- begin
- FOrdenarColunas := Value;
- end;
- procedure TMyDBGrid.SetTitleCenter(const Value: Boolean);
- begin
- FTitleCenter := Value;
- end;
- procedure TMyDBGrid.TitleClick(Column: TColumn);
- begin
- inherited;
- if FOrdenarColunas then
- begin
- if (DataSource.DataSet is TFDMemTable) then
- if Assigned(TFDMemTable(DataSource.DataSet)) then
- if TFDMemTable(DataSource.DataSet).Active then
- if not(TFDMemTable(DataSource.DataSet).FieldByName(Column.FieldName)
- .FieldKind in [fkLookup, fkCalculated]) then
- TFDMemTable(DataSource.DataSet).IndexFieldNames := Column.FieldName;
- if (DataSource.DataSet is TFDQuery) then
- if Assigned(TFDQuery(DataSource.DataSet)) then
- if TFDQuery(DataSource.DataSet).Active then
- if not(TFDQuery(DataSource.DataSet).FieldByName(Column.FieldName)
- .FieldKind in [fkLookup, fkCalculated]) then
- TFDQuery(DataSource.DataSet).IndexFieldNames := Column.FieldName;
- if Assigned(DataSource.DataSet) then
- if DataSource.DataSet.Active then
- DataSource.DataSet.First;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement