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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2008, 15:08   #21
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
не разберусь никак
Пусть у вас всего 5 строк и вам нужно удалить третью.
Тогда ваши действия таковы:
- переписать содержимое ячеек четвертой строки в третью, а пятой - в четвертую. Конечно, это делается двойным циклом (первый - от номера удаляемой строки до конца грида, и внутренний - по столбцам (ячейкам строки) ).
- очистить содержимое ячеек пятой строки и уменьшить количество строк грида RowCount.
Зачем очищать? А затем, что если вы через некоторое время захотите добавить запись, добавите RowCount, то увидите в новой строке старые данные...

Последний раз редактировалось mihali4; 26.10.2008 в 15:27.
mihali4 вне форума Ответить с цитированием
Старый 26.10.2008, 17:45   #22
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
  StringGrid1.RowCount:=StringGrid1.RowCount-1;
  StringGrid1.Row:=StringGrid1.RowCount+1;
  StringGrid1.Col:=-1;
  StringGrid1.SetFocus;
  end;
Так? получается что в последнюю строку записывается предпоследняя строка?
Xeon332 вне форума Ответить с цитированием
Старый 26.10.2008, 19:38   #23
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вроде бы я по шагам расписал...
Ну ладно, вот (то, что я в посте номер 21 писал):
Код:
procedure TForm1.Button3Click(Sender: TObject);
var i,j: integer;
begin
//перебираем строки, начиная с удаляемой
for i:=3 to StringGrid1.RowCount-1 do //-1, т.к. нумерация с 0
//считаем, что у нас есть серый фиксированный столбец, иначе j:=0
for j:=1 to StringGrid1.ColCount-1 do //-1, т.к. нумерация с 0
//переписываем каждую ячейку строки i+1 в ячейку строки i
StringGrid1.Cells[j,i]:=StringGrid1.Cells[j,i+1];

//считаем, что у нас есть серый фиксированный столбец, иначе j:=0
for j:=1 to StringGrid1.ColCount-1 do 
//очищаем каждую ячейку последней строки i
StringGrid1.Cells[j,i]:='';
//вот теперь скрываем последнюю, уже пустую строку
StringGrid1.RowCount:=StringGrid1.RowCount-1;
StringGrid1.SetFocus;
end;
mihali4 вне форума Ответить с цитированием
Старый 27.10.2008, 04:37   #24
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Так это вроде ясно. я не пойму как сделать так, чтобы удаления происходило не строк, а записей в этих строках... Потому как при таком удалении строка удаляется, а после того как ещё строки создаешь, то записи удалённых строк оказываются сохраненными...
Xeon332 вне форума Ответить с цитированием
Старый 27.10.2008, 09:57   #25
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Код:
for j:=1 to StringGrid1.ColCount-1 do 
//очищаем каждую ячейку последней строки i
StringGrid1.Cells[j,i]:='';
//вот теперь скрываем последнюю, уже пустую строку
StringGrid1.RowCount:=StringGrid1.RowCount-1;
StringGrid1.SetFocus;
По-моему mihali4 уже написал как это сделать...
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.10.2008, 15:32   #26
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

с этим более менее понятно...
организовывать запись в файл таким образом ведь можно?:

Код:
procedure TForm1.Button5Click(Sender: TObject);
var
f: textfile;
i, j: integer;
begin
assignfile(f,Filename);
rewrite(f);
writeln(f, grid.colcount);
writeln(f, grid.rowcount);
for i := 0 to grid.colcount - 1 do
for j := 0 to grid.rowcount - 1 do
writeln(F, grid.cells[i, j]);
closefile(f);
end;
Но Delphi матерится, не принимая grid.colcount и grid.rowcount, к тому же определяет (f,Filename) как неидентифицированные переменные...
Xeon332 вне форума Ответить с цитированием
Старый 27.10.2008, 17:06   #27
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

а можно ли как нибудь по другому организовать запись в файл?...

Код:
procedure TForm1.Button5Click(Sender: TObject);
begin
SaveGrid(form1.StringGrid,'Grid1.txt');
end;
вот так сделал по образцу сохранения. вычитал из книги. но тоже не работает, хотя вроде все так как надо...
Xeon332 вне форума Ответить с цитированием
Старый 27.10.2008, 17:17   #28
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Нету у грида такого свойства - текст. Скачайте-ка себе с сайта клуба книжку про 100 компонентов Дельфи и почитайте на досуге.
mihali4 вне форума Ответить с цитированием
Старый 27.10.2008, 17:55   #29
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

ну а почему тогда вариант с кодом:
Код:
procedure TForm1.Button5Click(Sender: TObject);
var
f: textfile;
i, j: integer;
begin
assignfile(f,Filename);
rewrite(f);
writeln(f, grid.colcount);
writeln(f, grid.rowcount);
for i := 0 to grid.colcount - 1 do
for j := 0 to grid.rowcount - 1 do
writeln(F, grid.cells[i, j]);
closefile(f);
end;
не работает? ведь по идее всё правильно!
Xeon332 вне форума Ответить с цитированием
Старый 27.10.2008, 18:16   #30
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А где определена переменная "Filename"?
А ваш StringGrid имеет имя "grid" ?
Качайте и читайте книгу - она обязана быть у вас под рукой!
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Электронный Справочник Killbrum Софт 14 15.10.2017 20:44
Телефонный справочник на TC Qai Фриланс 5 25.05.2008 01:02
телефонни справочник bmb_66 БД в Delphi 8 25.02.2008 12:11
справочник по прерываниям serres Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 22.12.2007 16:17
справочник bill Помощь студентам 3 22.05.2007 16:03