AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...
Thema durchsuchen
Ansicht
Themen-Optionen

Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

Ein Thema von SlaterBenelli · begonnen am 18. Jan 2013 · letzter Beitrag vom 18. Jan 2013
Antwort Antwort
Seite 1 von 2  1 2      
SlaterBenelli

Registriert seit: 4. Feb 2008
Ort: Frankfurt am Main
33 Beiträge
 
Delphi 2007 Professional
 
#1

Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 11:52
Hallo Leute,

eigentlich klingt es so einfach...

Code im Timer-Element soll ausgeführt werden um in der Statusbar Datum und Uhrzeit zu aktualisieren...

... leider ist es das augenscheinlich nicht!

Mein Programm habe ich mit einer TMyApp gemacht und dort die Form-Erstellungen reingepackt...
Delphi-Quellcode:
procedure TVSRepApp.Main;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmMAin, FfrmMain);
  FfrmMain.Start(Self);
  Application.Run;

end;
der "Start Quelltext" sieht so aus:

Delphi-Quellcode:
program VSREP;

uses
  Forms,
  SysUtils,
  UfrmMain in 'UfrmMain.pas{frmMain},
  UMyBase in 'UMyBase.pas',
  UVSRePApp in 'UVSRePApp.pas',
  USplash in 'USplash.pas{frmSplash},
  ChrisRoutinenSammlung in '..\..\..\UnitSammlungen\ChrisRoutinenSammlung.pas',
  UMySQLModule in 'UMySQLModule.pas{MySQLModule: TDataModule},
  ULogEintrag in 'ULogEintrag.pas',
  UMyException in 'UMyException.pas',
  UPassWord in 'UPassWord.pas{PasswordDlg},
  UFehler in 'UFehler.pas',
  UFehlerGlossar in 'UFehlerGlossar.pas',
  UChangeEvent in 'UChangeEvent.pas',
  UFehlerErfassung in 'UFehlerErfassung.pas{frmFehlerEingabe},
  UfrmNachbearbeitung in 'UfrmNachbearbeitung.pas{frmNachbearbeitung},
  UAppUpdate in 'UAppUpdate.pas',
  UUser in 'UUser.pas';

{$R *.res}

Var
  VSRepApp : TVSRePApp;
begin
try
// Application.CreateForm(TMySQLModule, MySQLModule);
  VSRepApp := TVSRePApp.Create;
  VSRepApp.Main();
  FreeAndNil(VSRepApp);

