![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по DBGrid [D7, XP]
b@v © (2009-01-15 08:05:00)Как узнать программно в ячейке какого столбца я клякнул. Нужно клякнуть в нужной ячейке и при этом отработало нужное событие
MsGuns (2009-01-15 14:38:00) [1]Если курсор нужно менять когда мышь находится над "нужным" столбиком, то надо написать обработчик OnMouseMove, в котором определять координаты мыши, сравнивать их с координатами границ столбика и менять "гридный" курсор на "пальчик", например :)
Сергей М. (2009-01-15 13:06:00) [2]Зато оно есть у любого объекта-наследника TControl, каковым в т.ч. является объект TDBGrid, а также у глобального объекта Screen.
b@v (2009-01-15 12:40:00) [3]
> Поменяй. Что-то мешает ?
Ага, мешает, нет свойства курсора у нужного столбика !!!!
Сергей М. (2009-01-15 12:29:00) [4]Поменяй. Что-то мешает ?
b@v (2009-01-15 11:50:00) [5]Еще бы вот курсор поменять над этим столбиком :-) А то не понятно, что там можно клякнуть :-)
b@v (2009-01-15 11:47:00) [6]
> MsGuns © (15.01.09 11:41) [29]
Блин, спасибо, а то бьюсь, не могу понять в чем дело !!! Спасибо !!!
MsGuns (2009-01-15 11:41:00) [7]Блин, выкиньте dgRowSelect из Options грида :)
MsGuns (2009-01-15 11:40:00) [8]Сделайте как в [22]
b@v (2009-01-15 11:39:00) [9]
> if Column.Field.FieldName=<Нужное поле> then
Все равно выдает только наименование первого поля, где бы я не клякнул, а мне нужно в переменной отобразить данные, по которым я клякнул.
Но все равно спасибо за помошь !!!
b@v (2009-01-15 11:35:00) [10]
> Для кого писано [17] ?
>
> Плохиш © (15.01.09 10:53) [21]
>
>
> > b@v © (15.01.09 08:41) [6]
> >
> > Мне надо например, клякнул в ячейке в любой (даже не в
> любой,
> > а именно в одном столбике, в любой ячейке) и значение
> этой
> > ячейки положить в переменную.
>
> В ячейках DBGrid никаких значений нет.
MsGuns (2009-01-15 11:28:00) [11]>b@v © (15.01.09 11:25) [23]
>Ну, хорошо, нету, что к словам то придираться, не значение а отображение данных.
Для кого писано [17] ?
MsGuns (2009-01-15 11:26:00) [12]>Как узнать программно в ячейке какого столбца я клякнул.
SelectedIndex
>Нужно клякнуть в нужной ячейке
SelectedIndex := <Индекс "нужного" стоблца>
SelectedField := DataSource.DataSet.FieldByName('<Имя "нужного" поля>)
>и при этом отработало нужное событие
procedure TFram1.TDBGridCellClick(Column: TColumn);
begin
if Column.Index=<Нужный номер> then
или
if Column.Field.FieldName=<Нужное поле> then
...
end
Но все перечисленное касается только ТЕКУЩЕЙ строки сетки и ТЕКУЩЕЙ записи датасета
Если ПРОГРАММНО нужно "встать" на "ячейку", расположенную не в ТЕКУЩЕЙ строке, то
предварительно надо изменить АКТИВНУЮ запись датасета методами датасета (First,Next,Prior,Last,Locate...) При этом "клик" на ячейке произойдет автоматически со всеми соотв. событиями
b@v (2009-01-15 11:25:00) [13]
> В ячейках DBGrid никаких значений нет.
Ну, хорошо, нету, что к словам то придираться, не значение а отображение данных.
MsGuns (2009-01-15 11:15:00) [14]>Сергей М. © (15.01.09 09:31) [18]
>procedure TFrame1.DBGrid1CellClick(Column: TColumn);
>begin
>if DBGrid1.SelectedField.FieldNo = 1 then
> ShowMessage(TStringField(DBGrid1.SelectedField).Value);
with Column.Field do
ShowMessage(FieldName+': '''+AsString+'''');
Плохиш (2009-01-15 10:53:00) [15]
> b@v © (15.01.09 08:41) [6]
>
> Мне надо например, клякнул в ячейке в любой (даже не в любой,
> а именно в одном столбике, в любой ячейке) и значение этой
> ячейки положить в переменную.
В ячейках DBGrid никаких значений нет.
Сергей М. (2009-01-15 10:08:00) [16]Не получается.
b@v (2009-01-15 09:46:00) [17]
> procedure TFrame1.DBGrid1CellClick(Column: TColumn);
> begin
> if DBGrid1.SelectedField.FieldNo = 1 then
> ShowMessage(TStringField(DBGrid1.SelectedField).Value);
>
Получается, что в каком бы месте грида мы не клякнули, он выдает первое значение первого поля
Сергей М. (2009-01-15 09:31:00) [18]
> b@v
procedure TFrame1.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.SelectedField.FieldNo = 1 then
ShowMessage(TStringField(DBGrid1.SelectedField).Value);
MsGuns (2009-01-15 09:28:00) [19]>Уважаемый, предложите свой вариант, лутше, и я может поучусь!:)
ДБгрид имеет собственные средства для решения сабжевой задачи. Например, SelectedField, SelectedIndex, TColumn.Field, OnColEnter/Exit и т.д. см. справку
Предложенный Вами "крякающий" подход используют только тогда, когда собственных публичных фич не хватает. Например, если надо определить чисто "географичесчкие" вещи: порядковый номер текущей строки сетки относительно первой видимой, кол-во видимых строк (колонок), индекс первой или последней видимой колонки и т.д.
alshtam (2009-01-15 09:13:00) [20]
> Зачем чесать левое ухо правой пяткой ?
Уважаемый, предложите свой вариант, лутше, и я может поучусь!:)