AGB  ·  Datenschutz  ·  Impressum  







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

Eventhandling problem/ahnungslosigkeit

Ein Thema von Lyan · begonnen am 4. Mär 2015 · letzter Beitrag vom 5. Mär 2015
Antwort Antwort
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#1

Eventhandling problem/ahnungslosigkeit

  Alt 4. Mär 2015, 23:03
Delphi-Version: XE7
Hallo

Delphi-Quellcode:
procedure TFormSplash.OnLoop(sender:TObject);
begin
  //splash screen zu ende
end;

procedure TFormSplash.FormCreate(Sender: TObject);
begin
  //Application.CreateForm(TFormMain, FormMain);
  (ImageSplash.Picture.Graphic as TGIFImage).Animate := True;
  (ImageSplash.Picture.Graphic as TGIFImage).OnLoop := OnLoop;
end;
Ich habe ein animiertes gif als splashscreen das sobald es einmal durchlaufen ist die mainform laden soll.
Ich kenne mich mit eventhandlich in delphi nicht aus, daher bin ich ratlos was daran falsch ist. Kann ich prozeduren so nicht dem event zuweisen?

Danke
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Eventhandling problem/ahnungslosigkeit

  Alt 5. Mär 2015, 06:55
Das stimmt schon so. Evtl. hast du oben das hier vergessen:

Delphi-Quellcode:
type
  TFormSplash = class(TForm)
    ...
  private
    procedure OnLoop(sender:TObject);
  end;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#3

AW: Eventhandling problem/ahnungslosigkeit

  Alt 5. Mär 2015, 07:07
Kann ich prozeduren so nicht dem event zuweisen?
Ja, kann man.

ABER, auch wenn da Property OnLoop deklariert ist, so wird es intern scheinbar niemals aufgerufen ... da kannst'e also lange warten.



Bug an Emba melden
und TTimer nehmen (du weißt ja, wie lang das GIF ist)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Eventhandling problem/ahnungslosigkeit

  Alt 5. Mär 2015, 09:56
Also für eine simple Splash-Form genügt das hier:

Die Projekt-Datei (nichts Auffälliges dort):
Delphi-Quellcode:
program dp_184173;

uses
  Vcl.Forms,
  Form.MyMainForm in 'Form.MyMainForm.pas{MyMainForm},
  Form.MySplashForm in 'Form.MySplashForm.pas{MySplashForm};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TMyMainForm, MyMainForm);
  Application.Run;
end.
Die MainForm
Delphi-Quellcode:
unit Form.MyMainForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TMyMainForm = class( TForm )
  private

  public
    procedure AfterConstruction; override;

  end;

var
  MyMainForm: TMyMainForm;

implementation

{$R *.dfm}

uses
  Form.MySplashForm;

{ TMyMainForm }

procedure TMyMainForm.AfterConstruction;
var
  LSplash : TMySplashForm;
begin
  inherited;
  // Die MainForm soll NICHT angezeigt werden
  Application.ShowMainForm := False;

  // Eine Splash-Form erzeugen und anzeigen
  LSplash := TMySplashForm.Create( Application );
  LSplash.Show;
end;

end.
Die Splash-Form:
Delphi-Quellcode:
unit Form.MySplashForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TMySplashForm = class( TForm )
    Button1: TButton;
    procedure Button1Click( Sender: TObject );
  private
  protected
    procedure DoClose( var Action: TCloseAction ); override;

  public

  end;

var
  MySplashForm: TMySplashForm;

implementation

{$R *.dfm}

procedure TMySplashForm.Button1Click( Sender: TObject );
begin
  Self.Close;
end;

procedure TMySplashForm.DoClose( var Action: TCloseAction );
begin
  // Diese Form-Instanz zerstören
  Action := caFree;

  // Die MainForm sichtbar machen
  Application.MainForm.Visible := True;
  inherited;

end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#5

AW: Eventhandling problem/ahnungslosigkeit

  Alt 5. Mär 2015, 17:34
Kann ich prozeduren so nicht dem event zuweisen?
Ja, kann man.

ABER, auch wenn da Property OnLoop deklariert ist, so wird es intern scheinbar niemals aufgerufen ... da kannst'e also lange warten.



Bug an Emba melden
und TTimer nehmen (du weißt ja, wie lang das GIF ist)
Ja tatsache Ein Glück dass ichs gestern Abend sein gelassen habe mit debugging.

@Sir Rufo:

Ja danke, ist bestimmt hilfreich für Leute die nicht wissen wie man eine Splashform erstellt/handled.
Aber mein Problem bestand ja nicht darin eine Splashfrm zu erstellen sondern mit dem Eventhandling des events "onloop" von TGIFImage.

Aber wie himitsu bereits feststellte: Das event wird intern niemals gecallt, d.h. meine Funktion zum handlen wird auch nie aufgerufen -> Bug.

MfG
  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 02:42 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