Acho que é meio impossível, mas...
Eu tenho 100 TEdits num Form. Cada um possui um nome de sua ordem de criação, isto é, Edit1, Edit2, (...), Edit99, Edit100. Cada uma, no evento OnCreate deveria receber o valor de um registro cuja chave tem um valor de 1 até 100, exatamente como o nome dos TEdits. O que eu quero saber é se exite algum modo rápido de se fazer com os TEdits recebam em seu texto, o valor do campo Descricao(que não é a chave).
Veja o procediemento de criação da tabela:
O que não quero é ter fazer ago do tipo:
É isso que não quero ter que fazer. Mesmo não exista um meio de fazê-lo, pelo menos digam que NÃO DÁ PRA FAZER!
Caso seja importante, uso Delphi 7, dbExpress, Interbase 6.5, Windows NT 4.0 SP 1, etc. Uso os componentes para conecção TSQLConnection, TSQLDataSet, TDataSetProvider e TClientDataSet.
Veja o procediemento de criação da tabela:
create table Descricoes (
z integer not null,
descricao varchar(100),
primary key (z)
);
O que não quero é ter fazer ago do tipo:
Descricoes.First;
Edit1.Text := DescricoesZ.AsString;
Descricoes.Next;
Edit2.Text := DescricoesZ.AsString;
Descricoes.Next;
...
e assim por diante até 100.
É isso que não quero ter que fazer. Mesmo não exista um meio de fazê-lo, pelo menos digam que NÃO DÁ PRA FAZER!
Caso seja importante, uso Delphi 7, dbExpress, Interbase 6.5, Windows NT 4.0 SP 1, etc. Uso os componentes para conecção TSQLConnection, TSQLDataSet, TDataSetProvider e TClientDataSet.
Deafth
Curtidas 0
Respostas
Ma_cunhado
26/05/2003
Olha só um exemplo que testei agora
coloque dez (ou mais) Edits em um form e um botao
no onClick do botao
var
i,n:Integer;
begin
for i:=0 to componentcount -1 do
begin
n:=i;
if ((components[i] is Tedit)) and ((components[i].Name=´Edit´+inttostr(n))) then
(components[i]as Tedit).text:=Inttostr(i);
end;
end;
eu acho q para o seu caso no lugar do inttostr(i) vc faz uma pesquisa com o valor de I pega o valor do campo e coloca
Por exemplo se eu tivesse usando uma TTable
ficaria assim
if ((components[i] is Tedit)) and ((components[i].Name=´Edit´+inttostr(n))) then
begin
table1.locate(´indice´,i,[locaseInsensitive]);
(components[i]as Tedit).text:=table1.fieldbyname(´campo´).asString;
end;
essa parte eu nao testei mas espero que funcione.
Boa sorte...
Gean Carlos.
end;
coloque dez (ou mais) Edits em um form e um botao
no onClick do botao
var
i,n:Integer;
begin
for i:=0 to componentcount -1 do
begin
n:=i;
if ((components[i] is Tedit)) and ((components[i].Name=´Edit´+inttostr(n))) then
(components[i]as Tedit).text:=Inttostr(i);
end;
end;
eu acho q para o seu caso no lugar do inttostr(i) vc faz uma pesquisa com o valor de I pega o valor do campo e coloca
Por exemplo se eu tivesse usando uma TTable
ficaria assim
if ((components[i] is Tedit)) and ((components[i].Name=´Edit´+inttostr(n))) then
begin
table1.locate(´indice´,i,[locaseInsensitive]);
(components[i]as Tedit).text:=table1.fieldbyname(´campo´).asString;
end;
essa parte eu nao testei mas espero que funcione.
Boa sorte...
Gean Carlos.
end;
GOSTEI 0
4_olho
26/05/2003
Você pode tentar algo como
Na parte privada do Form, definir
ArrayEdit : Array[0..99] of TEdit;
var
i : Integer;
begin
For i := 1 to 100 do
begin
ArrayEdit[i-1].Text := DescricoesZ.AsString;
Descricoes.Next;
end;
end;
Talvez até colocar os valores das Descricoes numa array tambem e associar diretamante, ao inves de usar o Next - que pode dar pau no finalzinho...
Na parte privada do Form, definir
ArrayEdit : Array[0..99] of TEdit;
var
i : Integer;
begin
For i := 1 to 100 do
begin
ArrayEdit[i-1].Text := DescricoesZ.AsString;
Descricoes.Next;
end;
end;
Talvez até colocar os valores das Descricoes numa array tambem e associar diretamante, ao inves de usar o Next - que pode dar pau no finalzinho...
GOSTEI 0
Ma_cunhado
26/05/2003
if ((components[i] is Tedit)) and ((components[i].Name=´Edit´+inttostr(n))) then
begin
if table1.locate(´indice´,i,[locaseInsensitive]) then
(components[i]as Tedit).text:=table1.fieldbyname(´campo´).asString;
end;
coloquei uma condica if table1.locate assim o edit so recebera o valor se for encotrado no indice evitando que se repita do edit anterior.
Tchau...
GOSTEI 0
Jairroberto
26/05/2003
Olá, amigo!
Aqui vai um exemplo:
Um abraço,
Jair
Aqui vai um exemplo:
var c: TComponent; begin tblDescricoes.Open; while not tblDescricoes.Eof do begin c := FindComponent(Format(´Edit¬d´, [tblDescricoesZ.AsInteger])); if (c <> nil) and (c is TEdit) then TEdit(c).Text := tblDescricoesDescricao.AsString; tblDescricoes.Next; end; tblDescricoes.Close; end;
Um abraço,
Jair
GOSTEI 0