Duvida sobre os #defines

Duvida sobre os #defines

Postby Soares289 » Fri May 18, 2007 2:13 pm

Eu adicionei uma linha no "FiveWin.ch" com um #define de uma variavel que uso em varios documentos, como fasso para redefinir esse valor em outras partes do código de forma que a modificação seja vista por todos os documento que usam o include fo FiveWin?

Um abraço a todos, obrigado.
Soares289
 
Posts: 30
Joined: Tue Apr 17, 2007 7:07 pm
Location: Brasil-São Paulo-SP

Postby Antonio Linares » Fri May 18, 2007 2:37 pm

Si la modificación la haces en FiveWin.ch entonces tendrás que recompilar todos los PRGs que usen FiveWin.ch

Si es un valor variable, entonces no podrás usar un define sino una variable pública ó llamar a una función que devuelva un valor que puede cambiar
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42100
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Soares289 » Fri May 18, 2007 4:27 pm

Desculpe, mais eu não entendi muito bem.

Eu não posso usar um define no fivewin e sim uma variavel public?
Ou uma função queretorna o valor?

Poderia me mostrar um exemplo?

Por que eu defini os valores padrões no fivewin, e sempre que o programa inicia ele carrega um arquivo de configuração com os valores que os defines devem ficar, mais isso só funciona em 1 documento, queria que todos os outros que usassem o include do fivewin tivessem acesso a essas variaveis cm o valor já atualizado.
Soares289
 
Posts: 30
Joined: Tue Apr 17, 2007 7:07 pm
Location: Brasil-São Paulo-SP

Postby Antonio Linares » Fri May 18, 2007 5:50 pm

>
Eu adicionei uma linha no "FiveWin.ch" com um #define de uma variavel que uso em varios documentos
>

Puedes mostrarnos como es esa línea ? Y cómo la usas ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42100
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Soares289 » Mon May 21, 2007 3:19 pm

Claro, aqui vai.

Code: Select all  Expand view
#DEFINE nXP GetSysMetrics(0)/100   //Pega a porcentagem da tela
#DEFINE nYP GetSysMetrics(1)/100
#Define nBorda ((nXP + nYP) / 4)     //O tamanho da borda de alguns objs

#define wBackClr        RGB(235,233,237)    //as cores usadas pelas classes
#define wTxtClr         RGB(  0,  0,  0)
#define wTxtClrSel      RGB(230,230,255)
#define wClrSelFocus    RGB( 70,110,200)
#define wClrSel         RGB(170,180,200)
#define wClrNormal      RGB(220,230,240)
#define wClrHeader      RGB( 55, 70,125)

#define oFontP          TFont():New("Courier New",,15)

//Uma classe que monta diversos botões em uma janela
::nBtnWidth    := ((::nWidth - (nBorda * 2)) - ((nBorda / 2) * (nCols - 1))) / nCols   
   ::nBtnHeight   := (::nHeight - (nBorda * 2) - ((nRows - 1) * (nBorda / 2))) / nRows

//Aqui um exemplo das cores sendo usada em outra classe

   if ::aClrSelFocus[1] == nil ; ::aClrSelFocus[1] := wTxtClrSel        ; endif
   if ::aClrSelFocus[2] == nil ; ::aClrSelFocus[2] := wClrSelFocus      ; endif

// e aqui como uso o nXP e nYP ( as porcentagens)

if nWidth   == nil ; ::nWidth    := 60 * nXP ; else ; ::nWidth  := nWidth   * nXP ; endif
      if nHeight  == nil ; ::nHeight   := 60 * nYP ; else ; ::nHeight := nHeight  * nYP ; endif


A coisa é que estou passando um sistema em tela texto em harbour para fivewin, e na versão texto, o usuario escolhe as fontes e cores que preferem.
E o sistema tem que se ajustar de acordo com o tamanho da janela sem perder nenhuma informação, por isso que preciso redefinir as cores e a fonte no inicio da aplicação, que é quando ela carrega as configurações do usuario, e que os valores redefinidos tenhão efeito em toda a aplicação

Se poder me ajudar, ficarei muito agradecido.
Um abraço, t+.
Soares289
 
Posts: 30
Joined: Tue Apr 17, 2007 7:07 pm
Location: Brasil-São Paulo-SP

Postby Soares289 » Wed May 23, 2007 12:16 pm

:roll: Pocha, alguém poderia me dar uma dica ai de como fazer isso :?:

Agradecido :!:
Soares289
 
Posts: 30
Joined: Tue Apr 17, 2007 7:07 pm
Location: Brasil-São Paulo-SP

Postby Antonio Linares » Wed May 23, 2007 4:23 pm

Si quieres que esos defines funcionen en cualquier PRG entonces debes incluirlo en un fichero CH que se incluya siempre, como FiveWin.ch

En caso contrario, debes usar funciones, en vez de defines, para que esten accesibles desde toda la aplicación
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42100
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby yury » Thu May 24, 2007 12:26 pm

olá,

pelo q entendi vc criou um define no FiveWin.ch e depois está querendo alterar o valor deste define via código em tempo de execução, de acordo com as preferências do usuário. É isso, não é ?

bem se for isso, pelo que eu entendo os defines devem ser utilizados para valores CONSTANTES e não VARIÁVEIS...

neste seu caso, vc deve criar variáveis públicas, que poderão ser alteradas em tempo de execução. Elas pode até estarem atreladas a um define, mas somente como identificadores constantes. Na minha aplicação utilizo alguma coisa assim:

Code: Select all  Expand view
#define COR_TELA   1
#define COR_GET    2
#define COR_SAY    3

// neste caso os defines somente para facilitar a identificação da posição
// dos elementos na tabela

PUBLIC aCores:={ RGB(255,255,255), RGB(255,255,255), RGB(0,0,0) }

// quando vc quiser alterar, vc recarrega os valores na variável pública

aCores[ COR_TELA ] := RGB(   0, 255,   0 )
aCores[ COR_GET  ] := RGB(   0, 255, 255 )
aCores[ COR_SAY  ] := RGB( 255,   0, 255 )


espero ter ajudado

um abraço
Yury Marcelino Al
yury030575@yahoo.com.br
vimansca@vimansca.com.br
Leme / SP - Brasil
yury
 
Posts: 56
Joined: Wed May 23, 2007 2:01 pm

Postby Soares289 » Mon May 28, 2007 5:36 pm

Ajudou sim, muito aobrigado.

É exatamente oque estava tentando fazer, só não sabia como declarar uma variavel que fosse acessivel de outros documentos, achava que os defines servião para isso...

Mutio obrigado de novo, um abraço.
Soares289
 
Posts: 30
Joined: Tue Apr 17, 2007 7:07 pm
Location: Brasil-São Paulo-SP


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], SantaCroya and 104 guests