Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 198
от 03.09.2006, 12:35

Администратор:CJ
В рассылке:Подписчиков: 253, Экспертов: 34
В номере:Вопросов: 1, Ответов: 3


Вопрос № 53626: Добрового времени суток!!! Задаю данный вопрос 2-й раз, вроде и не сложненький надеюсь ответите. Вопрос: 1. Каким образом из StringGrid сохранить информацию в отдельном текстовом документе, и наоборот. 2. Как произвести сортировку данных в St...

Вопрос № 53.626
Добрового времени суток!!! Задаю данный вопрос 2-й раз, вроде и не сложненький надеюсь ответите. Вопрос:
1. Каким образом из StringGrid сохранить информацию в отдельном текстовом документе, и наоборот.
2. Как произвести сортировку данных в StringGrid.
Ну хоть кто нибудь, че нибудь ответти =)
Отправлен: 29.08.2006, 12:03
Вопрос задал: Fazulla, Fazulla, Fazulla / Fazulla (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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;

Сортировку выполнить штатными способами нельзя, Вручную пожалуйста, почитай Кнут "исскуство программирования, т.2"

И вообще, читай документацию, хотя бы Хелп

---------
Если дело заслуживает быть сделаным, то оно заслуживает чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Практикант)
Ответ отправлен: 29.08.2006, 12:33

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное