Neste artigo veja 3 destaques nos recursos da DarumaFramework.dll. A DarumaFramework.dll é uma DLL de alto nível, que foi desenvolvida com o propósito de trazer facilidades em um desenvolvimento rápido e fácil, com nossos produtos.Vamos conhecer estes recursos:
1º Recurso: O XML
Este XML substitui a funcionalidade de armazenar informações ou “bits” nos registros do sistema operacional. Disponibilizando desta forma a facilidade do acesso a estas mesmas informações e na alteração da mesma, em tempo real de execução.
O DarumaFramework.XML pode ser manipulado e lido sem que seja necessário a criação de rotinas na aplicação para isto, e este procedimento é feito com apenas duas funções aregRetornaValorChave_DarumaFramework e aregAlterarValor_Daruma.
- Leitura:Para obtermos valores do XML utilizaremos a função: regRetornaValorChave_DarumaFramework. Este método retorna o valor de uma chave do registry/XML.
- Parâmetros Produto:Nome do produto.Chave:Nome da ChaveValor:Variável String por referência com 100 espaços alocados para que possa retornar na variável o valor da Chave que você deseja.
[DllImport("DarumaFrameWork.dll")]
public static extern int regRetornaValorChave_DarumaFramework(string sProduto,
string sChave, [MarshalAs(UnmanagedType.VBByRefStr)] ref string szRetorno);
private void métodoRegRetornaValorECFDarumaToolStripMenuItem_Click(object sender, EventArgs
e)
{
string Str_Valor = new string(' ', 30);
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.regRetornaValorChave_DarumaFramework(
"ECF", "ModoPreVenda", ref Str_Valor);
}
function
regRetornaValorChave_Daruma(pszProduto:string;pszChave:string;pszValor:string):Integer;
StdCall; External 'DarumaFramework.dll';
Str_Valor := StringOFChar(#0,100);
Int_Retorno := regRetornaValorChave_DarumaFramework(‘ECF’, ‘ModoPreVenda’, Str_Valor);
Declare Function regRetornaValorChave_DarumaFramework Lib "DarumaFramework.dll" (ByVal
sProduto As String, sChave As String, ByVal sValor As String) As Integer
Private Sub regRetornaValorChave_DarumaFramework_Click()
Dim Str_Valor As String
Str_Valor = Space(100)
iRetorno = regRetornaValorChave_DarumaFramework("ECF", "ModoPreVenda", Str_Valor)
MsgBox ("Valor da Chave = " + Str_Valor)
End Sub
Nos exemplos acima capturamos o valor da chave “ModoPreVenda”.
- Alteração:Veremos agora como fazer a alteração de uma chave no XML com a funçãoregAlterarValor_Daruma:
- Parâmetros:Chave: Produto e Chave a serem modificados (Ex.: ECF\ModoPreVenda).
- Valor: Novo valor para a Chave
[DllImport("DarumaFrameWork.dll")]
public static extern int regAlterarValor_Daruma(string pszChave, string pszValor);
private void métodoRegAlterarValorECFDaruma_Click(object sender, EventArgs e)
{
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.regAlterarValor_Daruma(“ECF\ModoPreVenda", "1");
}
function regAlterarValor_Daruma(pszPathChave:string,pszValor:string):Integer;
StdCall; External 'DarumaFramework.dll';
Int_Retorno:=regAlterarValor_Daruma(‘ECF\ModoPreVenda','1');
Public Declare Function regAlterarValor_Daruma Lib "DarumaFramework.dll"
(ByVal sProduto_Chave As String, ByVal sValor As String) As Integer
Private Sub regAlterarValor_ECF_Daruma_Click(Index As Integer)
iRetorno = regAlterarValor_Daruma("ECF\ModoPreVenda", "1")
End Sub
Nos exemplos acima alteramos o valor da chave ModoPreVenda, o que irá habilitar o modo de Pré-Venda (Venda Bufferizada).
2º Recurso: Modo Pré-Venda
O modo Pré-Venda é um recurso onde é possível efetuar toda a venda de itens armazenando em um buffer, para depois imprimir o Cupom Fiscal todo de uma só vez.
A DarumaFramework.dll disponibiliza este recurso, que está presente nas linhas de impressoras MACH. Já imaginou só? Imprimir um Cupom Fiscal de,por exemplo: 50 itens em 3 segundos?
E tudo isto, só habilitando a chave no XML.Localizada na sub chave, no produto.
3º Recurso: Tratamento de Retornos
Os mais de 230 métodos disponibilizados na DarumaFramework.dll possuem retornos,que indicam se a execução do método ocorreu com sucesso ou não, se tem algum aviso com relação à execução e ainda no caso de uma não execução nos indica o Erro,de uma maneira bem rápida e prática. Constituído por 3 funções: rStatusUltimoCmdInt_ECF_Darum, eInterpretarErro_ECF_Daruma e eInterpretarAviso_ECF_Daruma
Vejao exemplo prático:
private void métodoILeituraXECFDarumaToolStripMenuItem_Click(object sender, EventArgs e)
{
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iLeituraX_ECF_Daruma();
int Int_NumErro = 0;
int Int_NumAviso = 0;
if (DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == 1)
{
System.Windows.Forms.MessageBox.Show("Método executado com Sucesso!");
}
else
{
StringBuilder Str_Msg_NumErro = new StringBuilder(300);
StringBuilder Str_Msg_NumAviso = new StringBuilder(300);
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rStatusUltimoCmdInt_ECF_Daruma
(ref Int_NumErro, ref Int_NumAviso);
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eInterpretarErro_ECF_Daruma
(Int_NumErro, Str_Msg_NumErro);
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eInterpretarAviso_ECF_Daruma
(Int_NumAviso, Str_Msg_NumAviso);
System.Windows.Forms.MessageBox.Show(Convert.ToString((Str_Msg_NumAviso)));
System.Windows.Forms.MessageBox.Show(Convert.ToString((Str_Msg_NumErro)));
}
}
Private Sub LeituraX_Click()
Dim int_erro, int_aviso As Integer
Dim str_erro, str_aviso As String
str_erro = Space(100)
str_aviso = Space(100)
iRetorno = iLeituraX_ECF_Daruma
If (iRetorno < 1) Then
iRetorno = rStatusUltimoCmdInt_ECF_Daruma(int_erro, int_aviso)
iRetorno = eInterpretarAviso_ECF_Daruma(int_aviso, str_aviso)
iRetorno = eInterpretarErro_ECF_Daruma(int_erro, str_erro)
MsgBox (CStr(str_erro) + CStr(str_aviso))
Else
MsgBox ("Método executado com Sucesso")
End If
End Sub
procedure TLeituraXECFDaruma1Click(
Sender: TObject);
begin
Int_Retorno:= iLeituraX_ECF_Daruma();
Int_NumErro:= 0;
Int_NumAviso:= 0;
Str_Msg_NumErro:=StringOFChar(' ',300);
Str_Msg_NumAviso:=StringOFChar(' ',300);
Str_Msg_RetMetodo:=StringOFChar(' ',300);
Int_Retorno:=rStatusUltimoCMDInt_ECF_Daruma(Int_NumErro, Int_NumAviso);
// Mensagem do erro
Int_Retorno:=eInterpretarErro_ECF_Daruma(Int_NumErro, Str_Msg_NumErro);
// Mensagem aviso
Int_Retorno:=eInterpretarAviso_ECF_Daruma(Int_NumAviso, Str_Msg_NumAviso);
Str_Erro:=Str_Msg_NumErro;
Str_Aviso:=Str_Msg_NumAviso;
Str_Msg_Retorno_Metodo:=Str_Msg_RetMetodo;
Application.MessageBox( Pchar('Número Erro = ' + pchar(Str_Erro) + #13 +
'Número Aviso = ' + pchar(Str_Aviso)), 'DarumaFramework Retorno do Método', mb_ok);
end;