![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TImage над TStringGrid
denkop © (2011-09-22 14:44:00)Как нибудь возможно показать TImage над TStringGrid? Сейчас он уходит под грид, а очень хочется чтобы он был сверху.
Cobalt (2011-10-07 15:42:00) [1]Дык, я на то и намекаю - отлавливай OnMouseLeave?
denkop (2011-10-07 12:11:00) [2]Но и OnMouseUp тоже не вызывается.. В том что OnClick не происходит и есть проблема. У кнопки есть 3 состояния, когда курсор попал в область кнопки, ставлю картинку активной кнопки, когда кнопка мыши нажата он же OnMouseDown, ставлю картинку утопленной кнопки, потом кнопка отпускается и ставлю изначальную картинку. Так вот если нажать на кнопку и увести курсор за пределы грида, то на кнопке останется картинка утопленная, а нужно вернуть картинку которая была изначально..
Cobalt (2011-10-07 12:02:00) [3]Есть такое поведение у кнопок - если мышка не над кнопкой в нажатом виде - то кнопка не считает себя "нажатой".
Т.е. если нажать на TButton "левой кнопкой мышки", зажать и увести её с TButton - то OnClick не произойдёт.
У тебя такое поведение поддерживается?
denkop (2011-10-07 11:05:00) [4]Сейчас реализовано через OnDrawCell, обрабатывается также OnMouseMove чтобы ловить OnMouseEnter, OnMouseLeave, OnMouseDown, но есть проблема с OnMouseUp.. когда кнопку мыши зажал и выводишь в зажатом состоянии за пределы грида, то OnMouseUp уже не срабатывает. Отсюда и пошёл вопрос о контролах на гриде.
Image1.Parent := StringGrid1 тоже спасает. я изначально в runtime создавал все картинки и родителем ставил грид, не помогает, картинка под гридом остаётся..
Бездомный (2011-10-06 13:37:00) [5]Если все-таки хочется странного:
Image1.Parent := StringGrid1
в runtime.
wisekaa (2011-10-05 23:35:00) [6]+1 к предыдущему оратору. а уж примеров от рисовки компонент в гриде полно в рунете.
ProgRAMmer Dimonych (2011-09-22 16:38:00) [7]> [7] pointerman (22.09.11 16:34)
> Возможно, но может есть менее трудоёмкие способы? Помимо
> события OnClick ещё нужны события OnMouseEnter, OnMouseLeave,
> OnMouseDown, OnMouseUp.. Я пока с трудом представляю как
> такое реализовать даже если доработать TStringGrid.
Ну, для отрисовки отдельных ячеек так и вовсе не нужно ничего наследовать - OnDrawCell или как его там. Если кнопка должна быть частью грида и её можно привязать к ячейкам - это тоже вариант. Вопрос только в том, насколько легко будет рассчитать необходимые координаты и отрисовать на канву загруженную картинку.
pointerman (2011-09-22 16:34:00) [8]Возможно, но может есть менее трудоёмкие способы? Помимо события OnClick ещё нужны события OnMouseEnter, OnMouseLeave, OnMouseDown, OnMouseUp.. Я пока с трудом представляю как такое реализовать даже если доработать TStringGrid.
ProgRAMmer Dimonych (2011-09-22 15:21:00) [9]А кнопка случайно не расширяет функциональность грида? М.б. логичнее унаследоваться от TStringGrid и реализовать желаемое там?
denkop (2011-09-22 15:13:00) [10]Конкретно в моей задаче, нужно сделать так чтобы в строках грида были кнопки. Стандартный TButton не подходит, кнопка графическая с прозрачными скруглениями углов (PNG c альфа каналом). Может есть другие мысли как это реализовать?
MBo (2011-09-22 15:02:00) [11]Потому что TStringGrid - TWinControl, а TImage - TGraphicControl, т.е. в сущности - картинка, участок на родительском оконном компоненте, который отрисовывается раньше, чем грид.
denkop (2011-09-22 14:56:00) [12]а почему вообще так происходит? может подскажете как доработать TImage класс чтобы появилась возможность поднять его над TStringGrid?
denkop (2011-09-22 14:51:00) [13]Часть картинки прозрачная, а у панели нет свойства Transparent..
MBo (2011-09-22 14:45:00) [14]Положи его на панель