Evenement OnExit [Résolu]

mulho 12 Messages postés dimanche 15 août 2004Date d'inscription 22 septembre 2006 Dernière intervention - 6 mars 2006 à 01:02 - Dernière réponse : mulho 12 Messages postés dimanche 15 août 2004Date d'inscription 22 septembre 2006 Dernière intervention
- 6 mars 2006 à 20:09
Bonjour, OnExit c'est super, mais... si j'ai un seul et unique TEdit dans une fenêtre, ce dernier est toujours ignoré!
Mon probleme est le suivant : j'ai un Stringrid et des que l'utilisateur se met en mode édit dans une cellule, je veux afficher une toute petite fenetre avec un TEdit pour qu'il saisisse dedans, puis, des qu'il fait Tabulation ou échap , entree... cette fenetre doit se fermer pour affiche rla valeur saisie dans la cellule.
Mais je n arrive pas à quitter ce champs, et le teste OnKeyDown de la fenetre est également ignoré. Comment forcer la sortie du champ ?
Merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 01:31
3
Merci
Bon attend je vais faire quelques petit teste et je reviens

@+
Cirec

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de Cirec
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 01:07
0
Merci
Salut,
as-tu mis le KeyPreview à True dans la fenêtre qui contient le TEdit ?

@+
Cirec
Commenter la réponse de Cirec
mulho 12 Messages postés dimanche 15 août 2004Date d'inscription 22 septembre 2006 Dernière intervention - 6 mars 2006 à 01:15
0
Merci
Non c'est vrai j'y avais pas pensé.. L ecran recoit désormais l evenement mais ignore toujours la tabulation qui reste bloquée sur le champ
Commenter la réponse de mulho
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 01:19
0
Merci
Sur le champ du TEdit
si oui comment t'y prends-tu ?
le plus simple c'est de donner le bout de code qui pose problème

@+
Cirec
Commenter la réponse de Cirec
mulho 12 Messages postés dimanche 15 août 2004Date d'inscription 22 septembre 2006 Dernière intervention - 6 mars 2006 à 01:29
0
Merci
Le code est quasi nul pour l'instant, je l'allimenterai dans le OnExit mais pour cela il faut qu'il y passe. La je n'ai fait qu'y mettre un point d'arret ainsi que le KeyDown de la fenetre, et il n y passe pas.
Finalemnet je fais ca car j'ai plusieurs traitement à effectuer sur la valeur saisie et je ne trouve pas le moyen de capter la perte de focus de la cellule courante dans une grille .. Ca serait encore mieux si c'etait possible
Commenter la réponse de mulho
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 02:17
0
Merci
Bon amors c'est pas aussi simple qu'il n'y parait mais continue les testes demain car la il se fait un peut tard...
Mais je te tiens au courant dans la journée
bonne nuit

@+
Cirec
Commenter la réponse de Cirec
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 13:55
0
Merci
Salut,

Bon alors voici ce que j'ai trouvé il éxiste peut être une autre méthode mais celle-ci fonctionne je l'ai testé:

type
TForm1 = class (TForm)
StringGrid2: TStringGrid;
procedure StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure StringGrid2Enter(Sender: TObject);
procedure StringGrid2Exit(Sender: TObject);
private
{ Déclarations privées }
Procedure VerifieCell(aCell : TPoint);
public
{ Déclarations publiques }
end;


var
Form1: TForm1;
MemoCell : TPoint = (X: -1; Y: -1); // pour Mémoriser la position de la Cellule et on l'initialise à -1 (Cellule inexistante)
implementation
{$R *.DFM}


procedure TForm1.VerifieCell(aCell: TPoint);
begin
// dans cette procédure tu mets les actions à éffectuer avec les valeurs des Cellules
// Ex. With StringGrid2.Cells[MemoCell.X, MemoCell.Y] do
//Begin

//End;

// ceci est juste là pour vérifier que l'on traite bien la cellule que l'on vient de quitter
ShowMessage(Format('ça Fonctionne ACol := %d , ARow := %d', [MemoCell.X, MemoCell.Y]));
end ;


procedure TForm1.StringGrid2SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
// à chaque changement de cellule on effectue le traitement avec VerifieCell
VerifieCell(MemoCell);
// et on récupère la nouvelle position
MemoCell.X : = ACol;
MemoCell.Y := ARow;
end ;


procedure TForm1.StringGrid2Enter(Sender: TObject);
begin
// à l'entrée dans StringGrid mais seulement la première fois If (MemoCell.X -1) <gras>and (MemoCell.Y</gras> -1) Then
Begin
MemoCell.X : = 1;
MemoCell.Y := 1;
End;
end;


procedure TForm1.StringGrid2Exit(Sender: TObject);
begin
// il faut aussi contrôler la sortie de StringGrid
If (MemoCell.X <> -1) and (MemoCell.Y <> -1) Then VerifieCell(MemoCell);
end;
end.

@+
Cirec
Commenter la réponse de Cirec
mulho 12 Messages postés dimanche 15 août 2004Date d'inscription 22 septembre 2006 Dernière intervention - 6 mars 2006 à 20:09
0
Merci
Merci, c vrai ca marche et ca me semble aussi la solution la plus judicieuse, il me restera essentiellement qu à ne traiter que le code de sortie de cellule qd elle a été modifiée ou en edit mode pour eviter qu'il le fasse à chaque click.
Merci bcp et bonne soirée !
Commenter la réponse de mulho

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.