Fórum restringir o loop #411118

01/01/2012

0

Boa tarde a todos,estou precisando de uma ajuda com este codigo, por favor.
 eu tenho um loop que faço de 1 a 20 digamos. Como faço para tirar cinco numeros de dentro deste loop, vamos dizer que tenho 20 botões de 1 a 20 e quero escluir 5 botões do loop escolhendo quais ex. 3-7-12-13-20. agradeço  a ajuda.
sucesso a todos
obrigado
geraldo leal
Geraldo Leal

Geraldo Leal

Responder

Posts

01/01/2012

Geraldo Leal

Boa tarde a todos,estou precisando de uma ajuda com este codigo, por favor.
 eu tenho um loop que faço de 1 a 20 digamos. Como faço para tirar cinco numeros de dentro deste loop, vamos dizer que tenho 20 botões de 1 a 20 e quero escluir 5 botões do loop escolhendo quais ex. 3-7-12-13-20. agradeço  a ajuda.
sucesso a todos
obrigado
geraldo leal
Desculpe a todos pelo erro do pedido, preciso usar um for em um random , quer dizer o random aleatorio de 1 a 20 e tirar os cinco de dentro deste random.obrigado mais uma vez
Responder

Gostei + 0

02/01/2012

Renan Mattos

Olá Geraldo, você poderia fazer assim criar um array com os numeros que você quer e dar um random
no index do array.

Exemplo:
valor : array[0..4] of integer = (15,21,48,62,97);

randomize;
Label1.Caption:=inttostr( valor[random(5)] );

abraço.
Responder

Gostei + 0

02/01/2012

Geraldo Leal

Renam, obrigado pelo retorno eu entendi o que disse, porem eu tenho 20 botões, o que eu precisava era criar um random aonde eu clicasse em alguns botões ou com o botão direito e conseguisse colocar estes botões tipo enabled igual false, e ai fizesse o random nos outros botões que estivessem habilitado.mais de qualquer forma obrigado
sucesso
feliz 2012
geraldo leal 
Responder

Gostei + 0

02/01/2012

Geraldo Leal

Renam, obrigado pelo retorno eu entendi o que disse, porem eu tenho 20 botões, o que eu precisava era criar um random aonde eu clicasse em alguns botões ou com o botão direito e conseguisse colocar estes botões tipo enabled igual false, e ai fizesse o random nos outros botões que estivessem habilitado.mais de qualquer forma obrigado
sucesso
feliz 2012
geraldo leal 
Responder

Gostei + 0

02/01/2012

Renan Mattos

Geraldo, acho que agora eu entendi o que você esta querendo fazer.
Eu fiz o seguinte, criei uma aplicação com 10 botoes que serão escolhidos pelo random e 1 botão no qual dispara a escolha, ao clicar nos botoes eles ficam desabilitados e o random não escolherá mais ele.
ai vai o código:

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
ButtonRandom: TButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button0: TButton;
procedure DisableButton(Sender : TObject);
procedure ClearButtons;
function CheckEnableButtons : boolean;
procedure ButtonRandomClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

//Desabilita os botões ao clicar neles, chame isso no evento onclick dos botoes 0 a 9
procedure TForm2.DisableButton(Sender : TObject);
begin
TButton(Sender).Enabled:=False;
end;

//Limpa os caption dos bottões
procedure TForm2.ClearButtons;
var
i : integer;
begin
for i := 0 to 9 do
TButton(FindComponent(Button+inttostr(i))).Caption:=;
end;

//Verifica se ha botoes habilitados
function TForm2.CheckEnableButtons : boolean;
var
i : integer;
R : boolean;
begin
R:=True;
for i := 0 to 9 do
if TButton(FindComponent(Button+inttostr(i))).Enabled=true then R:=False;
Result:=R;
end;

//Escolhe entre os botoes habilitados
procedure TForm2.ButtonRandomClick(Sender: TObject);
var
s: string;
ck : boolean;
begin
Randomize;
repeat
s:=inttostr(random(10));
ck:=CheckEnableButtons;
until (TButton(FindComponent(Button+s)).Enabled=True) or (ck);
ClearButtons;
if not ck then
TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido

end;

end.

abraço!
Responder

Gostei + 0

02/01/2012

Geraldo Leal

Renam mais uma vez obrigado pelo seu tempo, tentei fazer aqui, mais está dando um erro de não identificado  button
veja começou neste codigo e não compilou .
var
s: string;
ck : boolean;

begin
Randomize;
repeat
s:=inttostr(random(10));
ck:=CheckEnableButtons;
until (TButton(FindComponent(Button+s)).Enabled=True) or (ck); // errro aqui neste local no segundo (Button+s)
ClearButtons;
if not ck then
TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido
sucesso
geraldo leal
Responder

Gostei + 0

02/01/2012

Geraldo Leal

Renam mais uma vez obrigado pelo seu tempo, tentei fazer aqui, mais está dando um erro de não identificado  button
veja começou neste codigo e não compilou .
var
s: string;
ck : boolean;

begin
Randomize;
repeat
s:=inttostr(random(10));
ck:=CheckEnableButtons;
until (TButton(FindComponent(Button+s)).Enabled=True) or (ck); // errro aqui neste local no segundo (Button+s)
ClearButtons;
if not ck then
TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido
sucesso
geraldo leal
Responder

