Identifier le déclencheur d'une fonction :) [Delphi] - Programmation
Marsh Posté le 08-01-2002 à 09:36:16
dans tous les événements tu as un paramètre Sender qui te permet de trouver quel composant a déclanché l'event.
if sender is TButton then
...
else
if sender is TListBox then
...;
Marsh Posté le 08-01-2002 à 10:46:24
Oky marchi
Vé appliquer ca...
Sinon on a encore un probleme avec une DBgrid.
Quand on met la propriété "Dragmode" sur "dmAutomatic" , pour sélectionner une ligne précise (autre que la première) l'utilisateur doit faire un click droit...
En gros, pour faire un drag and drop de la ligne n°3, il doit faire un click droit pour mettre le focus sur la troisième ligne (le gauche ne met pas le focus ) , puis seulement faire son drag & drop ...
T'as une idée du probleme ?
Marsh Posté le 08-01-2002 à 12:16:21
c'est le DBGrid qui ne prend pas le focus ou la ligne ?
tu peux tj essayer de tricher en donnant le focus à la ligne lors du mousedown
Marsh Posté le 08-01-2002 à 15:56:32
C la ligne qui le prends pas...
Et lors du mousedown, comment tu veux faire pour mettre le focus, en fait surtout idenntifier l'élément sur lequel on doit le mettre (en fait la ligne plus exactement)
Marsh Posté le 08-01-2002 à 17:02:31
Alors encore des chtits pb ?
Pour ton histoire de focus peut pas vraiment t'aider (G pas de projet qui utilise une BD) sauf si tu m'envois un chtit projet de démo pour voire ce que je peux faire...
(T sur que le click gauche donne pas le focus ? ça m'étonne...)
Marsh Posté le 08-01-2002 à 17:03:56
avec les paramètres X et Y du mousedown...
sinon je sais pas vraiment t'aider plus, je sais pas comment réagissent les cellules de ce dbgrid
edit: ha mais voilà du renfort
[edtdd]--Message édité par antp--[/edtdd]
Marsh Posté le 08-01-2002 à 17:30:56
En fait, C tout con a décrire.
Créé une DBgrid, relie la a une table lambda avec une paire d'enregistrement pour qu'elle affiche quelque chose.
Mets l'option "DragMode" sur "dmAutomatic"
Maintenant, lance l'appli.
Tu vois els enregistrement pépère, et a coté du premier, y a une fleche noire, montrant la ligne sélectionnée.
Fais un click gauche sur n'importe quelle autre ligne : la fleche ne bouge pas => Pour le programme, c'est toujours la première ligne qui est sélectionnée.
Fais un click droit => La fleche bouge. La pour le programme C la ligne sur la quelle tu as clické droit qui est sélectionnée.
Or, nous, pour le drag and drop, on a besoin que l'élément sur lequel le gars fait son click gauche pour le drag soit l'élément pointé par la fleche : comme le click gauche la bouge pas ben... les boules kwoa
Et quand tu mets la propriété 'dragmode" sur "dmManual", le click gauche bouge la fleche noire...
[edtdd]--Message édité par Tetedeiench--[/edtdd]
Marsh Posté le 08-01-2002 à 17:34:44
Franchement Iench ... tu me decois
Marsh Posté le 08-01-2002 à 17:37:32
VisualC++ a écrit a écrit : Franchement Iench ... tu me decois |
va mourire chacal
Marsh Posté le 08-01-2002 à 17:38:00
Marsh Posté le 08-01-2002 à 17:39:28
Tetedeiench a écrit a écrit : En fait, C tout con a décrire. Créé une DBgrid, relie la a une table lambda avec une paire d'enregistrement pour qu'elle affiche quelque chose. Mets l'option "DragMode" sur "dmAutomatic" Maintenant, lance l'appli. Tu vois els enregistrement pépère, et a coté du premier, y a une fleche noire, montrant la ligne sélectionnée. Fais un click gauche sur n'importe quelle autre ligne : la fleche ne bouge pas => Pour le programme, c'est toujours la première ligne qui est sélectionnée. Fais un click droit => La fleche bouge. La pour le programme C la ligne sur la quelle tu as clické droit qui est sélectionnée. Or, nous, pour le drag and drop, on a besoin que l'élément sur lequel le gars fait son click gauche pour le drag soit l'élément pointé par la fleche : comme le click gauche la bouge pas ben... les boules kwoa Et quand tu mets la propriété 'dragmode" sur "dmManual", le click gauche bouge la fleche noire... |
Tu connais la feignatise ???
C pas que G pas compris ou que je sais pas utiliser un DBGrid C juste que ça me fait chier de faire un mini projet test et une BD pour faire des test
Mais bon vais voir....
(sinon mon mail C : gti-poire@wanadoo.fr)
Marsh Posté le 08-01-2002 à 17:47:50
Et ça risque d'être long.... beh oui G pas que ça à faire non +
Marsh Posté le 08-01-2002 à 17:55:32
SDF[poire] > J'ai fait un exemple : http://perso.wanadoo.fr/tetedeiench/Exemple.zip
Tu pompes le fichier, et tu décompresse dans C:\Program Files\Borland\Delphi6\Projects\Demo
Enfin il faut que les bases soient la bas... A moins que tu ne change leur propriété "database name".
Essaie de faire un drag & drop de la DBgrid de droite vers celle de gauche, tu verra.
Puis fais la meme chopse, avec un click droit avant sur le champ que tu drag & droppe...
Marsh Posté le 08-01-2002 à 18:31:54
Bon ok en effet ça merde.....
Laisse DragMode à dmManual et quand tu veux faire un drag tu appels BeginDrag du composant source
Tu le place par exemple dans le OnMouseMove.... (je te prépare 1 chtit exemple)
Marsh Posté le 08-01-2002 à 18:51:31
Merci pour l'exemple, car on a pas reussi a le faire nous
Marsh Posté le 08-01-2002 à 18:51:54
et prends ton temps : on s'y remets pas avant demain midi !
Marsh Posté le 08-01-2002 à 19:01:56
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBTables;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Edit1: TEdit;
DataSource1: TDataSource;
Table1: TTable;
procedure DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
DBGrid1.BeginDrag(True, -1);
end;
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True; // pas necessaire ici c'etais pour le test d'avant
end;
procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Edit1.Text := TDBGrid(Source).Fields[TDBGrid(Source).SelectedIndex].AsString;
end;
end.
Si tu veux tout le projet file ton Mail
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
Marsh Posté le 08-01-2002 à 19:02:48
Au fait C quoi le projet ?
Marsh Posté le 08-01-2002 à 19:07:15
Un truc infame : Faire une appli qui gère entièrement un club de plongée, a savoir :
Clients , Lieux de plongée, bateau, Matos loué, Inscriptions, Facturation, réglements...
Avec une table des clients comprenant 35 enregistrements (bien lourd ! )
Et la facturation via OLE, du drag & drop a gogo, la gestion des bateaux libres ou non, des groupes de plongée, des niveaux des plongeurs, initiateur ou non, la location de matos, tout ce qui est possible d'imaginer d'ailleurs ...
Tu vois le bordel ?
Pasla peine pour le mail, ca me suffit AMPLEMENT, merci bcp !
[edtdd]--Message édité par Tetedeiench--[/edtdd]
Marsh Posté le 08-01-2002 à 19:24:57
Tu fais quoi comme études ?
(ça ressemble à une application de ce que je fais en GL SGBD, MLD, et autre.....)
Marsh Posté le 08-01-2002 à 19:32:38
Je suis en IUP Miage, 2ème année (en gros Licence miage).
le prof nous balance ca a faire apres 2 mois de cours uniquement théoriques sur Delphi...
je te raconte pas la galère
Enfin, on arrive au quart la... apres 20 heures de boulot.
le prof l'a fini en 50 heures : tu vois la somme de boulot
Enfin merci de ton aide !
La base C obligé de passer par ODBC...
Marsh Posté le 08-01-2002 à 19:46:43
Marsh Posté le 08-01-2002 à 21:47:30
Tu me tiendra au courant de ta note
Marsh Posté le 08-01-2002 à 09:21:10
Hello !
J'ai besoin d'identifier l'évenement déclencheur d'une fonction... je m'explique.
j'ai une table des clients.
Pour ajouter un client, j'appelle la procedure ajouterclient a partir d'un bouton.
pour modifier un client quand l'utilisateur 2xclic dessus, je mets tous les champs a la bonne valeur dans la fenetre d'ajout de client, et j'apelle la procedure ajouterclient ...
Enfin j'aimerai bien.
pour ca, j'aurai besoin d'identifier si le déclencheur est mon bouton ou le 2xclic, afin de faire les petites différences entre les 2 ( Table.modify au lieu de Table.append, le titre de la fenetre, etc).
Pouvez me dire comment ca se fait ? (jamais réussi jamais compris non plus)
PS : je sais je demande beaucoup, mais bon big projet a rendre pour Lundi (on viens de l'apprendre today ca la date butoir ), et le prof a dit avoir passé 50h a faire la correction (pas mal... imaginez nous, on en est a 24 heures dessus, spaassez ! )
---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !