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/)
-   -   [D2005 PE] FadeForm (https://www.delphipraxis.net/68475-%5Bd2005-pe%5D-fadeform.html)

xZise 30. Apr 2006 10:06


[D2005 PE] FadeForm
 
Ich würde gerne eine FadeForm anfertigen.
Also folgender Code bei "OnShow":
Delphi-Quellcode:
// AlphaBlend runtersetzen
if AlphaBlend then
  AlphaBlendValue := 5;

// Show "ausführen"
inherited Show;

// Einblenden
if AlphaBlend then
  while AlphaBlendValue < 255 do begin
    AlphaBlendValue := AlphaBlendValue + 10;
    Sleep(10);
  end;
und folgender bei "OnClose":
Delphi-Quellcode:
// Ausblenden
if AlphaBlend then begin
  AlphaBlendValue := 255;
  while AlphaBlendValue > 5 do begin
    AlphaBlendValue := AlphaBlendValue - 10;
    Sleep(10);
  end;
end;

// Close "ausführen"
inherited Close;
Nun habe ich keine Ahnung wie ich das hinzufüge bzw. ansonsten Code!
Gibts da vielleicht Tutorials?

PS: Wie schon gesagt: D2005 PE!

DP-Maintenance 30. Apr 2006 10:12

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Die Delphi-IDE" nach "Library: VCL / WinForms / Controls" verschoben.

DP-Maintenance 30. Apr 2006 10:37

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "Library: VCL / WinForms / Controls" nach "VCL / WinForms / Controls" verschoben.

arbu man 30. Apr 2006 11:24

Re: [D2005 PE] FadeForm
 
Delphi-Quellcode:
inherited Show;
Das sagt schon mal das es nicht in OnShow gehört. Offenbar wurde das ganze von TForm abgeleitet.

Delphi-Quellcode:
type
  TFadeForm = class (TForm)
  public
    procedure show;override;
    procedure close;override;
  end;
Dann einmal die Klasservervollständigung aufrufen und den Code eintragen.
Dann kanst du deine Form von TFadeForm ableiten und des sollte funktionieren.

mfg, Björn

xZise 30. Apr 2006 13:48

Re: [D2005 PE] FadeForm
 
Okay.

Erstmal ist die Frage doof gestellt ;)

Ich möchte sozusagen eine "Komponente" TFadeForm, die sich ein/ausblenden lässt.
Nun habe ich folgenden Code:

Delphi-Quellcode:
unit UFadeForm;

interface

uses
  Forms;

type
  TFadeForm = class(TForm)
  private
    pFadeIn, pFadeOut : Boolean;

  public
    procedure Show;
    procedure Close;
  published
    property FadeIn : Boolean read pFadeIn write pFadeIn;
    property FadeOut : Boolean read pFadeOut write pFadeOut;
  end;

implementation

procedure TFadeForm.Show;
begin
  // AlphaBlend runtersetzen
  if pFadeIn then
    AlphaBlendValue := 5;

  // Show "ausführen"
  inherited Show;

  // Einblenden
  if pFadeIn then
    while AlphaBlendValue < 255 do begin
      AlphaBlendValue := AlphaBlendValue + 10;
      Sleep(10);
    end;
end;

procedure TFadeForm.Close;
begin
// Ausblenden
  if AlphaBlend then begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Sleep(10);
    end;
  end;

  // Close "ausführen"
  inherited Close;
end;

end.
Dann die Fragen:
1. Ist der Code funktionsfähig?
2. Ich habe in der Toolpalette "TForm"! Jetzt möchte ich auch TFadeForm dort haben... Wie geht das?

@ override: Was bewirkt das "Override"?

GuenterS 30. Apr 2006 14:00

Re: [D2005 PE] FadeForm
 
zu 1)

Was spricht dagegen, dass Du es einfach probierst? Dann siehst Du quasi live obs geht oder nicht.

xZise 30. Apr 2006 14:01

Re: [D2005 PE] FadeForm
 
Ich müsste es in ein Projekt packen um es zu kompilieren :D

Und ansonsten kenne ich mich mit dem "Zeusg" ^^ nicht ganz so gut aus... Ich werde das mal in ein Package packen... (versuchen) und dann mal komplieren :D

fkerber 30. Apr 2006 14:02

Re: [D2005 PE] FadeForm
 
Hi!

Zu 1)
Probiers doch mal

zu 2)
Schau mal nach RegisterComponent

zu Override:
Wie der Name sagt, überschreibt es die bisherige Implementierung der Funktion/Prozedur...


Ciao Frederic

xZise 30. Apr 2006 14:04

Re: [D2005 PE] FadeForm
 
Zitat:

Zitat von fkerber
zu Override:
Wie der Name sagt, überschreibt es die bisherige Implementierung der Funktion/Prozedur...

Und wie kann ich dann denn bisherigen "Show" Code ausführen?

jfheins 30. Apr 2006 14:06

Re: [D2005 PE] FadeForm
 
Mit
Delphi-Quellcode:
inherited;
;)

fkerber 30. Apr 2006 14:06

Re: [D2005 PE] FadeForm
 
Hi!

Das tust du doch bereits:
Delphi-Quellcode:
inherited
Ciao Frederic

xZise 30. Apr 2006 14:08

Re: [D2005 PE] FadeForm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Doppelt hält besser ;) Okay danke!

1. Compilieren funzt
2. Siehe Attachement: Da hin möchte ich es haben

[edit]
@ Override:
[Fehler] UFadeForm.pas(14): E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden
[Fehler] UFadeForm.pas(15): E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden
[/edit]

GuenterS 30. Apr 2006 14:16

Re: [D2005 PE] FadeForm
 
Nur zum Testen, kannst Du die Unit auch in ein Projekt einbinden und händisch erstellen.

Delphi-Quellcode:
uses
   UFadeForm;

procedure Test;
var
  lFadeForm: TFadeForm;
begin
  lFadeForm := TFadeForm.CreateNew(nil);
  lFadeForm.FadeIn := true;
  lFadeForm.FadeOut := true;
  lFadeForm.Show;
  sleep(10000);
  lFadeForm.Free;
end;
und bezüglich

[Fehler] UFadeForm.pas(14): E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden
[Fehler] UFadeForm.pas(15): E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden

überschreibst Du am besten die Methoden DoShow bzw. DoHide, die sind in TCustomForm als Protected deklariert, kannst Du also auch in deiner TFadeForm dort deklarieren (Ich hoffe das hat sich von D7Pro zu D2005PE nicht geändert).

xZise 30. Apr 2006 17:56

Re: [D2005 PE] FadeForm
 
Also ich habe folgenden Quelltext:
Delphi-Quellcode:
program Project1;

uses
  Forms,
  UFadeForm in 'Codes\FadeForm\UFadeForm.pas',
  Unit1 in 'Unit1.pas';

{$R *.res}

begin
  Application.Initialize;
  Unit1.Test;
  Application.Run;
end.
Delphi-Quellcode:
unit Unit1;

interface

uses
  UFadeForm, SysUtils;

procedure Test;

implementation

procedure Test;
var
  lFadeForm: TFadeForm;
begin
  lFadeForm := TFadeForm.CreateNew(nil);
  lFadeForm.AlphaBlend := true;
  lFadeForm.FadeIn := true;
  lFadeForm.FadeOut := true;
  lFadeForm.Show;
  sleep(10000);
  lFadeForm.Free;
end;

end.
Delphi-Quellcode:
unit UFadeForm;

interface

uses
  SysUtils, Forms;

type
  TFadeForm = class(TForm)
  private
    pFadeIn, pFadeOut : Boolean;

  protected
    procedure DoShow; override;
    procedure DoHide; override;
  published
    property FadeIn : Boolean read pFadeIn write pFadeIn;
    property FadeOut : Boolean read pFadeOut write pFadeOut;
  end;

implementation

