MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
mike0575
Beiträge: 2
Registriert: Mo 11. Jul 2022, 11:33

MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von mike0575 »

Hallo!

Ich versuche ein Delphi 3 Projekt auf Lazarus zu konvertieren, doch leider macht mir MessageDlg Probleme.

Die meisten Dialoge, die nur ein OK benötigten habe ich mit showmessage ersetzt, aber bei

if MessageDlg('Wollen Sie den Datensatz wirklich löschen?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then

erhalte ich beim Compilieren die Fehlermeldung: Incompatible type for arg no. 3: Got "{Array Of Const/Constant Open} Array of TMsgDlgBtn", expected "TMsgDlgButtons"

Ich verwende Lazarus v2.0.10.

Weiß jemand Rat?

Vielen Dank!

mike0575

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von six1 »

Code: Alles auswählen

if MessageDlg('Daten löschen', 'Wollen Sie den Datensatz wirklich löschen?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
so sollte es funktionieren
Gruß, Michael

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von wp_xyz »

Ich habe das gerade mit einem leeren Formular nachgespielt, und bei mir funktioniert es. Möglicherweise stehen bei dir, infolge der Delphi-Historie, nicht die richtigen Units in der uses-Zeile, oder die richtigen in der falschen Reihenfolge. Schreibe bitte mal folgendes an den Anfang der Uses-Zeile des Formulars, das den MessageDlg verwendet:

Code: Alles auswählen

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, 
Natürlich doppelte Units dann herauslöschen.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von theo »

Ein wenig beachtetes Tool ist der Messagecomposer.
Der ist zwar bei Lazarus dabei, aber man muss das Package "messagecomposerpkg.lpk" zuerst installieren.
Der Dialog erscheint dann unter dem Menüpunkt "Quelltext".
Damit kann man den Dialog zusammenklicken, testen und mit "OK" in den Quelltext einfügen.

messagecomposer.png
messagecomposer.png (67.45 KiB) 1073 mal betrachtet

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von Ally »

Hallo mike0575,

Da wäre noch TaskDialog zu nennen. (https://wiki.lazarus.freepascal.org/TTaskDialog)
Bietet viele Möglichkeiten und beschriftet, zumindest unter Windows, auch die Buttons in deutsch.

Beispiel:

Code: Alles auswählen

TaskDialog.Caption := 'Daten löschen';
TaskDialog.Title := 'Achtung';
TaskDialog.MainIcon := tdiQuestion;
TaskDialog.CommonButtons := [tcbYes, tcbNo];
TaskDialog.DefaultButton := tcbNo;
TaskDialog.Text := 'Wollen Sie den Datensatz wirklich löschen?';
TaskDialog.Execute;
if TaskDialog.ModalResult = mrNo then
  Exit;
Gruß Roland

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von siro »

Bei mir funktioniert es auch:

Windows 10
Lazarus 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_64-win64-win32/win64
MessageDlg_01.jpg
MessageDlg_01.jpg (50.84 KiB) 1038 mal betrachtet
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

mike0575
Beiträge: 2
Registriert: Mo 11. Jul 2022, 11:33

Re: MessageDlg Konvertierung einer Anwendung von Delphi 3 auf Lazarus

Beitrag von mike0575 »

Vielen Dank für die vielen Antworten.

Wenn ich den Code in einem neuen Projekt ausgeführt habe, dann funktionierte es bei mir auch.

Ich habe inzwischen Lazarus neu installiert und diesmal die 32-bit-Variante genommen. Jetzt erhalte ich keinen Fehler mehr.

Viele Grüße,

Michael

Antworten