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

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

Вопрос по DBGrid [D7, XP]


Страницы:   1 2

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]


> Зачем чесать левое ухо правой пяткой ?

Уважаемый, предложите свой вариант, лутше, и я может поучусь!:)


Страницы:   1 2

Наверх

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