Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Прозрачность окна


Автор: Rondo 13.5.2006, 23:29
При нажатии кнопки exit у меня активируется таймер и окно ставноится прозрачным.
Когда form1.AlphaBlentValue:= 0 программа завершает работу, вот код

Код

procedure TForm1.Button2Click(Sender: TObject);
begin
  form1.AlphaBlend:= true;
  timer2.Enabled:= true;
  timer2.Interval:= 1;
end;


и таймер

Код

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  form1.AlphaBlendValue:= form1.AlphaBlendValue-5;
  if form1.AlphaBlendValue = 0 then
  begin
    timer2.Enabled:= false;
    form1.Close;
  end;
end;


Проблема в том что это все работает, но при нажатии крестика(правый верхний угол) она закрывается без AlphaBlenda... просто так

На form1.OnClose прописал тоже...
Код

  form1.AlphaBlend:= true;
  timer2.Enabled:= true;
  timer2.Interval:= 1;


Как сделать чтоб она и на крестике так же закрывалась?  

Автор: Sunvas 14.5.2006, 00:48
Отлавливай сообщения.. Хотя есть такой event у форму Onclose и Onclosequery. Пиши свою процедуру там. А в onclick кнопки exit пиши просто close; 

Автор: Rondo 14.5.2006, 01:20
На он CloseQuery тоже просто так закрывается.. 

Автор: gonzales 14.5.2006, 01:36
Вот рабочий пример без всяких таймеров, задержку только меняй


Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
repeat
form1.AlphaBlendValue:=form1.AlphaBlendValue-5;
windows.Sleep(10);
until form1.AlphaBlendValue=0;

end;
 

Автор: Rondo 14.5.2006, 01:43
Все спасибо! разобрался smile

только надо еще AlphaBlend поставить true smile

Код

  form1.AlphaBlend:= true;
  form1.AlphaBlendValue:= 255;
  repeat
    form1.AlphaBlendValue:=form1.AlphaBlendValue-5;
    windows.Sleep(10);
  until form1.AlphaBlendValue=0; 
 

Автор: Sunvas 14.5.2006, 02:06
Rondo, используй кнопку "Код"!!! 

Автор: Poseidon 14.5.2006, 03:02
Ужос! smile
Все делается одной стандартной (!) функцией

Код
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AnimateWindow(Handle, 500, AW_BLEND or AW_HIDE);
end;

 smile  

Автор: gonzales 14.5.2006, 12:27
Цитата

Все делается одной стандартной (!) функцией


Респект  smile 
не знал 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)