He intentado contestar 2 veces a este post, y la verdad, no sé como empezar
.
1º- CodigoSQL se ha creado???, lo correcto sería crearlo antes de hacer una asignación:
Código Delphi
[-]
CodigoSQL := TStringList.Create;
2º- Para las asignaciones no te acostumbres a usar Lines directamente, el mejor método es uno de estos:
Código Delphi
[-]
Memo1.Lines.Assign(codigoSQL); Memo1.Lines.Add(CodigoSQL.TEXT); Memo1.Lines.Add(CodigoSQL);
Este error lo tienes cada vez que trabajas con todos los TStrings. Cuando metes el memo funciona, porque el TMemo implementa la asignación de Lines llamando al método Assign,
pero el TStrings no lo tiene. Estudia la ayuda sobre estos métodos.
Lo más simple, es que pongas a String el CodigoSQL.
Código Delphi
[-]
var CodigoSQL :String
OrderBy:String;
Código Delphi
[-]
procedure TFrmBaseGrid.DBGrid1TitleClick(Column: TColumn);
{$J+}
const
PreviousColumnIndex : integer = -1;
{$J-}
Var
Campo: String;
I,OrderByPos: Integer;
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
except
end;
Column.Title.Font.Style:= Column.Title.Font.Style + [fsBold];
PreviousColumnIndex := Column.Index;
OrderByPos := pos (' Order by ', codigoSQL);
if OrderByPos > 0 then delete(codigoSQL, OrderByPos, 255);
if Orden then
codigoSQL := CodigoSQL + ' Order by ' + OrderBy
else
begin
codigoSQL := CodigoSQL + ' Order by ' + OrderBy + ' desc';
Orden:= True;
end;
End;
end;
Para llamar:
Código Delphi
[-]
procedure TFrmProveedores.DBGrid1TitleClick(Column: TColumn);
Begin
CodigoSQL:= DtmDatos.pFIBproveedores.SelectSQL.TEXT;
OrderBy := column.Field.FieldName;
inherited;
DtmDatos.pFIBproveedores.Active:= False;
DtmDatos.pFIBproveedores.SelectSQL.TEXT := codigoSql;
DtmDatos.pFIBproveedores.Active:= True;
end;
En lugar de variables, yo hubiese usado propiedades, pero creo que así es más claro.
Un saludo