Error Object/8 No Object Msg: UNDEFINED:NWIDTH

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Error Object/8 No Object Msg: UNDEFINED:NWIDTH

Mensagem por Paulao »

Boa tarde pessoal, sou iniciante em fivewin e estou tendo problemas com a linha abaixo, penso que falta definir algo, mas o que?

@ 2,0 listbox oBrw FIELDS OF oWnd1 SIZE oWnd:nWidth()-5, oWnd:nHeight()-125

Uso a versao fw192ev do fivewin

Grande abraço
Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Mensagem por Ale SB »

Boa Tarde Amigo, tente o seguinte:

@2,0 LISTBOX oLbx FIELDS "cod", "Histo", "Valo ;
HEADER "Codigo","Historico", "Valor", ;
OF oDlg SIZE 207,100 PIXEL ;
SIZES 25, 50, 130

Vc criou uma Dialog ?
O q vc quer fazer ?
Imagemr]
Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Mensagem por Paulao »

parece que o 5win não esta reconhecendo as funções nWidth(), nHeight(), e End() tb, penso que é algum problema de configuração do fivewin, em qual lib ficam estas e outras funcoes do fivewin?.
Vejam se faltaalgo no autoexec.bat:

SET windir=C:\WINDOWS
SET winbootdir=C:\WINDOWS
SET COMSPEC=C:\WINDOWS\COMMAND.COM
SET PROMPT=$p$g
SET TEMP=C:\WINDOWS\TEMP
SET TMP=C:\WINDOWS\TEMP
SET INCLUDE=C:\CLIPPER5\INCLUDE;C:\FWEVAL\INCLUDE
SET PLL=C:\CLIPPER5\PLL
SET CLIPPER=F120
SET LIB=c:\BLINKER\LIB;C:\CLIPPER5\LIB;C:\FWEVAL\LIB
SET OBJ=C:\BLINKER\OBJ;C:\CLIPPER5\OBJ;C:\FWEVAL\IDE\OBJ
SET MAQ=MAQ01
SET PATH=C:\CLIPPER5\BIN;C:\NG;C:\BLINKER\BIN;C:\CLIPPER5\BIN;C:\NG;C:\WINDOWS;C:\WINDOWS\COMMAND;d:\siscom
Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Mensagem por Ale SB »

Paulao, aparetemente seu Autexec ta certo, acho q o problema eh outro, para poder te ajudar melhor, poste seu PRG, pra ver como vc esta fazendo.

Vc esta usando qual versao do Blinker ,Clipper e do Windows ?

@braços Ale
Imagemr]
Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Mensagem por Paulao »

Obrigado Ale pela Força.

Uso Clipper 5.2 e Blinker 7 Windows ME
/////////////////////////////////////////////////////////////////////////////
/// Programa : SISCOM.PRG ///
/// Função : PRG Principal do Sistema ///
/// Iniciado em : 07/10/2005 15:32 PM ///
/// Programador : Paulo Silva ///
/// Versão : 1.00.0000 ///
/// Histórico : Primeiro Sistema feito para plataforma Windows ///
/////////////////////////////////////////////////////////////////////////////
#include "fivewin.ch"
#include "report.ch"
#include "aulas.ch"
FUNC MAIN
local oWnd

public setmaq
setmaq=getenv("maq")
define window oWnd Title".:: NÔMADE SISTEMAS ::." from 5,5 to 24,64;
menu menu() MDI
use siscover new alias ver
dbgobottom()
////// Barra de botões ////
define buttonbar oBar of oWnd size 50,50
define button of oBar File "calc.bmp";
action
message "Ativa a calculadora do Windows";
tooltip "Calculadora"
//////
SET MESSAGE OF oWnd TO "¦ SISCOM ¦ Versão :"+VER->VER_VERS+" ¦ "+setmaq+" ¦" KEYBOARD DATE CLOCK
activate window oWnd Maximized
return nil
/////////////////////////////////////////////////////////////////////////////
func menu(oWnd)
local oMenu
menu Omenu
menuitem oMenu1 prompt "Cadastros" message "Acessa os cadastros do Sistema"
menu
menuitem "Clientes" action siscocli() message "Manutenção no arquivo de clientes"
menuitem "Orçamentos/Pedidos" action acao() message "Manutenção no arquivo de Orçamento/Pedidos"
menuitem "Produtos" action acao() message "Manutenção no arquivo de Produtos"
menuitem "Fornecedores" action acao() message "Manutenção no arquivo de Forncedores"
menuitem "Contas a Pagar" action acao() message "Manutenção no arquivo de Contas a Pagar"
menuitem "Contas a Receber" action acao() message "Manutenção no arquivo de Contas a receber"
menuitem "Vendedores" action acao() message "Manutenção no arquivo de Vendedores"
menuitem "Condições de Pagamento" action acao() message "Manutenção no arquivo de COndições de Pagamento"
endmenu
menuitem oMenu2 prompt "Imprimir" message "Acessa os relatorios do Sistema"
menuitem oMenu3 prompt "Operações" message " Acessa os mecanismos de processamento do Sistema"
menuitem oMenu4 prompt "Utilitários" message " Acessa os utilitários do Sistema"
menuitem oMenu5 prompt "Sobre" message " Informações do Sistema "
menuitem oMenu6 prompt "Sair" action oWnd:End()
endmenu
retu oMenu
///////////////////////////////////////////////////////////////////////////////
func acao()
msgstop("Breve...")
retu .t.
///////////////////////////////////////////////////////////////////////////////
function MDIChild()
local oWnd1, oBrw
USE AULA07 NEW SHARED
DEFINE WINDOW oWnd1 TITLE "Janela Normal" MDICHILD ;
FROM 1, 1 TO 10, 30
@ 0,0 LISTBOX oBrw FIELDS OF oWnd1 SIZE 225,115
ACTIVATE WINDOW oWnd1
return nil
///////////////////////////////////////////////////////////////////////////////
func siscocli(oWnd)
local oWnd1,oBrw
use nomadcli new shared alias cli
define window oWnd1 Title"Clientes" MDIChild ;
from 1,1 to 28,77
@ 2,0 listbox oBrw FIELDS cli->cli_nome,cli->cli_cida,cli->cli_esta;
HEADER "Razão Social","Municício", "UF";
OF oWnd1 SIZE 600,400 PIXEL ;
SIZES 350, 200, 50
//OF oWnd1 SIZE 955,1000;
//oWnd:nWidth()-5, oWnd:nHeight()-125

