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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 16:49   #1
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
Восклицание удаление и вставка строки в StringGid (Delphi)

доброго времени суток!!!

Помогите разобраться с удалением и вставкой в StringGid.
Необходимо чтобы можно было вставить и удалить строку в нужном месте.

вот мой вариант удаления строки:
Код:
procedure TForm1.Button_delClick(Sender: TObject);
var
  i,j: Integer;
begin
  j:=StringGrid1.Row; // строка с выделением
  StringGrid1.Rows[j].Clear;
  for i:=j to StringGrid1.RowCount-2 do
    StringGrid1.Rows[i].Assign(StringGrid1.Rows[i+1]);
  StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
Удаление в нужном месте получилось, вот только если начинаешь удалять все записи по очереди и дело подходит к фиксированной строке с наименованием столбцов, фиксированную строку удаляет тоже.
подскажите ка сделать что бы не удалялась фиксированная строка.
А с вставкой строки в нужном месте вообще в голову нечего кроме стандартной вставки не приходит.
Господа профессиональные программисты помогите новичку в этом поприще.
konsul_81 вне форума Ответить с цитированием
Старый 02.05.2010, 19:08   #2
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
Вопрос

с удалением проблему решил

Код:
procedure TForm1.Button_delClick(Sender: TObject);
var
  i,j: Integer;
begin
  j:=StringGrid1.Row; 
  if (j = 1) and (StringGrid1.RowCount <= 2) then
   begin
    with StringGrid1 do
     for i:= 0 to ColCount - 1 do Cells[i, j]:= '';
    exit; // не удаляем последнюю строку чтобы не потерять фиксированной
   end;
  StringGrid1.Rows[j].Clear;
  for i:=j to StringGrid1.RowCount-2 do
    StringGrid1.Rows[i].Assign(StringGrid1.Rows[i+1]);
  StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;

пойду по шаманю над вставкой строки в нужном месте
вот только вообще придумать пока ни чего не могу
может кто подкинет идею?
konsul_81 вне форума Ответить с цитированием
Старый 02.05.2010, 20:18   #3
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
Восклицание

мне предложили такой вариант:

Код:
procedure SGInsertRow(SG: TStringGrid; NewRow: Integer);   
var  
  i: Integer;   
begin  
  if NewRow < 0 then  
    NewRow := 0; // либо 1, задайте нужное вам поведение   
  with SG do  
  begin  
    RowCount := RowCount + 1;   
    if NewRow < RowCount - 1 then  
    begin  
      for i := RowCount - 1 downto NewRow + 1 do  
        Rows[i].Assign(Rows[i - 1]);   
    end;   
    Rows[NewRow].Clear;   
  end;   
end;
 //--------------------------------------------------------------------
procedure TForm1.Button_insClick(Sender: TObject);
begin
SGInsertRow(StringGrid1,2);
end;
только он вставляет во вторую строку, а мне надо над или под выделенной строкой
может у кого есть варианты
konsul_81 вне форума Ответить с цитированием
Старый 02.05.2010, 21:03   #4
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
По умолчанию удаление и вставка строки в StringGid (Delphi) ворос решен

вот переправленный вариант:
Код:
procedure SGInsertRow(SG: TStringGrid; NewRow: Integer);   
var  
  i: Integer;   
begin  
  if NewRow < 0 then  
    NewRow := 0; // либо 1, задайте нужное вам поведение   
  with SG do  
  begin  
    RowCount := RowCount + 1;   
    if NewRow < RowCount - 1 then  
    begin  
      for i := RowCount - 1 downto NewRow + 1 do  
        Rows[i].Assign(Rows[i - 1]);   
    end;   
    Rows[NewRow].Clear;   
  end;   
end;


 procedure TForm1.Button_insClick(Sender: TObject);
begin
 SGInsertRow(StringGrid1,StringGrid1.Row); //Вставляет перед выделенной ячейкой
 // SGInsertRow(StringGrid1,StringGrid1.Row + 1); //Вставляет после выделенной ячейки
end;
получился монолог сам задал вопрос, сам на него ответил

вот до кучи исходник может кому нибудь поможет
тут загрузка/сохранение,вставка/удаление
Вложения
Тип файла: rar string_grid.rar (9.8 Кб, 31 просмотров)
konsul_81 вне форума Ответить с цитированием
Старый 03.05.2010, 09:19   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мне больше нравится такой вариант удаления:
Код:
type
  TCrtfoxGrid=class(Grids.TCustomGrid);
...
TCrtfoxGrid(StringGrid1).DeleteRow(0);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. StringGrid. PopupMenu. Удаление строки Neroaz Помощь студентам 3 04.04.2010 16:51
SQL и Python - удаление/вставка таблиц и эл-ов, доступ к БД Graf Xandr Фриланс 2 24.02.2010 01:52
Вставка битовой строки Svistaplas48 Помощь студентам 2 30.09.2009 18:14
Delphi. Удаление строки. Xeon332 Помощь студентам 18 11.11.2008 15:55
Вставка/удаление из строки. t3ns0r Общие вопросы C/C++ 3 11.10.2008 17:58