Bonjour
En développement, un projet de gestion de la biblio de mon fils.
J’ai un fichier (txt) dans une combo (CbTitLiv) qui permet la saisie et qui contient les titres des livres, leur type (ex Bd, Roman , Encyclopédie,..), leur auteur,…
Je voudrais proposer une aide, après la saisie du titre, d’une aide à la saisie du Type de livre, de l’auteur afin d’éviter d’encoder plusieurs fois les mêmes types, les mêmes auteurs.
A cette fin,
- j’ai alimenté (exemple pour le type) une combo (CbTypLiv) contenant Bd, Roman, Encyclopédie, …et ceci est OK
- j’ai créé une fonction (et une procédure d’appel) afin de procéder à la sélection et au renvoi d’un élément de la Combo CbTypLiv, procédure que j’ai appelé RnvTypLiv pour « renvoie le type de livre séllectionné » (ok fonctionne)
- cette procédure,je l’ai associée à l’événement ONSelect de la Combo CbTypLiv (OK)
- Dans ma procédure de saisie, après la saisie du titre, j’ouvre la Combo CbTypLiv, lui donne le focus, mais …… mais l’attente de l’événement de sélection ne se produit pas,… le programme tel que je l’ai écrit ne s’arrete pas, passe outre ….. et continue son processus, la combo restant quant à elle bien ouverte… et le retour du type ne se fait pas….au moment voulu….
En fait je n’arrive pas à programmer le « attendre » on select de l’élément combo et récupérer l’item….
Comment faire
While no
Repeat unitl TypLiv.Text <>’’;
Y a t’il un prob de focus ?
Merci pour votre aide
-
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 procedure TFrmLiv.BtnEntTitLivClick(Sender: TObject); //var Test:string; var TmpLiv,TmpInpBox:string; begin {1} //SAISIE TITRE Tmpliv:='';TmpInpBox:=''; PnlTitLivLigEta.Caption:='Saisie Type de Livre en cours'; If CbTitliv.Text<>''then begin {2} CbTitLiv.SetFocus; PnlTitLivLigEta.Caption:='Saisie Titre validée!'; TmpLiv:=PLMAJ(Minuscule(CbTitLiv.Text)); CbTitLiv.Text:=''; end;{2} //SAISIE TYPE Selection :=false; TypLiv:=''; If CbSelTypLiv.Text<>'' then begin {3} LblInvSaiLiv.Caption:='Type ? ->'; CbShwTypLiv(Self);CbSelTypLiv.setfocus; ---> ICI IL NE S ARRETE PAS end;{3} //AJOUT cbtitliv.Items.Add(TmpLiv);TmpLiv:='';CbTitLiv.Text:='';CbTitLiv.SetFocus; PnlTitLivLigEta.Caption:='Un Livre été enregistré dans la bibliotheque'; end;{1}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //--------------------------------------------------------------------------------------------------- procedure TFrmLiv.CbShwTypLiv(Sender: TObject); Begin CbSelTypLiv.Visible:=true;{BtnSelTypLiv.Visible:=true;}ALiCbSelTypLiv(Self);end; //--------------------------------------------------------------------------------------------------- procedure TFrmLiv.RnvTypLiv(Sender: TObject); var str,pos:string; begin str:=FctRnvStrCbo(CBSelTypLiv);showmessage('Après retourdans RnvTypLiv: '+ str); pos:=IntToStr(FctRnvNumStrCbo(CBSelTypLiv));showmessage('Après retourdans RnvTypLiv: '+ pos); PnlTitLivLigEta.Caption := '"'+str+' a été sélectionné, à la position numero : '+pos; PnlTitLivLigEta.Caption :=FctRnvStrEtNumCbo(CbSelTypLiv); TypLiv:=str; selection:=true; end; //---
Partager