oBrw:nLineHeight*= 1
oBrw:nHeaderHeight*= 1.5
oBrw:bRClicked := { | nRow, nCol | PopupReg( nRow, nCol, oBrw, oWnd1 ) }
oBrw:bLdblClicked := {|| oBrw:disable(), MsgStop("Duplo Clique - Abrir um Dialog ou executar uma rotina"), oBrw:enable() }
oBrw:bBKColor := { |nRow,nCol,nStyle| if( nStyle==0 .and. nCol==5, nRGB(255,255,255), ) }
oBrw:nFreeze := 2
oBrw:nClrPane := { || IIF( ( oBrw:cAlias)->(Recno()) %2 == 1, nRGB(187,254,138),nRGB(226,255,196))}
oBrw:lAdjLastCol := .F.
oBrw:nLineStyle := 2

activate window oWnd1
retu .t.
///////////////////////////////////////////////////////////////////////////////
static function PopupReg( nRow, nCol, oLbx, oWnd )
local oPopup
MENU oPopup POPUP
MENUITEM "&Inserir registro " ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
MENUITEM "E&xcluir registro " ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
MENUITEM "&Alterar registro " ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
SEPARATOR
MENUITEM "&Desbloquear registro" ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
SEPARATOR
MENUITEM "&Sair" ACTION oLbx:oManuCli:End()
ENDMENU
ACTIVATE POPUP oPopup AT nRow, nCol OF oLbx
return nil
Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Mensagem por Ale SB »

Blz Paulao, eu nao uso o MDI, prefiro fazer as Telas no WS ,mas ,testei seu PRG
e fiz algumas alteraçoes, eu testei e deu certo, só nao usei os arquivos
,falando nisso vc nao usa indice ?
Vou postar o q mudei:

FUNC MAIN()
PRIVATE oWnd //Como vc esta usando o Objeto oWnd em suas funcoes o ideal eh declarar como Private

public setmaq
setmaq=getenv("maq")
define window oWnd Title".:: NÔMADE SISTEMAS ::." from 5,5 to 24,64 ;
menu MeuMenu() MDI // Vc nao pode usar o mesmo nome de um comando com o de uma funcao
//use siscover new alias ver // trabalhe com indices
//dbgobottom()
////// Barra de botões ////
define buttonbar oBar of oWnd size 50,50
define button of oBar File "calc.bmp" ;
action WinExec("Calc") ; // chama a calculadora
message "Ativa a calculadora do Windows";
tooltip "Calculadora"
//////

SET MESSAGE OF oWnd TO "¦ SISCOM ¦ Versão :" + " ¦ "+setmaq+" ¦" KEYBOARD DATE CLOCK
activate window oWnd Maximized
return nil
/////////////////////////////////////////////////////////////////////////////

Func MeuMenu() // nao precisa colocar o oWnd como parametro, dá erro no End()
local oMenu, oMenu4

