Message nur mit Timeout ausgeben [erledigt]

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Message nur mit Timeout ausgeben [erledigt]

Beitrag von Ewald »

Tag zusammen,
ich möchte im Programmablauf eine Warnung/Message in der gezeigten Art zeigen.
Allerdings soll der User keine Möglichkeit haben das Fenster mit einem Klick zu schließen.
Der OK Button soll weg und das Fenster soll erst nach timeout verschwinden.
Übersehe ich da einen Parameter der den Button verschwinden läßt ? Oder bleibt mir nur
die Möglichkeit einer eigenen Funktion ?

Gruß
Ewald

Code: Alles auswählen

dcmsgbox "Lizenzfehler"                  ;
         color GRA_CLR_BLUE,GRA_CLR_RED ;
         title "License expired"                      ;
         timeout 1
Zuletzt geändert von Ewald am Di, 22. Feb 2022 15:06, insgesamt 1-mal geändert.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben

Beitrag von Tom »

Das kannst Du mit Custom-Buttons und der Buttonsize 0,0 hinbekommen, hier als Funktionsaufruf (10 Sekunden Wartezeit). Das gleiche geht als Kommando (dort dann die Klausel "BUTTONSIZE" verwenden).

Code: Alles auswählen

DC_MsgBox(10,10,{'Juhu.','Super-Juhu'},'Test',.f.,10,.F.,,{'nonono'},,,,,,,,,,{0,0})
Mit dem X kann die Messagebox natürlich trotzdem geschlossen werden.
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben

Beitrag von Ewald »

Hallo Tom,
das kommt der Sache nahe. Danke dafür.
Aber das X muss noch weg. Wenn ich da nicht fündig bastele ich eine Funktion mit eigenem Fenster. Wollte nur das Rad nicht neu erfinden.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben

Beitrag von Tom »

Du kannst mit DC_GetOptDefault() eine Reihe von DCGETOPTIONS (z.B. NOTITLEBAR) festlegen, die dann mit DC_MsgBoxExpress() für die DC_MsgBoxen festgelegt werden.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben

Beitrag von Tom »

Davon abgesehen ist es natürlich nahezu kein Aufwand, einen kleinen Dialog zu schreiben, der nur einen Text sozusagen im Nichts (je nach "BORDER") anzeigt und von selbst wieder verschwindet:

Code: Alles auswählen

FUNCTION ShowMsg(c)
LOCAL GetList := {}, GetOptions := {}
DCGET OPTIONS NOTITLEBAR NORESIZE NOTASKLIST NOMAXBUTTON BORDER XBPDLG_NO_BORDER

@ 0,0 DCSAY c // hier ggf. noch SAYOPTIONS für die Formatierung

DCREAD GUI OPTIONS GetOptions TIMEOUT {5,{||.T.}} FIT MODAL
RETURN NIL
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben

Beitrag von Ewald »

Das stimmt natürlich was du sagst. Und jetzt muss ich das Rad auch nicht mehr neu erfinden :wink:
Danke
Ewald
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben [erledigt]

Beitrag von Tom »

Gerne!

Und wenn Du mit SAYOPTIONS und FORMATTED arbeitest, kannst Du auch noch Hervorhebungen im Text verwenden und ggf. mehrzeilig arbeiten. Der hier verschwindet wirklich nach n Sekunden, im Beispiel fehlte noch was.

Code: Alles auswählen

ShowMsg('Dieser Text hat einen \bhervorgehobenen\c Anteil')

Code: Alles auswählen

FUNCTION ShowMsg(c,nSecs)
LOCAL GetList := {}, GetOptions := {}, oDialog
DEFAULT nSecs := 5

DCGET OPTIONS NOTITLEBAR NORESIZE NOTASKLIST NOMAXBUTTON BORDER XBPDLG_NO_BORDER

@ 0,0 DCSAY c FORMATTED SAYOPTIONS XBPALIGN_HCENTER+XBPALIGN_VCENTER

DCREAD GUI OPTIONS GetOptions TIMEOUT {nSecs,{||.T.}} FIT MODAL PARENT @oDialog
RETURN NIL
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Message nur mit Timeout ausgeben [erledigt]

Beitrag von Ewald »

In deinem ersten Beispiel verschwindet er auch nach n Sekunden.
Antworten