AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Datei kopieren sobald Form geladen und sichtbar ist.
Thema durchsuchen
Ansicht
Themen-Optionen

Datei kopieren sobald Form geladen und sichtbar ist.

Ein Thema von xarneax · begonnen am 16. Dez 2006 · letzter Beitrag vom 17. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
xarneax

Registriert seit: 16. Dez 2006
7 Beiträge
 
#1

Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 15:49
Hallo allerseits,

ich habe mich seit langer Zeit mal wieder mit Delphi befasst. Nun habe ich ein Problem.
Ich programmiere egrade eine Art installer, welcher aus 3 Forms besteht. In Form 2 wird der Installationsort ausgewählt, sobald man auf Weiter klickt soll Form 3 angezeigt werden. Dort sollen dann die Informationen zu den kopierten Dateien, sowie eine Fortschrittsanzeige stehen.

Jetzt mein Problem:
Klicke ich auf weiter, wird die Datei kopiert, obwohl ich die Form noch nicht sehe. Diese kommt erst zum vorschein wenn die Datei kopiert ist. Kopieren tue ich im FormShow Event.

Wie bekomme ich es nun hin, dass erst die Form angezeigt wird und dann der kopiervorgang beginnt?

Über den ein oder anderen Tip wäre ich sehr dankbar.

GRuß Arne
  Mit Zitat antworten Zitat
Constructor

Registriert seit: 15. Dez 2006
6 Beiträge
 
#2

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:18
Hallo Arne,

probier es mal im "OnActivate" Ereignis des Formulars, sollte klappen.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:19
Da gibts mehrer Möglichkeiten:

a, TTimer auf Formular legen, Im OnShow-Event starten und wenn er zuschlägt Datei kopieren
b, Du definiertst dier eine User-Message und im OnShow-Event wird ein PostMessage mit dieser User-Message abgeschickt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
xarneax

Registriert seit: 16. Dez 2006
7 Beiträge
 
#4

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:26
Super, das mit dem Timer funktioniert. Vielen Dank für den Tip.

Gruß
  Mit Zitat antworten Zitat
xarneax

Registriert seit: 16. Dez 2006
7 Beiträge
 
#5

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:28
Okay, jetzt tritt auch gleich das nächste Problem auf.
Im TimerEvent soll jetzt die Prozentangabe aktualisiert werden. Dies geschieht aber auch erst nach dem kopieren, obwol ich sie im Quellcode vor dem Auftruf auf 0 setze.
  Mit Zitat antworten Zitat
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:35
Wie genau sieht denn TimerEvent jetzt aus? Hast du alles in einer einzigen Timerprozedur geschrieben?

Zum Kopiren mit einer Fortschrittsanzeige könntest du einfach mal in der DP suchen, ich glaube da war soetwas schonmal.


Gruß,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
xarneax

Registriert seit: 16. Dez 2006
7 Beiträge
 
#7

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:43
Vielen dank erstmal für die Zahlreichen Hilfen...

Hier mal der Code:

Delphi-Quellcode:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    lbl_Datei: TLabel;
    lbl_Prozent: TLabel;
    btn_Beenden: TButton;
    Label2: TLabel;
    lbl_Pfad: TLabel;
    Timer1: TTimer;
    procedure btn_BeendenClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

uses Unit1, Unit2;

{$R *.dfm}

function AreFilesEqual(const file1, file2: String): Boolean;
var
  m1, m2: TMemoryStream;
begin
  Result := False;
  m1 := TMemoryStream.Create;
  try
    m1.LoadFromFile(file1);
    m2 := TMemoryStream.Create;
    try
      m2.LoadFromFile(file2);
      if m1.Size = m2.Size then
        Result := CompareMem(m1.Memory, m2.Memory, m1.Size);
    finally
      m2.Free;
    end;
  finally
    m1.Free;
  end
end;

procedure TForm3.btn_BeendenClick(Sender: TObject);
begin
  close;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.close;
form2.close;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:=false;
  //CopyFile(PChar(ExtractFilePath(ParamStr(0))+'data\um_kalender.exe'), PChar(pfad+'\um_kalender.exe'), False);

  CopyFile('C:\Dokumente und Einstellungen\Arne\Desktop\temp\data.zip', PChar(Pfad+'\data.zip'), False);
  lbl_Prozent.Caption:='100%';
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  Pfad:='C:\Dokumente und Einstellungen\Arne\Desktop\temp\um_kalender';
  lbl_Pfad.Caption:=Pfad;
  lbl_Datei.Caption:='Kopiere data.zip';
  lbl_Prozent.Caption:='0%';
  ForceDirectories(Pfad);
  Timer1.Enabled:=true;
end;
end.
DP??? Was ist das??
  Mit Zitat antworten Zitat
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 16:56
Zitat von xarneax:
Im TimerEvent soll jetzt die Prozentangabe aktualisiert werden. Dies geschieht aber auch erst nach dem kopieren, obwol ich sie im Quellcode vor dem Auftruf auf 0 setze.
Also ich verstehe dein Problem nicht so ganz. Momentan kopierst du einfach die Datei und nach Abschluss schreibst du 100% in das Label. Wenn du nun möchtest, dass die jeweilige Prozentzahl des Fortschritts angezeigt wird, dann musst du diese auch beim Kopiervorgang berechnen


Gruß,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
xarneax

Registriert seit: 16. Dez 2006
7 Beiträge
 
#9

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 17:02
Da hab ich mich wohl ein wenig missverständlich ausgedrückt. Ich will im endeffekt 12 gleichgroße dateien kopieren. nach jedem kopiervorgang soll dann der entsprechende prozentwert angezeigt werden. doch dies tut er nicht. Erst nachdem das letzte File kopiert wurde wird 100% angezeigt. Vorher passiert garnichts. Hab die ganzen kopieranweisungen nurnoch nicht in dem hier veröffentlichten Quelltext.

kopier so:

Copyfile....
lbl..Caption: 10%
Copyfile....
lbl..Caption: 20%
Copyfile....
lbl..Caption: 30%
...
  Mit Zitat antworten Zitat
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Datei kopieren sobald Form geladen und sichtbar ist.

  Alt 16. Dez 2006, 17:15
Ach so, okay, dann wird die Sache etwas klarer.

Wie führst du denn diese Kopiervorgänge durch, sind sie einfach alle hintereinandergehängt?

Wo genau das Problem liegt, kann ich dir gerade nicht beantworten, es wäre möglich, dass die kopiervorgänge so schnell ablaufen, dass die einzelnen Prozentwerte einfach nicht sichtbar sind, aber du solltest zwischen den Kopiervorängen immer eine kleine Pause einlegen, damit Der Prozentwert in das Label geschrieben werden kann und auch Sichbar wird. Also könntest du auch hier einen Timer verwenden.


Gruß,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  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 18:20 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