Вопрос № 53626: Добрового времени суток!!! Задаю данный вопрос 2-й раз, вроде и не сложненький надеюсь ответите. Вопрос:
1. Каким образом из StringGrid сохранить информацию в отдельном текстовом документе, и наоборот.
2. Как произвести сортировку данных в St...
Вопрос № 53.626
Добрового времени суток!!! Задаю данный вопрос 2-й раз, вроде и не сложненький надеюсь ответите. Вопрос:
1. Каким образом из StringGrid сохранить информацию в отдельном текстовом документе, и наоборот.
2. Как произвести сортировку данных в StringGrid.
Ну хоть кто нибудь, че нибудь ответти =)
Отвечает: sir henry
Здравствуйте, Fazulla, Fazulla, Fazulla / Fazulla!
1. Информацию напрямую сохранить никак нельзя. Можно организовать цикл, который проходит все колонки и все строки и сохраняет значение каждой ячейки поотдельности. В этом случае можно, если это обычный текстовый файл, применять своство форматирования макроса WriteLn(). Если нужно сохранить значения только одного столбца (строки), то можно воспользоваться тем, что столбец (строка) в StringGrid'e представляют собой компонент TString, а у него уже есть метод SaveToFile().
2. Непосредственно в StringGrid - никак. Можно в цикле выгружать каждую колонку в компонент, у которого есть возможность сортировки (например TStringGrid), а потом загрузить обратно.
Пример:
Var
ss: TStringList;
Begin
ss:=TStrinList.Create;
For i:=0 To StringGrid1.ColCount-1 Do
Begin
ss.Assign(StringGrid.Cols[i]);
ss.Sorted:=True;
StringGrid.Cols[i].Assign(ss);
End;
End;
Может кто еще какие методы сортировки посоветует. :)
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 29.08.2006, 12:28
Отвечает: Архангельский Андрей Германович
Здравствуйте, Fazulla, Fazulla, Fazulla / Fazulla!
для сохранения используй следующий код:
For row:=0 to rwn do Begin
Str := '';
For col:=0 to cln do Begin
Str := Str + StringGrid1.Cells(col,row) + '|';
end;
writeln(flSave,str);
end;
Отвечает: Werewolf
Здравствуйте, Fazulla, Fazulla, Fazulla / Fazulla!
1)По поводу сохранения, загрузки
procedure TForm1.ButtonSaveClick(Sender: TObject);
var
ini: TIniFile;
ms: TMemoryStream;
i: integer;
begin
if SaveDialog.Execute then
begin
ini :=
TIniFile.Create(SaveDialog.FileName);
ini.UpdateFile;
try
for i := 0 to MyStringGrid.ColCount - 1 do
begin
ms := TMemoryStream.Create;
MyStringGrid.Cols[i].SaveToStream(ms);
ms.Position := 0;
ini.WriteBinaryStream('Col' + inttostr(i), 'Lines', ms);
ms.Free;
end;
finally
ini.Free;
end;
end;
end;
procedure TForm1.ButtonLoadClick(Sender: TObject);
var
ini: TIniFile;
ms: TMemoryStream;
i: integer;
begin
if OpenDialog.Execute then
begin
ini :=
TIniFile.Create(OpenDialog.FileName);
try
for i := 0 to MyStringGrid.ColCount - 1 do
begin
ms := TMemoryStream.Create;
ini.ReadBinaryStream('Col' + inttostr(i), 'Lines', ms);
ms.Position := 0;
MyStringGrid.Cols[i].LoadFromStream(ms);
ms.free;
end;
finally
ini.Free;
end;
end;
end;
2)по поводу сортировки смотри
http://delphiworld.narod.ru/base/sg_col_sort.html
Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 29.08.2006, 13:34