[gelöst] MessageDlg: X ignorieren

Rund um die LCL und andere Komponenten

[gelöst] MessageDlg: X ignorieren

Beitragvon catweasel » 8. Aug 2018, 10:07 [gelöst] MessageDlg: X ignorieren

Hallo zusammen

Ich habe hier ein kleines Problem mit dem MessageDlg.

Ein SynEdit-Feld soll geruckt werden, allerdings nur wenn da auch was drinsteht.
Dazu habe ich am Anfang eine Abfrage eingebaut die die Anzahl der Zeilen abfragt und wenn die Antwort 0 ist, soll nach
einer kurzen Mitteilung mit MessageDlg der Vorgang abgebrochen werden.

das habe ich erst so umgesetzt:
Code: Alles auswählen
// SynEdit leer?
if ToDoSynEdit.Lines.Count=0 then
     if MessageDlg('Drucken','Das Editfeld ist leer und wird daher nicht gedruckt!',mtError,[mbOK],0) = mrOK then exit;
// Drucken
if PrintDialog1.Execute then begin
[...]
end;

Das funktioniert auch soweit - WENN der User den OK-Button drückt und nicht das X um den Dialog zu schließen. In dem Fall geht das Programm zum nächsten Schritt und druckt.


Mein Workaround funktioniert zwar, sieht aber irgendwie verboten aus :oops:
Geht das nicht eleganter?

Code: Alles auswählen
// SynEdit leer?
if ToDoSynEdit.Lines.Count=0 then
      case MessageDlg('Drucken','Das Editfeld ist leer und wird daher nicht gedruckt!',mtError,[mbOK],0) of
        mrOK: exit;
        else  exit;
      end;
// Drucken
if PrintDialog1.Execute then begin
[...]
end;


Gruß
Michael
Zuletzt geändert von catweasel am 28. Aug 2018, 13:36, insgesamt 1-mal geändert.
catweasel
 
Beiträge: 200
Registriert: 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 18.3 - (L 1.8.4 FPC 3.0.4) | 
Nach oben

Beitragvon wp_xyz » 8. Aug 2018, 10:24 Re: MessageDlg: X ignorieren

Warum fragst du den gedrückten Button überhaupt ab? Du willst doch nur eine Meldung anzeigen und dann vor dem Drucken rausgehen, egal was der Benutzer angeklickt hat.
Code: Alles auswählen
// SynEdit leer?
if ToDoSynEdit.Lines.Count=0 then begin
  MessageDlg('Drucken','Das Editfeld ist leer und wird daher nicht gedruckt!',mtError,[mbOK],0);
  exit;
end;
// Drucken
if PrintDialog1.Execute then begin
[...]
end;
wp_xyz
 
Beiträge: 2641
Registriert: 8. Apr 2011, 08:01

Beitragvon catweasel » 8. Aug 2018, 10:31 Re: MessageDlg: X ignorieren

wp_xyz hat geschrieben:Warum fragst du den gedrückten Button überhaupt ab? Du willst doch nur eine Meldung anzeigen und dann vor dem Drucken rausgehen, egal was der Benutzer angeklickt hat.
Code: Alles auswählen
// SynEdit leer?
if ToDoSynEdit.Lines.Count=0 then begin
  MessageDlg('Drucken','Das Editfeld ist leer und wird daher nicht gedruckt!',mtError,[mbOK],0);
  exit;
end;
// Drucken
if PrintDialog1.Execute then begin
[...]
end;


Danke, das war einfach zu einfach bei der Hitze :oops:

Gruß
Michael
catweasel
 
Beiträge: 200
Registriert: 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 18.3 - (L 1.8.4 FPC 3.0.4) | 
Nach oben

Beitragvon m.fuchs » 8. Aug 2018, 10:39 Re: MessageDlg: X ignorieren

Und noch besser ohne Exit:

Code: Alles auswählen
if ToDoSynEdit.Lines.Count=0 then
  MessageDlg('Drucken','Das Editfeld ist leer und wird daher nicht gedruckt!',mtError,[mbOK],0)
else begin
  // Drucken
  if PrintDialog1.Execute then begin
  [...]
  end;
end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon wp_xyz » 8. Aug 2018, 12:40 Re: MessageDlg: X ignorieren

m.fuchs hat geschrieben:Und noch besser ohne Exit

In diesem Fall einverstanden mit dem "besser". Aber in vielen Fällen ist die konsequente Anwendung der "Goto"-ähnlichen Befehle "Exit", "Continue", "Break" die einzige Möglichkeit unübersichtliche Einrückungsstrukturen zu vermeiden. Zum einen wird die verfügbare Zeile mit jeder Einrückung kürzer, und zum anderen kann man den ELSE-Zweig nur noch schwer zuordnen.
wp_xyz
 
Beiträge: 2641
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried