Ce source permet à partir de deux TEdit de récupérer le nom d'un comune.
Dans le premier TEdit vous rentrez un code postal, et en cliquant sur le deuxième TEdit, le nom de la comune est remplie automatiquement dans ce dernier.
Dans le fichier .zip j'ai mis le fichier .txt contenant tous les codes postaux de France.
PS: dans mon source le TEdit du code postal est "Edit4" celui du nom de comune est "ComboBox3" et le code est à mettre dans le "OnExit" du "TEdit4".
PS(bis): je débute un peu en delphi, donc veuillez excuser mes erreurs, j'ai essayé de commenter au maximum mon source.
Source / Exemple :
var
ListCP :TStringList;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListCP := TstringList.Create;
if fileexists('CpList.txt') then ListCP.LoadFromFile('CpList.txt') else
begin
MessageDlg('Fichier "CpList.txt" non trouvé.',mtError,[mbOk],0);
application.Terminate;
end;
end;
procedure TForm1.Edit4Exit(Sender: TObject);
var
i :Integer;
CodePostal :String;
Commune :String;
begin
if length(Edit4.Text)<>5 then exit;
ComboBox3.Clear;
// permet suivant le code postal, d'aller directement plus loin dans la liste,
// ce qui divise le temps de parcours de la liste
if(Edit4.Text > '21121')then i:=7876
else if(Edit4.Text > '38350')then i:=15758
else if(Edit4.Text > '57370')then i:=23638
else if(Edit4.Text > '71960')then i:=31513
else if(Edit4.Text > '99100')then i:=39185
else i:=0;
while not ((i=ListCP.Count) or (CodePostal=Edit4.Text))do
begin
i:=i+1;
Codepostal := Copy(ListCP.Strings[i], 1, 5); // récupération du code postal
end;
while not ((i=ListCP.Count) or (Codepostal<>Edit4.Text))do
begin
Codepostal := Copy(ListCP.Strings[i], 1, 5); // récupération du code postal
Commune := Copy(ListCP.Strings[i], 7, Length(ListCP.Strings[i])); // récupération du nom de la comune
if((Codepostal=Edit4.Text) and (Edit4.Text < '98891'))then
begin
ComboBox3.Items.Add(Commune); // ajout de la commune dans la combobox
Edit6.Text := 'France';
end
else if((Codepostal=Edit4.Text) and (Edit4.Text > '98891'))then Edit6.Text := Commune;
i:=i+1;
end;
ComboBox3.Text := ComboBox3.Items[0];
end;
Conclusion :
- Comme vous le verrez dans les commentaires plus bas il y a le problème de bureau de distribution qui s'annonce très embétant à traiter, mais qui ne m'interresse pas dans mon cas puisque mon code s'intégre dans un masque de saisie où l'utilisateur choisira la commune dans laquelle il habite.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.