Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.01;
Скачать: CL | DM;

Вниз

Вопрос по DBGrid   Найти похожие ветки 

 
b@v ©   (2009-01-15 08:05) [0]

Как узнать программно в ячейке какого столбца я клякнул. Нужно клякнуть в нужной ячейке и при этом отработало нужное событие


 
031178   (2009-01-15 08:07) [1]

procedure TFrame1.DBGrid1CellClick(Column: TColumn);
begin
if Column.ID = 5 then ...................................


 
b@v ©   (2009-01-15 08:25) [2]

Если так то он постоянно выдает одно и тоже число, т.е. количество колонок


 
alshtam   (2009-01-15 08:35) [3]

объявляеш
TFDBGrid = class (TDBGrid);

теперь
колонка  selcol:=Tfdbgrid(GoodsAndCategoriesDBGrid1).Col;
столбец  selrow:=Tfdbgrid(GoodsAndCategoriesDBGrid1).Row;
координаты r:= Tfdbgrid(DBGrid1).CellRect(selcol,selrow);
где r:Trect;


 
alshtam   (2009-01-15 08:36) [4]

пардон
объявляеш
TFDBGrid = class (TDBGrid);

теперь
колонка  selcol:=Tfdbgrid(DBGrid1).Col;
столбец  selrow:=Tfdbgrid(DBGrid1).Row;
координаты r:= Tfdbgrid(DBGrid1).CellRect(selcol,selrow);
где r:Trect;


 
b@v ©   (2009-01-15 08:40) [5]


> alshtam


Это, что компонент какой то ?


 
b@v ©   (2009-01-15 08:41) [6]

Мне надо например, клякнул в ячейке в любой (даже не в любой, а именно в одном столбике, в любой ячейке) и значение этой ячейки положить в переменную.


 
alshtam   (2009-01-15 08:43) [7]

нет просто в предках TDBGrid прописаны col и row но они в protected объявлением TFDBGrid = class (TDBGrid); ты их вытаскиваеш и можеш пользоваться


 
alshtam   (2009-01-15 08:44) [8]

ну вот procedure TFrame1.DBGrid1CellClick(Column: TColumn); обрабатывай узнавай куда кликнул и делой что хош дальше


 
b@v ©   (2009-01-15 08:48) [9]


> alshtam

че то запутался, на примере не подскажешь ? Не разу так не делал, понять не могу !!!! Заранее спасибо


 
alshtam   (2009-01-15 08:54) [10]

чтоб значение из DBGrid забрать не нужно узнавать куда кликнул. цепляеш dataset через него забераеш выбранную запись


 
b@v ©   (2009-01-15 08:56) [11]


> alshtam


А чем отличается колонка и столбец ?


 
alshtam   (2009-01-15 09:02) [12]

ткнул в грид выбралась строка. у dataset спрашиваеш значение конкретного столбца() по  названию.
i:integer;
i:=DataSeе1.FieldByName("A").Asinteger
возьмет значение из поля "A" выделеной записи


 
MsGuns ©   (2009-01-15 09:06) [13]

>alshtam   (15.01.09 08:54)

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


 
b@v ©   (2009-01-15 09:08) [14]


> ткнул в грид выбралась строка. у dataset спрашиваеш значение
> конкретного столбца() по  названию.
> i:integer;
> i:=DataSeе1.FieldByName("A").Asinteger
> возьмет значение из поля "A" выделеной записи


Это я могу клякнуть в любом месте и он даст мне нужное значение, это понятно, а мне надо чтобы именно кляк срабатывал над нужным столбиком, а не над всей записью !!! Ну, представь, есть колонка, там запись, ее значение "ФОТО", что то типа ссылки, клякнули на "ФОТО" и пошли смотреть фото


 
alshtam   (2009-01-15 09:12) [15]

тогда делай как в 4,потом делай проверку что row=n где n номер нужного столбца бери значение из этого поля и пошли смотреть фото


 
alshtam   (2009-01-15 09:13) [16]


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

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


 
MsGuns ©   (2009-01-15 09:28) [17]

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

ДБгрид имеет собственные средства для решения сабжевой задачи. Например, SelectedField, SelectedIndex, TColumn.Field, OnColEnter/Exit и т.д. см. справку
Предложенный Вами "крякающий" подход используют только тогда, когда собственных публичных фич не хватает. Например, если надо определить чисто "географичесчкие" вещи: порядковый номер текущей строки сетки относительно первой видимой, кол-во видимых строк (колонок), индекс первой или последней видимой колонки и т.д.


 
Сергей М. ©   (2009-01-15 09:31) [18]


