Em harbour você também pode usar
métodos e
variáveis estáticas, sem precisar instanciar a classe. É raro alguém precisar disso.
Métodos comuns podem se comportar como estáticos (não requer nenhuma declaração diferente), depende apenas da forma implementada (codificada).
Variáveis estáticas de uma classe, compartilham o mesmo valor para todas as instâncias ativas e as que serão instanciadas.
Método estático:TPrintWin():
codePrinter( CHR(27)+'E', {|o|o:oBold:=.t.} )
Math:
SQrt(90)
Propriedade estática (são equivalentes):TPrintWin():
bStartDoc:={||drawDoc()} // definindo um gatilho (ação)
oPrn:
bStartDoc:={||drawDoc()}
Na minha página, procure por
"any combination of string/CHR with any expression", são definições globais da classe sem instanciar e serão compartilhadas com as novas instâncias. Estas definições podem ser aplicadas como
globais e depois por
instância (a classe consegue identificar). Assim o programador redefine o padrão global do produto, e depois pode criar definições específicas por relatório (instância).
Code: Select all
Class TPrintXL from XPrintXL
EndClass
Class XPrintXL FROM TPrintWin // For Xailer
...
EndClass
Class XPrintFRX FROM TPrintWin // For FastReport
...
EndClass
Class XPrintQT FROM TPrintWin // For HbQT
...
EndClass
jvtecheto wrote:...otra cosa, todas las clases de Harbour son estáticas o sea se pueden utilizar sin instanciarlas.
no como en otros lenguajes en los que hay clases instanciables y otras estáticas o de clase(que no permiten su instanciación), ejemplo c#
...
o otras como Math , que accedes directamente. Math.SQrt(90); // Son Estaticas no instanciables.