Äquivalente Funktion zu MessageDlg?

Forum für alles rund um die MSEide und MSEgui
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Gibt es in der msegui eine zu Delphi/Lazarus äquivalente Funktion zu MessageDlg?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von mse »

Ja, in unit widgets:

Code: Alles auswählen

 
//following routines are thread safe and run in main thread context
//exttext will be appended for copy to clipboard
function showmessage(const atext,caption: msestring;
                     const buttons: array of modalresultty;
                     const defaultbutton: modalresultty = mr_cancel;
                     const noshortcut: modalresultsty = [];
                     const minwidth: integer = 0;
                     const exttext: msestring = '';
                     const position: messagepositionty = mepo_default): modalresultty; overload;
function showmessage(const atext,caption: msestring;
                     const buttons: array of modalresultty;
                     const defaultbutton: modalresultty;
                     const noshortcut: modalresultsty;
                     const minwidth: integer;
                     const actions: array of notifyeventty;
                     const exttext: msestring = '';
                     const position: messagepositionty = mepo_default): modalresultty; overload;
function showmessage(const atext,caption: msestring;
                     const buttons: array of modalresultty;
                     const adest: rectty; const awidget: twidget = nil;
                     //origin = awidget.clientpos, screen if awidget = nil
                     const placement: captionposty = cp_bottomleft;
                     const defaultbutton: modalresultty = mr_cancel;
                     const noshortcut: modalresultsty = [];
                     const minwidth: integer = 0;
                     const exttext: msestring = ''): modalresultty; overload;
function showmessage(const atext: msestring; const caption: msestring = '';
                     const minwidth: integer = 0;
                     const exttext: msestring = ''): modalresultty; overload;
procedure showmessage1(const atext: msestring; const caption: msestring);
            //for ps
procedure showerror(const atext: msestring; caption: msestring = 'ERROR';
                     const minwidth: integer = 0;
                     const exttext: msestring = '');
                            //no wait if not in main thread                     
function askok(const atext: msestring; const caption: msestring = '';
                     const defaultbutton: modalresultty = mr_ok; 
                     const minwidth: integer = 0): boolean;
                             //true if ok pressed
function askyesno(const atext: msestring; const caption: msestring = '';
                     const defaultbutton: modalresultty = mr_yes; 
                     const minwidth: integer = 0): boolean;
                            //true if yes pressed
function askconfirmation(const atext: msestring;
                     const defaultbutton: modalresultty = mr_yes; 
                     const minwidth: integer = 0): boolean;
                            //true if yes pressed
function askconfirmationcancel(const atext: msestring;
                     const defaultbutton: modalresultty = mr_yes; 
                     const minwidth: integer = 0): modalresultty;
function askyesnocancel(const atext: msestring; const caption: msestring = '';
                     const defaultbutton: modalresultty = mr_yes; 
                     const minwidth: integer = 0): modalresultty;
function confirmsavechangedfile(const filename: filenamety;
               out modalresult: modalresultty; multiple: boolean = false): boolean;
function showsyserrormessage(const error: syserrorty;
                            const text: msestring = ''): boolean;
                               //returns true for sye_ok
function showsyserrormessage(const error: syserrorty;
                  const sender: tobject; const text: msestring = ''): boolean;
                               //returns true for sye_ok
 

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Danke,

das ist immer das gleiche in msegui. Es gibt alles in allen Variationen aber unter anderem Namen und man findet es nicht :-)

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Dann gleich noch einer.

In Lazarus gibt es eine Variable Screen vom Typ TScreen mit z.B. der property PixelsPerInch. Wo stehen diese Information bei msegui?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von mse »

Die unit "widgets" ist sicher auch nicht der ideale Ort für diese Funktionen. Von den Abhängigkeiten passen sie zwar hinein und ich wollte keine eigene showmessage-unit einführen. "showmessage" in 'Search'-'Find in Files' zeigt sie auch.
In Lazarus gibt es eine Variable Screen vom Typ TScreen mit z.B. der property PixelsPerInch. Wo stehen diese Information bei msegui?

Informationen zur Bildschirmgrösse sind in der "application" Instanz vorhanden:

Code: Alles auswählen

 
   function screenrect(const awindow: twindow = nil): rectty;
                          //nil -> virtualscreeen
   function workarea(const awindow: twindow = nil): rectty;
                          //nil -> current active window
 

PixelsPerInch ist (noch) nicht implementiert. Vermutlich könnte xrandr die Info unter Linux liefern.
Dateianhänge
showmessage.png

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Danke.
Jetzt kommt es Schlag auf Schlag :-)

In Lazarus kann man mit Screen.Cursor := crHourGlass then Mauszeiger zur Eieruhr machen. (Ja ich hab mit find in files nach crHourGlass gesucht).
Wie kann ich den Cursor in msegui ändern?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von mse »

Code: Alles auswählen

 
application.mouse.shape:= cr_wait;
 
Oder besser:
application.beginwait();
application.endwait();
 

Nach "application.beginwait()" kann man mit "application.waitescaped()" prüfen, ob Esc gedrückt wurde und die Operation entsprechend abbrechen.
Es gibt auch "application.waitdialog()", dabei wird ein Dialogfenster mit cancel-button angezeigt.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Wieder mal alles da und zwar perfekt nur eben leider nicht dokumentiert.

Ups, da war ich zu schnell. Wenn ich Application.mouse.Shape := cr_wait; eintippsele dann hat der Compiler gemeckert "identifier idents no member "mouse". Darauf hin habe ich mittels "git pull" mseide+msegui aktualisiert aber keine Änderung.

... und schon wieder zu schnell. Wenn man msegui.pas nach mseapplication.pas einbindet, dann kennt er die Property mouse.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von mse »

fliegermichl hat geschrieben:Wieder mal alles da und zwar perfekt nur eben leider nicht dokumentiert.

Ein Crowdfunding Projekt oder viele Donationen könnten helfen. ;-)
http://msegui.com/?q=node/7
Ups, da war ich zu schnell. Wenn ich Application.mouse.Shape := cr_wait; eintippsele dann hat der Compiler gemeckert "identifier idents no member "mouse". Darauf hin habe ich mittels "git pull" mseide+msegui aktualisiert aber keine Änderung.

Vermutlich greifst du auf mseapplication.application statt msegui.application zu. In uses sollte "msegui" nach "mseapplication" stehen. Oder:

Code: Alles auswählen

 
 msegui.application.mouse.shape:= cr_wait;
 

cr_wait ist in unit "msepointer".
Ich empfehle stattdessen application.beginwait()/endwait() zu verwenden.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von mse »

mse hat geschrieben:PixelsPerInch ist (noch) nicht implementiert. Vermutlich könnte xrandr die Info unter Linux liefern.

Git master ce1a04378dab872feda3b9cc2a37ff7ce7fcceed hat:

Code: Alles auswählen

 
 tguiapplication = class(tcustomapplication)
[...]
   function ppmm(const awindow: twindow = nil): complexty;
         //nil -> current active window, pixel per mm,
         //result.re -> horizontal
         //result.im -> vertical
 
 

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Gibt es auch eine Entsprechung für InputQuery/InputQueryEx um den Anwender einen Text eingeben lassen zu können?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von mse »

lib/common/dialogs/

Code: Alles auswählen

 
unit msestringenter;
[...]
//functions below are threadsave
function stringenter(var avalue: msestring; const text: msestring = '';
                               const acaption: msestring = ''): modalresultty;
 
function checkpassword(const password: msestring): boolean; overload;
function checkpassword(const password: msestring; var modalresult: modalresultty): boolean; overload;
 
unit mseintegerenter;
[...]
function integerenter(var avalue: integer; const amin,amax: integer;
         const text: msestring = ''; const acaption: msestring = ''): modalresultty;
//threadsave
 
unit mserealenter;
[...]
function realenter(var avalue: realty; const amin,amax: realty; const text: msestring = '';
                     const acaption: msestring = ''): modalresultty;
//threadsave
 

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Äquivalente Funktion zu MessageDlg?

Beitrag von fliegermichl »

Danke, so ganz langsam wird meine Arbeit mit MSEgui produktiver. Ich komme ganz gut voran. Manchmal hängt es eben noch an solchen Kleinigkeiten.

Antworten