Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Удаление/добавление строк в StringGrid   Найти похожие ветки 

 
silya ©   (2004-04-03 17:51) [0]

Вот такая проблема.
Что-то пробую-пробую не получается.
Может кто чего подскажет или ссылку даст (конечно желательнее этот вариант).
Заранне спасибо


 
YurikGl ©   (2004-04-03 18:01) [1]

Добавляются и удаляются строки изменением их количества.


 
silya ©   (2004-04-03 18:13) [2]

RowCount - 1
RowCount + 1
это я знаю, но мне надо
удалять текущую строку
вставлять новую строку после текущей
последння строка фиксированная


 
YurikGl ©   (2004-04-03 18:18) [3]

Я в свое время переносил ручками. Т.е. RowCount + 1 потом последней строке присаиваешь предпоследнюю и т.д.


 
silya ©   (2004-04-03 18:22) [4]

Это не то
Я ищу более универсальный метод


 
YurikGl ©   (2004-04-03 18:24) [5]

Попробуй ListView1 в режиме vsReport


 
silya ©   (2004-04-03 18:27) [6]

Работа должна вестись только со StringGrid"ом


 
YurikGl ©   (2004-04-03 18:36) [7]

А какая задача стоит?


 
silya ©   (2004-04-03 18:38) [8]

1) вставка пустой строки перед текущей;
2) удаления текущей строки;
Последння строка "Итого" фиксированная


 
YurikGl ©   (2004-04-03 19:03) [9]

Если дело только в последней строке, то набери ее из Edit-ов.


 
silya ©   (2004-04-03 19:40) [10]

Все должно быть именно в таблице


 
silya ©   (2004-04-03 20:49) [11]

Все решение нашел.
Кому интересно привожу код:

// Удаление текущей строки
procedure TForm2.Button1Click(Sender: TObject);
var
  i,j: integer;
begin
  with StringGrid1 do
  begin
     if RowCount > 3 then
     begin
        if Row <> RowCount - 1 then
        begin
           for i := Row to RowCount - 1 do
              for j := 0 to ColCount - 1 do
              begin
                 if i = RowCount - 1 then
                    Cells[j,i] := ""
                 else
                    Cells[j,i] := Cells[j,i + 1]
              end;
           RowCount := RowCount - 1;
        end
        else
           MessageDLG("Удаление строки запрещено!", mtError, [mbOk],0);
     end
     else
        MessageDLG("Должно остаться не менее трех строк", mtInformation, [mbOk],0);
  end;
  FormCreate(Sender);
end;

// Добавление пустой строки перед текущей
procedure TForm2.Button5Click(Sender: TObject);
var
  i, j: integer;
begin
  with StringGrid1 do
  begin
     RowCount := RowCount + 1;
     for i := RowCount - 2 downto Row - 1 do
        for j := 0 to ColCount - 1 do
        begin
           if i = Row - 1 then
              Cells [j, i + 1] := ""
           else
              Cells[j,i + 1] := Cells [j,i];
        end;
  end;
  FormCreate(Sender);
end;


Ещё может что нибудь покрасивее придумаю


 
silya ©   (2004-04-03 20:53) [12]

Примечание
FormCreate(Sender) - инициализация названий столбцов таблицы (нумерация строк, подпись столбцов)
не актуальна



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
14-1079916395
AZ
2004-03-22 03:46
2004.04.18
Как вы делаете “бэкап” проекта при перерыве в работе?


6-1076919580
Leech
2004-02-16 11:19
2004.04.18
Передача файла средствами TCP/IP


6-1072497941
john
2003-12-27 07:05
2004.04.18
виснет клиент из примера по Indy (Chat)


14-1079870793
TT
2004-03-21 15:06
2004.04.18
Интернет-магазины


6-1076263145
Захар
2004-02-08 20:59
2004.04.18
Как построить почтовый (SMTP &amp; POP3) сервер?