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
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
public
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TDBGrid_ORDER]);
end;
function TDBGrid_ORDER.Modificar_Order_SQL(Consulta,
new_campo_ordenar: string): string;
var begin
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);
begin
end;
procedure TDBGrid_ORDER.TitleClick(Column: TColumn);
begin
inherited TitleClick(Column);
IF (column.Field.DataSet is TIBTable) then
begin
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