Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

n1ckooo

[Resolvido] Point of sale - sobre botões-

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.