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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2008, 12:56   #1
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию StringGrid - удаление строк и столбцов

Доброе время суток...
Подскажите пожалуйста каким образом из StringGrid'а можно удалить определенную сторку и столбец.
ReM вне форума Ответить с цитированием
Старый 12.12.2008, 13:20   #2
AndrzejX
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 55
По умолчанию

Удаление строки:

procedure TForm1.SGRowDel;
var I, J: Integer;
begin
ToolButton1.Enabled:=True;
FOR J:=SG.Row+1 TO Sg.RowCount-1 DO
FOR I:=0 TO Sg.ColCount-1 DO
Sg.Cells[I, J-1]:=Sg.Cells[I, J];
Sg.RowCount:=Sg.RowCount-1;

SG - имя вашего StringGrid'а
Удаление столбца аналогично
AndrzejX вне форума Ответить с цитированием
Старый 16.12.2008, 11:44   #3
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию

Все подставил, но удаляет всеравно не корректно... ...проверьте пожалуста.
Вот код для проверки.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
     { Public declarations }
  end;

var
  Form1: TForm1;
  i,x,y:integer; //i - размерность матрицы; х - удоляемая строка StrinGG;
                 //y - удоляемый столбец StrinGG
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='n\n';

end;

procedure TForm1.Button1Click(Sender: TObject);   // Задаем размерность
                                                  // матрицы в StrinGG
var j:integer;
begin
i:= StrToInt(edit1.Text);
stringGrid1.RowCount:=i+1;
stringGrid1.ColCount:=i+1;

for j:=1 to i do
 begin
    stringGrid1.Cells[0,j]:=IntToStr(j);
    StringGrid1.Cells[j,0]:=IntToStr(j);
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);    // Находим максимальный эл-т
var ma,mi,j,p:integer;  // ma - максимальный эл-т; mi - текущий эл-т StrinGG;
                        // j - строка StrinGG; p - столбец StrinGG
begin
ma:=0;
mi:=0;

for j:=1 to i do
 for p:=1 to i do
  begin
    mi:=StrToInt(stringGrid1.Cells[j,p]);
    if mi>ma then
     begin
      ma:=mi;
      x:=j;
      y:=p;
     end
  end;

label1.Caption:=IntToStr(ma); //Вывод Максимального эл-та

end;





procedure TForm1.Button3Click(Sender: TObject);
begin
//ToolButton1.Enabled:=True;

FOR y:=StringGrid1.Row+1 TO StringGrid1.RowCount-1 DO //Удаление строки
FOR x:=0 TO StringGrid1.ColCount-1 DO
StringGrid1.Cells[x, y-1]:=StringGrid1.Cells[x, y];
StringGrid1.RowCount:=StringGrid1.RowCount-1;

FOR x:=StringGrid1.Col+1 TO StringGrid1.ColCount-1 DO // Удаление столбца
FOR y:=0 TO StringGrid1.RowCount-1 DO
StringGrid1.Cells[y, x-1]:=StringGrid1.Cells[y, x];
StringGrid1.ColCount := StringGrid1.ColCount-1;

end;

end.
2AndrzejX я для какой цели ты мне эту строку бросил:ToolButton1.Enabled:=True;?? ?

Последний раз редактировалось ReM; 16.12.2008 в 14:18.
ReM вне форума Ответить с цитированием
Старый 22.12.2008, 12:26   #4
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию

Может всетаки кто нить подскажит , где допущена ошбка?!

Задание следующее:
"Из матрицы n-го порядка получить матрицу порядка n-1 путем удаления из исходной матрицы строки и столбца,на пересечении которых расположен элемент с наибольшим по модулю значением".
ReM вне форума Ответить с цитированием
Старый 22.12.2008, 19:17   #5
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

Код:
procedure TForm1.e1Click(Sender: TObject);
var
  i, j: integer;
begin
  for I := StringGrid1.Row to StringGrid1.RowCount - 1 do
  begin
    for j := 1 to StringGrid1.ColCount - 1 do
    begin
    StringGrid1.Cells[j, i]:=StringGrid1.Cells[j, i+1];
    end;
  end;
end;
тут именно строки, делается смещение для переноса всей строки вниз, что бы удалить столбцы делай по аналогии
у меня это отлично удаляет строки, пробуй
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 22.12.2008 в 19:20.
KORN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление столбцов в DBGrid-e artemavd БД в Delphi 4 24.10.2008 14:30
Скрытие строк и столбцов Gawwws Microsoft Office Excel 4 19.10.2008 00:02
Запрет на удаление строк и столбцов Shavminator Microsoft Office Excel 2 12.01.2008 13:36
Скрытие ненужных строк/столбцов Bayers Microsoft Office Excel 4 19.10.2007 12:05
Вывод столбцов StringGrid в Edit ***СкаЙ*** Помощь студентам 1 04.05.2007 08:16