Bonjour à tous.
J'aimerais une idée lumineuse dans la manière de gérer un copier coller d'un SHape que je créer dynamiquement
Code de la création dynamique :
Sachant qu'un Shape pointe équivaut à un enregistrement de ma base de données (Access 97 + ADO) quel serais la meilleurs méthode pour gérer un copier coller ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 Procedure TFormPrincipal.MiseEnPlaceDesTShapeDejaExistant; Var Shape: TRuShape; DateDebut, DateFin : TDateTime; begin // Ici petit calcul pour les 2 variables de Dates... With ModuleDeDonneeSecondaire.ADOQueryCalendrier do Begin // Lecture des enregistrements qui permettrons la création des Shape Sql.Clear; Sql.Add('Select * From Calendrier '); Sql.Add('Where DateDebut Between :xDebut AND :xFin ' ); Parameters.ParamByName('xDebut').Value := FormatDateTime('dd/mm/yyyy',DateDebut); Parameters.ParamByName('xFin').Value := FormatDateTime('dd/mm/yyyy',DateFin); Try Try Open; while not Eof do Begin Shape := TruShape.Create(StringGridSemaine); // Préféré à Self.StringDridSemaine pour des raisons technique With Shape do Begin ParentFont := False; Font.Size := 7; Font.Name := 'Tahoma'; Name := 'PANEL' + Fields.Fields[31].AsString; // Important c'est la numéro qui corresponds à la clé de l'enregistrement Caption := Fields.Fields[45].AsString; Top := Fields.Fields[28].AsInteger; left := Fields.Fields[25].AsInteger; Height := Fields.Fields[22].AsInteger; Width := Fields.Fields[30].AsInteger; Parent := StringGridSemaine; PopupMenu := Self.PopupMenu1; // Ici le cliqueDroit qui permet actuellement la suppression OnDblClick := Self.ShapeDblClick; OnMouseDown := Self.ShapeMouseDown; OnMouseMove := Self.ShapeMouseMove; OnMouseUp := Self.ShapeMouseUp; Hint := Fields.Fields[23].AsString; ShowHint := True; Pen.Color := Fields.Fields[20].AsInteger; StartColor := clCream; EndColor := Fields.Fields[20].AsInteger; Tag := Fields.Fields[3].AsInteger; end; StringGridSemaine.CheckInBounds; Next; end; Except on E : Exception do Begin ShowMessage(E.ClassName + ' erreur soulevée : '+#13+#10+ 'Message : ' + E.Message +#13+#10+ 'Unit : ' + Self.ClassName +#13+#10+ 'Procedure : '+ 'TFormPrincipal.MiseEnPlaceDesTShapeJourDejaExistant' +#13+#10+ 'Table : ' + '<Néant>' +#13+#10+ 'Requete : ' + SQL.Text +#13+#10+ '-----------------------------------------------------------------------'+#13+#10+ 'La lecture des tâches dans l''onglet Semaine n''est pas possible.'+ #13 +#10 + 'Si le problème persiste, merci de contacter votre revendeur'); end; end; Finally Close; end; end; end;
Mon application fonctionne en réseau, donc chaque utilisateur peuvent faire un copier-coller, voir peut-être plusieur copier-coller ?
Est-ce que lors du copier il est préférable :
- de mettre dans une table de mon MBD avec le nom de l'user ?
- d'écrire ces infos dans un fichier INI ?
- d'écrire plutot dans le registre ?
- Où utiliser un tableau de variable ?
J'hesite dans ces choix et je sais pas si il pourrais y en avoir d'autre. J'aimerais que l'utilisateur puisse faire plusieur copier-coller de Shape, peut-être créer une sorte de corbeille temporaire et ensuite il pourrais coller ? est-ce possible.
Merci de vos remarques et lumières.
Partager