AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm beim Beenden langsam ausblenden
Thema durchsuchen
Ansicht
Themen-Optionen

Programm beim Beenden langsam ausblenden

Ein Thema von dopeline · begonnen am 9. Jul 2003 · letzter Beitrag vom 10. Jul 2003
Antwort Antwort
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#1

Programm beim Beenden langsam ausblenden

  Alt 9. Jul 2003, 18:36
Hallo leute! habe das gerade in nem anderen programm gesehen: wenn man auf schließen klickt dann blendet sich das formular langsam aus, wenn es weg ist wird es eigentlich erst beendet. wie stellt man das an?

Gruße, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Programm beim Beenden langsam ausblenden

  Alt 9. Jul 2003, 21:54
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private-Deklarationen }
    FCanClose: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  AlphaBlendValue := AlphaBlendvalue - 20;
  if AlphaBlendValue < 20 then
  begin
    FCanClose := TRUE;
    Timer1.Enabled := FALSE;
    Close();
  end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  Timer1.Enabled := TRUE;
  CanClose := FCanClose;
end;
Mit dem TimerIntervall etwas rumspielen, bis es paßt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tiefflieger

Registriert seit: 20. Mai 2003
18 Beiträge
 
Delphi 6 Personal
 
#3

Re: Programm beim Beenden langsam ausblenden

  Alt 9. Jul 2003, 22:17
das geht aber nur mit winxp oder?
Irren ist menschlich.
Aber wenn man richtig Mist bauen will, braucht man einen Computer.

Dan Rather, CBS-Fernsehreporter
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#4

Re: Programm beim Beenden langsam ausblenden

  Alt 9. Jul 2003, 22:18
Das geht mit 2000 und neuer. Siehe auch Delphi-Hilfe.
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Programm beim Beenden langsam ausblenden

  Alt 10. Jul 2003, 10:56
@Luckie

also irgentwie funzt das nicht. ich starte das programm, klicke auf schließen, es passiert nichts, ich kann so oft klicken, wie ich will, nichts. nach ner weile schließt sich das formular (allerdings ohne sich auszublenden.)

also an windows dürfte das nicht liegen (WinXP Pro)

irgentwo ist dort der wurm drin. aber wo?

Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Programm beim Beenden langsam ausblenden

  Alt 10. Jul 2003, 11:04
Geht so, wie er da steht. Beweis im Anhang.
Angehängte Dateien
Dateityp: zip projekt1.zip (1,1 KB, 31x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#7

Re: Programm beim Beenden langsam ausblenden

  Alt 10. Jul 2003, 11:04
Kannst es hiermit ja mal versuchen.

Man braucht zwar eine Trackbar und es funktionier nur unter WindowsXP, aber du kannst es ja ein bischen ändern.

Delphi-Quellcode:
// Make your forms 25%, 50% Transparent...

TMyForm = class (TForm);

TrackBar1: TTrackBar;
//..
private
FColorKey: TCOLOR;

end;

const
  // Use crKey as the transparency color.
  LWA_COLORKEY = 1;
  // Use bAlpha to determine the opacity of the layered window..
  LWA_ALPHA = 2;
  WS_EX_LAYERED = $80000;

implementation

{$R *.DFM}

// The SetLayeredWindowAttributes function sets the opacity and transparency
// color key of a layered window.
// Note : This function is only available with Windows 2000 and XP!
function SetLayeredWindowAttributes(
  // Handle to the layered window.
  Wnd: hwnd;
  // Pointer to a COLORREF value that specifies the transparency
  // color key to be used when composing the layered window
  crKey: ColorRef;
  // Alpha value used to describe the opacity of the layered window
  Alpha: Byte;
  // Specifies an action to take
  // LWA_COLORKEY or LWA_ALPHA
  // This parameter can be one or more of the following values:
  dwFlags: DWORD): Boolean;
  stdcall; external 'user32.dll';


procedure TMyForm.TrackBar1Change(Sender: TObject);
  // Trackbar.Position must run at range 1-255...
begin
  SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
  SetLayeredWindowAttributes(Handle, ColorToRGB(FColorKey), TrackBar1.Position, LWA_ALPHA);
end;

{******************************************************************}

{ To load the SetLayeredWindowAttributes() function dynamically, use this function:}

function MakeWindowTransparent(Wnd: HWND; nAlpha: Integer = 10): Boolean;
type
  TSetLayeredWindowAttributes = function(hwnd: HWND; crKey: COLORREF; bAlpha: Byte;
    dwFlags: Longint): Longint;
  stdcall;
const
  // Use crKey as the transparency color.
  LWA_COLORKEY = 1;
  // Use bAlpha to determine the opacity of the layered window..
  LWA_ALPHA = 2;
  WS_EX_LAYERED = $80000;
var
  hUser32: HMODULE;
  SetLayeredWindowAttributes: TSetLayeredWindowAttributes;
  i: Integer;
begin
  Result := False;
  // Here we import the function from USER32.DLL
  hUser32 := GetModuleHandle('USER32.DLL');
  if hUser32 <> 0 then
  begin @SetLayeredWindowAttributes := GetProcAddress(hUser32, 'SetLayeredWindowAttributes');
    // If the import did not succeed, make sure your app can handle it!
    if @SetLayeredWindowAttributes <> nil then
    begin
      // Check the current state of the dialog, and then add the WS_EX_LAYERED attribute
      SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_LAYERED);
      // The SetLayeredWindowAttributes function sets the opacity and
      // transparency color key of a layered window
      SetLayeredWindowAttributes(Wnd, 0, Trunc((255 / 100) * (100 - nAlpha)), LWA_ALPHA);
      Result := True;
    end;
  end;
end;
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Programm beim Beenden langsam ausblenden

  Alt 10. Jul 2003, 11:19
@Luckie
hab den fehler gefunden: vergessen alphablend des formulares auf true zu setzen

@Uncle Cracker
ich glaub da nehm ich lieber luckies variante. ist mir leichter verständlich


dankeschön!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Programm beim Beenden langsam ausblenden

  Alt 10. Jul 2003, 11:29
Zitat von dopeline:
@Luckie
hab den fehler gefunden: vergessen alphablend des formulares auf true zu setzen
Bitte drei Sätze á 10 Wiederholungen.

Zitat:
@Uncle Cracker
ich glaub da nehm ich lieber luckies variante. ist mir leichter verständlich
Die Version vom Onkel brauchst du dann, wenn dein Delphi die Eigenschaft AlphaBlend nicht kennen sollte, wie es bei seiner D4 Version der Fall ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:58 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