AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

fade via sleep

Ein Thema von TheAn00bis · begonnen am 9. Nov 2005 · letzter Beitrag vom 10. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

fade via sleep

  Alt 9. Nov 2005, 17:48
Warum bleibt der gewünschte Einblend-Effekt aus?

Delphi-Quellcode:
procedure TForm1.einblenden;
begin
alphablend:=true;
alphablendvalue:=0;
repeat
  alphablendvalue:=alphablendvalue+3;
  sleep(10);
until alphablendvalue >= 250;
alphablendvalue:=255;
alphablend:=false;
end;
Stattdessen wird nach kurzer Verzögerung das ganze
Fenster eingeblendet.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: fade via sleep

  Alt 9. Nov 2005, 17:49
Setze in die Schleife ein Application.ProcessMessages;

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#3

Re: fade via sleep

  Alt 9. Nov 2005, 17:52
So:

Delphi-Quellcode:
procedure TMainForm.einblenden;
begin
alphablend:=true;
alphablendvalue:=0;
repeat
  alphablendvalue:=alphablendvalue+3;
  Application.ProcessMessages;
  sleep(10);
until alphablendvalue >= 250;
alphablendvalue:=255;
alphablend:=false;
end;
?

Scheint keinen Unterschied zu machen.
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#4

Re: fade via sleep

  Alt 9. Nov 2005, 18:10
Wo ist alphablendvalue denn definiert?
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#5

Re: fade via sleep

  Alt 9. Nov 2005, 18:21
"definiert"?

Das ist ein Property von TForm. Wenn ich nur schreibe

Delphi-Quellcode:
procedure Form1.einblenden;
begin
alphablend:=true;
alphablendvalue:=125;
end;
Dann klappt das ja auch wunderbar, aber es soll ja nicht
halb transparent sein, sondern einblenden.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: fade via sleep

  Alt 9. Nov 2005, 18:26
Delphi-Quellcode:
procedure TForm2.Timer2Timer(Sender: TObject);
begin
if Alphablendvalue < 255 then begin
  inc(Alphablendvalue); //bzw AlphaBlendvalue := AlphaBlendValue + 1;
end;
end;
So etwa hab ichs gemacht...

bzw ich hatte es eigentlich so:

Delphi-Quellcode:
procedure MakeWindowTransparent(Wnd: HWND; Alpha: Byte);
const
  WS_EX_LAYERED = $80000;
  LWA_ALPHA = $02;
type
  TSetLayeredWindowAttributes = function(const hWnd: HWND; crKey: Integer; bAlpha: Byte; dwFlags: Integer) : Integer; stdcall;
var
  SetLayeredWindowAttributes : TSetLayeredWindowAttributes;
  User32DLL : THandle;
begin
  User32DLL := LoadLibrary('User32.dll');
  if User32DLL <> 0 then
  begin
    @SetLayeredWindowAttributes := GetProcAddress(User32DLL, 'SetLayeredWindowAttributes');
    if @SetLayeredWindowAttributes <> nil then
    begin
      SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_LAYERED);
      SetLayeredWindowAttributes(Wnd, 0, Alpha, LWA_ALPHA);
    end;
  end;
  FreeLibrary(User32DLL);
end; (* MakeWindowTransparent *)
Aus der CodeLib oder sonstwo aus der DP ^^ und dann:

Delphi-Quellcode:
procedure TForm2.Timer2Timer(Sender: TObject);
begin
if Alpha < 255 then begin
  MakeWindowTransparent(Form1.Handle,Alpha);
  inc(Alpha);
end;
end;
Michael
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#7

Re: fade via sleep

  Alt 9. Nov 2005, 18:45
Zitat von Neutral General:
Delphi-Quellcode:
procedure TForm2.Timer2Timer(Sender: TObject);
begin
if Alphablendvalue < 255 then begin
  inc(Alphablendvalue); //bzw AlphaBlendvalue := AlphaBlendValue + 1;
end;
end;
Das geht mit "inc"? Hatte ich auch erst,
aber da hat mein Compiler Terror gemacht.

Klar, über einen Timer gehts aber ich halte es für unelegant auf jede Form erst ein Timer
Objekt legen zu müssen.
Außerdem verstehe ich einfach nicht, warum es nicht über sleep funktioniert. Habe es auch
mit der "delay"-Funktion hier aus der Code-Libary versucht - ohne Erfolg.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: fade via sleep

  Alt 9. Nov 2005, 19:08
Wenn du die Funktion im OnCreate aufrufst, darfst du dich nicht wundern, warum es nicht funktioniert . Im OnActivate funktioniert bei mir alles wie erwartet.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#9

Re: fade via sleep

  Alt 9. Nov 2005, 19:20
Zitat von Khabarakh:
Wenn du die Funktion im OnCreate aufrufst, darfst du dich nicht wundern, warum es nicht funktioniert . Im OnActivate funktioniert bei mir alles wie erwartet.
Wow, daran lag es. Warum darf ich das nicht im onCreate aufrufen?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: fade via sleep

  Alt 9. Nov 2005, 19:22
Weil die Form da nochnicht fertig ist weil sie erst erstellt wird und es noch nichts zum Alphablenden gibt Naja genau weiß ichs ehrlichgesagt nicht aber jedenfalls darf man ins OnCreate oder OnShow vonner Form nichts verändern was irgendwie die Sichtbarkeit des Formulars betrifft...
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz