cs_naru
Messages postés19Date d'inscriptionsamedi 7 septembre 2002StatutMembreDernière intervention10 août 2004
-
8 sept. 2002 à 02:33
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
8 sept. 2002 à 21:42
Bonjour, j'ai inséré un objet TMainMenu, et je voudrais à présent configurer le copier, coller, défaire, refaire et imprimer mais l'aide delphi est bien vague à ce sujet.
J'ai trouvé des fonctions du type CopyToClipboard mais je n'arrive pas à les activer.
fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 20096 8 sept. 2002 à 12:14
ben si tu a un memo par exemple
Couper : Memo.CutToClipboard
Copier : Memo.CopyToClipboard
Coller : Memo.PastFromClipboard
Annuler : Memo.Undo
Refaire : je c pas
Imprimer : c plus compliquer
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 8 sept. 2002 à 12:45
Pour l'impression il y a un moyen simple pour imprimer une fiche :
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.PrintScale:=poPrintToFit;
Form1.Print;
end;
La sortie n'est pas très jolie car la résolution de l'écran est utilisée sur l'imprimante, mais c'est très pratique pour faire une impression rapide.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 8 sept. 2002 à 14:40
Là franchement, je suis surpris que tu n'aies pas pensé à utiliser un TActionList.
Parmi les actions qu'il propose, on trouve EditCopy, EditCut, EditUndo,...qui gèrent tout seuls les actions et les réactions des menus (enabled ou not enabled) en fonction de la nature du contrôle dans lequel le curseur se trouve (dans un TMemo, un TEDit ou n'importe lequel de ses descendants).
Y a pas plus simple et plus efficace !
En revanche, pour l'impression, c'est pas très compliqué
Uses Printers;
procedure MemoPrint(AMemo : TMemo);
var i : integer;
Prn : TextFile;
begin
AssignPrn(Prn);
Rewrite(Prn);
WriteLn(Prn, 'Imprimé à ' + DateTimeToStr(Now));
WriteLn(Prn, ' ');
for i := 0 to AMemo.Lines.Count - 1 do
begin
WriteLn(Prn, AMemo.Lines);
end;
System.Close(Prn);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MemoPrint(Memo1);
end;
Explication : l'imprimante est assimilable à un fichier texte dans lequel on écrit et que l'on referme à la fin, indiquant au système qu'il peut envoyer le tout sur le canal de l'imprimante.
Limitations : la police utilisée est celle du composant Memo et les sauts de page se feront automatiquement et non aux endroits choisis. Selon les besoins, cette méthode est rapide à mettre en oeuvre.
Il y a, bien entendu, des solutions plus sophistiquées, mais comme le TMemo ne gère qu'une police de caractère, le résultat ne sera pas meilleur, alors...
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 8 sept. 2002 à 20:55
C'est vrai que l'on peut faire une foule de choses avec les TActionList. Mais je n'ai pas le réflexe, ni l'habitude des utiliser... Il faudras sans doute que j'explore le sujet.
--- :sleepy) Nono du Moulin :sleepy) ---
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 8 sept. 2002 à 21:11
Cette remarque était avant tout destinée à Naru.
Celà dit, moi-même, je n'avais pas perçu l'intérêt, quand Delphi 4 est sorti, des TActionList.
Pour les avoir utilisé au quotidien, je peux maintenant dire que c'est un vrai gain de temps et une optimisation du code de gestion de l'interface, pour peu qu'on les mette dans une unité séparée, partagée par différentes unités.
A ce propos, j'aimerais faire remarquer que les DataModules sont un excellent support pour ces composants (ainsi que pour les TImageList), chose à laquelle peu de gens pensent. Les datamodules sont un excellent cadre pour partager toute de sorte de composants non visuels à l'éxécution.
Je me suis rendu compte, en parlant avec les collègues, que peu de personnes avaient ce réflexe et multipliaient les TActionList en les déposant sur des TForm.
Comme le dit la formule consacrée, l'essayer c'est l'adopter. On peut facilement étendre la gamme proposée par Borland (bien qu'assez fournie avec Delphi 6) des actions. C'est hyper simple à mettre en oeuvre.
Essayes-les, Nono40, tu me diras ce que tu en penses. Au niveau performances, pas de problèmes puisque les mises à jour des composants qui référencent les action se font pendant les temps morts de l'application.
A ce propos, ne vous faites pas avoir comme moi : si vous devez déboguer un programme en pas à pas, vous aurez l'impression que le code n'est jamais éxécuté alors que, de visu, il l'est.
SOLUTION : pensez à suivre pas à pas les autres threads que le thread principal de votre programme.
J'ai failli devenir fou en voyant que le débogueur ne passait jamais sur certaines parties du code et que, pourtant, les actions demandées étaient réalisées...
Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004 8 sept. 2002 à 21:35
Juste pour info concernat le code de DelphiProg :
remplacer la ligne dans la boucle FOR par :
WriteLn(Prn, AMemo.Lines);
je pense que la plupart d'entre vous l'aurons remarqué et débuggué, pour les autres, il faut savoir qu'il faut préciser le numéro de lignes du mémo d'où Lines[i]. Oubli de DelphiProg sinon bien
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 8 sept. 2002 à 21:41
Je viens encore d'apprendre quelque chose aujoud'hui, je ne savais pas que l'on pouvait écrire directement un TStrings...
Au fait DelphiProg avait bien mis le à la fin de Memo1.Lines. Mais il est interprété par le script comme un début de texte italique !!! ( il faudra donc choisir autre chose qu'un i le prochaine fois... mdr )