Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 03.10.2010
Сообщений: 4

Непонятки со СтрингГридом

19.12.2010, 07:21. Показов 1007. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожелста решить проблему с сохранением и загрузкой SthingGrid 'a.
В моей программе (заданной на курсовую, а её во вторник уже здавать)) стояла задача зделать программу - расписание. ТАк как алгоритм придумывать сложно (но и муторно и очень долго), я решил зделать проще: стринг грид с описанием пары дня недели и номера пары.
Проблема у меня в загрузке данных написанных в этом же стринггриде опять же в него. Собственно всё будет видно на скринах)
P.S: Прилагая полный код страницы где происходит сохранение и загрузка.
Вписывание данных и сохзранение:
[IMG]http://s013.***********/i323/1012/72/34a5bc9294b8.jpg[/IMG]

Загрузка данных в стринггрид (описсаных ранее):
[IMG]http://s55.***********/i150/1012/27/1bc4837d698f.jpg[/IMG]

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2010, 07:21
Ответы с готовыми решениями:

Хелп со стринггридом
Помогите написать код программы: Надо ввести число, и вычислить, является ли это число больше годовой зарплаты 1 сотрудника (из 18)

Маленькая проблемка с стринггридом
Такая тема, нужно чтобы инфу с стринггрида сохраняло в файл, не сохраняя при этом 1 столбец и 1 строку. А также открывало из файла не в 1...

Непонятнки с двумерным массивом и стринггридом
Пытаюсь реализовать метод Гаусса, на стринггриде, писал до этого просто на массиве для паскаля, сейчас разбираю фрагмент программы которая...

2
87 / 86 / 13
Регистрация: 21.10.2010
Сообщений: 349
19.12.2010, 10:24
Сохранение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 With SaveDialog1 do
    begin
if (Execute) then
      begin
        AssignFile(F, FileName);
        ReWrite(F);
        WriteLn(F, Sg1.RowCount - Sg1.FixedRows);
        WriteLn(F, Sg1.ColCount - Sg1.FixedCols);
 
        for i := 0 to Sg1.RowCount - 1 do
          for j := 0 to Sg1.ColCount - 1 do
          begin
            WriteLn(F, Sg1.Cells[j, i]);
          end;
end;
end;
Выгрузка
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (MainForm.OpenDialog1.Execute) then
    begin
      AssignFile(F, MainForm.OpenDialog1.FileName);
      Reset(F);
 
      Readln(F, RowCnt);
      Readln(F, ColCnt);
for i := 0 to FixedRows + RowCnt - 1 do
      begin
        if i = RowCount then
        begin
          RowCount := RowCount + 1;
        end;
        for j := 0 to FixedCols + ColCnt - 1 do
        begin
          Readln(F, StrTmp);
          Cells[j, i] := StrTmp;
       end;
end;
end;
0
0 / 0 / 1
Регистрация: 03.10.2010
Сообщений: 4
19.12.2010, 12:11  [ТС]
Vangok
А чего писать за место:RowCnt ColCnt FixedRows?)

Добавлено через 50 минут
Спасибо всем ещё раз, ответ я нашел, точнее помогли). Делее прилагается код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2010, 12:11
Помогаю со студенческими работами здесь

Управление СтрингГридом
- Здравствуйте Всем! Подскажите пожалуйста в одном простеньком для Вас вопросе. Как ЗАПРЕТИТЬ пользоваться отдельной ячейкой или...

Static , dynamic_cast, - ( Sender ) не работает сортировка корректно со вторым стринггридом!
Всем привет! :senor: сразу вопрос. есть PageControl с двумя вкладками. на каждой есть стрингрид. для сортировки по колонкам, в...

непонятки
у меня есть прога которая берет дабл и разделяет его на две сост. целое и дробное this->z = int(d); this->p = ( d - int(d)...

Непонятки с Wi-Fi
Есть два ноутбука: Asus g73sw и какой-то hp g6 на core i5 15.6 дюйма (название, к сожалению сейчас посмотреть не могу). Проблема такая: на...

Непонятки с GET
Добрый день! Есть кусок кода <script> var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", 'http://xxxx:8000/50x.html',...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru