Db grid

loveyara Messages postés 18 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 17 novembre 2009 - 31 août 2009 à 15:30
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 2 sept. 2009 à 15:10
rebonjour,
je veux savoir comment je peux donner le focus a un champs dans une dbgrid,plz c'est urgent
et merci d'avance

10 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
31 août 2009 à 15:50
la première formulation de ta question était
la bonne...
celle-là...

cantador
0
amsmounir_ams Messages postés 4 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 1 septembre 2009
31 août 2009 à 17:33
Bonjour, c la première fois que j'utilise une réponse dans ce site, (aller tout doucement).

pour focaliser un champ dans une dbgrid c simple :
.
.

dbgrid1.SetFocus;
dbgrid1.SelectedIndex:=x;
.
.


où (x) est le N° de la colonne; (déplacement horizontal)

pour déplacer verticalement utiliser FILTER ou FINDKEY....

Salutations.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
31 août 2009 à 19:20
NON !


SelectedIndex sélectionne la cellule mais ne met pas le curseur dedans :

procedure TForm1.Button18Click(Sender: TObject);
begin
  dbGrid1.Setfocus;
  dbGrid1.field[id].FocusControl;
end;


cela positionne le curseur dans le premier enregistrement trouvé du champ concerné.

et à condition de mettre le mode edition dans les options


cantador
0
loveyara Messages postés 18 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 17 novembre 2009
1 sept. 2009 à 11:35
bonjour a tous,
wé cantador j'ai fais ce code dbGrid1.Setfocus;
dbGrid1.field[id].FocusControl;
,mais tjr le meme probléme violation d'accée meme si la grid est en mode d'edition(option[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goDrawFocusSelected,goColSizing,goEditing] tous est true)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amsmounir_ams Messages postés 4 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 16:44
Bonjour,

moi j'ai testé le cas sa marche (Delphi 5 et Tdbgrid)

initialiser l'option dgAlwaysShowEditor à true

puis les deux lignes :

dbgrid1.SetFocus;
dbgrid1.SelectedIndex:=id;
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 sept. 2009 à 17:16
@loveyara:
si tu ne mets rien dans id, c'est sûr ça va planter...
j'avais écrit une petite procédure paramétrée mais il y a eu 2 posts sur le même sujet...

private
procedure SetTheFocus (index : integer);
----

procedure TForm1.SetTheFocus (index : integer);
begin
dbgrid1.field[index].FocusControl
end;


procedure TForm1.Button18Click(Sender: TObject);
begin
  dbGrid1.Setfocus;
  SetTheFocus(2);
end;







/code

cantador
0
loveyara Messages postés 18 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 17 novembre 2009
2 sept. 2009 à 11:36
bjr a tous,wé mounir et cantador,pour mounir j'ai essayer ton code dbgrid1.SetFocus;
dbgrid1.SelectedIndex:=id; mais le probléme lorsque j'ai met l'option dgAlwaysShowEditor à true il me donne tjr le meme probleme violation d'accée et aussi pour toi cantador le meme probleme violation d'acceé dans ce code dbgrid1.field[index].FocusControl meme si j'ai met id
0
Utilisateur anonyme
2 sept. 2009 à 12:57
Regarde au niveau du debeugguer, au niveau de quelle ligne ca beugue : ca permettra d'identifier le probleme, car là on sait pas
0
loveyara Messages postés 18 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 17 novembre 2009
2 sept. 2009 à 13:15
Le problème ce que j'ai une dbgrid dans quelle je saisie des mouvements la grid est lie a un query,lorsque je saisie un code de compte qui existe déjà il faut afficher sa libellé dans l'autre champs si nn il faut afficher un msg de confirmation la création d'un nouveau compte si oui il faut afficher la fenêtre de création d'un nouveau compte si je click sur non il doit mettre le focus sur le champs du code de compte,voila le code qui existe dans l'événement GrilleCellChanging
ligne:=grille.Row;
if (OldCol=3) or(OldCol=4) then
begin


if (grille.DataSource.DataSet.FieldValues['CMP_V_NCOMPTE']<>'') or (varisnull(grille.DataSource.DataSet.FieldValues['CMP_V_NCOMPTE'])=true) then
begin //1




with DataModule_compta.q_essay do
begin//2
Close;
SQL.Clear;

SQL.Add('select CMP_V_INTITULE from COMPTES where CMP_V_NCOMPTE='''+grille.Columns.Items[3].Rows[ligne]+''' ');

Open;
end;//2

if DataModule_compta.q_essay.RecordCount<>0 then
begin//3


with DataModule_compta.q_tablemouvement do
begin//4


grille.DataSource.DataSet.Edit;
grille.DataSource.DataSet.FieldValues['MVT_V_LIBELEMVT']:=DataModule_compta.q_essay.FieldValues['CMP_V_INTITULE'];

end;//4
end//3
else
begin//5

if MessageDlg('Ce compte n''existe pas dans le plan comptable, voulez_vous le créer ? ',mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin//6

frmmenu.test_nvcompte_as:='nouveau_compte';

frmmenu.nvcompte_as:= Grille.Columns.Items[3].Rows[ligne];

Application.CreateForm(Tfrmcompte,frmcompte);
frmcompte.Show;

end//6

else
begin

[color=red]//ici le code de mettre le focus dans le champ 3 ??????????????????????????????


end ;

end; //5
end;//1

/color
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
2 sept. 2009 à 15:10
@loveyara :

Tout d'abord une remarque :

il faut que tu fasses un sérieux effort d'explication et de présentation de ton code :
Tes explications sont confuses et
la balise n'a pas été correctement utilisée...

Nous avons désormais à notre disposition une PREVISUALISATION te permettant de voir à l'avance ce que tu vas transmettre.

Voilà pour les deux premier points et j'en ajouterai un troisième :

mets le code COMPLET, car tu évoques des soucis relatifs à un TDBGrid et on peut voir des lignes concernées par un TStringGrid (pm : ligne:=grille.Row;)

On ne pourra pas t'aider si tu ne fais pas un minimum d'efforts...

sauf bien entendu à y passer 3 jours...

cantador
0
Rejoignez-nous