Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как прочитать данные из ячейки DBGRID [D7, XP]


03111978 ©   (2010-08-17 11:18:00) 

Как узнать значение ячейки в DBGrid, по которой мы нажали правую клавишу мыши и как узнать название столбца ?


Германн   (2010-08-18 05:01:00) [1]


> KilkennyCat ©   (18.08.10 04:27) [14]
>
> мне почему-то кажется, что вызовется оно в случае наличия
> присутствия попап-меню. Да и уже после его выскакивания.
>

Вызовется до "выскакивания". Проверено.


KilkennyCat   (2010-08-18 04:27:00) [2]

мне почему-то кажется, что вызовется оно в случае наличия присутствия попап-меню. Да и уже после его выскакивания. Да и собственно, это его событие, а не грида.


Германн   (2010-08-18 03:39:00) [3]


> KilkennyCat ©   (18.08.10 03:18) [12]
>
>
> > Германн ©   (18.08.10 02:53) [11]
>
> и в каком случае оно вызовется?
>

Ну...
Как правило, правая кнопка мыши используется для вызова контекстного (PopUp) меню. Другое стандартное использование этой кнопки при нажатии в области стандартного компонента мне неизвестно.
P.S.  И задача автора до сих пор неизвестна.


KilkennyCat   (2010-08-18 03:18:00) [4]


> Германн ©   (18.08.10 02:53) [11]

и в каком случае оно вызовется?


Германн   (2010-08-18 02:53:00) [5]


> Игорь Шевченко ©   (17.08.10 22:14) [7]
>
> Могу посочувствовать - DBGrid не вызывает пользовательского
> обработчика MouseDown

А может и не надо сочувствовать, а нужно обратить внимание на событие OnPopUp?


Leonid Troyanovsky   (2010-08-17 22:34:00) [6]


> Ega23 ©   (17.08.10 11:49) [2]

> 1. В DBGrid нет никаких данных.

Там немного данных есть.
See also: DataLink property.

--
Regards, LVT.


Игорь Шевченко   (2010-08-17 22:26:00) [7]

Впрочем, для RowSelect в опциях тоже не очень сложно

type
 TDBGridCrack = class(TCustomDBGrid)
 end;

procedure TfMain.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 Cell: TGridCoord;
 Column: TColumn;
begin
 if Button = mbRight then
   if not (dgRowSelect in DBGrid1.Options) then
   begin
     if Assigned(DBGrid1.SelectedField) then
       ShowMessage(DBGrid1.SelectedField.AsString);
   end
   else
   begin
     Cell := DBGrid1.MouseCoord(X, Y);
     if Cell.X >= TDBGridCrack(DBGrid1).LeftCol then
     begin
       Column := DBGrid1.Columns[Cell.X - TDBGridCrack(DBGrid1).LeftCol];
       ShowMessage(Column.Field.AsString);
     end;
   end;
end;


Германн   (2010-08-17 22:23:00) [8]


> ShowMessage(DBGrid1.SelectedField.AsString);

Или
ShowMessage(DBGrid1.SelectedField.FieldName);


Игорь Шевченко   (2010-08-17 22:14:00) [9]

Могу посочувствовать - DBGrid не вызывает пользовательского обработчика MouseDown, а на MouseUp вполне себе (это в случае, если нет RowSelect в опциях):

procedure TfMain.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbRight then
   if Assigned(DBGrid1.SelectedField) then
     ShowMessage(DBGrid1.SelectedField.AsString);
end;


Германн   (2010-08-17 20:38:00) [10]


> Насколько помню, при нажатии правой кнопки в любом месте
> dbgrid, активная ячейка своего положения не меняет.

Меняет. Но OnClick не вызывается.


Плохиш   (2010-08-17 20:17:00) [11]

Насколько помню, при нажатии правой кнопки в любом месте dbgrid, активная ячейка своего положения не меняет.


> Как узнать значение ячейки в DBGrid

Ещё одного иванушку за чудом послали...


Германн   (2010-08-17 14:35:00) [12]

Есть ли в DBGrid.Options значение dgRowSelect?


03111978   (2010-08-17 14:21:00) [13]

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


Ega23   (2010-08-17 11:49:00) [14]

1. В DBGrid нет никаких данных.
2. SelectedField + F1


03111978   (2010-08-17 11:34:00) [15]

наверное все таки нужно узнать название столбца


Наверх

Титульная страница Поиск, карта сайта Написать письмо