PARAMETROS
Bom dia pessoal, estou com a seguinte dúvida:
tenho vários formulários que possuem os mesmos botões, sendo que nos mesmos tem uma função habilita_botões, visto que essa função é igual em todos os formulários, estava tentando coloc=a-lka em um módulo, mas quano chamo a função, não consigo fazer referencia ao botão do formulário em questão. Tentei passar o formulário(Me) como parâmetro, mas sem sucesso. Se alguem souber alguma forma de como isso funcione e puder me ajudar...
Obrigado a todos
tenho vários formulários que possuem os mesmos botões, sendo que nos mesmos tem uma função habilita_botões, visto que essa função é igual em todos os formulários, estava tentando coloc=a-lka em um módulo, mas quano chamo a função, não consigo fazer referencia ao botão do formulário em questão. Tentei passar o formulário(Me) como parâmetro, mas sem sucesso. Se alguem souber alguma forma de como isso funcione e puder me ajudar...
Obrigado a todos
Para solucionar este problema, crie uma classe herdando o objeto button.
Crie uma proriedade identificando que tipo de botão é (Incluir, Alterar..). Se for sempre o mesmo tipo, não precisa. SObrescreva o evento CLICK utilizando sua função.
Este seria um caminho.
Fish
"Viva OOP !!!".
Crie uma proriedade identificando que tipo de botão é (Incluir, Alterar..). Se for sempre o mesmo tipo, não precisa. SObrescreva o evento CLICK utilizando sua função.
Este seria um caminho.
Fish
"Viva OOP !!!".
Obrigado pela força... mas não consegui compreender direto...
quando vc diz:
"Crie uma proriedade identificando que tipo de botão é (Incluir, Alterar..). Se for sempre o mesmo tipo, não precisa. SObrescreva o evento CLICK utilizando sua função."
Como crio uma propriedade?
desculpa mas é que so bem iniciante nessa área
ate +
quando vc diz:
"Crie uma proriedade identificando que tipo de botão é (Incluir, Alterar..). Se for sempre o mesmo tipo, não precisa. SObrescreva o evento CLICK utilizando sua função."
Como crio uma propriedade?
desculpa mas é que so bem iniciante nessa área
ate +
Bom, eu não imaginava que você era iniciante. Se você vem do VB6, vai perceber que muita coisa mudou na plataforma .NET. O mais importante é que agora temo uma liguagem OOP. Utilizamos classes e não mais os velhos módulos. Não adiantaria eu postar todo código aqui, pois necessitária de um conhecimento prévio. Para que você possa explorar os diversos recursos da plataforma .NET, terá que estudar OOP, classes, sobrecarga, herança etc. Em .NET você pode criar novas propriedades e eventos para os controles já existentes dando mais funcionalidade. Quando você cria uma classe e herda o objeto button, você pode fazer com que todos os botões do sistema, repondam nesta classe. Desta forma resolveria seu problema. A princìpio não vejo outra solução, a não ser que coloque a sua função como pública em um módulo, e a chame no botão de cada form.
Fish
Fish
Ah ta...
axo q agora entendi...
veja se é mais ou menos isso:
vo criar uma classe que herda da classe Button, por exemplo class1...
essa class1, virá com todos os métodos que já exitiam na classe Button, aàbasta eu acrescentar mais algum método que eu desejar.
Se eu reescrever o método com mesmo nome, por exemplo Click, eu posso colocá-lo para receber parâmetro?
muito obrigado pela força!
axo q agora entendi...
veja se é mais ou menos isso:
vo criar uma classe que herda da classe Button, por exemplo class1...
essa class1, virá com todos os métodos que já exitiam na classe Button, aàbasta eu acrescentar mais algum método que eu desejar.
Se eu reescrever o método com mesmo nome, por exemplo Click, eu posso colocá-lo para receber parâmetro?
muito obrigado pela força!
Pra quem esta começando, você esta indo muito bem. Mas tome cuidado, pois nos forms que você escrever o código, se não me engano, mesmo assim ele executará o evento da sua classe. Se for o caso, na sua classe, crie uma nova propriedade para o botão tipos liga/desliga, evitando assim que o código do click por exemplo seja executado duas vezes.
Fish
Fish
valeu mesmo ai cara...
quando chegar em casa vou testar sobrescrever o método ou criar um outro.
Muito Obrigado novamente!
quando chegar em casa vou testar sobrescrever o método ou criar um outro.
Muito Obrigado novamente!
Sem problemas. Precisando, estamos aÃÂÂ.
Fish
Fish
Você pode criar um Extender Provider como o componente Tooltip para habilitar e desabilitar os botões de maneira mais simples. Fiz um exemplo em C#, se gostar da solução posso converter para VB.NET. No projeto em anexo existe uma classe chamada ButtonExtender, é só adicionar o componente no Form pela ToolBox, ele adicionará uma nova propriedade (ControlState) em cada Button do Form, é só olhar na janela de propriedades lá no final da lista, se você deixar como True o extender atuará sobre ele, daàpara habilitar e desabilitar os botões basta configurar a propriedade Enabled do Extender como True ou False como se estivesse fazendo para o Button.
No Form para habilitar todos os botões com ControlState = True:
using System;
using System.ComponentModel;
using System.Collections;
using System.Windows.Forms;
[ProvideProperty("ControlState", typeof(Button))]
public class ButtonExtender : Component, IExtenderProvider
{
private Hashtable m_Buttons = new Hashtable();
#region IExtenderProvider Members
public bool CanExtend(object extendee)
{
return (extendee is Button);
}
#endregion
[DefaultValue(false)]
public bool GetControlState(Button control)
{
return m_Buttons.ContainsKey(control.GetHashCode().ToString());
}
public void SetControlState(Button control, bool value)
{
if (value)
{
if (m_Buttons.ContainsKey(control.GetHashCode().ToString()) == false)
m_Buttons.Add(control.GetHashCode().ToString(), control);
}
else
{
if (m_Buttons.ContainsKey(control.GetHashCode().ToString()))
m_Buttons.Remove(control.GetHashCode().ToString());
}
}
private bool m_Enabled = true;
[DefaultValue(true)]
public bool Enabled
{
get { return m_Enabled; }
set
{
m_Enabled = value;
foreach (Button button in m_Buttons.Values)
button.Enabled = value;
}
}
}
No Form para habilitar todos os botões com ControlState = True:
this.buttonExtender1.Enabled = True
Obrigado novamente... se tiver um em vb.net e puder me mandar...
eu entendi o que vc quis dizer, mas não consegui compreender como irei utilizar no meu código. Axo que não expressei minha dúvida da melhor maneira, deixe-me tentar de novo.
Eu tenho varias telas de cadastro, com botoes(na Tooltip) Novo, salvar, cancelar, etc. e precisoq ue quando eu clique em Cancelar, por exemplo, o botão cancelar e salvar fique enable=false e o novo fique enable=true, por exemplo. Eu estava criando um prcedimento em cada classe, mas percebi que estava repetindo mtas vezes o mesmo código e resolvi tentar reutilizá-lo. Me desculpem se não consegui ser claro na 1º explicação.
Um abraço a todos
eu entendi o que vc quis dizer, mas não consegui compreender como irei utilizar no meu código. Axo que não expressei minha dúvida da melhor maneira, deixe-me tentar de novo.
Eu tenho varias telas de cadastro, com botoes(na Tooltip) Novo, salvar, cancelar, etc. e precisoq ue quando eu clique em Cancelar, por exemplo, o botão cancelar e salvar fique enable=false e o novo fique enable=true, por exemplo. Eu estava criando um prcedimento em cada classe, mas percebi que estava repetindo mtas vezes o mesmo código e resolvi tentar reutilizá-lo. Me desculpem se não consegui ser claro na 1º explicação.
Um abraço a todos
Eu entendi, o exemplo que fiz serve para isso. Você define pelo Extender quais botões estão sendo controlados e ao invés de ficar alterando a propriedade Enabled de cada botão você só precisa alterar no Extender. Olhe no novo exemplo em anexo com um Form cheio de botões. Só vou converter para VB.NET se você for usar.
Tópico encerrado , respostas não são mais permitidas