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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2010, 10:50   #1
Lenux
 
Регистрация: 20.10.2009
Сообщений: 9
По умолчанию Как удалить, определённый элемент из стринггрида?

Народ помогите пожалуста решить эту проблему, я вчера писал уже по этой теме, но никто не откликнулся. Мне нужно удалить из стринггрида определённый элемент, к примеру второй столбец стринггрида заполнен числами: 20, 10, 5, 6, 5, 7. В Edit.Text я ввожу к примеру 5, жму кнопку, и он у меня удаляет все 5 из стринггрида.

Помогите пожалуста!!!
Lenux вне форума Ответить с цитированием
Старый 14.03.2010, 13:20   #2
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Используй свойство Cells, набери в редакторе кода StringGriid1. итебе выйдет список доступных свойств этого компонента.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 14.03.2010, 17:55   #3
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Я подозреваю что это продолжение вот этого: *****

и удалить нужно строку если там содержится число 5


Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 with stringGrid1 do
  Options:=Options+[goEditing];
end;

procedure TForm1.Button1Click(Sender: TObject);

   procedure GridDeleteRow(RowNumber: Integer; Grid: TstringGrid);
    var
      i: Integer;
    begin
      Grid.Row := RowNumber;
      if (Grid.Row = Grid.RowCount - 1) then
        Grid.RowCount := Grid.RowCount - 1
      else
      begin
        for i := RowNumber to Grid.RowCount - 1 do
          Grid.Rows[i] := Grid.Rows[i + 1];
        Grid.RowCount := Grid.RowCount - 1;
      end;
    end;
   
   
begin
GridDeleteRow(3, stringGrid1);
end;
end.
Жми на весы!!!

Последний раз редактировалось Chudo4258; 14.03.2010 в 17:58.
Chudo4258 вне форума Ответить с цитированием
Старый 14.03.2010, 18:57   #4
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Готово: Lenux.rar

Код:
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;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
type TComp=record
name:string[10];
Year:integer;
Cost:extended;
end;

var F:file of TComp;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var comp:TComp;
i:integer;
begin
AssignFile(F,'info.txt');
try
Reset(F);
except on EinoutError do
Rewrite(F);
end;
with StringGrid1 do
begin
RowCount:=FileSize(F)+1;
for i:=1 to FileSize(F) do
begin
read(F,comp);
Cells[1,i]:=comp.name ;
Cells[2,i]:=IntToStr(comp.year) ;
Cells[3,i]:=Floattostr(comp.cost);
end;
end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
var comp:TComp;
begin
comp.name:=edit1.Text;
comp.year:=StrToInt(edit2.Text);
comp.cost:=strtofloat(edit3.Text);
Seek (F,FileSize(F));
Write(F,comp);

with StringGrid1 do
begin
Rowcount:=FileSize(F)+1;
Cells[1,FileSize(F)]:=comp.name;
Cells[2,FileSize(F)]:=IntToStr(comp.year);
Cells[3,FileSize(F)]:=floattostr(comp.Cost);
end;
end;

   procedure GridDeleteRow(RowNumber: Integer; Grid: TstringGrid);
    var
      i: Integer;
    begin
      Grid.Row := RowNumber;
      if (Grid.Row = Grid.RowCount - 1) then
        Grid.RowCount := Grid.RowCount - 1
      else
      begin
        for i := RowNumber to Grid.RowCount - 1 do
          Grid.Rows[i] := Grid.Rows[i + 1];
        Grid.RowCount := Grid.RowCount - 1;
      end;
    end;

procedure TForm1.Button2Click(Sender: TObject);
var i,a:integer;
d:string;
FTemp: file of TComp;
begin
d:=InputBox('Hello','Enter computer year to delete',' ');
a:=0;
for i:=0 to StringGrid1.RowCount+1 do
begin
if StringGrid1.Cells[2,i] = d then
 GridDeleteRow(i, stringGrid1);
end;
end;
end.
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++/STL как правильно удалить элемент из вектора? Ultimate Общие вопросы C/C++ 4 04.09.2009 20:36
добавить/удалить элемент Revenholm Общие вопросы C/C++ 3 13.06.2009 17:17
Массив в Си. как определить и удалить строчку в которой находится макс элемент Софья9 Помощь студентам 15 11.06.2009 18:46
Удалить элемент массива pavel42 Помощь студентам 14 21.05.2009 08:52
удалить максимальный элемент из квадратной матрицы rev1ver Паскаль, Turbo Pascal, PascalABC.NET 6 20.01.2009 15:31