![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прочитать данные из ячейки 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]наверное все таки нужно узнать название столбца