Except

  on ex: TLoginFailExeption do
    Application.MessageBox(
      PChar('Bitte beenden Sie das Programm.' + #13 + #10 + ex.Message),
      'Fehler beim Login!'
    );


  on ex: Exception do
    Application.MessageBox(
      PChar('Bitte beenden Sie das Programm.' + #13 + #10 + ex.Message),
      'Fehler in der Anwendung!'
    );

end;

end.


Jetzt habe ich auf dem frmMain eine Timer-Komponente liegen die alle 1000 MSec was machen soll... aber ich bekomme da pernament eine Fehlermeldung mit Adressschutzverletzung...

Bin ein wenig am verzweifeln... Wie schaffe ich das der Timer NACH dem Application.Run gestartet wird?

Ich kann mir sehr gut vorstellen das ich nicht der einzige bin, der hier sowas fragt, aber ich komm anscheinend mit der Forums-Suche nicht zurecht, zumindest habe ich keinen Beitrag gefunden der irgendwie gepasst hat... Sorry!

Gruß
Christian
Christian
D2007 Pro geschäftlich D7 personal privat
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:09
Ich weiß nicht recht, was Du da genau machst, aber schau doch mal in Deiner Timerbehandlung nach, welche Komponente da u.U. nil ist und führe in diesem Fall ein Exit aus...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
SlaterBenelli

Registriert seit: 4. Feb 2008
Ort: Frankfurt am Main
33 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:20
Naja,

wenn ich das hier machen will, fliegt mir das ganze um die Ohren:
Delphi-Quellcode:
procedure TfrmMain.FormActivate(Sender: TObject);
begin
  frmMain.TimerAlwaysToDo.Enabled := True;
end;
Das selbe auch beim onCreate von von frmMain...
Christian
D2007 Pro geschäftlich D7 personal privat
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:25
Was macht die benannte Instanz da in der Methode? Wie stahli verstehe auch ich Deine Vorgehensweise nicht recht, hast Du etwas gegen den Delphi-Standard?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:30
Ist denn frmMain eine Formularinstanz zugewiesen?
Vermutlich ist das Objekt noch nil, da Du Dein Formular irgendwie hinten rum erzeugst...
Lass doch den Bezeichner mal weg...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
SlaterBenelli

Registriert seit: 4. Feb 2008
Ort: Frankfurt am Main
33 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:33
Du meinst wegen der TMyApp Vorgehensweise?

War vor kurzem auf einem Seminar und da wurde dies so wegen der Exception-Behandlung empfohlen...

Soll den Psychologischen Effekt haben das das Programm im Falle eines Falles nicht "abgestürzt" ist sondern vom Anwender beendet wurde...

Soll Reklamationen und böse Beschwerden verhindern, wenngleich dies nur Augenwischerei ist...
Christian
D2007 Pro geschäftlich D7 personal privat
  Mit Zitat antworten Zitat
SlaterBenelli

Registriert seit: 4. Feb 2008
Ort: Frankfurt am Main
33 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:34
Ist denn frmMain eine Formularinstanz zugewiesen?
Vermutlich ist das Objekt noch nil, da Du Dein Formular irgendwie hinten rum erzeugst...
Lass doch den Bezeichner mal weg...
Wie meinst Du das?
Hintenrum erzeugt stimmt nicht so ganz...


Application.CreateForm(TfrmMAin, FfrmMain);
FfrmMain.Start(Self);

der Code in FfrmMain.Start erzeugt baut eine DB Verbindung auf, erzeugt ein Userobjekt, was dann die die Schnittstelle zum Anwnder darstellt und sich um PW-Abfrage kümmert, etc...
danach wird nur Log geschrieben und der Timer, der auf dem frmMain liegt soll aktiviert werden...

das bekomme ich nicht hin...
Christian
D2007 Pro geschäftlich D7 personal privat

Geändert von SlaterBenelli (18. Jan 2013 um 12:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 12:48
Wo hast Du denn fFrmMain deklariert?
Dieses Objekt verwaltet Deine Formularinstanz.
In Deiner Klasse greifst Du aber auf das Objekt FormMain zu, das augenscheinlich nicht initialisiert wurde.

Das Objekt wird üblicherweise von Delphi beim Programmstart automatisch initialisiert.

Wenn Du In der Ereignisbehandlung auf "Self" zugreifst, dann sollte das eigentlich klappen:
Delphi-Quellcode:
procedure TfrmMain.FormActivate(Sender: TObject);
begin
  {Self.}TimerAlwaysToDo.Enabled := True;
end;
Aber ich würde diesen Sonderweg verwerfen und die Standardimplementierung von Delphi nutzen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (18. Jan 2013 um 12:51 Uhr)
  Mit Zitat antworten Zitat
SlaterBenelli

Registriert seit: 4. Feb 2008
Ort: Frankfurt am Main
33 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 13:00
ok, habe den Fehler jetzt gefunden und kann den Timer so jetzt auch aktivieren...

in dem Seminar wurde das zwar nett dargestellt, auch das mit den abgeschwächten Reklamationen, aber ich glaube diesen Ansatz werde ich nicht mehr weiterverfolgen, da man sich da ganz leicht selber ein Bein stellt...

Aus Eurer Praxis heraus, habt Ihr das Problem mit Kundenreklamationen die sich auf abgestürzte Programme beziehen, die einen solchen Aufwand rechtfertigen würden?

Ich schreibe die Anwendungen hier nur für unsere eigene Firma und Abteilungen und wir verkaufen die Lösungen nicht, daher wird dies das einzige Projekt sein, wo ich sowas einbaue... Mich interessiert nur wie es im "normalen" Kundenkontakt gehandelt werden kann/wird...
Christian
D2007 Pro geschäftlich D7 personal privat
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Timer.Enable := True; aber Form wir dzur Laufzeit erstellt...

  Alt 18. Jan 2013, 13:14
Warum sollte ein Programm abstürzen?
Kritische Bereiche müssen eben entsprechend abgesichert werden.
Komplettabstürze sollten nicht vorkommen. In jedem Fall kann man Exceptions auch (und besser) im Programm selbst behandeln.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 05:47 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