Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

Прозрачность формы   Найти похожие ветки 

 
OH   (2007-07-02 10:31) [0]

Такой вопрос - есть форма - полупрозрачная. Надо принаведении курсора мышки уменьшить прозрачность, а при "убирании - увеличить. Уменьшение прозрачности прописал в OnMouseMove, а увеличение где прописать?


 
homm ©   (2007-07-02 10:41) [1]

http://www.softhelp.ru/delphi/osferum/n.php?x=add_event_onmouseleave


 
DagOT-R ©   (2007-07-05 04:21) [2]

Используй свойство Mouse.CursorPos чтобы определить, над формой курсор или нет. Также, если тебе так важна эта затея, создай Таймер, поставь свойство Interval где-то в районе 50 (самое то), свойство Enabled=true;
Потом пропиши на OnTimer:
Procedure Timer1OnTimer(Sender: TObject);
begin
If (mouse.cursorpos.x>form1.left)and(mouse.cursorpos.x<form1.left+form1.width)
and(mouse.cursorpos.y>form1.top)and(mouse.cursorpos.y<form1.top+form1.height)and(form1.alphablendvalue=110)  then form1.alphablendvalue:=210 else form1.alphablendvalue:=110;
end;

> Здесь число 110-коэф. прозр. при "уходе" курсора за пределы
> окна, 210-при наведении. Ещё один плюс: условие ...and(form1.
> alphablendvalue=110) ... позволит сэкономить на оперативке(а
> то на слабых машинах окно может "нездорово мерцать").


 
iXT ©   (2007-07-05 09:47) [3]


> DagOT-R ©   (05.07.07 04:21) [2]
>
>

Сэр, не засоряйте автору мозги бредовыми идеями!


 
exactly   (2007-07-05 09:54) [4]

OnMouseEnter и OnMouseLeave


 
homm_ro   (2007-07-05 11:18) [5]

> [3] iXT ©   (05.07.07 09:47)
> Сэр, не засоряйте автору мозги бредовыми идеями!

+1


 
ПЛОВ ©   (2007-07-05 12:40) [6]


> DagOT-R ©   (05.07.07 04:21) [2]

Лучше через ADO :)


 
Inco   (2007-07-05 13:15) [7]


> DagOT-R ©   (05.07.07 04:21) [2]


Можно еще написать сервис, который будет загружаться при старте системы и отслеживать положение мышки.


 
Инс ©   (2007-07-05 13:34) [8]


> Можно еще написать сервис, который будет загружаться при
> старте системы и отслеживать положение мышки.


Ооо! Мсье понимает толк в извращениях!..


> OH   (02.07.07 10:31) [0]


Можно еще глянуть TrackMouseEvent + WM_MOUSEHOVER + WM_MOUSELEAVE в MSN


 
{RASkov} ©   (2007-07-05 14:07) [9]

Зря вы так...
> OnMouseEnter и OnMouseLeave

Они не всегда срабатывают. Т.е. криво работают.... правда я не знаю про [8] - может оно и то что надо, но в данном случае сделал бы так:
......
   procedure Timer1Timer(Sender: TObject);
   procedure SetAlphaVal(const Value: Integer);
 private
   FAlphaVal: Integer;
   property AlphaVal: Integer read FAlphaVal write SetAlphaVal;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SetAlphaVal(const Value: Integer);
var N: Integer;
begin
 if FAlphaVal = Value then Exit;
 if FAlphaVal>Value then
  for N := FAlphaVal downto Value do begin
   AlphaBlendValue:=N;
  end
 else
  for N := FAlphaVal to Value do begin
   AlphaBlendValue:=N;
  end;
 FAlphaVal := Value;
end;

procedure TForm1.Timer1Timer(Sender: TObject); //Interval=<250
begin
 if PtInRect(BoundsRect, Mouse.CursorPos) then AlphaVal:=255 else AlphaVal:=100;
end;

end.


 
Инс ©   (2007-07-05 14:20) [10]


> {RASkov} ©   (05.07.07 14:07) [9]


Вот зачем таймер фигачить, там где он не нужен? Из-за лени заглянуть в MSDN?


 
Инс ©   (2007-07-05 14:43) [11]

Для ленивых:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
 private
   { Private declarations }
   procedure WMMouseHover(var Message: TMessage); message WM_MOUSEHOVER;
   procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMMouseHover(var Message: TMessage);
begin
 Caption:="&#207;&#240;&#232;&#248;&#235;&#224;";
end;

procedure TForm1.WMMouseLeave(var Message: TMessage);
begin
 Caption:="&#211;&#248;&#235;&#224;";
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 tme: tagTRACKMOUSEEVENT;
begin
 tme.cbSize:=SizeOf(tagTRACKMOUSEEVENT);
 tme.dwFlags:=TME_LEAVE or TME_HOVER;
 tme.hwndTrack:=Handle;
 tme.dwHoverTime:=1;
 TrackMouseEvent(tme);
end;

end.


 
homm_ro   (2007-07-05 14:56) [12]

> tme.cbSize:=SizeOf(tagTRACKMOUSEEVENT);
> tme.dwFlags:=TME_LEAVE or TME_HOVER;
> tme.hwndTrack:=Handle;
> tme.dwHoverTime:=1;
> TrackMouseEvent(tme);

Здрасти, а что это в onMuseMove делает?


 
{RASkov} ©   (2007-07-05 15:23) [13]

> [10] Инс ©   (05.07.07 14:20)
> > {RASkov} ©   (05.07.07 14:07) [9]
>
> Вот зачем таймер фигачить, там где он не нужен? Из-за лени заглянуть в MSDN?

Ага :) Там еще и разобраться нужно в английских словах....

> [11] Инс ©   (05.07.07 14:43)

Действительно... эта "штука" работает.... и работает лучше чем VCL"вские аналоги Leave и Enter...

> [12] homm_ro   (05.07.07 14:56)
> Здрасти, а что это в onMuseMove делает?

Посылает те самые сообщения(WM_MOUSEHOVER и WM_MOUSELEAVE), походу.... Т.е. WM_MOUSEHOVER всегда, пока мышь "елозит" по форме, а WM_MOUSELEAVE - когда ее(форму) покидает... Что замечательно, так - WM_MOUSELEAVE - всегда приходит. Потестил тут 5 мин....Все вроде ОК пока...:)



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

Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.04 c
15-1183045399
oldman
2007-06-28 19:43
2007.07.29
Всех сумасшедших - с праздником!


9-1157097994
Provodnick
2006-09-01 12:06
2007.07.29
Рисование координатной сетки


4-1171380174
niko_
2007-02-13 18:22
2007.07.29
Блокировка кнопок WIN и Alt+Tab


2-1183374371
malor
2007-07-02 15:06
2007.07.29
Error reading MyAdvStringGrid.SearchFooter.FindNextCaption: Prope


2-1183556130
gentos
2007-07-04 17:35
2007.07.29
Treeview





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский