Главная страница
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.044 c
1-1080333572
alienserg
2004-03-26 23:39
2004.04.18
отладка сервиса. Как?


3-1079453414
DataBase
2004-03-16 19:10
2004.04.18
Сортировка в DBGridEh


1-1080566692
SMT
2004-03-29 17:24
2004.04.18
Font embedding в исполняемый файл


6-1077183962
NTDim
2004-02-19 12:46
2004.04.18
Маппинг портов


14-1080219114
Layner
2004-03-25 15:51
2004.04.18
На работе у нас дурдом! (Отдел ИТ крупной компании)