Помогите, пожалуйста, с Delphi

stec

У меня есть следующая проблема. Есть таблица StringGrid, при двойном нажатии на ячейку помещаю над ячейкой выпадающее меню ComboBox в событии StringGrid3DrawCell, тоже самое, что OnPaint для формы. Когда начинаешь прокручивать с помощью полосы прокрутки, все хорошо до тех пор, пока ячейка находится в пределах видимости, а дальше остается на последней видимой ячейке. Как можно проверить в пределах видимости или нет находится ячейка?

elenangel

код обработчика в студию. а то на пальцах непонятно как воспроизвести этот эффект

stec

Все спасибо, буквально сейчас решил эту проблему, может немного коряво, но все же.

if StringGrid3.CellRect(Sel1Col, Sel1Row).Top = 0 then ComboBox2.Visible := false;

Вот эта строчка решила проблему. Sel1Col и Sel1Row это выбранная на данный момент ячейка.

stec

Там код с этой же проблемой...

kill-still

if StringGrid3.CellRect(Sel1Col, Sel1Row).Top = 0 then ComboBox2.Visible := false;
безобразие =)

stec

Лучше бы помог сделать по-человечески.

kill-still

По человечески - писать новый класс. за $.
Хотя для коленочной поделки, если только один такой объект, и так сойдёт.
Безобразие - это скорее относилось к названиям объектов.
з.ы. а почему при двойном клике?

IG_rok777

При чем тут двойной клик?

kill-still

Я чисто насчёт эргономности рассуждаю.
По хорошему вообще у каждой строчки стринглиста толжна рисоваться дропдаунпопап-кнопка, и список вываливаться по одному клику на него.
Но я это всё рассуждаю в отрыве от проекта.

IG_rok777

Да, было бы неплохо, а как на счет того, чтобы послать сообщение комбобоксу раскрыться? Только не знаю какое это сообщение...

kill-still

Ты как-то связан с ?
При чём тут вообще комбобокс? Если писать свою гуёвину(как я описываю то его там быть не должно.
А вообще ответ на твой вопрос: надо поменять Tcombobox.DroppedDown свойство, или вызвать аналогичный метод, который это делает.

Andbar

А вообще ответ на твой вопрос: надо поменять Tcombobox.DroppedDown свойство, или вызвать аналогичный метод, который это делает.
Или отправить ему нажатие хоткея Alt+Down.

kill-still

Вы батенька знаете толк в извращениях! :D :grin: :grin: :grin:

Andbar

Вы батенька знаете толк в извращениях! :D :grin: :grin: :grin:
Способ гораздо более универсальный. Что если у тебя будет не комбобокс, а другой подобный контрол?

IG_rok777

Ну... да =)
Оставить комментарий
Имя или ник:
Комментарий: