Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 6. Feb 2011, 22:52
Und was passiert bei
Delphi-Quellcode:
IdMessage1.Body.Add( 'Stell Dir vor dieser Text würde hier nicht stehen, was bliebe übrig?' );
IdMessage1.Body.Add( '' );
Und was passiert, wenn man (in der IDE) mit dem Cursor auf das Add geht und dann F1 drückt?
Delphi-Referenz durchsuchenTStrings.Add

Ein Application.ProcessMessages wird in diesem Fall auch helfen, es sollte aber erwähnt werden, dass es dabei zu ungewollten Effekten kommen kann.
Somit wäre wohl dieser Code sinnvoller:
Delphi-Quellcode:
Label1.Caption := 'Zeig Dich';
Label1.Repaint; // erzwingt das Neuzeichnen von Label1
Die "korrekte" Vorgehensweise wäre allerdings den Mailversand in einen Thread auszulagern.
Dieser würde dann den jeweiligen Status an den Hauptthread übergeben und könnte dort ohne dieses ProcessMessages und Repaint gemütlich angezeigt werden.

Korrekt aus folgenden Gründen:

Wir arbeiten mit einer ereignisgesteuerten GUI, also sollten wir zum Anzeigen auch Ereignisse verwenden, dann fühlt sich die GUI wie zu Hause

Trennung von der GUI und dem Programm-Code. Was nicht zur Kommunikation mit dem Benutzer benötigt wird hat im Quelltext des Formulars nix verloren

Lang laufende Code-Abschnitte blockieren die GUI und der Benutzer hat das Gefühl die Anwendung klemmt oder ist abgestürzt. Somit sollen diese Teile in einem eigenen Thread laufen.

Jetzt kommt das große ABER:

Das ist dann von der Programmierung schon anspruchsvoller und für einen Anfänger nicht zu empfehlen.
Ich finde es aber wichtig darauf hinzuweisen, dass da noch was geht
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