Ver Mensaje Individual
  #1  
Antiguo 18-05-2017
ronalg ronalg is offline
Miembro
 
Registrado: may 2003
Ubicación: Sucre - Bolivia
Posts: 68
Reputación: 21
ronalg Va por buen camino
Descendiente de un TDBGrid

Buenas Noche (donde yo estoy) estimados amigos de ClubDelphi, anduve buscando por todas partes y no logre hacerlo, por eso apelo a ustedes con un problema que para muchos tal vez sea trivial pues hay muchos componentes comerciales para la VCL que pueden hacer lo que ahora me empecino en hacer.

Bueno deseo hacer la clásica ordenación de una DBGrid cuando hacemos click en el título de la columna correspondiente, yo uso los componentes IBX y FIBPlus bueno, realmente ya logre que se ordenara el DBGrid pero quiero crear un componente heredado y modificar el evento OnTitleClick, por más que busco y busco y experimento y experimento no he podido encontrar la forma de reescribir dicho evento.

Podrían darme una mano

Llegue hasta aquí
Código Delphi [-]

unit DBGrid_ORDER;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Grids, DBGrids, IBCustomDataSet, IBQuery, IBTable, StrUtils, Dialogs;

type
  TDBGrid_ORDER = class(TDBGrid)
  procedure TitleClick(Column: TColumn) Override;
  private
    { Private declarations }
    Function Modificar_Order_SQL(Consulta:string;new_campo_ordenar:string):string;
    function QuitarSaltosLinea(Strs: TStrings; Char1Replace:String=''; Char2Replace:String=''):String; OVERLOAD;
    function QuitarSaltosLinea(Strs: String; Char1Replace:String=''; Char2Replace:String=''):String; OVERLOAD;
    Procedure Reordenar_consulta(Consulta: TIBCustomDataSet; Campo_ordenar:String);
  protected
    { Protected declarations }

  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TDBGrid_ORDER]);
end;

{ TDBGrid_ORDER }

function TDBGrid_ORDER.Modificar_Order_SQL(Consulta,
  new_campo_ordenar: string): string;
var //Variables Variables Varilbles
begin
     //Codigo Codigo Codgio
end;

function TDBGrid_ORDER.QuitarSaltosLinea(Strs: TStrings; Char1Replace,
  Char2Replace: String): String;
var Str:string;
begin
   Str := AnsiReplaceStr(Strs.Text, #10, Char1Replace);
   Result := AnsiReplaceStr(Str, #13, Char2Replace);
end;

function TDBGrid_ORDER.QuitarSaltosLinea(Strs, Char1Replace,
  Char2Replace: String): String;
var Str:string;
begin
   Str := AnsiReplaceStr(Strs, #10, Char1Replace);
   Result := AnsiReplaceStr(Str, #13, Char2Replace);
end;

procedure TDBGrid_ORDER.Reordenar_consulta(Consulta: TIBCustomDataSet;
  Campo_ordenar: String);
//Variables Variables Varilbles
begin
     //Codigo Codigo Codgio
end;

procedure TDBGrid_ORDER.TitleClick(Column: TColumn);
begin
     //No esta funcionando
     inherited TitleClick(Column);
     //También probe así
     //Inherited;
     IF (column.Field.DataSet is TIBTable) then
     begin
          //Bueno eso es mas simple es modificar los indices y ya
          messagedlg('La ordenación por ahora no funciona con tablas',mtinformation,[mbok],0);
     end
     else
     begin
          reordenar_consulta((column.Field.Dataset as TIbCustomDataSet), Column.Field.FieldName);
     end;
end;

end.

Gracias de antemano
__________________
Saludos desde Sucre - Bolivia
"Si te lo puedes imaginar lo
puedes resolver" Pyriel
Responder Con Cita