Form principal Buttons DB= a dúvida?

Delphi

20/04/2004

Olá caros colegas do forum estou com uma dificuldade com meu sistema,
tenho um pequeno sistema em paradox onde tenho um banco chamado Máquinas, então cadastrei todas as máquinas da minha rede como Maq1, maq2 e etc.., até aí tranquilo e tenho também no meu form principal 10 Buttons onde cada button representa uma máquina do colégio, e é aí q começa a complicar pra mim pois queria q ao executar o programa novamente cada Button teria q receber uma poisiçaõ da tabela, exemplo:

no evento oncreate ou evento onshow

o Button1:= a primeira posição da tabela
o Button2:= a 2a póisição da tabela e por aí em diante

Será q tem jeito d fazer isso , c alguém poder me dar uma luz ficarei muito grato.
Atenciosamente, Izaias


Izaias

Izaias

Curtidas 0

Respostas

Paullus

Paullus

20/04/2004

Não entendi direito a sua dúvida.

Você queria que o botão chamado ´Button1´ recebe-se o valor do primeiro registro da sua tabela de banco de dados. É isso?

Se for tenta o seguinte.

if TForm.FindChildControl(´Button1´) <> nil then
  TButton(TForm.FindChildControl(´Button1´)).Caption := {valor do banco};


Num sei se era isso mas talvez tenha ajudado.

obs.:
O método FindChildControl deve ser usado no container (o Parent) dos botões. Se os botões estiverem no próprio formulário use o método do formulário. TForm.FindChildControl
Se os botões estiverem em um TPanel use TPanel.FindChildControl. Sacou!?


GOSTEI 0
Cabelo

Cabelo

20/04/2004

Caro colega, o problema é o seguinte : gostaria de saber o pq vc deveria mudar iss ?? O Caption de acordo com o banco, pq se o banco de dados crescer, não haverá botões suficiente na tela para que seja adequado ao número de máquinas. Mas se vc deseja criar os botões de acordo com o banco de dados, eu aconselho a vc a criar um vetor do tipo record, e implementar este vetor, que terá variáveis da classe TButton, de acordo com seu banco de dados..

sem mais

Cabelo


GOSTEI 0
Izaias

Izaias

20/04/2004

Colega obrigado por ter me respondido mas o q eu quero e q ao iniciar o sistema os 10 botoes q tenho na minha tela receba sequencialmente os 10 registros q tenho em minha tabela.

Botão1:= 1 registro
Botão2 := 2º registro
.
.
Botão10:= o 10º registro

entendeu? Obrigado a todos pela atenção


GOSTEI 0
Izaias

Izaias

20/04/2004

Mas o meu Banco são para exatamente 10 registros, mas essa possibilidade q vc mencionou é legal só não saberia como faze-la, mas a principio o banco é só para 10 registros mesmo.
Valeu!!! mesmo


GOSTEI 0
Cabelo

Cabelo

20/04/2004

Tudo bem amigo, mas lembre-se que se o seu banco de dados crescer, isto é, se vc colocar um registro que seja a mais no banco, seu programa vai dar erro :

procedure P_Caption(l_form : TForm);
var v_i : integer;
begin
Query.SQL.add(´select C_MAQ from Maquinas order by C_MAQ´);
Query.Open;
Query.First;
for v_i := 0 to l_form.ComponentCount - 1 do
begin
if l_form.Components[v_i] is TButton then
begin
TButton(l_form.Components[v_i]).Caption := Query.fieldbyname(´C_MAQ´).asstring;
query.next;
end;
end;
end;

depois disso é só colocar no seu form, no evento formcreate, esta procedure, passando como parâmetro o Form.

espero ter ajudado

sem mais

Cabelo


GOSTEI 0
POSTAR