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

Вниз

Прозрачный TEdit   Найти похожие ветки 

 
Endi ©   (2003-07-14 17:44) [0]

Кто-нибудь, помогите!!!
Не могу понять, как сделать TEdit прозрачным, или, вообще, какой-нибудь компонент для ввода с клавиатуры, но чтобы печаталось прям поверъ картинки.
Пробывал изменять у Edit"а свойсто ControlStyle на csOpaque, но и это ничего не дало.
Заранее всем спасибо за помощь!!


 
Семен Сорокин ©   (2003-07-14 17:48) [1]

посмотри ф-ю SetLayeredWindowAttributes
а также реализацию AlphaBlend в Forms.pas


 
Endi ©   (2003-07-14 19:03) [2]

Уже смотрел, но проводя аналогии у меня все равно получилось сделать тоже самое только с формами.


 
VMcL ©   (2003-07-14 19:17) [3]

А WS_EX_LAYERED TEdit"у задал?


 
Endi ©   (2003-07-14 19:42) [4]

А как я могу это сделать, если WS_EX_LAYERED это для окон?


 
Song ©   (2003-07-14 19:48) [5]

А как я могу это сделать, если WS_EX_LAYERED это для окон?

SetWindowLong() + GWL_EXSTYLE


 
Endi ©   (2003-07-14 20:07) [6]

А по точнее, у меня все выглядит так:

SetWindowLong(edit1.Handle,GWL_EXSTYLE,GetWindowLong(edit1.Handle,GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(edit1.Handle,RGB(0,0,0),100,LWA_ALPHA);



 
Ученик ©   (2003-07-14 21:44) [7]

>Endi © (14.07.03 17:44)

Наверно, для всех Windows :-)

procedure WMCtlColorEdit(var Message : TWMCtlColorStatic); message WM_CTLCOLOREDIT;


procedure TForm1.WMCtlColorEdit(var Message : TWMCtlColorStatic);
begin
if Message.ChildWnd = Edit1.Handle then
SetBkMode(Message.ChildDC, TRANSPARENT);
inherited
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and
not WS_CLIPCHILDREN);
SetWindowLong(Edit1.Handle, GWL_EXSTYLE,
GetWindowLong(Edit1.Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT);
Edit1.Brush.Style := bsClear
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
R: TRect;
begin
R := Edit1.BoundsRect;
InvalidateRect(Handle, @R, False)
end;

>какой-нибудь компонент для ввода с клавиатуры, но чтобы
>печаталось прям поверъ картинки
Возможно это умеет RichEdit


 
Endi ©   (2003-07-15 00:24) [8]

Попробывал, но проблема задним фоном вводимого текста так и не решилась. Да и еще вдобавок при попытке стереть текст ничего не получается - прямо на Edit"е прорисовывается движение курсора, а если включен WMCtlColorEdit, то стереть вообще не получается, при выключенном старые буквы можно заменить на новые...

Пока писал это сообщение обнаружил, чтобы все прекрасно работало достаточно заменить в InvalidateRect(Handle, @R, False) с false на true. А если у Edit"а отключить все его прибамбасы, типа границ и трехмерности, то получиться, что вводишь текст прям поверх кртинки!!! :)


 
Ученик ©   (2003-07-15 07:23) [9]

Подключил манифест, совсем беда :(,
а в предыдущем случае BorderStyle=bsNone, но и с ним попробовал, все прилично :-)



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

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-91680
Rulja
2003-07-07 12:24
2003.07.28
ApplyUpdates


3-91648
McSimm2
2003-07-03 16:30
2003.07.28
[Oracle] вернуть


14-91844
Виталик
2003-07-10 20:34
2003.07.28
Компоненты для компрессии RAR, ZIP


14-91813
m_a_r_t
2003-07-12 03:59
2003.07.28
Какой сервер в инете обеспечивает наилучший халявный хостинг?


7-91915
greenrul
2003-05-12 17:43
2003.07.28
Перехват нажатия клавиш мультимедийной клавиатуры -