código só funciona se colocar um showmessage
Prezados,
estou com a seguinte situação. Fiz um cod para que quando eu coloque um 's' no edit1 o edit15 se alto preencha com 'F'. A questão é a seguinte. o Cod só funciona se eu fizer um showmessage da variavel entes do comendo. como resolver sem precisar de por o showmessage?
estou com a seguinte situação. Fiz um cod para que quando eu coloque um 's' no edit1 o edit15 se alto preencha com 'F'. A questão é a seguinte. o Cod só funciona se eu fizer um showmessage da variavel entes do comendo. como resolver sem precisar de por o showmessage?
procedure TfCadEscala.Edit1Change(Sender: TObject);
var i,y,k, j:integer;
const vartag: array[1..28] of integer = (15,16,17,18,19,20,21,22,23,24,25,26,27,28,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
begin
if checkFolgador.IsChecked then
begin
for I := ComponentCount -1 downto 0 do
if (Components[i] is TEdit) then
begin
for j := 1 to 14 do
if (Components[i] as TEdit).tag=j then
begin
if (Components[i] as TEdit).Text='S' then
begin
k:=(Components[i] as TEdit).Tag;
for y := ComponentCount -1 downto 0 do
if (Components[y] is TEdit) then
if (Components[y] as TEdit).tag=vartag[k] then
begin
ShowMessage(inttostr(k));
(Components[y] as TEdit).text:='F';
end;
end;
end;
end;
end;
end;David
Curtidas 0
Melhor post
Jones Granatyr
17/05/2017
Opa! Isso já aconteceu comigo há uns anos atrás, e na época eu tinha colocado um break point e "misteriosamente" o código voltou a funcionar. Parecia que era um bug de atualização (era o Delphi 2010)
GOSTEI 1
Mais Respostas
David
17/05/2017
Infelismente não deu... uso o delphi seatlle! Obrigado
GOSTEI 0
Mateus Ribeiro
17/05/2017
Boa tarde!
Não consegui simular seu código, a geração do processo é bloqueado quando tento executar, acho que o windows pensa q to fazendo virus rs.
Se entendi seu objetivo, segue uma alternativa!
Caso nao seja isso, a gente pensa em algo. Boa sorte!
Obs: Delphi 7
Não consegui simular seu código, a geração do processo é bloqueado quando tento executar, acho que o windows pensa q to fazendo virus rs.
Se entendi seu objetivo, segue uma alternativa!
Caso nao seja isso, a gente pensa em algo. Boa sorte!
function IsNumberInArray(const ANumber: integer; const AArray: Array Of Integer): Boolean;
var i: integer;
begin
result := false;
for i := Low(AArray) to High(AArray) do
if ANumber = AArray[i] then
begin
Result:= true;
Exit;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
const vartag: array[1..28] of integer = (15,16,17,18,19,20,21,22,23,24,25,26,27,28,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
var i, c: Integer;
begin
if UpperCase(TEdit(Sender).Text)<> 'S' then
Exit;
for i:= 0 to Form1.ComponentCount - 1 do
begin
for c:= 0 to Form1.ComponentCount - 1 do
if IsNumberInArray(TWinControl(Components[c]).Tag, VarTag) then
begin
TEdit(Components[c]).Text:= 'F';
end;
end;
end;
Obs: Delphi 7
GOSTEI 0
David
17/05/2017
Pessoal, fiz um teste aqui agora e parece que deu certo!
mudei o campo "Direction" do "linkControlToFieldXX" de "linkBiDirectional" para "linkControlToData" e parou de dar o problema!
Parece que quando o campo está vinculado nas duas direções o mesmo não funciona direito no onchange!
Não sei se é o correto, contudo, parece que deu certo!
mudei o campo "Direction" do "linkControlToFieldXX" de "linkBiDirectional" para "linkControlToData" e parou de dar o problema!
Parece que quando o campo está vinculado nas duas direções o mesmo não funciona direito no onchange!
Não sei se é o correto, contudo, parece que deu certo!
GOSTEI 0