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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2014, 18:14   #11
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Код:
with StringGrid1 do begin
    ColCount:=ColCount+1;
    Cols[0].Text:=Edit1.Text+#13#10+Cols[0].Text;
    Cols[1].Text:=memo1.Text+#13#10+Cols[0].Text;
  end;
так добавляется толка на первую строку и исчезаеть ранее введенные

Код:
if StringGrid1.Cells[0, 0]<>'' then StringGrid1.RowCount:=StringGrid1.RowCount+1;
  StringGrid1.Cols[0].insert(StringGrid1.FixedRows,Edit1.Text);
  StringGrid1.Cols[1].insert(StringGrid1.FixedRows,memo1.Text);
иак выдает ошибку

(Сannot insert or delete rows from grid)

Последний раз редактировалось Stilet; 05.11.2014 в 18:30.
alman12 вне форума Ответить с цитированием
Старый 05.11.2014, 18:35   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Эх студент студент...
Держи, пока у мну чувство юмора живо:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.StringGrid1Click(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with StringGrid1 do begin
    RowCount:=RowCount+1;
    Cols[0].Text:=Edit1.Text+#13#10+Cols[0].Text;
    Cols[1].Text:=trim(memo1.Text)+#13#10+Cols[1].Text;
  end;
end;

end.
А теперь внимание фокус: Правильный ответ дан в посте http://www.programmersforum.ru/showp...97&postcount=4
И ни-и-иче ты с этим не поделаешь.
Хотя бы потому что данные из мемо будут садиться некорректно из-за переносов строк.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2014, 19:21   #13
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Эх студент студент...
Держи, пока у мну чувство юмора живо:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.StringGrid1Click(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with StringGrid1 do begin
    RowCount:=RowCount+1;
    Cols[0].Text:=Edit1.Text+#13#10+Cols[0].Text;
    Cols[1].Text:=trim(memo1.Text)+#13#10+Cols[1].Text;
  end;
end;

end.
А теперь внимание фокус: Правильный ответ дан в посте http://www.programmersforum.ru/showp...97&postcount=4
И ни-и-иче ты с этим не поделаешь.
Хотя бы потому что данные из мемо будут садиться некорректно из-за переносов строк.

спасибо ! так получился

как данные из мемо некорректно будут отображатся ?
alman12 вне форума Ответить с цитированием
Старый 05.11.2014, 20:02   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как данные из мемо некорректно будут отображатся ?
Переносы строк могут подействовать на грид, сдвигая ячейки. Каждая новая строка в мемо попадет в новую ячейку сдвигая остальные строки перед ней.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2014, 20:31   #15
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

спасибо брат
alman12 вне форума Ответить с цитированием
Старый 06.11.2014, 02:26   #16
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Почему?
Потому что TStringGrid изначально (в Д1) умел только добавлять строки "снизу". И редактировать ячейки. Ровно столько же он умеет и сейчас.
Методы в protected секции не рассматриваю, ибо они скорее были сделаны как пример.
northener вне форума Ответить с цитированием
Старый 06.11.2014, 07:28   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ровно столько же он умеет и сейчас.
Ну это никогда не было преградой.
Впрочем я с тобой согласен в данном случае. Я бы выбрал ListView.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2014, 02:34   #18
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну это никогда не было преградой.
Ну не скажи. Примером является и этот топик и прочие подобные, где речь идёт о работе со строками в TStringGrid. Как например реализован защищенный метод TStringGrid.DeleteRow.
Код:
procedure TCustomGrid.DeleteRow(ARow: Longint);
begin
  MoveRow(ARow, RowCount - 1);
  RowCount := RowCount - 1;
end;
Разве это нормальное (всем привычное) удаление строки? Не важно в текстовом файле, таблице Ёксель и т.д. и т.п.
Как сделать нормальное удаление? Написать свой компонент наследник. Два пальца об асфальт. Но как быть дальше если сей код используется кем-то другим?
Цитата:
Сообщение от Stilet Посмотреть сообщение
Впрочем я с тобой согласен в данном случае. Я бы выбрал ListView.
Так и есть. В реальном малобюджетном проекте нет альтернатив TListView в режиме vsReport. Да и выглядит он более современно..
northener вне форума Ответить с цитированием
Старый 07.11.2014, 09:02   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Разве это нормальное (всем привычное) удаление строки?
Не привычное. Но и не повод для брюзжания. ListView в основном удобней, но и на StringList можно конфетку сделать в определенных ситуациях. Не думаю, что отсутствие прозрачных методов вставки и удаления такой жирный крест ставит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.11.2014, 19:19   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Примером является и этот топик и прочие подобные
Этот топик вообще примером быть не может ничему
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При удаление строк, картинки съезжают на 1 строку вниз Maxim360 Microsoft Office Excel 0 17.07.2013 17:02
Listbox добавить строку Кольша Общие вопросы Delphi 1 12.01.2012 18:57
Как переместить строку ListBox вверх и вниз Aleksandr Общие вопросы Delphi 1 18.04.2011 16:16
Добавить строку SkrudjMakdak Microsoft Office Excel 1 05.09.2010 18:06
Как вставить диапазон в конкретную строку листа Excel со сдвигом вниз имеющихся? malor Microsoft Office Excel 3 17.01.2010 17:48