Flash11
Messages postés54Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention14 août 2011
-
9 août 2008 à 17:14
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
15 févr. 2009 à 21:44
Bonjour à tous et merci d'accorder de l'importance à ma demande ,
Je suis debutant dans delphi 2006 et j'essai de faire un programme pour ma propre utilisation mais je bloque sur un problème j'ai déja suivi pas mal de tutos pour developper ma formation mais aucune ne parle de celle ci .
Je souhaiterais qu'à partir d'une liste -> je choisis 2 séléctions différentes et que ces 2 selections soient imprimables d'une manière très précises . Je m'explique :
Vous prenez 1 tables dans laquelles on tire 2 noms du type : Paul et Luc . Ces 2 informations finalement prises j'aimerais qu'elles soient imprimables sur une feuille au centre écrit en gros ' Paul / Luc ' .
J'espère avoir été explicite dans mon explication . Si quelqu'un peux m'aider à résoudre mon problème , je le remercie d'avance .
var
Form1: TForm1;
DragRecords: array of variant;
ASource, DestSource: TDataSource;
implementation
{$R *.dfm}
procedure TForm1.DBGrid2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TDBGrid) and (TDBgrid(sender).DataSource <> nil);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.Open;
Query2.Open;
end;
procedure TForm1.DBGrid2StartDrag(Sender: TObject;
var DragObject: TDragObject);
var
I: Integer;
begin
ASource := TDBGrid(sender).DataSource;
SetLength(DragRecords, TDBGrid(sender).FieldCount);
for I := 0 to TDBGrid(sender).FieldCount - 1 do
DragRecords[I] := TDBGrid(sender).Fields[i].Value;
end;
procedure TForm1.DBGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
I: integer;
begin
DestSource := TDBGrid(sender).DataSource;
if ASource = DestSource then exit;
try
TDBGrid(sender).ReadOnly := false;
TDBGrid(sender).DataSource.DataSet.Insert;
for I := 0 to TDBGrid(sender).FieldCount - 1 do
TDBGrid(sender).Fields[I].Value := DragRecords[I];
TDBGrid(sender).DataSource.DataSet.Post;
finally
TDBGrid(sender).ReadOnly := true;
TDBGrid(sender).DragMode := dmManual;
end;
end;
Flash11
Messages postés54Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention14 août 2011 8 févr. 2009 à 13:33
J'ai réutilisé ton code mais 2 problèmes s'offrent à moi :
je n'utilise pas de TQuery mais des TTable
J'ai tout de même essayer de remanier le code mais le drag ne se réalise toujours pas ?
Dans ton code tu n'aurais pas oublié le cellclick sur le 1st dbgrid ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 8 févr. 2009 à 13:45
Je te conseille d'utiliser les TQuery au lieu des TTable.
Le clic est inutile puisque le startdrag se déclenche mais il y a peut-être encore des choses à revoir..
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 8 févr. 2009 à 19:48
c'est très simple, il suffit de sélectionner
DatabaseName : DBDEMOS
pour le grid1, j'ai chois la table contry (select * from country)
et pour le grid2, j'ai dupliqué la même table (pour avoir les mêmes champs bien sûr..) et créer country2.
Flash11
Messages postés54Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention14 août 2011 8 févr. 2009 à 22:28
Quand j'ouvre mon TQuery pour recopier les champs de ma table il me trouve donc bien les 3 colonnes et me créé donc 3 TStringField . Je n'arrive pas à glisser ceux ci dans mon tableau TDBGrid merci cantador encore :)
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 9 févr. 2009 à 16:11
ah oui, il y a un souci avec le drag and drop, ça marche mais uniquement avec le premier enregistrement..
J'ai pas trouvé le moyen de pouvoir le choisir..
Il existe une méthode ancienne mais elle ne fonctionne pas bien non plus :
Flash11
Messages postés54Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention14 août 2011 9 févr. 2009 à 19:13
Salut et toujours et encore merci j'utilise la version Borland Developper Studio 2006 de Delphi :)
Oui mais je fais pointer quoi à mon dataset ? il ne me propose que mon Query2 qui n'a en l'occurance rien à voir avec le Query1 sachant que pour le moment je voudrais déja faire marcher mon TDBGrid 1. Si je fais pointer dataset sur Query1 il me dis que je créé une boucle :s
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 9 févr. 2009 à 19:25
de rien..
en tout cas sur l'image transmise il manque un dataset
lequel ?
sinon, c'est clair ça ne peut pas fonctionner..
il en faut un absolument !
teste les deux
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 10 févr. 2009 à 21:20
on avance on avance..
l'un plein l'autre vide .
pas normal, l'autre soit le sql n'est pas bon, soit la table n'est pas ouverte.
pas besoin du TUpdateSQL pour l'instant..
RequestLive à true sur le Query2, et
dbRowSelect à true pour le Grid1.