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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2013, 12:19   #1
Поликарп
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 30
По умолчанию StringGrid и radiobutton, удаление строк

Добрый день! прошу помощи : у меня есть StringGrid в котором содержатся данные, и есть 3 radiobutton. проблема в следующем, мне надо с помощью radiobutton удалять из таблицы строки(в данном случае по виду монеты : памятная ,инвестиционная , иностранная), т.е оставлять те монеты,которые имеют то или иное значение.
Изображения
Тип файла: jpg Безымянный.JPG (140.4 Кб, 127 просмотров)
Поликарп вне форума Ответить с цитированием
Старый 19.03.2013, 13:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проходите в цикле от последней строчки к первой, если условие выполняется (в нужном столбце именно выбранный текст), удаляете строчку грида, переписываете все оставшиеся строчки на освободившееся место.


p.s. Хотите, могу набросать пример кода и выложить вам сюда в виде картинки?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2013, 13:45   #3
Поликарп
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 30
По умолчанию

было бы замечательно,

собственно вот сама процедура, что я нахимичил:
Код:
procedure TForm2.Button5Click(Sender: TObject);
var
i: Integer;
begin
if radiobutton10.Checked=true then
begin
for i:=0 to sgreg.RowCount-1 do
for j:=0 to sgreg.RowCount-1 do
while i<=(sgreg.RowCount-1) do begin
if sgreg.Rows[i]='иностранная' then begin
DeleteARow(sgreg,i);
end
end;
end;
end;
может весь код проекта скинуть?

Последний раз редактировалось Stilet; 20.03.2013 в 09:14.
Поликарп вне форума Ответить с цитированием
Старый 19.03.2013, 13:52   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
проходите в цикле от последней строчки к первой
Код:
for i:=..RowCount-1 downto 0 do 
  if ... then 
   DeleteRow(...,i);
end;
Цитата:
='иностранная'
это значение определенной ячейки (Cells) в определенной колонке (?) и нужной строке (i)
Код:
Cells[?,i]
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.03.2013 в 14:09.
evg_m вне форума Ответить с цитированием
Старый 19.03.2013, 14:11   #5
Поликарп
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 30
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
for i:=..RowCount-1 downto 0 do 
  if ... then 
   DeleteRow(...,i);
end;
это значение определенной ячейки (Cells) в определенной колонке (?) и нужной строке (i)
Код:
Cells[?,i]

for i:=sgreg.RowCount-1 downto 0 do
if sgreg.Rows[i]='иностранная' then
DeleteRow(sgreg,j);
end;

так получается?
Поликарп вне форума Ответить с цитированием
Старый 19.03.2013, 14:44   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нет. не так!

примерно так:
Код:
for i:=sgreg.RowCount-1 downto 1 do 
   if trim( sgreg.Cells[ 13, i] ) = 'иностранная' then 
        DeleteRow(sgreg,i);
13 - это номер столбца с типом монеты, если я не ошибся в подсчёте столбцов, конечно...


только позвольте поинтересоваться, а процедура DeleteRow у Вас есть?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2013, 14:52   #7
Поликарп
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 30
По умолчанию

да ,13-там вид монеты записан, процедура DeleteRow есть :

Код:
procedure GridDeleteRow(RowNumber: Integer; sgreg: TstringGrid);
var
i: Integer;
begin
sgreg.Row := RowNumber;
if (sgreg.Row = sgreg.RowCount - 1) then
{ On the last row}
sgreg.RowCount := sgreg.RowCount - 1
else
begin
{ Not the last row}
for i := RowNumber to sgreg.RowCount - 1 do
sgreg.Rows[i] := sgreg.Rows[i + 1];
sgreg.RowCount := sgreg.RowCount - 1;
end;
end;



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 19.03.2013 в 15:00.
Поликарп вне форума Ответить с цитированием
Старый 19.03.2013, 14:59   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

предупреждая следующий вопрос на форуме
позвольте полюбопытствовать а какую строчку вы будете копировать последней.
не в какую (а из какой)
Цитата:
Код:
for i := RowNumber to sgreg.RowCount - 1 do
sgreg.Rows[i] := sgreg.Rows[i + 1];
чему будет равно i+1 если i будет равно rowCount-1 ?
и еще
чему будет равно новое значение RowCount если начальное =1 ? а если 0 ?
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.03.2013 в 15:02.
evg_m вне форума Ответить с цитированием
Старый 19.03.2013, 15:00   #9
Поликарп
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 30
По умолчанию

удаление по 1 строке,

procedure TForm2.Button5Click(Sender: TObject);
var
i: Integer;
begin
GridDeleteRow(1, sgreg);
end;
Поликарп вне форума Ответить с цитированием
Старый 19.03.2013, 15:03   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
процедура DeleteRow есть :
Код:
procedure GridDeleteRow(RowNumber: Integer; sgreg: TstringGrid);
О! Вы уверены, что у Вас есть процедура DeleteRow ?!!
в приведённом Вам код процедура с ДРУГИМ наименованием (и, кстати, параметры не в том порядке стоят!)

впрочем, думаю, что Вы уже догадались, как вместо DeleteRow(sgreg,i);
написать:
Код:
GridDeleteRow(i, sgreg )
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление пустых строк в StringGrid с "поднятием" остальных artemavd Общие вопросы Delphi 12 30.05.2013 09:12
удаление строки и смещение остальных строк вверх в StringGrid SPD Общие вопросы Delphi 1 01.08.2011 13:26
Удаление строк и столбцов в StringGrid Sarumjan Общие вопросы C/C++ 2 17.10.2010 20:38
перенос строк удаление ненужных строк HelperAwM Microsoft Office Excel 5 26.06.2010 18:42
StringGrid - удаление строк и столбцов ReM Общие вопросы Delphi 4 22.12.2008 19:17