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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2009, 11:44   #1
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию StringGrid по нажатию...

Вообщем есть StringGrid, хочу сделать так чтобы делалось определенное действие при нажатии на левую кнопку (по колонке в stringgrid'е которая), и еще определенное действие при нажатии на правую кнопку...

Как такое реализовать? (событие OnClick не прокатывает так как я могу левой кнопкой кликнуть или правой, а действия разные же должны производиться, и еще там не определяется по какой колонке я кликнул)(событие SelectCell не подходит,хотя он и определяет по какой колонке я кликнул (ACol,ARow) но события кнопками должны быть разными(левая кнопка - одно действие, правая кнопка - другое действие))
Ах да интересует еще токо при двойном клике!

Последний раз редактировалось zotox; 17.07.2009 в 18:15.
zotox вне форума Ответить с цитированием
Старый 17.07.2009, 12:02   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Ну хотя бы вот так
Код:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Col));
  end;

  if Button = mbRight then
  begin
    ShowMessage('mbRight - ' + IntToStr(StringGrid1.Col));
  end;
end;
psycho-coder вне форума Ответить с цитированием
Старый 17.07.2009, 15:19   #3
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Ну хотя бы вот так
Код:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Col));
  end;

  if Button = mbRight then
  begin
    ShowMessage('mbRight - ' + IntToStr(StringGrid1.Col));
  end;
end;
такое не идет... нужно еще определенние col,row (stringgrid) (на скоко я знаю X, Y: Integer - это не определенние col,row) (или я ошибаюсь на счет X,Y ?)

Последний раз редактировалось zotox; 17.07.2009 в 15:22.
zotox вне форума Ответить с цитированием
Старый 17.07.2009, 15:24   #4
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Посмотри здесь. 10 пост psycho-coder'a.
Evgeniy26 вне форума Ответить с цитированием
Старый 17.07.2009, 15:32   #5
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

я что-то не пойму чем этот вариант не понравился?
Цитата:
Сообщение от zotox Посмотреть сообщение
нужно еще определенние col,row
дык там же написано
ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Col));
также для строки
ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Row));
A_r_r_a_y вне форума Ответить с цитированием
Старый 17.07.2009, 15:48   #6
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от A_r_r_a_y Посмотреть сообщение
я что-то не пойму чем этот вариант не понравился?

дык там же написано
ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Col));
также для строки
ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Row));
а) блин точно
просто сразу на ифы посмотрел и сразу же побежал кодить
Но вариант от Evgeniy26 мне больше подходит даже! За что ему отдельное спасибо!

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Ну хотя бы вот так
Код:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    ShowMessage('mbLeft - ' + IntToStr(StringGrid1.Col));
  end;

  if Button = mbRight then
  begin
    ShowMessage('mbRight - ' + IntToStr(StringGrid1.Col));
  end;
end;
А если я хочу чтобы при двойном клике было действие а не при одном?

Ап! Смотрите #7 пост

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

Смотри:
Код:
unit Unit1;

interface

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

type
  TStringGrid=class(Grids.TStringGrid)
   procedure p(var w:TWMLButtonDblClk); message WM_LButtonDblClk;
  end;

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



{ TStringGrid }

procedure TStringGrid.p;
var q,e:integer;
begin
 if w.Keys=MK_LBUTTON	then
 Form1.StringGrid1.MouseToCell(w.XPos,w.YPos,q,e);
  form1.Caption:='cells['+inttostr(q)+','+inttostr(e)+']';
end;

end.
Здесь обрабатываются даблклики по любой ячейке левой мышкой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По нажатию Enter Cpluser Общие вопросы .NET 4 30.04.2009 10:28
Движения по нажатию клавиши ТРОЯН=) Помощь студентам 5 10.03.2009 21:11
Поиск по нажатию Энтер valerij Microsoft Office Excel 25 28.01.2009 22:47
По нажатию Enter Andr Общие вопросы Delphi 8 22.12.2008 16:58
Сортировка по нажатию кнопки Nate-p Microsoft Office Access 2 25.06.2008 08:35