Fórum Mudar o Glyp do botão em tempo de execução #415038
05/04/2012
0
Eu uso Delphi 7 e Firebird 2.1.
Estou com o seguinte problema: Estou construindo um programa para controle de Bar e Pizzaria, onde eu quero controlar as mesas que estão ocupadas ou não.
Até aí tudo bem, mas a minha dificuldade é: Quando um cliente senta na mesa 10 e consome alguma coisa, na minha tela de mesas eu preciso alterar a imagem do botão para ocupada. como faço isso ?
Josenildo Rosa
Curtir tópico
+ 0Posts
05/04/2012
Joel Rodrigues
Botao.Glyph.LoadFromFile(caminho\imagem.bmp);
É necessário que seja um bitmap.
Gostei + 0
05/04/2012
Joel Rodrigues
Botao.Glyph := nil; ImageList.GetBitmap(INDICE_DA_IMAGEM, Botao.Glyh);
Essa forma é mais prática, pois você não fica dependente de manter as imagens em arquivo. Para facilitar o uso do INDICE_DA_IMAGEM, você pode definir constantes, por exemplo:
const MESA_LIVRE = 0; MESA_OCUPADA = 1;
E na hora de altrar o glyph, você faria, por exemplo:
Botao.Glyph := nil; //Se a mesa está livre ImageList.GetBitmap(MESA_LIVRE, Botao.Glyh);
Bom, espero que ajude.
Boa sorte.
Gostei + 0
05/04/2012
Josenildo Rosa
Gostei + 0
05/04/2012
Josenildo Rosa
Botao.Glyph := nil; ImageList.GetBitmap(INDICE_DA_IMAGEM, Botao.Glyh);
Essa forma é mais prática, pois você não fica dependente de manter as imagens em arquivo. Para facilitar o uso do INDICE_DA_IMAGEM, você pode definir constantes, por exemplo:
const MESA_LIVRE = 0; MESA_OCUPADA = 1;
E na hora de altrar o glyph, você faria, por exemplo:
Botao.Glyph := nil; //Se a mesa está livre ImageList.GetBitmap(MESA_LIVRE, Botao.Glyh);
Bom, espero que ajude.
Boa sorte.
Joel!, desde já agradeço pela ajuda, mas até aí eu consegui fazer, o que eu não estou conseguindo é que quando eu lanço um produto na tela de mesa e gravo, a imagem do botão não altera, ou seja, eu tinha que percorrer o panel onde está os botões das mesas e ver qual o botão é a mesa que está em consumo e mudar a imagem dela para ocupada.
Gostei + 0
05/04/2012
Bruno Leandro
para isso verifique antes de dar o post o status da mesa caso seja fechado altera a imagem, senao ignora
e no processo de fechamento de mesa, depois do post volte a imagem
Gostei + 0
05/04/2012
Josenildo Rosa
para isso verifique antes de dar o post o status da mesa caso seja fechado altera a imagem, senao ignora
e no processo de fechamento de mesa, depois do post volte a imagem
pois é Bruno esse está sendo o problema, não estou conseguindo montar esse código, Você pode me ajudar ?
Eu estava usando este codigo:
qAux.First; // tabela auxiliar de mesas
while not qAux.Eof do
begin
{ Percorre por todos os componentes que têm frmExemplo como parent. }
for i := 0 to sPanel2.ComponentCount -1 do
begin
if TsBitBtn(sPanel2.Components[i]).Name = Mesa + qAuxME_NUMERO.Text then { Ao percorrer o panel que contem os botoes com os nome das mesas Ex: botao Mesa1 que é Mesa + qauxME_NUMERO que vai dar Mesa1 }
TsBitBtn(sPanel2.Components[i]).Glyph.LoadFromFile(D:\Lanchonete\Imagen\Mesa Livre.bmp);
end;
qAux.Next;
end;
A ideia é percorrer toda a tabela auxiliar de mesa e os botoes ao mesmo tempo e alterando a sua imagem de acordo com a mesa gravada na tabela. Não sei se fui claro.
Gostei + 0
06/04/2012
Bruno Leandro
for i := 0 to sPanel2.ComponentCount -1 do
begin
if TsBitBtn(sPanel2.Components[i]).Name = Mesa + qAuxME_NUMERO.Text then
begin
qAux.Close;
qAux.parambyname(mesa).value := sPanel2.Components[i]).Name;
qAux.Open;
if qAux.fieldbyname(status_mesa_aberta).asstring = S then
TsBitBtn(sPanel2.Components[i]).Glyph.LoadFromFile(D:\Lanchonete\Imagen\Mesa Livre.bmp)
else
TsBitBtn(sPanel2.Components[i]).Glyph.LoadFromFile(D:\Lanchonete\Imagen\Mesa Fechada.bmp);
qAux.Close;
end;
end;
esse status_mesa_aberta seria algo que identificasse se a mesa esta aberta ou fechada.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)