Wie gesagt, die Schriftgröße etc. wird vom Betriebssystem geregelt (ConfirmBox).
Alles andere müsste man über ein eigenes Fenster machen, wie meine ZeigInfoBox() - Info mit Timeout
Code: Alles auswählen
*-------------------------------------------------------
function ZeigInfo(cInfo,nSekunden,oOwner,cTitel)
local oDlg, nEndeZeit, nBreite, nHoehe, lAnzeigen := .t., cAnzeigeZeit, cAktuelleAnzeigeZeit, nRestDauer, nAnzZeichen, nAnzZeilen, nAnzCR
local nEvent, mp1 := NIL, mp2 := NIL, oPB, oText, oIco, oXbp := nil, drawingArea, nPosX, nPosY, nSizeX, nSizeY
DEFAULT cTitel TO "Hinweis"
DEFAULT cInfo TO "Infotext"
DEFAULT nSekunden TO 10
DEFAULT oOwner TO SetAppWindow() // oOwner blockieren
SetAppWindow():disable()
nEndeZeit := min( seconds()+nSekunden+1, 86399 ) // 60*60*24-1
cAktuelleAnzeigeZeit := "#"
nBreite := 300
nHoehe := 100
// Sicher ist sicher, alles nach CR umsetzen und doppelte Zeilen verhindern
cInfo := strTran(cInfo,CRLF,chr(13))
cInfo := strTran(cInfo,chr(10),chr(13))
nAnzCR := CharCount(cInfo,chr(13))
nAnzZeichen := len(cInfo) - 10 * nAnzCR // 10 Zeichen je Zeilenschaltung entfernen
nAnzZeilen := nAnzZeichen / 45 + nAnzCR // grobe Schätzung reicht, Platz ist für 3 Zeilen.
if nAnzZeilen > 3
nHoehe += 15 * (nAnzZeilen-3)
endif
oDlg := XbpDialog():new( AppDesktop(), oOwner ,,,, .F.)
oDlg:ClientSize := {nBreite,nHoehe}
oDlg:border := XBPDLG_DLGBORDER
oDlg:taskList := .T.
oDlg:title := cTitel
oDlg:close := {|| lAnzeigen := .f. }
oDlg:create()
drawingArea := oDlg:drawingArea
drawingArea:setColorFG( GRA_CLR_BLACK )
drawingArea:setFontCompoundName( "8.Arial" )
oPB := XbpPushButton():new( drawingArea, , {nBreite/2-100,10},{200,nPBHoehe} , { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
oPB:tabStop := .T.
oPB:default := .T.
oPB:cancel := .T.
oPB:create()
oPB:activate := {|| lAnzeigen := .f. }
oIco := XbpStatic():new( drawingArea, , {10,nHoehe-46}, {36,36}, { { XBP_PP_BGCLR, -255 } } )
oIco:caption := XBPSTATIC_SYSICON_ICONINFORMATION
oIco:clipSiblings := .F.
oIco:type := XBPSTATIC_TYPE_SYSICON
oIco:create()
nPosX := oIco:currentPos()[1]+oIco:currentSize()[2]+10
nPosY := oPB:currentPos()[2]+oPB:currentSize()[2]+10
nSizeX := nBreite - nPosX - 10
nSizeY := nHoehe - nPosY - 10
oText := XbpStatic():new( drawingArea, , {nPosX, nPosY}, {nSizeX, nSizeY} )
oText:caption := cInfo
oText:ClipParent := .f.
oText:ClipChildren := .t.
oText:ClipSiblings := .f.
oText:autosize := .f.
oText:type := XBPSTATIC_TYPE_TEXT
oText:options := XBPSTATIC_TEXT_WORDBREAK
oText:create()
CenterControl(oDlg)
oDlg:show()
SetAppFocus(oDlg)
nEvent := xbe_None
DO WHILE lAnzeigen
nEvent := AppEvent( @mp1, @mp2, @oXbp, 100 )
if nEvent # xbe_None
oXbp:handleEvent( nEvent, mp1, mp2 )
endif
nRestDauer := int(nEndeZeit-seconds())
if nRestDauer < 1
exit
endif
cAnzeigeZeit := alltrim(str(nRestDauer))
if cAnzeigeZeit # cAktuelleAnzeigeZeit
cAktuelleAnzeigeZeit := cAnzeigeZeit
oPB:setCaption("Schließen oder "+cAnzeigeZeit+" Sekunden warten")
endif
ENDDO
oDlg:destroy()
SetAppWindow():enable() // Sperren will ich das per SetAppWindow() eingestellte Fenster.
SetAppFocus(oOwner) // Zurück zu dem Fenster, das angegeben wurde.
return nil
*-------------------------------------------------------