TMainMenu

cs_naru Messages postés 19 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 10 août 2004 - 8 sept. 2002 à 02:33
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Derniè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.

Merci par avance.

9 réponses

fabiin Messages postés 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
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

@+
Fabs 8-)
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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.

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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...

[i]May Delphi be with you.
Delphi advanced
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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) ---
0

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

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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...

May Delphi be with you.
Delphi advanced
0
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 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

;) Bruto
0
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004
8 sept. 2002 à 21:38
:sad) vraiment je suis nul %-6

WriteLn(Prn, AMemo.Lines);

;) Bruto
je vais me pendre
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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 )

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 sept. 2002 à 21:42
J'avais complètement oublié qu'on pouvait écrire cela aussi (le Turbo Pascal est loin...)

Merci Bruto de me rafraîchir la mémoire.

May Delphi be with you.
Delphi advanced
0
Rejoignez-nous