var startzeit: TDateTime; //Startzeit dauer: TDateTime; //aktuelle Zeit restZeit: TDateTime; //verbleibende zeit durchZeit: TDateTime; //Zeit/Aktualisierung i, Anzahl: Integer; Form: TForm; Panel: TPanel; lblAnzahl: TLabel; lblStartzeit: TLabel; lblRestzeit: TLabel; lblDauer: TLabel; lblResult: TLabel; OkBtn: TButton; CancelBtn: TButton; edInput : TEdit; Statusbalken :TProgressBar; Statuszeile :TStatusBar; Panel1 :TStatusPanels; Panel2 :TStatusPanels; Grafik :TImage; procedure OkButtonClick(Sender: TButton); begin // Eingabe prüfen If edInput.Text = '' then ShowMessage('Bitte Anzahl der Stammdatensätze eingeben'); // Artikel updaten UpdateArticles(StrToInt(edInput.Text)); end; procedure CancelButtonClick(Sender: TButton); begin Form.ModalResult:=mrCancel; end; procedure edInputKeyPress(Sender: TObject; var Key: Char); begin If not(key in [#48..#57,#8]) then key := #0; end; procedure UpdateArticles(Anzahl: Integer); begin ExecuteMacro('[First]'); Statusbalken.Position:=1; startzeit:=time; lblAnzahl.Caption := '1' + '/'+ IntToStr(Anzahl); Statusbalken.min:=0; Statusbalken.max:=Anzahl; for i:=1 to Anzahl-1 do begin ExecuteMacro('[Next]'); Statusbalken.Position:=i+1; lblAnzahl.Caption := IntToStr(i+1) + '/'+ IntToStr(Anzahl); // Zeit berechnen dauer:=time-startzeit; durchzeit:=dauer/i; restzeit:=durchzeit*(anzahl-i); lblResult.Font.Color := clred; lblResult.Caption := '...... updating'; lblStartzeit.Caption := 'Startzeit : '+(TimeToStr(startzeit)); lblRestzeit.Caption :='Restzeit : '+(TimeToStr(restzeit)); lblDauer.Caption :='Dauer : '+(TimeToStr(dauer)); Statuszeile.SimpleText :='aktuelle Zeit: '+(TimeToStr(time)); edInput.Text := ''; end; lblResult.Font.Color := clGreen; lblResult.Caption := 'Es wurden '+IntToStr(Anzahl)+' Datensätze aktualisiert'; end; begin Form:=TForm.Create(Application); try try Form.Width:= 320; Form.Height:= 240; Form.Left:=MainForm.Left+Round((MainForm.Width-Form.Width)/2); Form.Top:=MainForm.Top+Round((MainForm.Height-Form.Height)/2); Form.Caption:='Stammdaten aktualisieren'; //Eingabefeld edInput erstellen edInput := TEdit.Create(form); edInput.Parent := form; edInput.Text := ''; edInput.Font.Style := fsBold; edInput.Font.Color := clBlue; edInput.Font.Size := 13; edInput.Left := 250; edInput.Top := 5; edInput.Width := 40; edInput.Height := 60; edInput.OnKeyPress:=@edInputKeyPress; // UpdateButton erstellen OkBtn:=TButton.Create(Form); OkBtn.Parent:=Form; OkBtn.Height:= 30; OkBtn.Top:=5; OkBtn.Width:= 220; OkBtn.Left:= 10; OkBtn.Font.Style := fsBold; OkBtn.Caption:='&Update Stammdaten'; OkBtn.OnClick:=@OkButtonClick; //Progressbar erstellen Statusbalken:=TProgressBar.Create(form); Statusbalken.Parent := form; Statusbalken.Height:= 10; Statusbalken.Top:= 45; Statusbalken.Width:= 220; Statusbalken.Left:= 10; //AbbrechenButton erstellen CancelBtn:=TButton.Create(Form); CancelBtn.Parent:=Form; CancelBtn.Height:= 30; CancelBtn.Top:= 150; CancelBtn.Width:= 120; CancelBtn.Left:= 10; CancelBtn.Font.Style := fsBold; CancelBtn.Caption:='&Abbruch'; CancelBtn.OnClick:=@CancelButtonClick; //Ergebnis-Label erstellen lblAnzahl := TLabel.Create(form); lblAnzahl.Parent := form; lblAnzahl.Left := 240; lblAnzahl.Top := 43; lblAnzahl.Font.Style := fsBold; lblAnzahl.Font.Color := clGreen; //Ergebnis-Label erstellen lblResult := TLabel.Create(form); lblResult.Parent := form; lblResult.Left := 25; lblResult.Top := 67; lblResult.Font.Style := fsBold; lblResult.Font.Color := clGreen; lblResult.Caption :='Bitte Anzahl eingeben'; //Startzeit lblStartzeit := TLabel.Create(form); lblStartzeit.Parent := form; lblStartzeit.Left := 25; lblStartzeit.Top := 90; lblStartzeit.Font.Style := fsBold; lblStartzeit.Font.Color := clblue; lblStartzeit.Caption :='Startzeit : '+'00:00:00'; //Dauer lblDauer := TLabel.Create(form); lblDauer.Parent := form; lblDauer.Left := 25; lblDauer.Top := 105; lblDauer.Font.Style := fsBold; lblDauer.Font.Color := clblue; lblDauer.Caption :='Dauer : '+'00:00:00'; //Restzeit lblRestzeit := TLabel.Create(form); lblRestzeit.Parent := form; lblRestzeit.Left := 25; lblRestzeit.Top := 120; lblRestzeit.Font.Style := fsBold; lblRestzeit.Font.Color := clblue; lblRestzeit.Caption :='Restzeit : '+'00:00:00'; //Statusbar Statuszeile := TStatusBar.Create(form); Statuszeile.Parent := form; Statuszeile.SimplePanel := True; Statuszeile.SimpleText := ' SCHILLER AUTOMATION GmbH & Co.KG '; // Bitmap laden try Grafik:=TImage.Create(form); Grafik.Parent:=form; Grafik.picture.LoadFromFile('\\Cad01\phoenixpdm\SCHILLER_RESSOURCEN\003_IMAGES\WeKnowHow.bmp'); Grafik.Width:=90; Grafik.Height:=90; Grafik.Left:=210; Grafik.Top:=90; except ShowMessage('\\Cad01\phoenixpdm\SCHILLER_RESSOURCEN\003_IMAGES\WeKnowHow.bmp'); end; // OkBtn.setFocus; if Form.ShowModal=mrOk then except ShowMessage('Fehler'); end; finally Form.Free; end; end.