Fórum Combobox Edit TXT = Problema #196614
22/11/2003
0
... João||Gerente José||Administração Juca||Puxa Saco ...
No combobox estariam todos os nomes, ou seja, tudo até ´||´, ao selecionar um item do combobox ele forneceria no edit a descrição da area de trabalho, tudo após o ´||´...
Para mim está um dilema fazer funcionar direito esta função, se puderem me ajudar...
Obrigado
Dan
Curtir tópico
+ 0Posts
23/11/2003
Yankleber
Veja, independente da linguagem (Delpi, VB, etc) eu resolveria isso da seguinte forma:
1) Após abrir o arquivo texto que contém as informações que você citou, eu criaria duas listas (arrays): uma para os nomes (o que está antes do ||) e outra para as descrições (o que está depois do ||).
2) Faria um loop for-next e carregaria o conteúdo da primeira lista no combobox;
3) Quando o usuário selecionasse um nome no combobox, eu pegaria o índice do combobox, e com esse número eu obteria o conteúdo da respectiva posição na segunda lista (array) que contém as descrições e jogaria no edit.
Não se esqueça, contudo, que o índice de um combobox começa a partir de 1 enquanto o índice de um array começa de 0 (zero). Assim, você deve subtrair 1 (um) do valor obtido a partir do índice do combobox para obter o correspondente correto no array.
Espero ter ajudado!
Gostei + 0
23/11/2003
Dan
Se não for demais me ajudaria postando o codigo que deveria utilizar, pesso desculpas, mas não sou profissional na linguagem delphi e portanto é complexo para mim.
Obrigado!?
Gostei + 0
24/11/2003
Rafael Heise
Lista: TStringList;
No OnCreate crie a lista, e no OnDestroy destrua, para não ficar alocado na memória.
TForm.FormCreate... begin Lista := TStringList.Create; end; TForm.FormDestroy... begin Lista.Free; end;
No OnShow, você carrega o arquivo txt pra sua lista
TForm.FormShow... begin Lista.LoadFromFile(´drive:\caminhos\arquivo.txt´); end;
agora que você carregou, você precisa carregar essa lista no seu combo box certo?
então faça o seguinte no onShow mesmo, onde você carregou o arquivo:
var cont: integer; begin ... ComboBox.Items.AddStrings(Lista); for cont := 0 to ComboBox.Items.Count -1 do ComboBox.Items[cont] := Copy(ComboBox.Items[cont],1,Pos(´||´,ComboBox.Items[cont]) - 1); end;
pronto, agora você tem o seu combo carregado. Agora falta atribuir o valor ao edit quando selecionar o combo. Então, no OnChange do combo faça o seguinte:
TForm.ComboBoxChange... being Edit1.Text := Copy(Lista[ComboBox.ItemIndex],Pos(´||´,Lista[ComboBox.ItemIndex]) + 2,Length(Lista[ComboBox.ItemIndex]) - Pos(´||´,Lista[ComboBox.ItemIndex]) - 2); end;
pronto, agora está completo.
abraços, e boa sorte!
Gostei + 0
24/11/2003
Yankleber
Desculpe a demora, acho que resolvi para você.
1) Crie um form e coloque nele dois componentes: um combobox e um editbox.
2) Em seguida copie e cole dentro do seu form o código abaixo:
unit popCombo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ComboDesc: array of string;
implementation
{$R *.dfm}
procedure FillCombo;
var
F: TextFile;
S: string;
z,zz:integer;
begin
AssignFile(F, ´teste.txt´);
Reset(F);
zz := 0;
while not eof (F) do
begin
readln(F,S);
for z := 0 to length(S) do
begin
if copy(S,z,2) = ´||´ then
begin
form1.combobox1.Items.Add(copy(S,0,z-1));
zz := zz+1;
SetLength (ComboDesc,zz);
ComboDesc[zz-1] := copy(S,z+2,length(S)-z);
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fillcombo;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
edit1.Text := ComboDesc[combobox1.itemindex];
end;
end.3) Finalmente, crie um arquivo texto com os nomes e cargos como você tinha definido, e salve-o com o nome teste.txt, ou se ele tiver outro nome, mude o nome no fonte acima.
Pronto, pode rodar que funciona!
Abraços, espero ter ajudado.
Gostei + 0
24/11/2003
Dan
Valeu!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)