| ♥ 0 | Bom dia, Estou a migrar o projeto VBA da V9 para a V10. Na ficha de cliente, no evento tecla pressionada chamo um formulario public override void TeclaPressionada(int KeyCode, int Shift, ExtensibilityEventArgs e)
{
base.TeclaPressionada(KeyCode, Shift, e);
try
{
if (KeyCode==113)
{
FrmContacto Frm;
Frm = new FrmContacto(this.Cliente.Cliente);
Frm.ShowDialog();
}
}
catch (Exception ex)
{
PSO.Dialogos.MostraAviso(ex.Message);
}
}O código do formulário é: public partial class FrmContacto : Form
{
string sClienteemUso;
public static ErpBS BSO = new ErpBS();
public ErpBS100.ErpBS Engine;
public FrmContacto(String sCodigoCli)
{
InitializeComponent();
sClienteemUso = sCodigoCli;
Engine = new ErpBS100.ErpBS();
}
private void CmdSair_Click(object sender, EventArgs e)
{
this.Close();
}
private void FrmContacto_Load(object sender, EventArgs e)
{
MessageBox.Show(BSO.Base.Clientes.DaNome("000"));
}
}No entanto, quando é mostrado o form dá o erro que está na imagem em anexo. BSO.Base.Clientes.DaNome(“000”) está a dar erro O que é que estou a fazer mal? Marcado como spam |
| Resposta privada Boa noite Sereno, Obrigado pela sua resposta e clareza Ficou a funcionar na perfeição
Marcado como spam | |
| Resposta privada Olá algumas coisas não estão bem, nomeadamente a forma como estás a iniciar o BSO. O que estás a fazer é criar apenas uma nova instancia do objeto, mas essa instancia esta vazia porque não a API (motor) não foi inicalizada. Bem não necessitas de fazer isso porque na classe da ficha do cliente já tens a o BSO inicializada, só tens de passar para a tua nova classe o BSO, da forma como está no exemplo. Também não ten de declarar a propriedade privada do BSO como static, nãofaz sentido porque o scope da tua classe é limitado a ela propria, não a vais reutilizar mais. Recomendo que também passes a usar a notação CamelCase na escrita do teu código em vez da notação PascalCase. using System;
using System.Windows.Forms;
using ErpBS100;
namespace ExtensibilityProject4.Sales
{
public partial class FrmContacto : Form
{
string clienteEmUso;
//public static ErpBS BSO = new ErpBS();
private ErpBS BSO { get; set; }
public ErpBS100.ErpBS Engine;
public FrmContacto(String codigoCliente, ErpBS bso)
{
InitializeComponent();
clienteEmUso = codigoCliente;
this.BSO = bso;
}
public FrmContacto()
{
InitializeComponent();
}
private void CmdSair_Click(object sender, EventArgs e)
{
this.Close();
}
private void FrmContacto_Load(object sender, EventArgs e)
{
MessageBox.Show(BSO.Base.Clientes.DaNome(clienteEmUso));
}
}
}
Marcado como spam |