Tela de aviso
Moderador: Moderadores
Tela de aviso
Caros colegas, quem puder me ajudar: em clipper, por exemplo, quando chamo um relatório grande, o sistema apresenta uma tela de "Aguarde, processando..." p/ o cliente não ficar perdido. Agora no xharbour+minigui, como faria esse mesmo esquema? Botão Imprimir -> essa tela -> relatório. Já tentei ( e olhei no fórum) mas não dá certo.
Obrigado à todos.
Leandro
São Lourenço - MG
Obrigado à todos.
Leandro
São Lourenço - MG
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
No Fivewin eu uso MsgRun( "Mensagem", "Titulo", {|| Funcao() } ) fazendo com que a mensagem continue na tela enquanto a funcao() é executada.
MsgRun() é um dialogo padrão do Windows e a MiniGUI talvez de suporte para ele.
No Fivewin eu uso MsgRun( "Mensagem", "Titulo", {|| Funcao() } ) fazendo com que a mensagem continue na tela enquanto a funcao() é executada.
MsgRun() é um dialogo padrão do Windows e a MiniGUI talvez de suporte para ele.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
A dialog que voce necessitam fazer não é nada complicada pois toda sua estrutura vem diretamente da API do Windows e não depende de MiniGUI ou qualquer outra coisa.
Toda Dialog por padrão tem o intuito de apresentar controles e esperar uma ação para sair, se não me engano são chamadas de Modal(me corrijam!).
As dialogs que podem ficar na tela enquanto outra ação é executada e algo é apresentado nelas como uma barra de progresso ou informações como as telas de splash(este seria o caso) do Acrobat, Photoshop, etc, podemos sacar de um parametro ou dados chamado de NO WAIT, ou seja, a dialog é formada, fica na tela, mas não trava o processamento.
Verifiquem nos exemplos MiniGUI se voces podem colocar STYLEs na formação destas dialogs, pois com eles é possivel inclusive desabilitar os botões MinimizeBox, MaximizeBox, tirar bordas, torna-las invisiveis(NO Brush), etc.
São instrumentos avançados da API, ou seja, usar MiniGUI já é um passo avançado em programação pois a forma de trabalho dela é deixar bem as mão do programador a massa para modelagem.
Como a MiniGUI não trabalha com RCs, acho que hoje sim, pois quando a conheci e tenho até hoje o .PRG da versão 1.0, então o trabalho de manusear STYLEs nas dialogs deverá ser na mão mesmo.
Boa sorte.
A dialog que voce necessitam fazer não é nada complicada pois toda sua estrutura vem diretamente da API do Windows e não depende de MiniGUI ou qualquer outra coisa.
Toda Dialog por padrão tem o intuito de apresentar controles e esperar uma ação para sair, se não me engano são chamadas de Modal(me corrijam!).
As dialogs que podem ficar na tela enquanto outra ação é executada e algo é apresentado nelas como uma barra de progresso ou informações como as telas de splash(este seria o caso) do Acrobat, Photoshop, etc, podemos sacar de um parametro ou dados chamado de NO WAIT, ou seja, a dialog é formada, fica na tela, mas não trava o processamento.
Verifiquem nos exemplos MiniGUI se voces podem colocar STYLEs na formação destas dialogs, pois com eles é possivel inclusive desabilitar os botões MinimizeBox, MaximizeBox, tirar bordas, torna-las invisiveis(NO Brush), etc.
São instrumentos avançados da API, ou seja, usar MiniGUI já é um passo avançado em programação pois a forma de trabalho dela é deixar bem as mão do programador a massa para modelagem.
Como a MiniGUI não trabalha com RCs, acho que hoje sim, pois quando a conheci e tenho até hoje o .PRG da versão 1.0, então o trabalho de manusear STYLEs nas dialogs deverá ser na mão mesmo.
Boa sorte.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Pessoal,
VocÊS podem usar este recurso:
An image static control can display bitmaps, icons (including animated icons), JPEG, GIF, CUR or enhanced metafiles.
SYNTAX
Standard Window:
@ <nRow> ,<nCol> IMAGE <ControlName>
[ ID <nId> ]
[ OF | PARENT | DIALOG <ParentWindowName> ]
PICTURE <cPictureName>
[ ACTION | ONCLICK | ON CLICK <ActionProcedureName> | <bBlock> ]
[ WIDTH <nWidth> HEIGHT <nHeight> ]
[STRETCH ]
[ WHITEBACKGROUND ]
[ HELPID <nHelpId> ]
[ INVISIBLE ]
No momento da impressão.
O primeiro passo é criar a imagem mensagem.
Espero ter ajudado.
[]´s
VocÊS podem usar este recurso:
An image static control can display bitmaps, icons (including animated icons), JPEG, GIF, CUR or enhanced metafiles.
SYNTAX
Standard Window:
@ <nRow> ,<nCol> IMAGE <ControlName>
[ ID <nId> ]
[ OF | PARENT | DIALOG <ParentWindowName> ]
PICTURE <cPictureName>
[ ACTION | ONCLICK | ON CLICK <ActionProcedureName> | <bBlock> ]
[ WIDTH <nWidth> HEIGHT <nHeight> ]
[STRETCH ]
[ WHITEBACKGROUND ]
[ HELPID <nHelpId> ]
[ INVISIBLE ]
No momento da impressão.
O primeiro passo é criar a imagem mensagem.
Espero ter ajudado.
[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pessoal,
Vai ai uma dica:
Cria uma mensagem no powerpoint (Aguarde, processando...),
Salva ela como jpg
Na rotina onde você vai fazer a impressão:
depois do define window
ex.:
Blz.
[]´s
Vai ai uma dica:
Cria uma mensagem no powerpoint (Aguarde, processando...),
Salva ela como jpg
Na rotina onde você vai fazer a impressão:
depois do define window
ex.:
Código: Selecionar todos
DEFINE WINDOW fImpressao ;
AT 0,0 ;
WIDTH 640;
HEIGHT 480 ;
TITLE OA("Impressão do Indice Cronológico") ;
ICON "SC.ICO";
MODAL ;
NOSIZE;
ON RELEASE Fechar()
ON KEY ESCAPE ACTION ( fImpressao.Release )
@095,020 IMAGE Aviso ;
PICTURE "aguarde.jpg" ;
WIDTH 700 ;
HEIGHT 400 ;
WHITEBACKGROUND
END WINDOW
fImpressao.Aviso.Visible:=.F.
CENTER WINDOW fImpressao
ACTIVATE WINDOW fImpressao
Na função que é chamada pelo seu botão imprimir
DEFINE FONT "F0" NAME "COURIER NEW" SIZE 12
DEFINE FONT "F1" NAME "COURIER NEW" SIZE 9
DEFINE FONT "F2" NAME "BITSTREAM VERA SANS MONO" SIZE 12
DEFINE FONT "F3" NAME "BITSTREAM VERA SANS MONO" SIZE 9
SELECT FONT "F2"
nMaxLine:=54
DO CASE
CASE fImpressao.cbCombo_3.Value = 1
SET PAGE ORIENTATION DMORIENT_PORTRAIT PAPERSIZE DMPAPER_A4 FONT "F2"
nMaxLine:=54
CASE fImpressao.cbCombo_3.Value = 2
SET PAGE ORIENTATION DMORIENT_PORTRAIT PAPERSIZE DMPAPER_FOLIO FONT "F2"
nMaxLine:=64
ENDCASE
fImpressao.Aviso.Visible:=.T. //Aqui você exibe a sua mensagem personalizada. No final é só colocar o visible:=.f.
[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Apenas um palpite...
Crie uma window ou dialog do tamanho do alerta que você quer.
coloque as propriedades nosysmenu e center para não aprecer as opções de minimizar, etc. e centralizar a mesma no vídeo.
Coloque um label com os dizeres 'Processando...'
Quando o processamento acabar, coloque um botão neste janela com ok.
Esse botão fecha a janela (release).
Acho que vai funcionar.
MarceloG
Crie uma window ou dialog do tamanho do alerta que você quer.
coloque as propriedades nosysmenu e center para não aprecer as opções de minimizar, etc. e centralizar a mesma no vídeo.
Coloque um label com os dizeres 'Processando...'
Quando o processamento acabar, coloque um botão neste janela com ok.
Esse botão fecha a janela (release).
Acho que vai funcionar.
MarceloG
Água mole em pedra dura tanto bate que até espirra!
Pessoal,
Acho que um exemplo como eu fiz será bastante apreciado.
Eu gostaria de ver um exemplo usando a window ou dialog.
Vamos lá!
:)Pos
Acho que um exemplo como eu fiz será bastante apreciado.
Eu gostaria de ver um exemplo usando a window ou dialog.
Vamos lá!
:)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Cria a janela que, após desenhada na tela, efetua o processamento.
DEFINE WINDOW ALERTA ;
AT 000,000 ;
WIDTH 200 HEIGHT 100 ;
TITLE 'ALERTA' ;
NOSYSMENU ;
FONT 'ARIAL' SIZE 09 ;
ON INIT PROCESSANDO()
@ 040,080 LABEL LBL ;
VALUE 'Processando...' ;
WIDTH 120 ;
HEIGHT 30 ;
BOLD ;
FONTCOLOR RED
END WINDOW
CENTER WINDOW USUARIO
ACTIVATE WINDOW USUARIO
FUNCTION/PROCEDURE PROCESSANDO()
Rotina a ser processada...
@ 410,485 BUTTON BTT OF ALERTA ;
CAPTION HB_OEMTOANSI('&Concluído' ) ;
ACTION ALERTA.RELEASE
RETURN (?)
MarceloG
Ps: Não testei.
Dá pra colocar um progressbar na janela e indicar o andamento do processamento ou qualquer outra coisa.
DEFINE WINDOW ALERTA ;
AT 000,000 ;
WIDTH 200 HEIGHT 100 ;
TITLE 'ALERTA' ;
NOSYSMENU ;
FONT 'ARIAL' SIZE 09 ;
ON INIT PROCESSANDO()
@ 040,080 LABEL LBL ;
VALUE 'Processando...' ;
WIDTH 120 ;
HEIGHT 30 ;
BOLD ;
FONTCOLOR RED
END WINDOW
CENTER WINDOW USUARIO
ACTIVATE WINDOW USUARIO
FUNCTION/PROCEDURE PROCESSANDO()
Rotina a ser processada...
@ 410,485 BUTTON BTT OF ALERTA ;
CAPTION HB_OEMTOANSI('&Concluído' ) ;
ACTION ALERTA.RELEASE
RETURN (?)
MarceloG
Ps: Não testei.
Dá pra colocar um progressbar na janela e indicar o andamento do processamento ou qualquer outra coisa.
Editado pela última vez por MARCELOG em 25 Jan 2008 09:46, em um total de 1 vez.
Água mole em pedra dura tanto bate que até espirra!
Pessoal,
Me baseando no exemplo de splashscreen, segue uma adaptação para tela de aviso de processamento.
Espero ter ajudado.
[]´s
Me baseando no exemplo de splashscreen, segue uma adaptação para tela de aviso de processamento.
Código: Selecionar todos
#include "inkey.ch"
#include "common.ch"
#include "FileIO.ch"
#include "minigui.ch"
#include "winprint.ch"
DECLARE WINDOW fPrincipal
FUNCTION SC0301
PRIVATE aPrinters, aPorts, PRYS:="PIASEK.GIF"
AbreTabela("C0001",1,"C0001CDX","CN01")
AbreTabela("C0002",2,"C0002CDX","CI01")
aStruTemp:=DBSTRUCT()
TempDBF := SYS(".DBF")
AADD(aStruTemp,{"PI","C",1,0})
DBCREATE((TempDBF),aStruTemp)
SELECT 3
NameCDX := SYS('')
USE (TempDBF) EXCLUSIVE ALIAS INDICE
INDEX ON DTOS(DATA) TAG CDXD TO (NameCdx)
INDEX ON OU01 TAG CDXA TO (NameCdx)
SET INDEX TO (NameCdx)
INIT PRINTSYS
GET PRINTERS TO aPrinters
GET PORTS TO aPorts
RELEASE PRINTSYS
DEFINE WINDOW fImpressao ;
AT 0,0 ;
WIDTH 640;
HEIGHT 480 ;
TITLE OA("ImpressÆo do Indice Cronol¢gico") ;
ICON "SC.ICO";
MODAL ;
NOSIZE;
ON RELEASE Fechar()
ON KEY ESCAPE ACTION ( fImpressao.Release )
.
.
.
.
c¢digo
END WINDOW
// Sua tela de aviso de processamento //
DEFINE WINDOW fTelaAviso ;
AT 0,0 ;
WIDTH 400 HEIGHT 100 ;
TITLE '';
TOPMOST NOCAPTION;
ON INIT ThisWindow.Hide // Inibe a sua tela aqui e exibe na rotina necess ria com .show
@ 30,10 LABEL Label_1 ;
WIDTH 400 HEIGHT 40 ;
VALUE 'Imprimindo, Aguarde...' ;
FONT 'Arial' SIZE 24;
CENTERALIGN
END WINDOW
CENTER WINDOW fImpressao
CENTER WINDOW fTelaAviso
ACTIVATE WINDOW fTelaAviso, fImpressao
RETURN NIL
STATIC FUNCTION FECHAR
fPrincipal.StatusBar.Item(1):=""
DBCLOSEALL()
RETURN NIL
*--------------------------------------------------------*
PROCEDURE PRINT()
*--------------------------------------------------------*
LOCAL cprn,lprev,lr,lck,i,j,apoly,apoly2
lr :=fImpressao.R1.value
lPrev:=fImpressao.cK1.value
fPrincipal.StatusBar.Item(1):="Inciando a ImpressÆo..."
INIT PRINTSYS
DO CASE
CASE lR==1
IF lPrev
SELECT DEFAULT PREVIEW
ELSE
SELECT DEFAULT
ENDIF
CASE lR==2
IF lPrev
SELECT BY DIALOG PREVIEW
ELSE
SELECT BY DIALOG
ENDIF
CASE lR==3
lCk:=fImpressao.L1.VALUE
IF lCk>0
cPrn:=aPrinters[lCk]
IF lPrev
SELECT PRINTER cPrn PREVIEW
ELSE
SELECT PRINTER cPrn
ENDIF
ELSE
MSGEXCLAMATION("NENHUMA IMPRESSORA FOI SELECIONADA","ATENۂO")
fPrincipal.StatusBar.Item(1):=""
RETURN
ENDIF
ENDCASE
IF HBPRNERROR>0
MSGEXCLAMATION(OA("ERRO NA IMPRESSÇO"),OA("ATEN€ÇO"))
fPrincipal.StatusBar.Item(1):=""
RETURN
ENDIF
IF fImpressao.cK2.VALUE
ENABLE THUMBNAILS
ENDIF
IF fImpressao.cK3.Value
SET PREVIEW RECT 20,20,GETDESKTOPHEIGHT()-20,GETDESKTOPWIDTH()-20
ENDIF
DEFINE FONT "F0" NAME "COURIER NEW" SIZE 12
DEFINE FONT "F1" NAME "COURIER NEW" SIZE 9
DEFINE FONT "F2" NAME "BITSTREAM VERA SANS MONO" SIZE 12
DEFINE FONT "F3" NAME "BITSTREAM VERA SANS MONO" SIZE 9
SELECT FONT "F2"
nMaxLine:=54
DO CASE
CASE fImpressao.cbCombo_3.Value = 1
SET PAGE ORIENTATION DMORIENT_PORTRAIT PAPERSIZE DMPAPER_A4 FONT "F2"
nMaxLine:=54
CASE fImpressao.cbCombo_3.Value = 2
SET PAGE ORIENTATION DMORIENT_PORTRAIT PAPERSIZE DMPAPER_FOLIO FONT "F2"
nMaxLine:=64
ENDCASE
fTelaAviso.Show // Exibe a sua mensagem de processamento
START DOC NAME "SC"
START PAGE
//Aqui o seu código de impressão
END PAGE
END DOC
RELEASE PRINTSYS
fPrincipal.StatusBar.Item(1):=""
fTelaAviso.Hide // Inibe a sua mensagem de processamento
RETURN []´s
Editado pela última vez por asimoes em 25 Jan 2008 12:56, em um total de 1 vez.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pessoal,
No exemplo acima, pode-se colocar até um botão de cancelamento de impressão, processamento, etc.
E até mesmo criar uma função de uso genérico para mensagens de processamento.
[]´s
No exemplo acima, pode-se colocar até um botão de cancelamento de impressão, processamento, etc.
E até mesmo criar uma função de uso genérico para mensagens de processamento.
[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)

