AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datei bei Programmstart laden, nachdem form sichtbar ist.
Thema durchsuchen
Ansicht
Themen-Optionen

Datei bei Programmstart laden, nachdem form sichtbar ist.

Ein Thema von _frank_ · begonnen am 21. Mai 2007 · letzter Beitrag vom 21. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

Datei bei Programmstart laden, nachdem form sichtbar ist.

  Alt 21. Mai 2007, 13:39
moin,
ich versuche grade verzweifelt meine Datei-Laderoutine (für parameter) so zu starten, dass diese erst ausgeführt wird, wenn das Mainform komplett sichtbar ist.
Leider klappt das noch nicht so ganz...TForm.OnShow ist auch noch zu zeitig und im oncreate ne nachricht schicken genauso...hab schon im forum, bei DF und google rumgesucht, aber nichts gefunden, was mir weiterhilft.
Wie könnte man das realisieren?

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 13:49
Im onShow nochmal eine (eigenes definiert) Windows-Message schicken oder einen Timer starten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 13:49
OnPaint wäre wohl die richtige Stelle. Du musst aber einen Flag setzen, damit die Datei nicht jedesmal geladen wird, sondern nur beim ersten mal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#4

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:01
Zitat von Bernhard Geyer:
Im onShow nochmal eine (eigenes definiert) Windows-Message schicken oder einen Timer starten.
Das mit dem timer wollte ich eigentlich vermeiden...das mit der Nachricht im OnShow klappt auch nicht (Task-button vorhanden, aber form noch nicht sichtbar):

Delphi-Quellcode:
const
  WM_LoadFile=WM_USER+10;

type
  TForm_DFMMain = class(TForm)
...
  private
    { Private-Deklarationen }
    FileToLoad:string;
    Procedure WMLoadFile(Var Msg: TMessage); message WM_LoadFile;
...
  end;

procedure TForm_DFMMain.FormCreate(Sender: TObject);
begin
  if (paramCount>0) then
  begin
    if fileExists(ParamStr(paramCount)) then
      FileToLoad:=ParamStr(paramCount);
  end;
end;

Procedure TForm_DFMMain.WMLoadFile(Var Msg: TMessage);
begin
  LoadDFMFile(FileToLoad);
  FileToLoad:='';
end;

procedure TForm_DFMMain.FormShow(Sender: TObject);
begin
  if FileToLoad<>'then
  begin
    SendMessage(self.handle,WM_LoadFile,0,0);
  end;
end;
bei Luckies Vorschlag wird das form zwar angezeigt, ist aber noch nicht fertig dargestellt (komponenten sind noch nicht gezeichnet).

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:03
Nicht mit SendMessage sondern PostMessage verwenden!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:07
was willst du damit erreichen? Also warum soll die Datei erst geladen werden wenn dein Form sichtbar ist?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:11
Sieht einfach etwas schicker aus. Und wenn es etwas länger dauert, wundert sich der Anwender nicht, dass das Starten so lange dauert, wenn er sieht, das was passiert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:21
Hallo,

Delphi-Quellcode:
FormCreate
  bFirstInForm:= True; // form-variable setzen

FormActivate
  if bFirstInForm then
  begin
    bFirstInForm:= False;
    if not LoadStartup then PostMessage(Handle, WM_CLOSE, 0, 0);
  end;

function TForm1.LoadStartup: Boolean;
begin
  Result:= True;
  
  auf False setzen zum Form beenden während des Starts
end;
Idealerweise packt man so ne Funktionalität
in ein Basisform und leitet die anderen Forsm davon ab,
LoadStartup wäre dann virtual;


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#9

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:43
Es dient nur der optischen Signalisierung für den User, dass auch wirklich ne Datei geladen wird, ohne dass dieser erstmal gar nichts mitbekommt und nur im TaskManager nen prozess sieht oder ein unvollständiges Fenster. Später soll dann noch ne Progressbar rein, um den Fortschritt der aktion darzustellen...

mit Postmessage sieht es ähnlich aus wie im OnPaint (darstellung unvollständig).
auch die Message im OnActivate schicken brachte keinen erfolg , (so hab ich zumindest hoika's Beitrag verstanden, da der Sinn von dem WM_Close mir nicht ganz schlüssig ist...letztendlich wird im OnActivate die Datei geladen, wenn es das erste OnActivate ist...da hab ich jetzt noch ne Nachricht als delay dazwischen geschoben).

ich glaube, das Problem lässt sich wohl doch nur mit nem timer lösen...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Datei bei Programmstart laden, nachdem form sichtbar ist

  Alt 21. Mai 2007, 14:48
Hallo,

dann lass das LoadStartup einfach weg.
Das war schon der nächste (mögliche Punkt)
"Wie beende ich ein Form beim Starten, so dass es aber vorher noch angezeigt wird"

Lässt du das weg oder lässt Result auf true,
wird dein Form angezeigt,
falls nicht, mache nach dem bFirstInForm:= False
noch nen Application.ProcessMessages
und dann erst deinen Code.

Delphi-Quellcode:
FormCreate
  bFirstInForm:= True; // form-variable setzen

FormActivate
  if bFirstInForm then
  begin
    bFirstInForm:= False;

    Application.ProcessMessages;

// dein Code
  end;
Heiko
Heiko
  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 02:33 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