Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Невидимая панелька 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
3-41035
AnS
2003-10-14 19:19
2003.11.13
BDE Error 12289 : $3001


1-41142
niva
2003-11-03 13:12
2003.11.13
отчет


3-40939
AndreyAs
2003-10-17 10:43
2003.11.13
Слить два dataset а


3-40988
Passlight
2003-10-16 12:36
2003.11.13
BDE-алиас к Access 2000 через ODBC


3-40804
Rod
2003-10-22 12:47
2003.11.13
Активизация роли приложения SQL2000 через BDE