procedure TFadeForm.DoShow;
begin
  // AlphaBlend runtersetzen
  if pFadeIn then
    AlphaBlendValue := 5;

  // Show "ausführen"
  inherited Show;

  // Einblenden
  if pFadeIn then
    while AlphaBlendValue < 255 do begin
      AlphaBlendValue := AlphaBlendValue + 10;
      Sleep(10);
    end;
end;

procedure TFadeForm.DoHide;
begin
// Ausblenden
  if pFadeOut then begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Sleep(10);
    end;
  end;

  // Close "ausführen"
  inherited Close;
end;

end.
Also Fehler etc. gibts nicht, nur ist es, wie eine normale Form... "An" und "Aus" ^^

[edit]is natürlich auch AlphaBlend an :D [/edit]

arbu man 30. Apr 2006 17:59

Re: [D2005 PE] FadeForm
 
mach mal
Delphi-Quellcode:
 
  public
    procedure Show; override;
    procedure Hide; override;

xZise 30. Apr 2006 18:01

Re: [D2005 PE] FadeForm
 
Zitat:

[Fehler] UFadeForm.pas(14): E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden
[Fehler] UFadeForm.pas(15): E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden
Ohne Do ;) Hatte schon einen Sinn ^^

Und mit Do: Keine Änderung!

GuenterS 30. Apr 2006 18:23

Re: [D2005 PE] FadeForm
 
Du solltest in den DoShow und DoHide Proceduren auch nicht die Show und Close Proceduren aufrufen, sondern nur die elternmethode DoShow bzw. DoHide.

xZise 30. Apr 2006 18:27

Re: [D2005 PE] FadeForm
 