Gostei + 0

02/01/2012

Renan Mattos

Putz, foi erro meu na hora de postar aqui.
O codigo esta sem as aspas simples de string.

//Desabilita os botões ao clicar neles, chame isso no evento onclick dos botoes 0 a 9
procedure TForm2.DisableButton(Sender : TObject);
begin
 TButton(Sender).Enabled:=False;
end;

//Limpa os caption dos bottões
procedure TForm2.ClearButtons;
var
 i : integer;
begin
  for i := 0 to 9 do
   TButton(FindComponent(Button+inttostr(i))).Caption:=;
end;

//Verifica se ha botoes habilitados
function TForm2.CheckEnableButtons : boolean;
var
 i : integer;
 R : boolean;
begin
 R:=True;
  for i := 0 to 9 do
   if TButton(FindComponent(Button+inttostr(i))).Enabled=true then R:=False;
 Result:=R;
end;

//Escolhe entre os botoes habilitados
procedure TForm2.ButtonRandomClick(Sender: TObject);
var
 s: string;
 ck : boolean;
begin
 Randomize;
 repeat
  s:=inttostr(random(10));
  ck:=CheckEnableButtons;
 until (TButton(FindComponent(Button+s)).Enabled=True) or (ck);
 ClearButtons;
 if not ck then
   TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido

end;


{
eu chamei os botoes de Button0, Button1, Button2,...
voce pode mudar o nome dos botoes por exemplo para botao0, botao1, botao2, porem teria que mudar
o codigo FindComponent(Button para FindComponent(Botao
}

Responder

Gostei + 0

02/01/2012

Renan Mattos

Putz, foi erro meu na hora de postar aqui.
O codigo esta sem as aspas simples de string.

//Desabilita os botões ao clicar neles, chame isso no evento onclick dos botoes 0 a 9
procedure TForm2.DisableButton(Sender : TObject);
begin
 TButton(Sender).Enabled:=False;
end;

//Limpa os caption dos bottões
procedure TForm2.ClearButtons;
var
 i : integer;
begin
  for i := 0 to 9 do
   TButton(FindComponent(Button+inttostr(i))).Caption:=;
end;

//Verifica se ha botoes habilitados
function TForm2.CheckEnableButtons : boolean;
var
 i : integer;
 R : boolean;
begin
 R:=True;
  for i := 0 to 9 do
   if TButton(FindComponent(Button+inttostr(i))).Enabled=true then R:=False;
 Result:=R;
end;

//Escolhe entre os botoes habilitados
procedure TForm2.ButtonRandomClick(Sender: TObject);
var
 s: string;
 ck : boolean;
begin
 Randomize;
 repeat
  s:=inttostr(random(10));
  ck:=CheckEnableButtons;
 until (TButton(FindComponent(Button+s)).Enabled=True) or (ck);
 ClearButtons;
 if not ck then
   TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido

end;


{
eu chamei os botoes de Button0, Button1, Button2,...
voce pode mudar o nome dos botoes por exemplo para botao0, botao1, botao2, porem teria que mudar
o codigo FindComponent(Button para FindComponent(Botao
}

Responder

Gostei + 0

02/01/2012

Renan Mattos

//Desabilita os botões ao clicar neles, chame isso no evento onclick dos botoes 0 a 9
procedure TForm2.DisableButton(Sender : TObject);
begin
 TButton(Sender).Enabled:=False;
end;

//Limpa os caption dos bottões
procedure TForm2.ClearButtons;
var
 i : integer;
begin
  for i := 0 to 9 do
   TButton(FindComponent(Button+inttostr(i))).Caption:=;
end;

//Verifica se ha botoes habilitados
function TForm2.CheckEnableButtons : boolean;
var
 i : integer;
 R : boolean;
begin
 R:=True;
  for i := 0 to 9 do
   if TButton(FindComponent(Button+inttostr(i))).Enabled=true then R:=False;
 Result:=R;
end;

//Escolhe entre os botoes habilitados
procedure TForm2.ButtonRandomClick(Sender: TObject);
var
 s: string;
 ck : boolean;
begin
 Randomize;
 repeat
  s:=inttostr(random(10));
  ck:=CheckEnableButtons;
 until (TButton(FindComponent(Button+s)).Enabled=True) or (ck);
 ClearButtons;
 if not ck then
   TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido

end;


{
eu chamei os botoes de Button0, Button1, Button2,...
voce pode mudar o nome dos botoes por exemplo para botao0, botao1, botao2, porem teria que mudar
o codigo FindComponent(Button para FindComponent(Botao
}

Responder

Gostei + 0

02/01/2012

Renan Mattos

Tentei postar o codigo 3x com aspas mas nao consegui, entao é soh vc por as aspas onde der erro.

Abraço!
Responder

Gostei + 0

02/01/2012

Geraldo Leal

 renam aonde está parando , tentei colocar as aspas, mais quando coloco ele diz imcopativel string e integer
TButton(FindComponent(Button+s)).Caption:=1; //escreve 1 no caption do botão escolhido
é nesta linha que está parando.
obrigado - coloque no codigo fora e cole aqui que aceita as aspas
geraldo
Responder

Gostei + 0

03/01/2012

Renan Mattos

Coloquei o código no megaupload pra vc baixar:
www.megaupload.com/?d=K8DT8M8P
clica em download comum
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar