DasMarX - Mi 11.06.08 09:40
Titel: Beim Programmstart sofort eine Aktion ausführen.
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:
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 - 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:
http://www.delphi-library.de/viewtopic.php?t=6291
DasMarX - Mi 11.06.08 12:52
So etwa? Ich will das gesamte Formular zeigen...
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' ;
{$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.