AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular im Thread neu erzeugen

Ein Thema von khh · begonnen am 24. Jul 2015 · letzter Beitrag vom 27. Jul 2015
Antwort Antwort
Seite 1 von 3  1 23      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 10:11
Hallo zusammen,
ich habe eine Form auf der diverse Felder tagesabhängig dargestellt werden.
Beim Programmstart werden die Felder in Abhängigkeit des entsprechenden Tages erzeugt.
Jetzt kommt der Kunde auf die Idee, das Programm nicht mehr täglich neu zu starten, sondern durchlaufen zu lassen.
Also werden die Felder auch dauernd so, wie beim Programmstart der Ausgangspunkt war, dargestellt.

Ich habe nun die Idee in einem Thread die Uhrzeit abzufragen und bei 00:01 Uhr die Form neu zu erzeugen und wieder anzuzeigen.

Was meint ihr zu dieser Lösung?
Danke für eure Meinungen.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 10:16
Ich würde die Form nicht neu erzeugen, sondern nur die Procedure aufrufen, in der die Captions/Texte/Visibles entsprechend geändert werden.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 10:21
Was kann denn ein Thread in diesem Fall besser als ein simpler Timer?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 10:47
Eine ganz billige Lösung ist das verwenden einer Eigenschaft, die das Datum beinhaltet zu dem diese Form die Daten anzeigt.

Eine Änderung des Datums führt zum Laden der neuen Werte für eben dieses Datum.
Delphi-Quellcode:
procedure TFooForm.SetDate( const Value : TDate );
begin
  if FDate <> Value then
  begin
    FDate := Value;
    GetData(); // Daten holen und präsentieren
  end;
end;
Jetzt kann man auch ganz gemütlich einen Timer nehmen, der - egal in welchem Intervall - das aktuelle Tagesdatum dort reinhämmert.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 11:02
Es geht darum, dass nicht nur das neue Datum angezeigt werden muss.
Abhängig vom Datum werden beim Erstellen der Form verschiedene Labels und deren Beschriftung geändert.

Und was meint Ihr dazu, eben diesen angesprochenen Timer zu verwenden, um die Form neu zu erzeugen?
Ich denke, ich komme um die Neuerstellung der Form nicht drum rum ?
EDIT: oder eben im Timer die Procedure neu aufrufen wie Baumina meinte?
Karl-Heinz

Geändert von khh (24. Jul 2015 um 11:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 11:10
Du hast eine Form (also eine Anzeige) und diese Anzeige soll etwas anderes anzeigen und dafür willst du die Form neu erstellen lassen?

Wenn du das Programm am Fernseher wechselt, schmeisst du dann auch den alten Fernseher weg und kaufst dir einen neuen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 11:11
>> Wenn du das Programm am Fernseher wechselt, schmeisst du dann auch den alten Fernseher weg und kaufst dir einen neuen?


Guter Vergleich
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 11:25
Wenn du befürchtest, dass der Refresh zu lange dauert, dann schau dir mal
http://www.delphipraxis.net/185749-f...-callback.html
an. Da habe ich genau so ein Szenario aufgezeigt.

Gib der Form einfach einen Service an die Hand, wo diese einfach nachfragen kann.
Delphi-Quellcode:
procedure TFooForm.GetData();
begin
  RetrieveData := True; // Kreisenden Kringel anzeigen ;o)
  FSomeService.GetFooDataByDate( FDate, FooDataCallback );
end;

procedure TFooForm.FooDataCallback( AResult: TFooData; AException: Exception; var ADispose : Boolean );
begin
  RetrieveData := False;
  if Assigned( AException ) then
    begin
      // Exception-Meldung in der Form anzeigen
      ErrorMessageLabel.Caption := AException.Message;
    end
  else
    begin
      ErrorMessageLabel.Caption := '';
      PresentFooData( AResult ); // Daten im Formular anzeigen lassen
    end;
end;
Ob diese Daten vom Service jetzt im Thread oder nicht geholt werden, entscheidet der Service bzw. die Implementierung des Services. Der Form ist es so egal wie das dort bewerkstelligt wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (24. Jul 2015 um 11:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 11:31
Ich habe nun die Idee in einem Thread die Uhrzeit abzufragen und bei 00:01 Uhr die Form neu zu erzeugen und wieder anzuzeigen.

Was meint ihr zu dieser Lösung?
Ganz Schlecht. VCL-Formulare und Threads! Da mag der Teufel schon eher das Weihwasser.
Alles was mit der GUI zu tun hat muss im Hauptthread erfolgen! Ansonsten krachts an unmöglichen Stellen zu irgendeiner Zeit.

Das Grundproblem ist hier das Win32-Controls nur im erzeugenden Thread gültig sind.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#10

AW: Formular im Thread neu erzeugen

  Alt 24. Jul 2015, 11:33
Hallo,

wenn du nach dem MVC programmieren würdest, sollte dies eigentlich kein Problem darstellen. In meinem MVC-Framwork fragt jede GUI-Komponente das Model ob Sie gerade sichtbar ist, hier könntest du auch leicht dies vom aktuellen Datum abhängig machen, ob eine Komponente sichtbar ist oder nicht.

mfg

frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:48 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