> b@v


procedure TFrame1.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.SelectedField.FieldNo = 1 then
  ShowMessage(TStringField(DBGrid1.SelectedField).Value);


 
b@v ©   (2009-01-15 09:46) [19]


> procedure TFrame1.DBGrid1CellClick(Column: TColumn);
> begin
> if DBGrid1.SelectedField.FieldNo = 1 then
>   ShowMessage(TStringField(DBGrid1.SelectedField).Value);
>


Получается, что в каком бы месте грида мы не клякнули, он выдает первое значение первого поля


 
Сергей М. ©   (2009-01-15 10:08) [20]

Не получается.


 
Плохиш ©   (2009-01-15 10:53) [21]


> b@v ©   (15.01.09 08:41) [6]
>
> Мне надо например, клякнул в ячейке в любой (даже не в любой,
>  а именно в одном столбике, в любой ячейке) и значение этой
> ячейки положить в переменную.

В ячейках DBGrid никаких значений нет.


 
MsGuns ©   (2009-01-15 11:15) [22]

>Сергей М. ©   (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+"""");


 
b@v ©   (2009-01-15 11:25) [23]


> В ячейках DBGrid никаких значений нет.


Ну, хорошо, нету, что к словам то придираться, не значение а отображение данных.


 
MsGuns ©   (2009-01-15 11:26) [24]

>Как узнать программно в ячейке какого столбца я клякнул.

 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...) При этом "клик" на ячейке произойдет автоматически со всеми соотв. событиями


 
MsGuns ©   (2009-01-15 11:28) [25]

>b@v ©   (15.01.09 11:25) [23]
>Ну, хорошо, нету, что к словам то придираться, не значение а отображение данных.

Для кого писано [17] ?


 
b@v ©   (2009-01-15 11:35) [26]


> Для кого писано [17] ?
>


> Плохиш ©   (15.01.09 10:53) [21]
>
>
> > b@v ©   (15.01.09 08:41) [6]
> >
> > Мне надо например, клякнул в ячейке в любой (даже не в
> любой,
> >  а именно в одном столбике, в любой ячейке) и значение
> этой
> > ячейки положить в переменную.
>
> В ячейках DBGrid никаких значений нет.


 
b@v ©   (2009-01-15 11:39) [27]


>  if Column.Field.FieldName=<Нужное поле>  then


Все равно выдает только наименование первого поля, где бы я не клякнул, а мне нужно в переменной отобразить данные, по которым я клякнул.
Но все равно спасибо за помошь !!!


 
MsGuns ©   (2009-01-15 11:40) [28]

Сделайте как в [22]


 
MsGuns ©   (2009-01-15 11:41) [29]

Блин, выкиньте dgRowSelect из Options грида :)


 
b@v ©   (2009-01-15 11:47) [30]


> MsGuns ©   (15.01.09 11:41) [29]


Блин, спасибо, а то бьюсь, не могу понять в чем дело !!! Спасибо !!!


 
b@v ©   (2009-01-15 11:50) [31]

Еще бы вот курсор поменять над этим столбиком :-) А то не понятно, что там можно клякнуть :-)


 
Сергей М. ©   (2009-01-15 12:29) [32]

Поменяй. Что-то мешает ?


 
b@v ©   (2009-01-15 12:40) [33]


> Поменяй. Что-то мешает ?


Ага, мешает, нет свойства курсора у нужного столбика !!!!


 
Сергей М. ©   (2009-01-15 13:06) [34]

Зато оно есть у любого объекта-наследника TControl, каковым в т.ч. является объект TDBGrid, а также у глобального объекта Screen.


 
MsGuns ©   (2009-01-15 14:38) [35]

Если курсор нужно менять когда мышь находится над "нужным" столбиком, то надо написать обработчик OnMouseMove, в котором определять координаты мыши, сравнивать их с координатами границ столбика и менять "гридный" курсор на "пальчик", например :)



Страницы: 1 вся ветка

Текущий архив: 2009.03.01;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.016 c
8-1191137794
Qter
2007-09-30 11:36
2009.03.01
Свое расширение


2-1232135242
inviz
2009-01-16 22:47
2009.03.01
Раскрыть все узлы TreeView


10-1152862016
deplhi
2006-07-14 11:26
2009.03.01
property in com


11-1197556130
nikfel
2007-12-13 17:28
2009.03.01
Как отловить активно окно или нет.


15-1230523297
tButton
2008-12-29 07:01
2009.03.01
php