Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > StringGrid


Автор: ZBugz 25.5.2007, 16:39
Привет всем  smile 
Как получить выделенную строку, точнее данные из колонок в StrinGrid.
Т.е. к примру, я выбираю строчку, потом жму кнопку, и мне нужно получить все данные этой строки из, к примеру 5 столбцов.
 smile 

Автор: _hunter 25.5.2007, 17:29
проходиш по всем Cels. текущий ряд -- Row.

Автор: ZBugz 25.5.2007, 17:54
Если бы я так мог, то не просил бы пример  smile 

Автор: Rodman 25.5.2007, 18:18
Код

procedure TForm1.FormCreate(Sender: TObject);
var i:Integer ;
begin
for i:=0 to StringGrid1.RowCount-1 do
  ShowMessage(StringGrid1.Cells[1,i]);
end;


Автор: MetalFan 25.5.2007, 18:35
а еще можно примерно так:
Код

  lStr := StringGrid.Rows[StringGrid.Row].Text;

Автор: ZBugz 25.5.2007, 18:53
Цитата(Rodman @ 25.5.2007,  18:18)
Код

procedure TForm1.FormCreate(Sender: TObject);
var i:Integer ;
begin
for i:=0 to StringGrid1.RowCount-1 do
  ShowMessage(StringGrid1.Cells[1,i]);
end;


Да мне не надо сразу все знать, мне нужно выделить и нажать кнопку, а вот кномпка должна знать, что я выделил.

Добавлено через 4 минуты и 33 секунды
Цитата(MetalFan @ 25.5.2007,  18:35)
а еще можно примерно так:
Код

  lStr := StringGrid.Rows[StringGrid.Row].Text;

Чето я не понял, а как его прикрутить ?  smile 

Автор: ivan219 25.5.2007, 19:15
Что тебе здесь не понятно:
Код

 lStr := StringGrid.Rows[StringGrid.Row].Text;

Выводит всю строку ну правда не чистую.

А если ненравится то делай так:
Код

var
  Form1: TForm1;
  FARow: Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  S: String;
begin
 for i:=0 to StringGrid1.RowCount-1 do
  S:=StringGrid1.Cells[I,FArow]+' '+S;
 Button1.Caption:=S;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 FARow:=ARow;
end;

Автор: MetalFan 25.5.2007, 21:02
ivan219, зачем все так сложно?
Цитата
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 FARow:=ARow;
end;

а зачем запоминать рисуемую строку???

TStringGrid.Row, TStringGrid.Col - координаты выделенной ячейки.
текст текущей строки:
Код

 lStr:=  StringReplace( AStringGrid.Rows[AStringGrid.Row].Text, sLineBreak, ' ', [rfReplaceAll]);



Автор: ivan219 26.5.2007, 10:42
Незнал незнал smile 

Автор: ZBugz 26.5.2007, 20:59
Цитата(ivan219 @ 25.5.2007,  19:15)
Что тебе здесь не понятно:
Код

 lStr := StringGrid.Rows[StringGrid.Row].Text;

Выводит всю строку ну правда не чистую.

А если ненравится то делай так:
Код

var
  Form1: TForm1;
  FARow: Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  S: String;
begin
 for i:=0 to StringGrid1.RowCount-1 do
  S:=StringGrid1.Cells[I,FArow]+' '+S;
 Button1.Caption:=S;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 FARow:=ARow;
end;

Все, спасибо, так работает, только почему как у Евреев, выводиться Caption с конца в начало  smile

Добавлено через 1 минуту и 30 секунд
Цитата(MetalFan @ 25.5.2007,  21:02)
ivan219, зачем все так сложно?
Цитата
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 FARow:=ARow;
end;

а зачем запоминать рисуемую строку???

TStringGrid.Row, TStringGrid.Col - координаты выделенной ячейки.
текст текущей строки:
Код

 lStr:=  StringReplace( AStringGrid.Rows[AStringGrid.Row].Text, sLineBreak, ' ', [rfReplaceAll]);

Вот это по нашему  smile 


Всем спасибо за помощь, а то я уже голову сломал про это  smile 

Еще может этот топик посмотрите ? http://forum.vingrad.ru/forum/topic-145371/kw-bitmap-strinngrid.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)