n1ckooo 0 Denunciar post Postado Abril 3, 2008 Ola a todos eu estou a tentar fazer um POS mas tenho uma duvida como fazer os botões dos produtos... Por favor vejam a imagem seguinte e tentem me ajudar.. http://i166.photobucket.com/albums/u104/n1ckooo/pos2.jpg Como puderam repara existem 3 botões de subcategorias( , refrigerantes , cervejas e vinhos) O que eu quero é que ao clicar em um desses botões , aparecem botões com os produtos dessa determinada sub categoria. Para perceberem melhor um exemplo: clico no botão cervejas e devera aparecer botões com Superbock, Sagres, CarlsBerg etc etc... Gostaria saber qual a melhor maneira de fazer isso se é que perceberam Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 3, 2008 Como você pretende fazer isso, esses registros que aparecerão no seu botão estão cadastrados em um banco de dados? Outra pergunta, é aplicação Web ou Windows? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
n1ckooo 0 Denunciar post Postado Abril 4, 2008 Como você pretende fazer isso, esses registros que aparecerão no seu botão estão cadastrados em um banco de dados? Outra pergunta, é aplicação Web ou Windows? Abraços... ola quintelab.. Esses registos estarão guardados em um banco de dados sql e é uma aplicação windows.. desculpa por não ter disponibilizado logo esta informaçao Abraço Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 4, 2008 Movido Plataforma .NET » Visual Studio .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Windows Applications Como estará em banco de dados você pode filtrar com um select, trazendo dos bancos os registros que tenham como pai o botão selecionado. E você deve montar seus botões em tempo de execução. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
n1ckooo 0 Denunciar post Postado Abril 4, 2008 Movido Plataforma .NET » Visual Studio .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Windows Applications Como estará em banco de dados você pode filtrar com um select, trazendo dos bancos os registros que tenham como pai o botão seleccionado. E você deve montar seus botões em tempo de execução. Abraços... Antes de mais desculpa-me por não ter iniciado o tópico na seçao correcta... Eu entendi mais ao menos o que falou... Mas vamos por passos 1º Passo Filtrar dados com select Penso que o query devera ser da seguinte maneira: SELECT nome_produto FROM `produtos` where id_subcategoria = '1'; onde "nome_produto" é a coluna com os nomes, "produtos" é o nome da tabela, e id_subcategoria é o a identificação da subcategoria, na query aprensentada em cima seria a subcategoria refrigerantes... Estou certo quanto a isso? 2º Passo Montar os botões em tempo de execução: Nao sei como fazer isso, penso que o mais lógico seria fazer um ciclo for em que ia criando os botões e seus respectivos eventos on click, até atingir o numero de linhas da tabela filtrada com o select (query) ... Exemplo depois da query havia 10 linhas com o nomes de produtos na tabela logo iria cria 10 botões, atribuindo lhe os respectivos nomes. se puderes explicar como isto funciona... ---- Só uma nota: Nao percebi bem o que querias dizer com a seguinte frase trazendo dos bancos os registros que tenham como pai o botão seleccionado. Obrigado pela ajuda, já andei em diversos foruns e foste (és) o unico que me respondeu de forma concreta.. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 4, 2008 A idéia dos dois primeiros passos é essa mesma. O que eu quis dizer é o seguinte, você pode criar no seu banco de dados com o nome de id_pai. Vamos supor que seu botão Bebidas tem o código Id 1, quando você clicar nele você trará todos os registos que possuam o id_pai 1. Se não entendeu só postar aqui novamente. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
n1ckooo 0 Denunciar post Postado Abril 5, 2008 A idéia dos dois primeiros passos é essa mesma. O que eu quis dizer é o seguinte, você pode criar no seu banco de dados com o nome de id_pai. Vamos supor que seu botão Bebidas tem o código Id 1, quando você clicar nele você trará todos os registos que possuam o id_pai 1. Se não entendeu só postar aqui novamente. Abraços... Já entendi o que quis dizer, so que ainda não sei o como fazer... Por exemplo quando clicava em bebidas, deve automaticamente criar "n" botões, isso é o que nao sei fazer, criar os botões em tempo de execução. Se souberes o código diz me por favor.. Obrigado ;) Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 7, 2008 De uma olhada neste artigo irá te auxiliar: http://www.macoratti.net/vbn_cwf.htm Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
n1ckooo 0 Denunciar post Postado Abril 8, 2008 De uma olhada neste artigo irá te auxiliar: http://www.macoratti.net/vbn_cwf.htm Abraços... Obrigado quintelab consegui fazer o que desejava, mas vão aparecendo mais problemas ve o que fiz ;) Class Produtos class Produtos { public DataSet ds; public void dsprodutos(string id) { string query; query = "select * from produtos where id_subcategoria = '" + id + "'"; clsdados dados = new clsdados(); ds = dados.RetornarDataSet(query); } } user control Botaoproduto public partial class botaoproduto : UserControl { private string c_Designacao = ""; private double c_preco = 0; private Image c_Imagem; public botaoproduto() { InitializeComponent(); } public string Designacao { get { return c_Designacao; } set { c_Designacao = value; // alterar no botão, também! this.button1.Text = value; } } public Image Imagem { get { return c_Imagem; } set { c_Imagem = value; } } public double PrecoProduto { get { return c_preco; } set { c_preco = value; } } private void button1_Click(object sender, EventArgs e) { TextBox x = new TextBox(); x.Visible = false; this.Controls.Add(x); this.Controls.Remove(x); } } Botão refrigerantes private void btn_rfr_Click(object sender, EventArgs e) { Produtos pro = new Produtos(); DataTable MinhaTabela; DataRow MinhaLinha; int count; string id; id = "1"; //chamar o dataset da class pro.dsprodutos(id); //contar linhas count = pro.ds.Tables[0].Rows.Count; //definir a tabela ControlEventHandler[] vector2 = new ControlEventHandler[] { btn1_Click, btn2_Click, btn3_Click, btn4_Click, btn5_Click , btn6_Click , btn7_Click, btn8_Click,btn9_Click, btn10_Click,btn11_Click,btn12_Click,btn13_Click }; int y = 150; int x = 10; for (int i = 0; i < count; i++) { string nicko; MinhaTabela = pro.ds.Tables[0]; MinhaLinha = MinhaTabela.NewRow(); MinhaLinha = MinhaTabela.Rows[i];; botaoproduto btn = new botaoproduto(); btn.Designacao = MinhaLinha["nome_produto"].ToString(); nicko = MinhaLinha["preco_produto"].ToString(); if (x > 500) { x = 10; y += 150; } btn.Location = new Point(x, y); btn.ControlAdded += vector2[i]; x += 130; this.Controls.Add(btn); } Tudo funciona bem, ou melhor quase tudo, o problema é o seguinte eu defini na base de dados mysql os o preço_produtos como Double com duas casa decimais, e quando passo para o dataset, fica so uma casa decimal quando não é necessário duas. Por exemplo: Base dados --------- Dataset 1.25 fica 1.25 correcto , aqui não há problema. 1.20 fica 1.2 errado, deveria ficar 1.20... Se souberes resolver isto, é que depois na label dos resultado total fica mal 7.2 euros preferia 7.20 euros;) Desculpa o ENORME post Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 9, 2008 Acredito que se você converter para string antes de mostrar na Label ou utilizar o .ToString() dará certo. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
n1ckooo 0 Denunciar post Postado Abril 10, 2008 Acredito que se você converter para string antes de mostrar na Label ou utilizar o .ToString() dará certo. Abraços... ja ta resolvido , vamos a mais uma duvida? hehe eu tenho uma datagridview com 3 colunas (qtd , nome_produto, preço), e tenho botões de produtos com variáveis definidas com o nome do produto, a qtd e o preço do produto , a medida que clico nos botões produtos adiciono itens a datagridview. eu quero que ao clicar nos botoes de produto, procura-se na datagridview se ja existia esse produto, e se já existir então mudava qtd para qtd + 1 e mantinha o nome do produto e multiplicava a quantidade pelo preço do produto. Exemplo: Botão sumol ; variáveis : qtd(int) , btn.designação(string) e btn.preço_produto(double) clicava uma vez e aparecia na datagridview : (1 , sumol lata , 1.00 ) qtd , nome , preço Clicava pela segunda vez e deveria aparecer: (2, sumol lata, 2.00) Vou deixar aqui o meu código, penso estar perto pois ele faz mais ao menos o que quero mas tem um erro se clicar bt1 bt1 faz exactamente o que quero , agora se clicar bt1 e depois outro botão por exemplo bt2 e depois bt1 já não faz o que quero... Deixo o código para tentarem me ajudar obrigado private void btn_produtos_click(object sender, EventArgs e) { botaoproduto btn = new botaoproduto(); btn = (botaoproduto)sender; int qtdnew; int count; string compar; qtdnew = 0; count = dtgrid_Produtos.RowCount; if (count < 1) { qtd = 1; nome = btn.Designacao; preco = btn.PrecoProduto; dtgrid_Produtos.Rows.Insert(0, qtd, nome, preco); } else { for (int i = 0; i < count; i++) { qtdnew = Convert.ToInt32(dtgrid_Produtos.Rows[i].Cells[0].Value); index = dtgrid_Produtos.Rows[i].Index; compar = dtgrid_Produtos.Rows[i].Cells[1].Value.ToString(); if (compar == btn.Designacao) { qtdnew += 1; nome = compar; preco = qtdnew * btn.PrecoProduto; dtgrid_Produtos.Rows[index].SetValues(qtdnew, nome, preco); break; } else { qtd = 1; nome = btn.Designacao; preco = btn.PrecoProduto; flag = false; dtgrid_Produtos.Rows.Insert(0, qtd, nome, preco); break; } } } obrigado por tudo ;) Resolvido ;) Compartilhar este post Link para o post Compartilhar em outros sites
n1ckooo 0 Denunciar post Postado Abril 10, 2008 já ista resolvido.. http://forum.imasters.com.br/public/style_emoticons/default/grin.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Vou deixar o código aqui pode ser necessário para alguém: Botão que faz adicionar valor na datagrid private void btn_produtos_click(object sender, EventArgs e) { botaoproduto btn = new botaoproduto(); btn = (botaoproduto)sender; bool t = false; int count; int index = 0; string texto = null; count = dtgrid_Produtos.RowCount; if (count < 1) { t = false; goto end; } else { for (int i = 0; i < count; i++) { qtdnew = Convert.ToInt32(dtgrid_Produtos.Rows[i].Cells[0].Value); texto = dtgrid_Produtos.Rows[i].Cells[1].Value.ToString(); if (texto == btn.Designacao) { t = true; index = dtgrid_Produtos.Rows[i].Index; goto end; } } } end: if (t) { qtdnew = qtdnew + 1; nome = texto; preco = qtdnew * btn.PrecoProduto; dtgrid_Produtos.Rows[index].SetValues(qtdnew, nome, preco); } else if (!t) { t = false; qtd = 1; nome = btn.Designacao; preco = btn.PrecoProduto; dtgrid_Produtos.Rows.Insert(count, qtd, nome, preco); } // TOTAL += preco; // lbl_total.Text = TOTAL.ToString() + " €"; } Compartilhar este post Link para o post Compartilhar em outros sites