1. У меня сортировка при нажатии на Титл грида делается так:
Код:
private
SortASC: Boolean; // для того, что бы запоминать какая была сортировка, что бы знать какую сделать при повторном нажатии
.....
procedure TFMainForm.DBGridEh1TitleClick(Column: TColumnEh);
var
SQLtxt, Comman: String;
begin
if SortASC then
SortASC := False
else SortASC := True;
SQLtxt := ' SELECT * FROM table.db ';
if Column.FieldName <> '' then
if SortASC then
Comman := SQLtxt + ' ORDER BY ' + Column.FieldName + ' ASC ');
else
Comman := SQLtxt + ' ORDER BY ' + Column.FieldName + ' DESC ');
QUery1.Close;
Query1.sql.text := '';
query1.sql.text := Comman;
query1.open;
end;
2. Можешь передать в "CVS" он хорошо импортируется в Эксель, так как если ты не знаешь QReport то придется немного почитать тебе (если захочешь). По поводу Ehlib то он платный, если найдешь фри, то переделать под него проект раз плюнуть...
для экспорта в "CVS" выделены строчки(я ничего не уберал, захочешь упростишь под себя):
Код:
procedure TFMainForm.SpeedButton1Click(Sender: TObject);
var
Mem_ : TStringList;
I, ColCount: Integer;
SLine: String;
DS: TDataSet;
begin
ColCount := DBGridEh1.Columns.Count - 1;
SLine := '';
DS := DBGridEh1.DataSource.DataSet;
Mem_ := TStringList.Create;
SaveDialog1.Title := 'Save CVS file';
SaveDialog1.InitialDir := FileDireTxt;
SaveDialog1.Filter := 'Exel file|*.cvs';
SaveDialog1.DefaultExt := 'txt';
SaveDialog1.FilterIndex := 1;
if SaveDialog1.Execute
then begin
for I := 0 to ColCount do // шапка
if DBGridEh1.Columns[i].Visible then begin
SLine := SLine + '"' + DBGridEh1.Columns[i].Title.Caption + '";';
end;
Mem_.Add(SLine);
SLine := '';
DS.First;
while not DS.Eof do begin // содержимое грида
for I := 0 to ColCount do
if DBGridEh1.Columns[i].Visible then begin
SLine := SLine + '"' + DBGridEh1.Columns[i].DisplayText + '";';
end;
Mem_.Add(SLine);
SLine := '';
DS.Next;
end;
Mem_.SaveToFile(SaveDialog1.FileName);
ShowMessage('File : '+ SaveDialog1.FileName);
end
else ShowMessage('Save file was cancelled');
Mem_.Free;
end;
ПРИ ТВОЕМ РЕШЕНИИ ВЫЛОЖИ РЕЗУЛЬТАТ, что бы и другие могли это использовать!