Lié 2 selections à une impression [Résolu]

Signaler
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011
-
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
-
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 .

Bonne journée à tous et à toutes .

79 réponses

Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Printer.Orientation := poLandscape;


Voilà un lien qui te donnera d'autres méthodes :
http://alphomega.developpez.com/imprimer/?page=page_3

clic sur réponse acceptée si le tout te convient.

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
X := PageWidth div 2;
Y := PageHeight div 2;

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
 Boy
 < 3 rue blablabla du champ >

Il te faut introduire un autre Canvas.textOut pour l'adresse.

Attention, si ça se complique tu peux aussi créer un état de sortie avec
QuickReport ou RaveReport.

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
bonsoir,

Tu peux créer très simplement une table .db avec le module de  base de données (Dbd32.exe) avec des champs de différents type etc.

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Ici, c'est magique !

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
plusieurs solutions sont possibles :

soit tu sélectionnes les lignes dans le premier et tu imprimes uniquement celles sélectionnées

soit tu mets en place un DragAndDrop entre le 1er et le 2e dans une table Temporaire (qu'il faudra vider..)
et ensuire tu immrimes la table Tempo

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
ah ? un truc qui semble marcher :


Tu repasses le dragmode en manual et


lances le start par :



PROCEDURE TForm1.DBGrid1CellClick(Column: TColumn);
BEGIN
  DBGrid1.BeginDrag(true);
END;

Moins pratique mais pour l'instant ça à l'air de gazer car là tu peux choisir ton enregistrement :
tu cliques tu relaches la souris et tu drag and drop..

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
hé hé..
il te manque le dataset dans le datasource !
et en plus, il est bizarre ton datasource, il a deux datasets
(avec deux liaisons différentes néanmoins)

Quelle version de delphi utilises-tu ?

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
bonsoir, 
A mon avis, tu n'as bien formulé ta question car pour l'instant on ne retient
que tu connais déjà l'information que tu recheches...
Ce n'est donc pas l'impression au centre d'une feuille qui pose problème.

cantador
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011

Tout simplement sur mon application je ne sais pas créé le bouton + codes qui s'en suit permetant d'imprimer mes 2 selections =)

Je ne sais tout simplement pas imprimer mes selection donc bouton + codes permettant de les imprimer au milieu d'une feuille de papier =)

Merci à toi =)
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Quels sont les composants dans lesquels tu sélectionnes les informations ?

cantador
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011

Nous allons dire dans 2 TComboBox =)
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
uses printers;
--- 
procedure Impression;
var
ResX, ResY : integer;
begin
   ResX := GetSystemMetrics(SM_CXSCREEN);
   ResY := GetSystemMetrics(SM_CYSCREEN);
    Printer.Orientation := poPortrait;
    with Printer do
    begin
      BeginDoc;
      Canvas.font.Size := 50;
      Canvas.TextOut(ResX div 2, ResY div 2, ComboBox1.Text + '  /  ' + ComboBox2.Text);
      EndDoc;
    end;
end;

A toi d'ajuster div 2 et la taille de la fonte en fonction de tes souhaits.

cantador
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011

J'ai essayer d'integrer le code mais la je m'y perd un peu ou faut t'il que l'applique ce code ci ?
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Voilà tatout :

unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Printers;


type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
    procedure Imprimer;
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;
  ResX, ResY: integer;
implementation


{$R *.dfm}


procedure GetScreenResolution;
begin
  ResX := GetSystemMetrics(SM_CXSCREEN);
  ResY := GetSystemMetrics(SM_CYSCREEN);
end;


procedure TForm1.Imprimer;
var
  ResX, ResY: integer;
  Conca: string;
begin
  Conca := '';
  ResX := GetSystemMetrics(SM_CXSCREEN);
  ResY := GetSystemMetrics(SM_CYSCREEN);
  Printer.Orientation := poPortrait;
  with Printer do
  begin
    BeginDoc;
    Canvas.font.Size := 50;
    Conca := ComboBox1.Text + '  /  ' + ComboBox2.Text;
    Canvas.TextOut((ResX div 2) - (length(Conca) - 2), ResY div 2, Conca);
    EndDoc;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Imprimer;
end;


initialization
  GetScreenResolution;
end.

Tu n'a plus que la fonte à ajuster.

cantador
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011

Salut et déja merci pour toute l'attention que tu me portes j'ai insérer ton code que tu m'as fraichement fait et je te remercie mais une fois rentré j'execute je clique sur le bouton et rien ne se produit est ce normal ?

Encore merci à toi
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Le clic envoie directement une impression sur ton imprimante par défaut (allumée..)
il y une petite erreur dans le TextOut c'est pas -2 mais div 2.

Chez moi ca marche mais il doit y avoir encore une boulette car le texte n'est pas centré?


Mais il suffit de faire varier X et Y dans Canvas.TextOut(X,Y,Conca) pour trouver la bonne carburation !

cantador
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011

Merci beaucoup ca marche quelque application si je veux mettre en portrait ce texte , centré et combobox1 et 2 sur 2 lignes différentes ?

Désolé je suis chiant ^^ Je suis nouveau et j'apprécie beaucoup ton aide cantador merci beaucoup =)
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
portrait c'est déjà fait:
Printer.Orientation := poPortrait;

centré ->> faire bouger X et Y (ex : résolution 1024/768)

combo sur 2 lignes->>> utilises 2 Canvas.TextOut

canvas.textout(X, Y,ComboBox1.Text);
canvas.textout(X, Y,ComboBox2.Text);

Une fois le premier calé, tu trouveras facilement le 2E !

cantador
Messages postés
54
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
14 août 2011

J'ai imprimé une page et le texte est en portrait exact mais je me suis trompé je voulais dire paysage merci pour les autres indications ce sera ma dernière question merci encore à toi =)