Dúvida na dialog.

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

mustang51
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 24 Mar 2008 18:26
Localização: sao paulo

Dúvida na dialog.

Mensagem por mustang51 »

Ola

devo ta comendo bola em alguma coisa... mas já estou preso a isto a uns dois dias então resolvi pedir ajuda aqui no forum

estou querendo fazer uma janela que, de acordo com o tamanho da mensagem ela quebre em linhas o texto, quando necessário.
E que fique na tela de acordo com um tempo desejado

tudo esta funcionando... mas na hora de dar o display na tela, ela esta mostrando uma linha só, e não é sempre a primeira ou a ultima, é meio que aleatório o que ela mostra

olhem como fiz até agora
// colocar isto em qualquer lugar do sistema, onde o primeiro parametro
// é a mensagem, o segundo o título e o terceiro o tempo que vai ficar na tela
// coloquei bem grande a mensagem para poder quebrar em várias linhas

aqui a chamada da função

Código: Selecionar todos

LMultLin("1234567890 a 1234567890 b 1234567890 c 1234567890 d 1234567890 e 1234567890 f 1234567890 g 1234567890 h 1234567890 i 1234567890 j 1234567890 k 1234567890 l ",;
            "A T E N Ç Ã 0",;
            5)
e aqui a função como está

Código: Selecionar todos

function lMultLin(cmSg, cTitle, nTime)

 // dialog onde vou dar display
 INIT DIALOG oDlg TITLE cTitle ;
      AT 287, 361 ;
      SIZE 385, 125 ;
      NOEXIT ;
      STYLE DS_CENTER + WS_VISIBLE
 //
 oDlg:Activate( .T. )
 //
 // coordenada da primeira linha dentro do dialog
 nTop  := 10
 nLeft := 10
 // largura maxima por linha da mensagem
 nMaxWidth := 70
 // quantidade de linhas necessárias
 nNumLines := MLCount( cMsg, nMaxWidth )  
 
 FOR i := 1 TO nNumLines
     //
     cLineMens := MemoLine( cMsg, nMaxWidth, i )
     cLineMens := ALLTRIM( cLineMens )
     //
     @ nTop, nLeft ;
             SAY oSay  ;
             CAPTION cLineMens ;
             FONT F_SAYMENS; 
             OF oDlg          
     nLeft +=  20 
     msginfo(str(i))
     //
 NEXT
 //
 Inkey( nTime )
 //
 oDlg:Close()
 //
Return .T.
vide que dou o display com @ say...,

e tem mais uma... se a cada incremento no for/next colocar uma msginfo(str(i)) por exemplo, aí funciona direitinho... mas não é este o intuito...é deixar a função livre de ação do usuário...

se alguem puder me ajudar agradeço

luis ricardo
Nota de Moderação:
por Toledo: O presente tópico foi movido da seção "xHarbour", uma vez que seu conteúdo não tem relação com os objetivos daquela seção.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Dúvida na dialog.

Mensagem por gvc »

Desculpe a minha ignorancia, mas isso é [x]Harbour puro ou vc esta usando alguma biblioteca gráfica?
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
mustang51
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 24 Mar 2008 18:26
Localização: sao paulo

Re: Dúvida na dialog.

Mensagem por mustang51 »

boa noite

desculpe eu se não me expressei direito...

eu estou usando xharbour com hwgui. o resto estou fazendo na mão mesmo.

isto compila tanto na versão comercial como a do cvs, e nas duas compilações ainda não consegui ver onde está o problema...

se puder me ajudar fico muito agradecido

estou tentando montar uma biblioteca com a maioria de funções que já uitlizo, em outras linguagens, para o xharbour tambem,
assim não fico amarrado a uma plataforma só..

[][][]
luis ricardo :D
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Re: Dúvida na dialog.

Mensagem por esbasso »

é voce ta comendo bola mesmo

veja o exemplo abaixo

INIT DIALOG oDlg TITLE "Form1" ;
AT 0,130 SIZE 536,371 CLIPPER NOEXIT ;
STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER

@ 21,207 SAY oLabel1 CAPTION cMsg" SIZE 477,53
@ 19,277 GET oMemo1 VAR cMsg SIZE 481,170 ;
STYLE ES_MULTILINE +ES_AUTOVSCROLL +WS_VSCROLL +ES_WANTRETURN



ACTIVATE DIALOG oDlg


coloquei o cmsg como tua variavel que contem o teu campo memo
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
mustang51
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 24 Mar 2008 18:26
Localização: sao paulo

Re: Dúvida na dialog.

Mensagem por mustang51 »

bom dia basso

obrigado pela dica....

para o efeito que eu queria utilizei o seu get em conjunto com o set timer e funcionou sem problemas....

somente alterei o style para

STYLE ES_LEFT+ES_MULTILINE+ES_READONLY

pois não é para o usuário alterar nada e para informa-lo somente

:{ :-Y
[][][]
luis ricardo
Responder