DÉPLACER LE FOCUS D'UN TEDIT À L'AUTRE EN IGNORANT LES AUTRES COMPOSANTS

Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
- - Dernière réponse : cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
- 21 nov. 2004 à 11:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27383-deplacer-le-focus-d-un-tedit-a-l-autre-en-ignorant-les-autres-composants

cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
Nan mais vraiment !!! Bien sûr que si qu'on peut changer le Key sur l'évènement OnKeyDown. C'est pas «impossible», sauf si on ne voit pas la différence entre un key en mode CHAR (onKeyPress) et un key en mode ORDINAL (onKeyUp/Down). C'est sûr qu'on ne peut pas écrire Key:='x'; sur OnKeyDown. On peut par contre mettre Key:=Ord('x'); Inversement avec OnKeyPress. C'est une histoire de conversion, pas de faisabilité. Restons en là avec "is TCustomEdit" de DelphiProg :)
cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
En tout cas, dans OnKeyPressed, ça marche !... euh... Ah ouais, je viens de voir le truc... En fait, tellement l'évènement OnKeyPressed me paraissait évident que j'ai mis OnKeyDown. C'est logique ! ?? Mais qui sait, je me trompe encore.
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
Je cite:
<<[MAURICIO] Pour convertir les Enter en Tabs, il suffit juste dans l'évènement onKeyDown de mettre:
if key=#13 then key:=#9;
Le composant se charge du reste après.>>

Dans le OnKeyDown tu peux pas mettre ça!!! Impossible!!!
Donc ton dernier commentaire, ne tiens pas debout...

Je cite:
<<Sinon, je ne voit pas le rapport avec les TDBMachin. On vit dans les TEdit ici (pas exclusivement non plus).>>
Si t' as pas compris, je t' explique:
Aller, je me cite:
<<Voici un probleme archi connu pour delphi:
remplacer la touche Tab par la touhe Enter dans les forms:>>
Donc, c' est une fonction utilisable de maniere GENERALE pour n' importe quelle form.
Tu as compris maintenant pourquoi je parle de DB truc machin???????????????????????????
cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
Je cite: «Bem ouai, si tu veux aller à la ligne dans un Memo, bem tu peux pas». Sauf si tu paramètres WantsTabs et WantsReturn correctement.
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
Voici la nouvelle fonction ameliorée grâce à DelphiPRO:
(il faut l' appeler dans le onkeypress de vos forms qui, celles-ci doivent avoir keypreview à True)

je garde cette ligne DelphiProg : Cont := TWC <> Nil;
Tu vois pourquoi ...

procedure NavegarComEnter(Na_Form: TForm; var Tecla: Char);
var TWC : TWinControl;
Cont : Boolean;
begin
if Tecla = #13
then begin
TWC := Na_Form.ActiveControl;
Cont := TWC <> Nil;

if Cont
then begin
if TWC is TDBLookupComboBox
then Cont := not ((TWC as TDBLookupCombobox).ListVisible);

if Cont and not ((TWC is TDBMemo)
or (TWC is TMemo)
or(TWC is TDBRichEdit)
or (TWC is TDBGrid)) then
begin
Na_Form.Perform(WM_NEXTDLGCTL, 0, 0);
Tecla := #0;
end;
end;
end;
end;