Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 10:23   #1
r_yevgeniy
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 21
По умолчанию StringGrid и SaveDialog/OpenDialog

Всем доброго времени суток! Требуется написать процедуру сохранения содержимого из StringGrid, а также возможность загружать данные в StringGrid из файла. Нашел здесь на форуме код для сохранения и загрузки

Код:
procedure SaveStringGrid(StringGrid: TStringGrid; FileName: string);
var
  T: TStringList;
  Row, Col: integer;
begin
  T := TStringList.Create;
  T.Add(IntToStr(StringGrid.RowCount));
  T.Add(IntToStr(StringGrid.ColCount));
  for Row := 0 to StringGrid.RowCount - 1 do
    for Col := 0 to StringGrid.ColCount - 1 do
      T.Add(StringGrid.Cells[Col, Row]);
  T.SaveToFile(Filename);
  T.Free;
end;

procedure LoadStringGrid(StringGrid: TStringGrid; FileName: string);
var
  T: TStringList;
  Row, Col, Count: integer;
begin
  T := TStringList.Create;
  T.LoadFromFile(FileName);
  StringGrid.RowCount := StrToIntDef(T.Strings[0], 1);
  StringGrid.ColCount := StrToIntDef(T.Strings[1], 1);
  T.Delete(0);
  Count := 0;
  for Row := 0 to StringGrid.RowCount - 1 do
    for Col := 0 to StringGrid.ColCount - 1 do begin
      Count := Count + 1;
      if T.Strings[Count] <> '' then
        StringGrid.Cells[Col, Row] := T.Strings[Count] else
        StringGrid.Cells[Col, Row] := '';
    end;
  T.Free;
end;
При таком способе происходит перезапись файла, и нет возможности выбрать открываемый файл.
Подскажиет как прикрутить сюда SaveDialog и OpenDialog для того чтобы сохранять под разными именами содержимое таблицы, которое может меняться, а также возможность выбора файла lzk загрузки с помошью OpenDialog. Заранее всем спасибо за помощь. С уважением, Евгений.
r_yevgeniy вне форума
Старый 04.11.2010, 11:07   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Прикручивайте как обычно - до вызова этих функций, а имя передавайте парметром... Ведь незря он есть:
Код:
FileName: string
p51x вне форума
Старый 04.11.2010, 11:17   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
 SaveStringGrid(StringGrid1, SaveDialog1.FileName);
end;
Код:
procedure TfrmMain.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  LoadStringGrid(StringGrid1, OpenDialog1.FileName);
end;
_SERGEYX_ вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись из StringGrid в файл при помощи SaveDialog NecroSlider Помощь студентам 5 17.04.2011 18:45
SaveDialog nXs Общие вопросы Delphi 2 30.04.2010 15:28
OpenDialog and SaveDialog Kortik Помощь студентам 5 18.05.2009 09:58
SaveDialog Valerich Общие вопросы Delphi 4 03.05.2009 16:53
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53