menu oMenu
menuitem oMenu1 prompt "Cadastros" message "Acessa os cadastros do Sistema"
menu
menuitem "Clientes" action siscocli() message "Manutenção no arquivo de clientes"
menuitem "Orçamentos/Pedidos" action acao() message "Manutenção no arquivo de Orçamento/Pedidos"
menuitem "Produtos" action acao() message "Manutenção no arquivo de Produtos"
menuitem "Fornecedores" action acao() message "Manutenção no arquivo de Forncedores"
menuitem "Contas a Pagar" action acao() message "Manutenção no arquivo de Contas a Pagar"
menuitem "Contas a Receber" action acao() message "Manutenção no arquivo de Contas a receber"
menuitem "Vendedores" action acao() message "Manutenção no arquivo de Vendedores"
menuitem "Condições de Pagamento" action acao() message "Manutenção no arquivo de COndições de Pagamento"
endmenu

menuitem oMenu2 prompt "Imprimir" message "Acessa os relatorios do Sistema"
menuitem oMenu3 prompt "Operações" message " Acessa os mecanismos de processamento do Sistema"
menuitem oMenu4 prompt "Utilitários" message " Acessa os utilitários do Sistema"
menuitem oMenu5 prompt "Sobre" message " Informações do Sistema "
menuitem oMenu4 prompt "Sair" action oWnd:End() // nao ha nada de errado, o problema era o nome da funcao
endmenu //ou ACTION iif( MsgYesNo( "Sair do sistema ?","Confirma"),oWnd:End(),) ;

return oMenu
///////////////////////////////////////////////////////////////////////////////

func acao()
msgstop("Breve...")
retu .t.
///////////////////////////////////////////////////////////////////////////////
function MDIChild()
local oWnd1, oBrw
USE AULA07 NEW SHARED // Vc esta usando em rede ?
DEFINE WINDOW oWnd1 TITLE "Janela Normal" MDICHILD ;
FROM 1, 1 TO 10, 30
@ 0,0 LISTBOX oBrw FIELDS OF oWnd1 SIZE 225,115
ACTIVATE WINDOW oWnd1
return nil
///////////////////////////////////////////////////////////////////////////////
func siscocli(oWnd)
local oWnd1,oBrw
//use nomadcli new shared alias cli
define window oWnd1 Title"Clientes" MDIChild ;
from 1,1 to 28,77
@ 2,0 listbox oBrw FIELDS "" ; //cli->cli_nome,cli->cli_cida,cli->cli_esta;
HEADER "Razão Social","Municício", "UF";
OF oWnd1 SIZE 600,800 PIXEL ;
SIZES 350, 200, 50


//oWnd1:nWidth:=955 // lembre vc esta na janela oWnd1 nao oWnd
//oWnd1:nHeight:=1000


oBrw:nLineHeight= 14 // Vc definiu muito baixa a altura das linhas
oBrw:nHeaderHeight= 15 //Vc definiu muito baixa a altura do cabeçalho
oBrw:bRClicked := { | nRow, nCol | PopupReg( nRow, nCol, oBrw, oWnd1 ) }
oBrw:bLdblClicked := {|| oBrw:disable(), MsgStop("Duplo Clique - Abrir um Dialog ou executar uma rotina"), oBrw:enable() }
oBrw:bBKColor := { |nRow,nCol,nStyle| if( nStyle==0 .and. nCol==5, nRGB(255,255,255), ) }
oBrw:nFreeze := 2 // este metodo só tem na classe WBrowse 1.5 e 1.7
oBrw:nClrPane := { || IIF( ( oBrw:cAlias)->(Recno()) %2 == 1, nRGB(187,254,138),nRGB(226,255,196))}
oBrw:lAdjLastCol := .F.
oBrw:nLineStyle := 2

activate window oWnd1
retu .t.

Nao esquessa, vc tem q compilar a Classe Wbrowse junto com seu sistema, eu prefiro usar a versao 1.5, vc pode achar ela aqui:

http://www.fivewin.info/html/downloads. ... ons&id=260

, ela tem uma Lib (TWBRW16.lib), que deve ser colocada no seu LNK, antes de todas as outras Libs.
Espero ter ajudado Amigo; eu tb sou iniciante, e tenho algumas apostilas
em Port. outras em espanhol, mas, tem me ajudado muito se vc quiser posso lhe envia-las.
No Samples do FW, tem bastantes exemplos de janelas MDI, dê uma olhada nos Prg TestMdi1,TestMdi2,etc...

Qualquer duvida eh só chamar!!! -:]

@braços Ale
Imagemr]
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Outra coisa:

Pelo visto voce precisa abrir o listbox de forma que ele ocupe o tamanho total da window mesmo redimensionada.

Neste caso voce tera de avisar a window para fixar o controle principal:

Antes do comando activate window coloque:

oWnd:SetControl(oBrw)

Desta forma o redimensionamento da window levara consigo a listabox.

@braços :?)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Outra coisa:

Pelo visto voce precisa abrir o listbox de forma que ele ocupe o tamanho total da window mesmo redimensionada.

Neste caso voce tera de avisar a window para fixar o controle principal:

Antes do comando activate window coloque:

oWnd:SetControl(oBrw)

Desta forma o redimensionamento da window levara consigo a listabox.

@braços :?)
Responder