Hmmm auch geändert... Tut sich nix :(

GuenterS 30. Apr 2006 18:49

Re: [D2005 PE] FadeForm
 
Ausblenden funktioniert so
Delphi-Quellcode:
procedure TFadeForm.DoHide;
begin
// Ausblenden
  if pFadeOut then
  begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do
    begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Refresh;
      Sleep(10);
    end;
  end;
  inherited;
end;
Beim Einblenden ist es plötzlich da.

arbu man 30. Apr 2006 18:56

Re: [D2005 PE] FadeForm
 
Oder man macht das ganze als Komponente TAFade

Auch wenn man die Massages Abfragt SHOWWINDOW funktioniert es beim starten nicht. Aber mit dem Timer geht es bei mir.

turboPASCAL 30. Apr 2006 19:06

Re: [D2005 PE] FadeForm
 
Wenn das Programm mit Sleep() schlafen geschickt wird und dann auch kein
Application.ProcessMessages aufgerufen wird, was soll dann passieren ?

Delphi-Quellcode:
if pFadeIn then
    while AlphaBlendValue < 255 do begin
      AlphaBlendValue := AlphaBlendValue + 10;
      Application.ProcessMessages; // <--<<<
      Sleep(10);
    end;

Oder einfach mal hier in der DP nach Hier im Forum suchenDelay suchen, das ersetzt dan
gleich Sleep(10) und ProcessMessages.

GuenterS 30. Apr 2006 19:13

Re: [D2005 PE] FadeForm
 
Zitat:

Zitat von turboPASCAL
Wenn das Programm mit Sleep() schlafen geschickt wird und dann auch kein
Application.ProcessMessages aufgerufen wird, was soll dann passieren ?

Delphi-Quellcode:
if pFadeIn then
    while AlphaBlendValue < 255 do begin
      AlphaBlendValue := AlphaBlendValue + 10;
      Application.ProcessMessages; // <--<<<
      Sleep(10);
    end;

Oder einfach mal hier in der DP nach Hier im Forum suchenDelay suchen, das ersetzt dan
gleich Sleep(10) und ProcessMessages.

Leider verwendet diese zwei Delay Varianten, erst wieder ProcessMessages. Das wäre damit also nicht ersetzt.


Und was machen wir jetzt mit dieser Weisheit?

Es geht nämlich auch ohne genauso und eigentlich ist das Ausblenden an sich schon gelöst, siehe meinen Beitrag über Deinem.

Was noch nicht klappt, ist das Einblenden (mit Application.ProcessMessages einfügen ist es nicht getan...)

xZise 30. Apr 2006 19:40

Re: [D2005 PE] FadeForm
 
Also weder ein noch ausblenden funzt :( Schade :(

GuenterS 30. Apr 2006 20:03

Re: [D2005 PE] FadeForm
 
Liste der Anhänge anzeigen (Anzahl: 1)
komisch bei mir geht das ausblenden.

Delphi-Quellcode:
unit UFadeForm;

interface

uses
  SysUtils, Forms;

type
  TFadeForm = class(TForm)
  private
    pFadeIn, pFadeOut: Boolean;

  protected
    procedure DoShow; override;
    procedure DoHide; override;
  public

  published
    property FadeIn: Boolean read pFadeIn write pFadeIn;
    property FadeOut: Boolean read pFadeOut write pFadeOut;
  end;

implementation

uses Controls;

procedure TFadeForm.DoShow;
begin
  // Einblenden
  if pFadeIn then
  begin
    inherited;
    AlphaBlendValue := 5;
    while AlphaBlendValue < 255 do
    begin
      AlphaBlendValue := AlphaBlendValue + 10;
      Sleep(10);
    end;
  end
  else
    inherited;
end;

procedure TFadeForm.DoHide;
begin
// Ausblenden
  if pFadeOut then
  begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do
    begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Sleep(10);
    end;
  end;
  inherited;
end;


end.
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    FFadeForm: TFadeForm;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  FFadeForm.Show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FFadeForm := TFadeForm.CreateNew(nil);
  FFadeForm.Visible := false;
  FFadeForm.AlphaBlend := true;
  FFadeForm.FadeIn := true;
  FFadeForm.FadeOut := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   FFadeForm.Hide;
end;

end.

turboPASCAL 30. Apr 2006 20:21

Re: [D2005 PE] FadeForm
 
Oder so:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, Variants, Classes, Graphics, Controls, Forms, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TFadeForm = class(TForm)
  private
    pFadeIn, pFadeOut : Boolean;
  protected
    procedure DoShow; override;
    procedure DoHide; override;
  published
    property FadeIn : Boolean read pFadeIn write pFadeIn;
    property FadeOut : Boolean read pFadeOut write pFadeOut;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TFadeForm.DoShow;
begin
  // AlphaBlend runtersetzen
  if pFadeIn then
    AlphaBlendValue := 0;

  // Show "ausführen" // <-
  inherited Show;     // <-

  ShowWindow(Self.Handle, SW_SHOW); // ein Show erzwingen!

  // Einblenden
  if pFadeIn then
    while AlphaBlendValue < 255 do begin
      AlphaBlendValue := AlphaBlendValue + 5;
      Application.ProcessMessages; // Messages Verarbeiten !
      Sleep(10);
    end;
end;

procedure TFadeForm.DoHide;
begin
// Ausblenden
  if pFadeOut then begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Application.ProcessMessages; // Messages Verarbeiten !
      Sleep(10);
    end;
  end;

  // Close "ausführen"
  inherited Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  lFadeForm: TFadeForm;
begin
  lFadeForm := TFadeForm.CreateNew(nil);

  lFadeForm.Left := (Screen.Width div 2) -  ((lFadeForm.Width) div 2 );
  lFadeForm.Top := (Screen.Height div 2) -  ((lFadeForm.Height) div 2);

  lFadeForm.AlphaBlend := true;
  lFadeForm.FadeIn := true;
  lFadeForm.FadeOut := true;
  lFadeForm.Show;
  sleep(2000);
  lFadeForm.Hide;
  lFadeForm.Free;
  sleep(500);
end;

end.

GuenterS 30. Apr 2006 21:16

Re: [D2005 PE] FadeForm
 
Zitat:

Zitat von turboPASCAL
Oder so:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, Variants, Classes, Graphics, Controls, Forms, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TFadeForm = class(TForm)
  private
    pFadeIn, pFadeOut : Boolean;
  protected
    procedure DoShow; override;
    procedure DoHide; override;
  published
    property FadeIn : Boolean read pFadeIn write pFadeIn;
    property FadeOut : Boolean read pFadeOut write pFadeOut;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TFadeForm.DoShow;
begin
  // AlphaBlend runtersetzen
  if pFadeIn then
    AlphaBlendValue := 0;

  // Show "ausführen" // <-
  inherited Show;     // <-

  ShowWindow(Self.Handle, SW_SHOW); // ein Show erzwingen!

  // Einblenden
  if pFadeIn then
    while AlphaBlendValue < 255 do begin
      AlphaBlendValue := AlphaBlendValue + 5;
      Application.ProcessMessages; // Messages Verarbeiten !
      Sleep(10);
    end;
end;

procedure TFadeForm.DoHide;
begin
// Ausblenden
  if pFadeOut then begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Application.ProcessMessages; // Messages Verarbeiten !
      Sleep(10);
    end;
  end;

  // Close "ausführen"
  inherited Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  lFadeForm: TFadeForm;
begin
  lFadeForm := TFadeForm.CreateNew(nil);

  lFadeForm.Left := (Screen.Width div 2) -  ((lFadeForm.Width) div 2 );
  lFadeForm.Top := (Screen.Height div 2) -  ((lFadeForm.Height) div 2);

  lFadeForm.AlphaBlend := true;
  lFadeForm.FadeIn := true;
  lFadeForm.FadeOut := true;
  lFadeForm.Show;
  sleep(2000);
  lFadeForm.Hide;
  lFadeForm.Free;
  sleep(500);
end;

end.

Toll, damit funktionierts bei mir. Das ProcessMessages kann man aber getrost weglassen, nicht wirklich notwendig.

Delphi-Quellcode:
unit UFadeForm;

interface

uses
  SysUtils, Forms;

type
  TFadeForm = class(TForm)
  private
    pFadeIn, pFadeOut: Boolean;

  protected
    procedure DoShow; override;
    procedure DoHide; override;
  public

  published
    property FadeIn: Boolean read pFadeIn write pFadeIn;
    property FadeOut: Boolean read pFadeOut write pFadeOut;
  end;

implementation

uses Controls, Windows;

procedure TFadeForm.DoShow;
begin
  // Einblenden
  ShowWindow(Self.Handle, SW_SHOW); //  <--- Das war die Lösung
  if pFadeIn then
  begin
    inherited;
    AlphaBlendValue := 5;
    while AlphaBlendValue < 255 do
    begin
      AlphaBlendValue := AlphaBlendValue + 10;
      Sleep(10);
    end;
  end
  else
    inherited;
end;

procedure TFadeForm.DoHide;
begin
// Ausblenden
  if pFadeOut then
  begin
    AlphaBlendValue := 255;
    while AlphaBlendValue > 5 do
    begin
      AlphaBlendValue := AlphaBlendValue - 10;
      Sleep(10);
    end;
  end;
  inherited;
end;


end.
turboPascal hat dieses ShowWindow(Self.Handle, SW_SHOW); noch ausgeführt, damit klappt das vorzüglich. Wieso muss man das Einblenden anders behandeln, als das ausblenden? Ohne der gewissen Zeile, kommt das Formular nach einer Weile sofort (unabhängig davon ob man ProcessMessages verwendet oder nicht).

turboPASCAL 1. Mai 2006 07:47

Re: [D2005 PE] FadeForm
 
Wenn die Function in eine OnButtonClick verfrachtet wird sollte es auch ohne SchowWindow klappen.
Der Grund liegt darin das die Form (und auch die Unterformen was ja die TFadeForm ist) einfachnoch kein Handle haben.

Was das ProcessMessages Betrift, wenn du die Form nicht nackt darstellen willst sonder noch einen Button oder eine Graphik event. auch eine Animation darauf haben möchtest müssen die Messages verarbeitet werden.

Und immer daran denken das Sleep das gesamte Programm lamlegt, abgesehen Threads in denen das Sleep den nur Thread beeinflusst...

GuenterS 1. Mai 2006 09:14

Re: [D2005 PE] FadeForm
 
Zitat:

Zitat von turboPASCAL
Wenn die Function in eine OnButtonClick verfrachtet wird sollte es auch ohne SchowWindow klappen.
Der Grund liegt darin das die Form (und auch die Unterformen was ja die TFadeForm ist) einfachnoch kein Handle haben.

Hm komisch. Ich habe die FadeForm im OnCreate der Hauptform erzeugt und per ClickEvent eines Buttons dann angezeigt. Da müßte dann eigentlich längst ein Handle da gewesen sein. ShowWindow geb ich doch das Handle mit, wie soll das gehen, wenn Sie ja wie Du sagst da noch keines haben?

Zitat:

Zitat von turboPASCAL
Und immer daran denken das Sleep das gesamte Programm lamlegt, abgesehen Threads in denen das Sleep den nur Thread beeinflusst

Jup, wenn man Nebenläufigkeiten haben möchte, finde ich es besser Threads zu verwenden.

xZise 1. Mai 2006 09:25

Re: [D2005 PE] FadeForm
 
Zitat:

Zitat von turboPASCAL
Wenn die Function in eine OnButtonClick verfrachtet wird sollte es auch ohne SchowWindow klappen.
Der Grund liegt darin das die Form (und auch die Unterformen was ja die TFadeForm ist) einfachnoch kein Handle haben.

Was das ProcessMessages Betrift, wenn du die Form nicht nackt darstellen willst sonder noch einen Button oder eine Graphik event. auch eine Animation darauf haben möchtest müssen die Messages verarbeitet werden.

Und immer daran denken das Sleep das gesamte Programm lamlegt, abgesehen Threads in denen das Sleep den nur Thread beeinflusst...

Zitat:

Zitat von GuenterS
Zitat:

Zitat von turboPASCAL
Wenn die Function in eine OnButtonClick verfrachtet wird sollte es auch ohne SchowWindow klappen.
Der Grund liegt darin das die Form (und auch die Unterformen was ja die TFadeForm ist) einfachnoch kein Handle haben.

Hm komisch. Ich habe die FadeForm im OnCreate der Hauptform erzeugt und per ClickEvent eines Buttons dann angezeigt. Da müßte dann eigentlich längst ein Handle da gewesen sein. ShowWindow geb ich doch das Handle mit, wie soll das gehen, wenn Sie ja wie Du sagst da noch keines haben?

Zitat:

Zitat von turboPASCAL
Und immer daran denken das Sleep das gesamte Programm lamlegt, abgesehen Threads in denen das Sleep den nur Thread beeinflusst

Jup, wenn man Nebenläufigkeiten haben möchte, finde ich es besser Threads zu verwenden.

Also ich verstehe nur Bahnhof...

GuenterS 1. Mai 2006 09:50

Re: [D2005 PE] FadeForm
 
Hm.

Habe das ganze jetzt mit dem ProcessMessages, aber noch eine Zustandsvariable eingefügt, so dass nichts anderes mit diesem Formular passieren kann.

Solange ich es "händisch" mit TFadeForm erstelle funktioniert es wie es soll (so wollte es zumindest xZise).

Natürlich wäre es viel schöner, wenn man auch dieses Form in der Delphi IDE designen könnte, also Buttons, etc. hinzufügen.

Deshalb bin ich hergegangen und hab gesagt Neu->Formular. Habe dort ebenfalls die Methoden überschrieben und siehe da, ich kann sie jetzt bei Neu anwählen. Dann habe ich eine neue Form welche von TFadeForm abgeleitet ist, aber leider fehlt diesem wieder die Funktionalität vom Ein- bzw. Ausblenden.

Gibts da einen bestimmten Trick?

Oder wäre es gescheiter das Ein- Ausblenden über eine Procedur zu machen, der man das entsprechende Formular übergibt? (DoShow und DoHide sind ja nichts anderes als die Routinen welche aufgerufen werden, wenn das OnShow bzw. OnHide ereignis eintritt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz