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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 07:17   #1
FarCry66
 
Регистрация: 03.10.2010
Сообщений: 4
Восклицание Загрузка SthingGrid 'a

Помогите пожелста решить проблему с сохранением и загрузкой SthingGrid 'a.
В моей программе (заданной на курсовую, а её во вторник уже здавать)) стояла задача зделать программу - расписание. ТАк как алгоритм придумывать сложно (но и муторно и очень долго), я решил зделать проще: стринг грид с описанием пары дня недели и номера пары.
Проблема у меня в загрузке данных написанных в этом же стринггриде опять же в него. Собственно всё будет видно на скринах)
P.S: Прилагая полный код страницы где происходит сохранение и загрузка.
Вписывание данных и сохзранение:


Загрузка данных в стринггрид (описсаных ранее):


Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons, WinProcs;

type
  TForm3 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    Button1: TButton;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure BitBtn1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
//    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure BitBtn2Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses Unit2;

procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:    TextFile;
   i, k: Integer;
 begin
   AssignFile(f, FileName);
   Rewrite(f);
   with StringGrid do
   begin
     // Write number of Columns/Rows
    Writeln(f, ColCount);
     Writeln(f, RowCount);
     // loop through cells
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
         Writeln(F, Cells[i, k]);
   end;
   CloseFile(F);
 end;

 procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:          TextFile;
   iTmp, i, k: Integer;
   strTemp:    String;
 begin
   AssignFile(f, FileName);
   Reset(f);
   with StringGrid do
   begin
     // Get number of columns
    Readln(f, iTmp);
     ColCount := iTmp;
     // Get number of rows
    Readln(f, iTmp);
     RowCount := iTmp;
     // loop through cells & fill in values
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
       begin
         Readln(f, strTemp);
         Cells[i, k] := strTemp;
       end;
   end;
   CloseFile(f);
 end;

//uses Unit2;

{$R *.dfm}


procedure TForm3.BitBtn1Click(Sender: TObject);
begin
Form3.Hide;
Form2.Show;
end;

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
SaveStringGrid(StringGrid1, 'c:\temp.txt');
end;


procedure TForm3.BitBtn3Click(Sender: TObject);
begin
LoadStringGrid(StringGrid1, 'c:\temp.txt');
end;



procedure TForm3.BitBtn4Click(Sender: TObject);
var i, j: Integer;
begin
  with StringGRid1 do
    for i:=1 to RowCount-1 do   //Заголовки строк не трогаем
    for j:=1 to ColCount-1 do   //Заголовки столбцов не трогаем
      Cells[j, i]:='';
end;


procedure TForm3.Button1Click(Sender: TObject);
begin
StringGrid1.Options:=StringGrid1.Options+[goEditing];
end;

procedure TForm3.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0, 1]:='Понедельник';
StringGrid1.Cells[0, 2]:='Вторник';
StringGrid1.Cells[0, 3]:='Среда';
StringGrid1.Cells[0, 4]:='Четверг';
StringGrid1.Cells[0, 5]:='Пятница';

StringGrid1.Cells[1, 0]:='1 пара';
StringGrid1.Cells[2, 0]:='2 пара';
StringGrid1.Cells[3, 0]:='3 пара';
StringGrid1.Cells[4, 0]:='4 пара';
StringGrid1.Cells[5, 0]:='5 пара';
StringGrid1.Cells[6, 0]:='6 пара';
StringGrid1.Cells[7, 0]:='7 пара';
StringGrid1.Cells[8, 0]:='8 пара';
end;


procedure TForm3.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Format: Word;
  C: array[0..255] of Char;
begin
  Format := DT_LEFT or DT_WORDBREAK;
  (Sender as TStringGrid).Canvas.FillRect(Rect);
  StrPCopy(C, (Sender as TStringGrid).Cells[ACol, ARow]);
  WinProcs.DrawText((Sender as TStringGrid).Canvas.Handle, C,
    StrLen(C), Rect, Format);
end;

end.
FarCry66 вне форума Ответить с цитированием
Старый 19.12.2010, 11:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проверяйте:
Код:
procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:    TextFile;
   i, k: Integer;
 begin
   AssignFile(f, FileName);
   Rewrite(f);
   with StringGrid do
   begin
     // Write number of Columns/Rows
    Writeln(f, ColCount);
     Writeln(f, RowCount);
     // loop through cells
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
         Writeln(F, StringReplace(Cells[i, k], #13#10, '$@$', [rfReplaceAll, rfIgnoreCase]));
   end;
   CloseFile(F);
 end;

 procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:          TextFile;
   iTmp, i, k: Integer;
   strTemp:    String;
 begin
   AssignFile(f, FileName);
   Reset(f);
   with StringGrid do
   begin
     // Get number of columns
    Readln(f, iTmp);
     ColCount := iTmp;
     // Get number of rows
    Readln(f, iTmp);
     RowCount := iTmp;
     // loop through cells & fill in values
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
       begin
         Readln(f, strTemp);
         strTemp := StringReplace(strTemp, '$@$', #13#10, [rfReplaceAll, rfIgnoreCase]);
         Cells[i, k] := strTemp;
       end;
   end;
   CloseFile(f);
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2010, 12:07   #3
FarCry66
 
Регистрация: 03.10.2010
Сообщений: 4
По умолчанию

Serge_Bliznykov
Большое СпасиБО). Заработало) Теря хоть курсовую здам) Одной проблемой меньше до сесии)
FarCry66 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка ЦП Dambo Общие вопросы C/C++ 5 16.11.2010 15:29
Загрузка с CD AndreyFreeman Фриланс 2 24.10.2010 13:59
Загрузка ОС subbota Операционные системы общие вопросы 1 24.09.2009 14:32
Загрузка ЦП HelloZAPOR Win Api 7 05.11.2007 15:43
Загрузка UnD)eaD)Snake Общие вопросы Delphi 10 19.08.2007 11:24