Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к данным ячеек в DBGrid'e 
:(
    Опции темы
FFire
Дата 10.5.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.4.2006

Репутация: нет
Всего: нет



В мемо, на форме. 
PM MAIL   Вверх
Alex
Дата 10.5.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



это что же за издевательство вы хотите делать? 


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Dynamic
Дата 11.5.2006, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15



OnMouseMove + ItemAtPos() (не помню, что там у грида для этого) тебе в руки.... 


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Vit
Дата 11.5.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Alex @  10.5.2006,  08:33 Найти цитируемый пост)
это что же за издевательство вы хотите делать?  



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


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
FFire
Дата 12.5.2006, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.4.2006

Репутация: нет
Всего: нет



Цитата(Dynamic @ 11.5.2006,  08:30)
OnMouseMove + ItemAtPos() 

К сожалению, метода ItemAtPos, у дбГрида нет. 
PM MAIL   Вверх
bas
Дата 12.5.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Цитата(Vit @  11.5.2006,  15:26 Найти цитируемый пост)
хотя задача прямо сказать не из стандартных и может не решаться  

Даже очень нестандартная.
1.Надо знать положение курсора на экране.
2.Узнать находиться ли курсор над гридом.
3.Вычислить поле над которым находимся.
4.Вычислить номер записи и вот тут надо повозиться, так как надо узнать какие записи на экране (скажем 10 из 2000).

Можно при периресовки грида загонять все данные(и координаты тоже) в массив и оттуда считывать.

  
PM MAIL   Вверх
Dynamic
Дата 12.5.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15



показываю направление:
Код

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var c: TGridCoord;
    f: tfield;
begin
     c := DBGrid1.MouseCoord(x, y);
     f := DBGrid1.DataSource.DataSet.Fields[c.x];  << ----- поле под курсором
end;

 


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Alex
Дата 12.5.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Цитата(Vit @  11.5.2006,  16:26 Найти цитируемый пост)
Алекс, если знаешь, помоги человеку... может действительно надо... хотя задача прямо сказать не из стандартных и может не решаться

Цитата

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

Код

type 
  TMyDBGrid = class (TCustomDBGrid)
  protected
    function GetTitleOffset: Byte;
  public
    property TitleOffset: Byte read GetTitleOffset;
  end;

...

procedure TfrmMain.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Cell: TGridCoord;
  DLink: TDataLink;
  OldActiveRec: Integer;
  MyGrid: TMyDBGrid;
  aTitleOffset: Byte;
begin
  if not (Sender is TDBGrid) then Exit;
  MyGrid:= TMyDBGrid(Sender);
  Cell:= MyGrid.MouseCoord(X, Y);
  DLink := MyGrid.DataLink;
  if Assigned(DLink) then begin
    aTitleOffset:= MyGrid.TitleOffset;
    if (Cell.X < MyGrid.IndicatorOffset) or (Cell.Y < aTitleOffset) then begin
      Memo1.Text:= '';
      Exit;
    end;
    OldActiveRec := DLink.ActiveRecord;
    try
      DLink.ActiveRecord := Cell.Y - aTitleOffset;
      Memo1.Text:= DBGrid1.Columns[Cell.X - MyGrid.IndicatorOffset].Field.AsString;
    finally
      DLink.ActiveRecord := OldActiveRec;
    end;
 end;
end;

{ TMyDBGrid }

function TMyDBGrid.GetTitleOffset: Byte;
var
  i: Integer;
  j: Integer;
begin
  Result:= 0;
  if dgTitles in Options then
  begin
    Result:= 1;
    if (Datalink <> nil) and (Datalink.Dataset <> nil) and Datalink.Dataset.ObjectView then begin
      for I := 0 to Columns.Count-1 do begin
        if Columns[i].Showing then begin
          j:= Columns[i].Depth;
          if j >= Result then Result:= j + 1;
        end;
      end;
    end;
  end;
end;


PS:
Кто скажет из какой статьи в DRKB сделан этот пример получит + (80% ответов на все ваши вопросы уже лежат у вас на компе, нужно просто поискать...) 


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Dynamic
Дата 12.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15



а можно мне?
Цитата

Как в TDBGrid узнать над каким полем висит мышь

 smile  smile  smile

Добавлено @ 12:11 
а вот еще в тему: "Как вывести Hint для ячейки DBGrid"

ЗЫ. Код не даю, ибо
Цитата(Alex @  12.5.2006,  11:42 Найти цитируемый пост)
80% ответов на все ваши вопросы уже лежат у вас на компе, нужно просто поискать...

 


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0728 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.