Página 1 de 1

Como colocar sombra no Alert do Clipper?

Enviado: 17 Mai 2008 18:42
por labaroazul
Gostaria de Colocar sombra qiuando uso a função Alert do Clipper. Isso é possível?

Re: Como colocar sombra no Alert do Clipper?

Enviado: 17 Mai 2008 19:01
por Pablo César
Eu acho que a única forma é você criando uma função tipo ALERT2 colocando a função sombra e direcionar a função ALERT para ALERT2.

Re: Como colocar sombra no Alert do Clipper?

Enviado: 20 Mai 2008 11:20
por labaroazul
Amigo Pablo César,

Seguindo a sua sugestão, demorei, mas consegui criar uma função que imita a Alert() do Clipper. Só não consegui arrumar um jeito de ela exibir uma mensagem longa em duas ou mais linhas...

Eis o código:

Código: Selecionar todos

DO WHILE .T.
    SET CURSOR OFF
    SET COLOR TO B/W
    CLEAR SCREEN
    FOR L = 0 TO 24
        @ L,00 SAY REPLICATE(CHR(124),80)
    NEXT
    IF ALERTA("DESEJA REALMENTE SAIR?",{"SIM","NAO","CANCELAR"},"W+/B") = 1
        EXIT
    ENDIF
ENDDO
SET CURSOR ON
SET COLOR TO
CLEAR SCREEN
RETURN

FUNCTION ALERTA(cMSG,aBOTOES,cCORES)
    LOCAL nHI, nHF, nVI, nVL
    LOCAL nTAMSG, nLARCX, nALTCX
    LOCAL nTAMOP, nOP
    LOCAL cCORMSG, cTELAMSG
    LOCAL nALERTA
    cCORES = cCORES + ",I"
    nTAMOP = 0
    FOR nOP := 1 TO LEN(aBOTOES)
        nTAMOP = nTAMOP + LEN(ALLTRIM(aBOTOES[nOP])) + IIF((nOP > 1) .AND. (nOP < LEN(aBOTOES)),3,0)
    NEXT

    nTAMSG = LEN(cMSG)
    IF nTAMSG > 70
        nTAMSG = 70
    ENDIF

    nLARCX = nTAMSG + 8
    nALTCX = 3
    nVI = ((MAXROW() - 1) - nALTCX) / 2
    nHI = ((MAXCOL() - 1) - nLARCX) / 2
    nVF = nVI + nALTCX + 1
    nHF = nHI + nLARCX + 1
    cCORMSG = SETCOLOR()
    cTELAMSG = SAVESCREEN(00,00,MAXROW(),MAXCOL())
    SETCOLOR(cCORES)
    @ nVI,nHI CLEAR TO nVF,nHF
    @ nVI,nHI TO nVF,nHF
    DBGSHADOW(nVI,nHI,nVF,nHF)
    @ nVI + 1, ROUND(nHI + (((nHF - nHI) - nTAMSG) / 2),0) SAY cMSG
    @ nVI + 3, ROUND(nHI + (((nHF - nHI) - nTAMOP) / 2),0) SAY ""
    FOR nOP := 1 TO LEN(aBOTOES)
        @ ROW(), COL() + IIF(nOP=1,0,3) PROMPT ALLTRIM(aBOTOES[nOP])
    NEXT
    MENU TO nALERTA
    DO CASE
    CASE LASTKEY() = 27
        nALERTA = 0
    ENDCASE
    SETCOLOR(cCORMSG)
    RESTSCREEN(00,00,MAXROW(),MAXCOL(),cTELAMSG)
RETURN nALERTA

Como colocar sombra no Alert do Clipper?

Enviado: 20 Mai 2008 19:01
por Pablo César
Na tela Inicial em Downloads tem dois exemplos muito bons e que podem ser melhorados e ambos trabalham com quebra de linhas através do ";" como no ALERT.

https://pctoledo.org/download/cop ... t&deonde=2
https://pctoledo.org/download/cop ... t&deonde=2