Página 2 de 2

Comando VALID não está funcionando

Enviado: 03 Ago 2012 17:48
por bencz
fiz assim tb:

Código: Selecionar todos

#include "hwgui.ch"

FUNCTION _as

LOCAL vEdit1 := "", vEdit2 := ""
LOCAL oLabel1, oLabel2, oEdit1, oEdit2

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

@ 18,16 SAY oLabel1 CAPTION "LaLa:" SIZE 100,19
@ 69,13 GET oEdit1 VAR vEdit1 SIZE 60,22 PICTURE "99999" VALID {|| logico() }

@ 18,46 SAY oLabel2 CAPTION "LARE:" SIZE 100,19
@ 69,43 GET oEdit2 VAR vEdit2 SIZE 60,22 PICTURE "99999" VALID {|| MsgInfo("Ola mundo") }


ACTIVATE DIALOG oDlg


RETURN oDlg:lresult

function logico()
   MsgInfo("Ola mundo")
return .t.
E nao funcionou...

Comando VALID não está funcionando

Enviado: 03 Ago 2012 18:17
por alaminojunior
Acabei de testar o código do colega e a meu ver está funcionando !
Preenchendo o campo com 5 dígitos, automaticamente o VALID é disparado. E se
digitar menos de 5, e teclar ENTER, também dispara.
A meu ver, normal!

Comando VALID não está funcionando

Enviado: 03 Ago 2012 18:36
por sygecom
O SAY está atropelando o GET da tela...Alexandra, você não desenhou a tela pelo DESIGNER, revisa ai...

Comando VALID não está funcionando

Enviado: 03 Ago 2012 20:55
por alaminojunior
Aqui funcionou redondo, e os tamanhos estão normais, sem atropelar nada.

Comando VALID não está funcionando

Enviado: 04 Ago 2012 13:23
por sygecom
Olá Alamino,
Talvez na sua LIB da Hwgui esteja no HCONTROL.PRG já imposta a seguinte condição:
::autosize := .t.

Isso faz que os SAY que estão atropelando os GET não cause esse problema.

Comando VALID não está funcionando

Enviado: 04 Ago 2012 14:06
por alaminojunior
Acho que o problema do colega não é o fato do objeto SAY estar atropelando o GET. Fiz um teste deixando o tamanho em 100 como no exemplo, e o CAPTION com uma string bem grande, e o SAY não atropela o GET mesmo assim.

Segundo ele relatou, o VALID não é disparado. Mas nos meus testes dispara normal.

Segue o exemplo, basta compilar e rodar pra ter certeza.

Código: Selecionar todos

#include "hwgui.ch"

FUNCTION _as

LOCAL vEdit1 := "", vEdit2 := ""
LOCAL oLabel1, oLabel2, oEdit1, oEdit2

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

@ 18,16 SAY oLabel1 CAPTION "LaLaLaLaLaLaLa:" SIZE 100,19
@ 69,13 GET oEdit1 VAR vEdit1 SIZE 60,22 PICTURE "99999" VALID {|| MsgInfo("Ola mundo") }

@ 18,46 SAY oLabel2 CAPTION "LAREREERERERERERE:" SIZE 100,19
@ 69,43 GET oEdit2 VAR vEdit2 SIZE 60,22 PICTURE "99999" VALID {|| MsgInfo("Ola mundo") }

ACTIVATE DIALOG oDlg

RETURN oDlg:lresult
A propósito Leo, fui conferir o meu hcontrol e está setado como .f. o autosize.
Está atualizado do SVN.

Comando VALID não está funcionando

Enviado: 04 Ago 2012 18:41
por bencz
Bom, acabo de formatar o meu computador, e re-compilei a lib aqui, com a versão do SVN, MAS, existem alguns arquivos, q eu tive q modificar, ou remover da compilação, por dar erro tais como:
activex\htmlcore.c
activex\htmlfunc.c

-> Arquivos modificados:
xhb\include\hbapiitm.h || Comentada linha numero: 131

