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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2018, 16:58   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
Вопрос как добавить/удалить строку в StringGrid в позиции под курсором мыши?

Подскажите, пожалуйста, как добавить/удалить строку в StringGrid в позиции под курсором мыши.
Shouldercannon вне форума Ответить с цитированием
Старый 16.05.2018, 17:17   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

это как? подвёл мышку и строка удалилась/добавилась?
а пока мышку будете подводить, как программа поймёт, что ничего делать не надо?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2018, 19:04   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
это как? подвёл мышку и строка удалилась/добавилась?
а пока мышку будете подводить, как программа поймёт, что ничего делать не надо?
Извиняюсь. Добавление/удаление через PopupMenu
Shouldercannon вне форума Ответить с цитированием
Старый 16.05.2018, 19:34   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

StringGrid.MouseToCell - узнать индекс строки по курсору

Здесь можно вариант вставки в #9 подсмотреть

http://www.programmersforum.ru/showt...ht=TCustomGrid

Там же где-то ниже и удаление строки есть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.05.2018 в 19:50.
Аватар вне форума Ответить с цитированием
Старый 17.05.2018, 19:08   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

В той теме погиб на
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  StringGrid1.InsertRow(0);
end;
Нашёл такой способ
Код:
unit Unit1;

,,,

type
  TStringGridHack = class(TStringGrid)
  protected
    procedure DeleteRow(ARow: Longint); reintroduce;
    procedure InsertRow(ARow: Longint);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TStringGridHack.DeleteRow(ARow: Longint);
var
  GemRow: Integer;
begin
  GemRow := Row;
  if RowCount > FixedRows + 1 then inherited DeleteRow(ARow)
  else Rows[ARow].Clear;
  if GemRow < RowCount then Row := GemRow;
end;

procedure TStringGridHack.InsertRow(ARow: Longint);
var
  GemRow: Integer;
begin
  GemRow := Row;
  while ARow < FixedRows do Inc(ARow);
  RowCount := RowCount + 1;
  MoveRow(RowCount - 1, ARow);
  Row := GemRow;
  Rows[Row].Clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  TStringGridHack(StringGrid1).InsertRow(0);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  TStringGridHack(StringGrid1).DeleteRow(0);
end;

end.
Только как теперь передать строку, на которой было открыто PopupMenu?
Shouldercannon вне форума Ответить с цитированием
Старый 17.05.2018, 19:57   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
procedure TForm1.PopupItem1Click(Sender: TObject);
var xPos: TPoint;
    xCol,xRow: Integer;
begin
  xPos:=StringGrid1.ScreenToClient(Mouse.CursorPos);
  StringGrid1.MouseToCell(xPos.X,xPos.Y,xCol,xRow);
  ShowMessage(IntToStr(xRow));
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TChart. Как взять значение точки на оси Х под курсором мыши Fasta Компоненты Delphi 12 13.02.2016 15:38
Не могу прочитать строку под курсором мыши в документе Word Mary_fs C++ Builder 0 17.06.2014 17:20
Добавить строку в файл с нужной позиции Fakov Общие вопросы Delphi 2 15.12.2012 15:51
как удалить строку из combobox, если такая уже есть и добавить в начало новую? codermoder Общие вопросы Delphi 6 14.01.2011 17:33
Как узнать HANDLE компонента который находится под курсором мыши SeRhy Общие вопросы Delphi 7 04.02.2009 20:39