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

Вниз

...Мышь в сетке...   Найти похожие ветки 

 
AlexGreG   (2003-06-10 08:15) [0]

Как определить в событии DBGrid.OnMouseMove в какой ячейке запуталась мышь?

Как определить над каким столбцом или над какой строкой находится мышь?

Как обновлять в DBGrid конкретную ячейку, конкретную запись или конкретный столбец?

Заранее благодарен, AlexGreG


 
ЮЮ   (2003-06-10 08:40) [1]

>Как обновлять в DBGrid конкретную ячейку, конкретную запись или конкретный столбец?

Зачем? Необходимо и достаточно изменить DataSet, показываемый в DBGrid

>Как определить в событии DBGrid.OnMouseMove в какой ячейке запуталась мышь?
Как определить над каким столбцом или над какой строкой находится мышь?

TCustomGrid.MouseCoord
Но это мало что даст, т.к. кол-во строк в DBGride и количество записей в DataSet-е - вещи не взаимосвязанные, знание номера строки не даст тебе информации о записи. Все эти "пассы" следует делать внутри своего (чужого) компонента - наследника TDBGrid


 
AlexGreG   (2003-06-18 07:02) [2]

Немного не те слова сказал, речь идёт именно о поведении грида: мышь веду по сетке - грид реагирует каким-то образом, например изменение цвета столбца, над которым мышь.


 
sniknik   (2003-06-18 08:53) [3]

если только для грида (не связоно с данными) то примерно так

procedure TMainForm.DBGridDblClick(Sender: TObject);
var Point: TPoint;
GridCoord: TGridCoord;
begin
if TDBGrid(Sender).SelectedField = nil then Exit;
Point:= TDBGrid(Sender).ScreenToClient(Mouse.CursorPos);
GridCoord:= TDBGrid(Sender).MouseCoord(Point.X, Point.Y);
if (GridCoord.X < 1) or (GridCoord.Y < 1) then Exit; //отсекаем клик по заголовку
ShowMemo;
end;


ну тут у меня свои цели (по клику показать содержимое Memo, Blob,... пока все ;о)).


 
AlexGreG   (2003-06-18 10:17) [4]

sniknik, спасибо.

Может ты знаешь, как обновить одну ячейку (даже, если она не выделенная), а не весь грид, зная её координаты (номер столбца и записи)




 
sniknik   (2003-06-18 10:36) [5]

конечно знаю, ее надо перерисовать. лутше всего изнутри самого грида, т.к. возникнут сложности с например - а что рисовать? строк(данных) в dbгриде нет, в связанном наборе можно без переходов получить данные только из текущей записи... еще может какие, сразу и не скажеш.
т.е. вешайся на OnDrawDataCell и рисуй "естественным" порядком, без заморочек.


 
AlexGreG   (2003-06-18 12:44) [6]

Ага! Этот событие не возникает, если просто мышью водить над сеткой, поэтому я кинул тему на форум.

Вариант "таймер + сетка.рефреш" работает, но если машинка потормознее попадётся, то перерисовка будет мешать работать.

Поэтому и спрашиваю, как одну лишь ячейку обновить, не вызывая события OnDrawDataCell


 
NAlexey   (2003-06-18 13:46) [7]

>AlexGreG
Ты о чем это?


 
NAlexey   (2003-06-18 13:48) [8]

InvalidateCell


 
sniknik   (2003-06-18 13:52) [9]

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

а заставить перерисоватся одну ячейку InvalidateCell (если не путаю).


 
AlexGreG   (2003-07-07 08:16) [10]

Всем большое пасибо!


 
gRad2003   (2003-07-08 22:01) [11]

DBgird1->MouseToCell()
или нечто похожее (точно не помню)



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

Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
3-100561
vlad1972
2003-07-08 12:54
2003.07.31
PL SQL


14-100881
abc
2003-07-16 10:50
2003.07.31
как организовать обратную связь в DCOM? т.е от сервера к клиенту


4-101041
Nick Denry
2003-05-25 17:56
2003.07.31
XP 2k ToolTip. MSDN failed....... SDK failed.......


3-100646
Ира
2003-07-10 18:12
2003.07.31
QReport в Excel


1-100789
cjiohobaji
2003-07-17 07:20
2003.07.31
таймер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский