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

Вниз

Как выловить соб. OnMouseDown() для самих строк DBGrid?   Найти похожие ветки 

 
AM   (2002-11-01 12:02) [0]

Всем доброго дня! Как сделать сабж. ведь обычный OnMouseDown() на DBGrid возникает только тогда, когда я нажимаю мишью в пустую область, т. е. область где нет записей...


 
ЮЮ   (2002-11-01 12:27) [1]

А там где записи есть их ловит сам DBGrid а пользователю предоставляет кучу других onXXX (читай Help)


 
AM   (2002-11-01 12:40) [2]

То что он мне
>> предоставляет кучу других onXXX

меня не устраивает. Например:
У меня есть два DBGrid-а и я хочу организовать такую возможность интерфейса как "перетаскивание" значений из однового в другое.
Как это организовать если нельзя обработать событие OnMouseDown() на строку???

Может создать какого-нибудь предка TMyDBGrid где можно будет обрабатывать эти события самому. Как это сделать?
Кто может подсказать это?


 
ЮЮ   (2002-11-01 12:44) [3]

Ну и запускай механизм Drag&Drop в OnCellClick, когда текущая запись НД соответствует выделенной строке. Или ты не хочешь, чтобы пользователь мог выбирать запись? :-)


 
Johnmen   (2002-11-01 12:57) [4]

>AM (01.11.02 12:02)

В OnMouseDown() на DBGrid несложно определить, пришелся клик на "молоко" или на "содержимое", ведь все параметры отображения грида известны и координаты мыши тоже...


 
AM   (2002-11-01 13:01) [5]

Вся проблема в том, что событие OnCellClick и вообще ...Click воникают только тогда когда пользователь именно отпускает ранее нажатую кнопку мыши. А мне нужно именно событие, когда он нажал (MouseDown) и еще не отпускал. Я просто делал когда-то такое "перетаскивание" для ListBox-ов и все классно работало.

Для организации Drag&Drop нужна обработка трех событий:

...MouseDown
...MouseMove
...MouseUp

Самое интересное, что последние два события у грида нормально работают, а первое - нет.

Есть ли другие подходы кроме как вылавливать событие ...MouseDown?


 
AM   (2002-11-01 13:10) [6]


>> Johnmen © (01.11.02 12:57)

Дело чуть-чуть в другом:
Поставьте на событие OnMouseDown() обычного дбгрида например:
ShowMessage("Ура!"). И оно не появится когда вы будете тыкать мышкой по строкам/ячейкам грида. Оно появится если вы ткнете мышкой по пустой (незаполненной записями обласит грида)

Т. е. OnMouseDown() вообще событие только для пустой области грида.





 
AM   (2002-11-01 13:22) [7]

Фу, наконец получилось!
На самом деле у меня получилось, что можно обойтись и без события
...MouseDown

использовав только:
...MouseMove
...MouseUp

Просто в событии MouseMove надо сделать проверку:
If ssLeft in Shift then
(показать StaticText с текстом текущего значения в гриде и с координатами курсора)
else
( скрыть StaticText)



 
ЮЮ   (2002-11-01 13:25) [8]

Тогда лезь в "потроха" DBGrida.
Когда я пару лет назад учил делать это DBGrigEh, я поступил так:

procedure TCustomDBGridEH.MoveCol(RawCol: Integer);
var
OldCol: Integer;
begin
FDatalink.UpdateData;
if RawCol >= ColCount then
RawCol := ColCount - 1;
if RawCol < FIndicatorOffset + {ddd}FrozenCols then RawCol := FIndicatorOffset + {ddd}FrozenCols;
OldCol := Col;
if RawCol <> OldCol then
begin
...
здесь я оставил прежний текст, позволяя вести гриду как обычно
end else
begin
а при повторном выборе той же ячейки запускался механизм Drag&Drop
if (ssLeft in FShift) then BeginDrag(true)
end;
end;


 
AM   (2002-11-01 13:35) [9]

ЮЮ © (01.11.02 13:25)
Здесь, да получился насточщий Drag&Drop. Очень интересный подход. Я попробую его.

В момем же я просто решил "сэмулировать" его с помощью StaticText. И перемещаю именно его.

ЮЮ, спасибо!



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

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

Наверх




Память: 0.46 MB
Время: 0.008 c
1-69383
Sergy
2002-11-06 17:52
2002.11.21
Погасить пункт меню в чужой проге


1-69295
dimonf
2002-11-12 12:24
2002.11.21
Как отследить нахождение курсора над моим Edit-ом?


3-69182
Jackal22
2002-10-31 11:08
2002.11.21
Руский текст в TQuery


14-69568
_cooler
2002-11-04 14:45
2002.11.21
Помогите мастера!


14-69534
^Sanya
2002-11-02 19:19
2002.11.21
Кттонибудь читал М.Кенту





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