Autor Beitrag
DasMarX
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 11.06.08 09:40 
Moin moin,

Ich oute mich jetzt mal als totalen Anfänger :bawling: ...

Ich habe hier ein kleines Import-Tool, das eine XLS-Datei in Richtung SQL schieben soll. Man kann den Server sowie den Dateinamen eingeben und dann auf einen Knopf drücken, worauf der Importvorgang startet (richtig chique, mit Kontrollausgaben, Progressbar, El Grande Animación etc. sozusagen die Gold-Edition).

Die Eingaben werden in der Registry abgelegt, damit man sich beim nächsten Mal die Eingaben spart. Toll.

Nun will ich die Applikation mit einer Kommandozeilenoption '/AUTO' ausstatten, sodaß diese automatisch anfängt (sich selbst also quasi den Knopf drückt). Dann könnte man das zeitgesteuert z.B. jeden Morgen automatisch ablaufen lassen (Windows Task).

Irgendwo in der Anwendung wäre also so eine Zeile:
ausblenden Delphi-Quelltext
1:
2:
If ParamStr(1)='/AUTO' Then 
  ButtonStartImport.Click;

Blöde Frage: Wo baut man diese Zeile (so oder ähnlich) am sinnvollsten ein? Wenn ich das im OnShow mache, sehe ich leider nix (Aktion wird ausgeführt, bevor das Fenster sichtbar wird). Bisher hab ich einfach einen Timer (500ms) auf die Form geschmissen. Im OnShow wird der Timer ggf. angeschaltet. Er (der Timer) schaltet sich dann aus (die 500ms reichen dicke zwischen OnShow und dem Sichtbarwerden des Formulars) und ruft dann meine Routine auf. Klappt auch, is mir aber zu blöd.

Geht das nicht einfacher?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19321
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 11.06.08 10:12 
Es geht bei dem Formular nur um die Ausgabe des Fortschritts? Und warum ist dann der Quelltext an sich da überhaupt drin?
Lagere das doch einfach aus in eine eigene Unit, dann kannst du das direkt im Formularquelltext auch aufrufen, wenn die Option angegeben ist. Dein Formular mit der Fortschrittsanzeige wird dann dort erzeugt und zeigt das einfach nur an, enthält aber gar nicht erst den Quelltext. Dann hast du auch keine Probleme, etwas direkt nach der Erzeugung zu machen, weil du das Formular ja an der Stelle selbst direkt erzeugst.

So in der Art:
www.delphi-library.de/viewtopic.php?t=6291
DasMarX Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 11.06.08 12:52 
So etwa? Ich will das gesamte Formular zeigen...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
program ImportSAPPriceList;

uses
  Forms,
  plMain in 'plMain.pas' {fmImport};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TfmImport, fmImport);
  If ParamStr(1)='/AUTO' Then Begin
    fmImport.Show;
    fmImport.btGoClick(nil);
    fmImport.Hide
    End
  Else
  Application.Run;
end.

So kann ich wirklich auf den Timer verzichten. Danke.