Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.007 c
15-1230995201
абдирофф
2009-01-03 18:06
2009.03.01
помогите разобратся с ошибками при компилировании программы


2-1232384862
Илья_
2009-01-19 20:07
2009.03.01
Уточнение по работе цикла for


2-1232350631
inviz
2009-01-19 10:37
2009.03.01
Как закрепить канвас


2-1232105508
lod
2009-01-16 14:31
2009.03.01
Подключение к ftp серверу.


6-1200125041
Vendict
2008-01-12 11:04
2009.03.01
Передача файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский