afbartels 0 Denunciar post Postado Maio 2, 2008 Tenho um Form com 48 botões BitBtn, sendo que cada botão representa uma mesa. Quero ler no Banco quais são as mesas que estão ocupadas e assim mudar a figura dos respectivos botões. Tenho o seguinte código ADOQuery1.close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT NumeroMesa, Status FROM TabMesa'); ADOQuery1.Open; i := 1; while (i <= count) do begin comp:=CompareStr(ADOQuery1.FieldValues['status'],'A'); idx := ADOQuery1.FieldValues['NumeroMesa']; if (comp = 0) then TBitBtn(Components[idx]).Glyph.LoadFromFile('icones/tabuleta_verde.bmp') else TBitBtn(Components[idx]).Glyph.LoadFromFile('icones/tabuleta_amarela.bmp'); ADOQuery1.Next; i:=i+1; end; Ele lê normalmente e me traz os números das mesas que estão ativas. Até aí tudo bem. O problema é quando vou mudar as figuras dos botões. O que acontece é que o indice não é referente ao botão e sim ao componente. Gostaria de saber como faço para fazer a referencia certa ao botão. Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Maio 5, 2008 Você poderia nomear os botões seguindo uma hierarquia, exemplo (btnMesa1, btnMesa2 ...), e no código faria assim: TBitBtn(FindComponent('btnMesa' + IntToStr(idx))).Glyph.LoadFromFile('icones/tabuleta_verde.bmp'); Compartilhar este post Link para o post Compartilhar em outros sites