Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá a todos, estava testando um comando usando a condição if, e agora q o comando está pronto quero trocá-lo pelo for, mas naum sei declarar o loop for T.Tgostaria me explicassem como declara e mostra como fica a minha condição if qndo vira for
procedure TForm1.Button1Click(Sender: TObject);begininc(n);if n < datamodule3.dbf1.FieldCount then // datamodule3.dbf1.FieldCount nesse caso ta valendo como 12, mas ele varia dependendo do arquivo (...)
naum ta dando aqui....eu coloquei 'for n to datamodule3.dbf1.FieldCount do' e naum foi
leita antentamente o tópico do amigo bdexterholland e verás q esqueceu algo ....
tm q ser assim:
for n:= 1 to datamodule3.dbf1.FieldCount dobegin{...}end;
Dê uma lida nesse site... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
entaum, eu coloquei : for n:=1 to datamodule3.dbf1.FieldCount doele naum vai e aparece uma mensagem embaixo :[Error] Unit1.pas(45): For loop control variable must be simple local variable
Deio, poste por favor aqui desde o inicio...Lá onde está:Por exemplo:
Procedure Calcula..............................End;
Pra gente poder ver o comando inteiro...OK? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Pelo que vi você declaro sua variavel N como uma variavel global ...
em um laço for, deve - se usar variaveis locais ...
var n: shortint;begin for n:= 1 to ....
desculpa por está ressuscitando este tópico, fiquei umas 2 semanas sem computador ( moro em floripa, cai a luz direto aqui e acabo ferrando com a fonte do micro), é Rodrigo, tens razão, a minha variável n era uma variável global, por isso naum funciona XDsó estou com um probleminha aqui :
if n = datamodule3.dbf1.FieldCount then begin with Tdbnavigator.Create(self) do begin parent := form2; datasource := datamodule3.datasource1; top := 12 + n2; name := 'dbnavigator2'; left := 125; end;
antes quando eu usava a condição if ele funcionava agora com o for naum ta indo...
Opa! beleza?
kra axo que você poder remover esta linha:
if n = datamodule3.dbf1.FieldCount then
não estou vendo utilidade pra essa condição ...
eu só preciso de 1 desses, se eu tirar ele vai criar uns 12 nesse caso...
kra você ta usando esse if dentro do laço for???qual é o erro?poste o trecho inteiro desse laço for + if ....
o código é esse:
procedure TForm1.Button1Click(Sender: TObject);varn : integer;begininc(n);for n:=1 to datamodule3.dbf1.FieldCount do begin inc(n2, 24);// n2 usado para distanciar um componente do outro, para naum ficar um em cima do outro with TDBEdit.Create(self) do begin parent := form2; name := 'dbedit'+ inttostr(n); datasource := datamodule3.datasource1; datafield := datamodule3.dbf1.FieldDefs.Items[n-1].Name; left := 125; top := 2 + n2; width := 297; end; with Tlabel.create (self) do begin parent := form2; caption:= datamodule3.dbf1.FieldDefs[n-1].Name; name := 'label'+inttostr(n+3); top := 4 + n2; left := 40; end; with form2 do begin width := 500; height:= height +24;// aumentar o form de acordo com a qntd de componentes form2.Show; end; end; if n = datamodule3.dbf1.FieldCount then // condição q deveria funcionar como "ao criar todos os pares, crie um deste" begin with Tdbnavigator.Create(self) do begin parent := form2; datasource := datamodule3.datasource1; top := 12 + n2; name := 'dbnavigator2'; left := 125; end;end;end;
a idéia é a seguinte, ao clicar no botao ele criará dois componentes, um label e um dbedit, nesse caso ai, o "datamodule3.dbf1.FieldCount" vale 12, então o programa irá criar 12 pares de label e dbedit, e após criar esses 12 pares de componentes quero q ele crie 1 dbnavigator, por isso eu coloquei essa condição "if n = datamodule3.dbf1.FieldCount then", só q agora com a condição for, usada la no começo do código essa função não está funcionando....
Bom dia deio !
Mude seu code, deixe ele assim ó:
var n,n2 : integer;begin for n:=1 to datamodule3.dbf1.FieldCount do begin inc(n2, 24); with TDBEdit.Create(self) do begin {..Rotina q cria seus data controls } end; with Tlabel.create (self) do begin {..Rotina p/criar label} end; with form2 do begin {... Atributos p/o form2} end; end; if (datamodule3.dbf1.FieldCount > 0) then begin with Tdbnavigator.Create(self) do begin {..Rotina q cria o DBNavigator ...} end; end; end;
beleza?! Daew poste o resultado... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
aew deu certo, só tive q arrumar a posição dele q ficou um pouco em cima de outro componente, XDvlw ae
opa! tamo aew ... flw :rolleyes:
exemplo:
for i:= 1 to 10 do begin write ('teste '); writeln (i); end;