Comando VALID não está funcionando

Enviado: 05 Ago 2012 13:30
por esbasso
não pode dar erro.
Que versão do xhabour voce usa?

Comando VALID não está funcionando

Enviado: 05 Ago 2012 23:47
por bencz
a ultima....

Comando VALID não está funcionando

Enviado: 06 Ago 2012 06:24
por sygecom
ola Alexandre,
sem duvida vc esta comendo bola em alguma coisa ai, eu não tenho esse problema aqui, revisa a compilação da sua Lib e seu projeto.

Comando VALID não está funcionando

Enviado: 06 Ago 2012 08:19
por bencz
Bom, se for alguma coisa q estou compilando de errado, ai eu já nao sei :X
CINI =
C_OUTPUTFOLDER =
DEFFILE =
INCLUDEFOLDERS = include
LAUTORUN =
LDEBUG = .F.
LGUI = .F.
LIBFOLDERS =
LMT = .F.
LNOAUTOFWH = .F.
LPRG_CLASSICDEBUG = .F.
LPRG_DEBUG = .T.
LUSEDLL = .F.
MAPFILE =
MYC_FLAGS =
MYDEFINES = HWG_USE_POINTER_ITEM;__XHARBOUR__
MYLINK_FLAGS =
MYPRG_FLAGS =
MYRC_FLAGS =
MYSLY_FLAGS =
OUTPUTFOLDER = xbp
PRG_OUTPUTFOLDER =
RC_OUTPUTFOLDER =
RUNARGUMENTS =
SLY_OUTPUTFOLDER =
STARTIN =
TARGETFOLDER =
Todos os arquivos do source, menos, aqueles q eu falei...

tenho um código aqui, e eu utilizo o valid em um EditBox, ( mas ele tem um bugsinho xD ), mas, funciona normal, acho q nao é a lib, é alguma outra coisa, ja testei em outra maquina, e tb, nao funcionou, nao sei se é algo q compilo de errado, se é alguma macumba q foi jogada na minha maquina, nao sei dizer :X

Código: Selecionar todos

#include "windows.ch"
#include "guilib.ch"
#include "inkey.ch"
#include "hbclass.ch"

function main
   browse():new(.f.) // .t. to enable edit || .f. to disable edit
Return Nil

************
class browse
************
private:
   data lEdit

   *********************
   * Variaveis browser *
   *********************
   data oEdGoto, oTbar, oBrwDb
   data oValPesq, vValPesq
   data o_Obtn1, o_Obtn2, o_Obtn3, o_Obtn4
   data nRecData init 1
   data nLast init 0
   
public:
   method new( lEdit ) constructor
      
private:
   method BrowseMove( cPar, cType )
   method GoToRec(cType)
   method BuscaNome()
endclass

********************************
method new( lEdit ) class browse
********************************
   USE "dados\clientes.dbf" ALIAS clientes SHARED
   
   IF .not. file("clientes.ntx")
      INDEX on nome to IND1
   endif
   
   DBSETORDER(1)
   nLast := LASTREC()
   dbGoTop()
   
   // Form
   INIT DIALOG oDlg TITLE "Consulta em Tela" ;
   AT 01,01 SIZE 795,595 NOEXIT ;
   FONT HFont():Add( 'Arial',0,-13,400,,,) ;
   STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER
   
   // Atalhos
   SET KEY 0,VK_F12 TO {|| oDlg:Close() }
   
   // Browsers
   if lEdit
      @ 02 ,02 BROWSE oBrwDb DATABASE SIZE 790, 550  ;
      STYLE  WS_VSCROLL + WS_HSCROLL ;
      AUTOEDIT ;
      ON UPDATE {|| oBrwDb:REFRESH() } ;
      ON KEYDOWN {|oBrwDb, nKey| BrowseDbKey(oBrwDb, nKey, @nLast, oLbl2, "") } ;
      ON POSCHANGE {|| ::BrowseMove( "null", "Dbs" ) }
   else
      @ 02 ,02 BROWSE oBrwDb DATABASE SIZE 790, 550  ;
      STYLE  WS_VSCROLL + WS_HSCROLL ;
      ON UPDATE {|| oBrwDb:REFRESH() } ;
      ON KEYDOWN {|oBrwDb, nKey| BrowseDbKey(oBrwDb, nKey, @nLast, oLbl2, "") } ;
      ON POSCHANGE {|| ::BrowseMove( "null", "Dbs" ) }
   endif
   
   // Panel
   @ 0, 445 PANEL oTbar1 SIZE 600, 22;
   BACKCOLOR 13160660 
   
   // Labels
   @ 17,5 SAY oLbl1 CAPTION "Registro :" OF oTbar1 SIZE 70,22
   @ 270,5 SAY oLbl2 CAPTION "De: " + ALLTRIM(STR(nLast)) OF oTbar1 SIZE 70,22
   @ 355,5 SAY oLbl1 CAPTION "Busca :" OF oTbar1 SIZE 70,22
   
   *******************
   // Inicio Buttons *
   *******************
   @ 85,2 OWNERBUTTON o_Obtn1 OF oTbar1 SIZE 20,20     ;
      BITMAP "images\Home.bmp" TRANSPARENT COORDINATES 0,2,0,0 ;
      ON CLICK {|| ::BrowseMove( "Home", "Dbs" ) } ;
      TOOLTIP "Inicio dos Registro"
   
   @ 105,2 OWNERBUTTON o_Obtn2 OF oTbar1 SIZE 20,20    ;
      BITMAP "images\Up.bmp" TRANSPARENT COORDINATES 0,2,0,0 ;
      ON CLICK {|| ::BrowseMove( "Up", "Dbs" ) } ;
      TOOLTIP "Subir Um"
   
   @ 215,2 OWNERBUTTON o_Obtn3 OF oTbar1 SIZE 20,20   ;
      BITMAP "images\Down.bmp" TRANSPARENT COORDINATES 0,2,0,0 ;
      ON CLICK {|| ::BrowseMove( "Down", "Dbs" ) } ;
      TOOLTIP "Descer Um"
   
   @ 235,2 OWNERBUTTON o_Obtn4 OF oTbar1 SIZE 20,20   ;
      BITMAP "images\End.bmp" TRANSPARENT COORDINATES 0,2,0,0 ;
      ON CLICK {|| ::BrowseMove( "End", "Dbs" ) } ;
      TOOLTIP "Fim dos Registro"
   *******************
   *   fim buttons   *
   *******************

   *******************
   //    Edit Box    *
   *******************
   @ 130,2 GET ::oEdGoto VAR ::nRecData OF oTbar1 SIZE 80,22 ;
      VALID {|| ::GoToRec("Dbs")} ;
      
   @ 400,2 GET ::oValPesq VAR ::vValPesq OF oTbar1 SIZE 100,22 ;
      ON CHANGE {|| ::BuscaNome() }
 
      
   oBrwDb:bcolorSel := 10027008
   oBrwDb:AddColumn( HColumn():New( "Nome"     , FieldBlock(Fieldname(1)),"C", 36,00) )
   oBrwDb:AddColumn( HColumn():New( "Telefone" , FieldBlock(Fieldname(2)),"C", 14,00) )
   oBrwDb:AddColumn( HColumn():New( "Celular"  , FieldBlock(Fieldname(3)),"C", 14,00) )
   oBrwDb:AddColumn( HColumn():New( "Tipo"     , FieldBlock(Fieldname(4)),"C", 12,00) )
   
   oBrwDb:aColumns[1]:length := 36            // TAMANHO
   
   oBrwDb:aColumns[1]:nJusHead := DT_CENTER   //CENTRALIZA
   oBrwDb:aColumns[2]:nJusHead := DT_CENTER
   oBrwDb:aColumns[3]:nJusHead := DT_CENTER
   oBrwDb:aColumns[4]:nJusHead := DT_CENTER

   oBrwDb:aColumns[2]:picture:="@R (99) 9999-9999"     //MASCARA
   oBrwDb:aColumns[3]:picture:="@R (99) 9999-9999"
   //oBrwDb:Freeze:=1
   
   if lEdit
        oBrwDb:aColumns[1]:lEditable := .T.
        oBrwDb:aColumns[2]:lEditable := .T.
        oBrwDb:aColumns[3]:lEditable := .T.
        oBrwDb:aColumns[4]:lEditable := .T.
   endif
   
   oDlg:Activate()
return self

*********************************************
method BrowseMove( cPar, cType ) class browse
*********************************************
   if cPar == "Home"
      oBrwDb:TOP()
   elseif cPar == "Up"
      oBrwDb:LineUp()
   elseif cPar == "Down"
      oBrwDb:LineDown()
   elseif cPar == "End"
      oBrwDb:BOTTOM()
   endif
   
   if cType == "Dbs"
      ::oEdGoto:SetText(oBrwDb:recCurr)
   elseif cType == "Array"
      ::oEdGoto:SetText(oBrwDb:tekzp)
   endif
return nil

**************************************
method GoToRec(cType) class browse
************************************** 
if ::nRecData == 0
   ::nRecData := 1
endif
if ::nRecData > nLast
   ::nRecData := nlast
endif
oBrwDb:TOP()
if cType == "Dbs"
   dbGoto(::nRecData)
elseif cType == "Array"
   oBrwDb:tekzp := ::nRecData
endif
oBrwDb:Refresh()
SETFOCUS(oBrwDb:handle)
return .t.

*******************************
method BuscaNome() class browse
*******************************
   if len(trim(::vValPesq)) > 2
      SELE clientes
      INDEX ON nome to indice1
      SET ORDER TO 1
      seek trim(::vValPesq)
      set softseek off
      if found()
         ? "achou"
         oBrwDb:REFRESH()
      else
         ? "nada :("
      endif
   endif
return nil

**************************************************
function BrowseDbKey(oBrwDb, nKey, nLast, oLbl2, cPar)
**************************************************
if nKey == 46   // DEL
   if TIPO="Nokia"
      if msgyesno("Deseja Realmente Excluir esse Registro ?")
         oBrwDb:REFRESH()
       endif
   else
      MSGINFO("ATENÇÃO...FAVOR ENTRAR NO CADASTRO DE ORIGEM PARA ALTERAR OU DELETAR ESSE REGISTRO","Aviso do Sistema")
   endif
elseif nKey == K_ESC  // ESC
   EndDialog()
elseif nKey == VK_RETURN  .OR. nKey == 65 .OR. nKey == 97
   if !TIPO="Nokia"
      MSGINFO("ATENÇÃO...FAVOR ENTRAR NO CADASTRO DE ORIGEM PARA ALTERAR OU DELETAR ESSE REGISTRO","Aviso do Sistema")
   endif
endif
return .t.

Comando VALID não está funcionando

Enviado: 06 Ago 2012 09:53
por sygecom
Qual versão do xHarbour e qual compilador C está usando ?

Seu script que está usando no xBuild que postou está errado, está incompleto e tem que tirar fora esse: HWG_USE_POINTER_ITEM , isso acho que é apenas para xHarbour.com( que é um eterno problema )

Outro erro é BuscaNome() está retornando NIL todo VALID espera um TRUE ou FALSE.

Comando VALID não está funcionando

Enviado: 06 Ago 2012 10:35
por bencz
Bom, eu utilizo a versão paga.... xhb.com

Comando VALID não está funcionando

Enviado: 06 Ago 2012 13:52
por bencz
Bom, apos, o Esbasso querer me matar enforcado de tanta raiva por eu estar enchendo o saco dele.... xD
consegui ( com muita ajuda do esbasso ), a resolver o problema....
Muito obrigado, pela ajuda e paciência (:

Comando VALID não está funcionando

Enviado: 06 Ago 2012 14:20
por esbasso
menos, bem menos tanta raiva