Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Programm einblenden (https://www.delphipraxis.net/61461-programm-einblenden.html)

Knotti2005 21. Jan 2006 18:17


Programm einblenden
 
Wie kann ich mein Programm einblenden es soll dabei von

AlphaBlendValue 0 auf 255 innerhalb von 1 sec gehen..

ichbins 21. Jan 2006 18:48

Re: Programm einblenden
 
so:
Delphi-Quellcode:
var
  i:integer;
begin
  for i:=1 to 255 do begin
    form1.alphablend:=i;
    sleep(1000 div 255);
    application.processmessages;
  end;
end;

Knotti2005 21. Jan 2006 18:55

Re: Programm einblenden
 
Delphi-Quellcode:
  [Fehler] Unit1.pas(31): E2010 Inkompatible Typen: 'Boolean' und 'Integer'

ichbins 21. Jan 2006 19:01

Re: Programm einblenden
 
äh, ja, muss Alphablendvalue heissen. Alphablend ist ein Booleanwert der regelt ob Alphablending überhaupt aktiviert ist.

Delphi-Quellcode:
var
  i:integer;
begin
  form1.alphablend:=true;
  for i:=1 to 255 do begin
    form1.alphablendvalue:=i;
    sleep(1000 div 255);
    application.processmessages;
  end;
  form1.alphablend:=false;
end;

ManuMF 21. Jan 2006 19:36

Re: Programm einblenden
 
Mit Sleep funktioniert es nicht, besser ist Delay.

In onformShow geht es auch nicht, da das Formular praktisch erst am Ende dieser Prozedur sichtbar wird. Aber mit einem Timer geht es:
Delphi-Quellcode:
onFormShow
begin
  Timer.enabled := true;
end;

onTimer
begin
  Timer.enabled := false;
  { Code von ichbins }
end;
Beim Timer sollte natürlich im OI enabled auf false gesetzt werden.

[edit]am Besten ist es natürlich, wenn i als Byte deklariert ist ;-)[/edit]

Gruß,
ManuMF

turboPASCAL 21. Jan 2006 19:46

Re: Programm einblenden
 
Zitat:

Zitat von ManuMF
Mit Sleep funktioniert es nicht, besser ist Delay.

:wiejetzt:

Delphi-Quellcode:
procedure TForm.FormCreate...
var i: integer;
begin
  alphablend := true;
  alphablendvalue := 0;
  show;
  for i:= 0 to 255 do begin
    alphablendvalue := i;
    application.processmessages;
    sleep(0); // bzw sleep(1);
  end;
  alphablend := false;
end;
Und ob das tut. ;)

ManuMF 21. Jan 2006 19:51

Re: Programm einblenden
 
Also, Nach meiner Erfahrung hält sleep immer alles auf und hat an mehreren Stellen bei mir nicht in der gewünschten Weise funktioniert. Daher nehme ich Delay.

Und in onFormCreate hat das AlphaBlending bei mir nicht funktioniert, auch in onformShow. Mit einem Timer hat es dann geklappt.
Mit nicht funktionieren meine ich natürlich nicht, dass der Compiler meckert, sondern dass das Formular erst erscheint, wenn AlphaBlending auf Byte[Undurchsichtig] ist, also die Prozedur abgearbeitet ist.

Gruß,
ManuMF

ichbins 21. Jan 2006 19:54

Re: Programm einblenden
 
... was daran liegt dass bei formcreate und formshow das form noch garnicht sichtbar ist. Diese Events sind vollkommen ungeeignet dafür.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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