Форум: "Основная";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
ВнизПрозрачный 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c