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.
Duvida sobre os #defines
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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.
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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Claro, aqui vai.
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+.
Code: Select all
#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
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+.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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:
espero ter ajudado
um abraço
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
#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 )
um abraço