Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизНевидимая панелька TPanel Найти похожие ветки
← →
ARTEMKA (2003-10-28 23:29) [0]Мастера подскажите плз, как сделать чтоб панель
(TPanel)
сама не прорисовалась, но чтоб компанент TImage был на нём. если делаю просто Panel1.Visible:=false; то становится не видимый и Image на нём.
Если знаете плз подскажите,Спасибо
← →
Юрий Федоров (2003-10-28 23:36) [1]Panel1.Caption:=EmptyStr;
Panel1.BevelInner:=bvNone;
Panel1.BevelOuter:=bvNone;
← →
ARTEMKA (2003-10-29 01:14) [2]НЕ получается, мне нужно чтоб панель вообще не была видна под Image"ом он у меня с прозрачностью
← →
ARTEMKA (2003-10-29 02:39) [3]Мастера помогите плз, я в шоке
← →
Tumcoat (2003-10-29 04:25) [4]А ты не пробовал Panel делать по размеру Image?
← →
Думкин (2003-10-29 07:21) [5]А зачем вообще нужна панель?
← →
ARTEMKA (2003-10-29 13:19) [6]я написал компанент на основе TImage добавил оброботчики событий MouseEnter и MouseLeave. Сама форма у меня обрабатывает ещё WM_NCHITTEST, потому что она не прямоугольной формы. Так вот получается так что когда мышь проходит над компонентом, NCHITTEST перехватывает это и обработчик MouseEnter не срабатывает, а когда под Image есть панелька то всё нормально. НО ВОПРОС в том что мне нужно чтоб панель не рисовалась вообще, а только IMAGE на нём. Сам Image с прозрачностью поэтому за ним видна панелька.
← →
ZEE (2003-10-29 13:51) [7]думаю вопрос как рах в WM_NCHITTEST
на до просто выкусывать из него ректангл имаджа -
если на апи - то примерно так (у меня так):
WM_NCHITTEST:
begin
GetCursorPos(Pt);
ScreenToClient(wnd,Pt);
if (Pt.Y<16)and(Pt.X>15)and(Pt.X<Rct.Right-55)
then result:=htCaption
else result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
зы: в if конечно свое условие запихнешь...
← →
ARTEMKA (2003-10-29 14:32) [8]ZEE>>> Да я так и сделал теперь перехватывается MouseLeave и MouseEnter , но не обрабатывается MouseDown и MouseUp , как сделать?
← →
ZEE (2003-10-29 14:37) [9]> ARTEMKA (29.10.03 14:32) [8]
> Да я так и сделал теперь перехватывается MouseLeave
> и MouseEnter , но не обрабатывается MouseDown и MouseUp
> , как сделать?
т.е.? если отключить WM_NCHITTEST - то MouseDown/Up работает, а если включить - нет?
если так - то дело все в томже - ищи грабли в обработке мессаджа...
правда может у тебя еще какие-нить WM_NC... есть - тогда надо еще и там посмотреть...
← →
ARTEMKA (2003-10-29 15:16) [10]обрабатываются только WM_NCHITTEST; WM_MOUSEACTIVATE; WM_PAINT; WM_SIZE;
В MOUSEACTIVATE исключается только вторая кнопка мыши:
inherited;
if Msg.LParamHi = 516 then Msg.Result:= MA_NOACTIVATEANDEAT;
грабли найти не могу
← →
ZEE (2003-10-29 15:24) [11]а все-таки - без хиттеста маусап/даун работает?
← →
ARTEMKA (2003-10-29 21:49) [12]>>> ZEE>> да ты прав без хиттеста всё работает!!
Но возникает другая проблема, моя форма не прямоугольная и в ней мне нужно осуществить изменение размеров. В хиттесте я определяю области где должны быть перетаскивания.
if PointToRect(x,y,i-20,j-35,i,j) then Message.Result := HTBOTTOMRIGHT
else if PointToRect(x,y,i-10,30,i,j-35) then Message.Result := HTRIGHT ......
как же обойтись без него?
← →
ARTEMKA (2003-10-29 22:59) [13]ZEE подскажи а, а то я уже всё испробывал кажется, если что моя АСЯ 281014903
← →
ARTEMKA (2003-10-29 23:56) [14]даже SetLayeredWindowAttributes не подходит
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c