IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Problème de couleur avec mes états QuickReport


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut Problème de couleur avec mes états QuickReport
    Bonjour messieurs,

    J'ai un soucis avec mes états Quickreport de mon application Delphi7.
    Mes états sortent toujours en couleur même quand je choisis l'option couleur noir et blanc.
    Comment faire pour que mes états soient imprimés en noir et blanc sur une imprimante couleur?

    Voici mon code pour lancer l'impression :
    Application.CreateForm(TE_Journal_Vente_Client,E_Journal_Vente_Client);
    E_Journal_Vente_Client.QuickRep1.prepare;
    E_Journal_Vente_Client.QuickRep1.QRPrinter.PreviewModal;
    E_Journal_Vente_Client.QuickRep1.QRPrinter.Free;
    E_Journal_Vente_Client.QuickRep1.QRPrinter := nil;
    Merci pour votre compréhension et pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 064
    Points
    41 064
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Je ne répéterais jamais assez qu'il y a un forum 'dédié' pour Quickreport
    ic en indiquant au niveau du titre le tag Quickreport .

    Pour ce qui est de la Couleur (je crois déjà avoir lu un vieux post a ce sujet ) , le mieux est de modifier les paramètres de l'imprimante (donc rien a voir avec QuickReport .
    Le principe
    1. Mémoriser la configuration initiale de l'imprimante (couleur on ou off)
    2. Modifier (couleur Off)
    3. Imprimer
    4. Remettre comme avant


    Maintenant , je présume que la prochaine question va être : "Comment j'obtiens et change cette information ?"
    je dois avouer que je n'ai jamais eu affaires avec une imprimante couleur , avec les bacs j'avais crée une fonction pour obtenir les infos par imprimante (d3)
    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
     
     uses Printers, Winspool, .....;  // winspool pas sur
     
    const
         BIGSTRING = 10000;
    type
      LPBYTE = ^byte;
      PPr_info_2 = ^TPrinterInfo2;
     
      TBinNames = array[ 0..99,0..23] of char;
      PTBinNames = ^TBinNames;
     
    procedure TForm1.GetDriverInfo;
    var I: Integer;
        FDevice : PChar;
        FDriver : PChar;
        FPort : PChar;
        BinCodes : PChar;
        Bin : PWORD;
        DeviceMode : THandle;
        Driver_info_2 : pDriverinfo2;
        CapBuffer : PChar;
        BinNames : PTBinNames;
        NumCaps : integer;
    begin
        Memo2.Clear;
        Memo2.Lines.Add('Impossible d''obtenir les informations');
        if not assigned(fPrinter) then exit;
        GetMem(FDevice, 1000);
        GetMem(FDriver, 1000);
        GetMem(FPort, 1000);
        GetMem(Driver_info_2, 255);
        GetMem(CapBuffer, 10000);
        GetMem( binnames, 2400);
        Printer.GetPrinter(FDevice, FDriver, FPort, DeviceMode);
        // Bin names
        NumCaps := DeviceCapabilities(FDevice, FPort, DC_BINNAMES, CapBuffer, nil);
        copymemory( pointer(binnames), capbuffer, 2400);
        memo2.clear;
        NumCaps :=DeviceCapabilities(FDevice, FPort, DC_BINS,nil, nil);
        GetMem(BinCodes,NumCaps*Sizeof(word));
        // Bin codes
        NumCaps := DeviceCapabilities(FDevice, FPort, DC_BINS,BinCodes, nil);
        for I := 0 to NumCaps-1 do
        begin
           if trim(binnames[i]) <> '' then
             begin
                Bin:=@bincodes[i*Sizeof(Word)];
                memo2.lines.add( binnames[i]+ format( '  >> %d',[bin^]));
             end;
        end;
        FreeMem(Driver_info_2, 255);
        FreeMem(CapBuffer, 10000);
        FreeMem( binnames, 2400);
        FreeMem(FDevice, 1000);
        FreeMem(FDriver, 1000);
        FreeMem(FPort, 1000);
        FreeMem(BinCodes,NumCaps*Sizeof(Word));
    end;
    je pense que c'est sur la fonction devicecapabilities qu'il faut plancher.

    [edit] une recherche dans le 'bon' forum , m'indique que la solution n'avait pas été trouvée ou remontée

    [re-edit] bon en fait j'ai du aller trop loin , devicecapabilities permet de verifier si oui on non l'imprimante est couleur , pas de changer le settings , mais j'ai retrouvé la discussion à laquelle je pensais ici
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 064
    Points
    41 064
    Billets dans le blog
    62
    Par défaut a tester , sans garantie sauf la compilation
    N'ayant pas d'imprimante adéquate , ce bout de code est donné tel quel
    ça me trottait dans la tête
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    uses printers,windows ...;
    // extrait de windows.pas ce qui m'interesse
    // { color enabledisable for color printers }
    //  {$EXTERNALSYM DMCOLOR_MONOCHROME}
    //  DMCOLOR_MONOCHROME = 1;
    //  {$EXTERNALSYM DMCOLOR_COLOR}
    //  DMCOLOR_COLOR = 2;
    //  {$EXTERNALSYM DM_COLOR}
    //  DM_COLOR = $800;
     
    procedure TForm1.TesterClick(Sender: TObject);
    var
      Device : array[0..255] of char;
      Driver : array[0..255] of char;
      Port   : array[0..255] of char;
      hDMode : THandle;
      PDMode : PDEVMODE;
    begin
      with Printer do begin
        PrinterIndex := PrinterIndex;  // forcing , est-ce bien nécessaire ?
        GetPrinter(Device, Driver, Port, hDMode);
     
        if hDMode <> 0 then begin
          pDMode := GlobalLock(hDMode);
          if pDMode <> nil then begin
            // a tester
            if (pDMode.dmFields AND DM_COLOR)= DM_COLOR then showmessage('imprimante en mode couleur')
                                                        else showmessage('imprimante en Noir et blanc');
            GlobalUnlock(hDMode);
          end;
        end;
    end;
     
    procedure TForm1.MONOCHROMEClick(Sender: TObject);
    var
      Device : array[0..255] of char;
      Driver : array[0..255] of char;
      Port   : array[0..255] of char;
      hDMode : THandle;
      PDMode : PDEVMODE;
    begin
      with Printer do begin
        PrinterIndex := PrinterIndex;  // forcing , est-ce bien nécessaire ?
        GetPrinter(Device, Driver, Port, hDMode);
     
        if hDMode <> 0 then begin
          pDMode := GlobalLock(hDMode);
          if pDMode <> nil then begin
            //passage en NB
            pDMode.dmFields := pDMode.dmFields - dm_Color;  // vérifier le moins
            pDMode.dmColor := DMCOLOR_MONOCHROME;
            GlobalUnlock(hDMode);
          end;
        end;
    end;
     
    procedure TForm1.COULEURClick(Sender: TObject);
    var
      Device : array[0..255] of char;
      Driver : array[0..255] of char;
      Port   : array[0..255] of char;
      hDMode : THandle;
      PDMode : PDEVMODE;
    begin
      with Printer do begin
        PrinterIndex := PrinterIndex;  // forcing , est-ce bien nécessaire ?
        GetPrinter(Device, Driver, Port, hDMode);
     
        if hDMode <> 0 then begin
          pDMode := GlobalLock(hDMode);
          if pDMode <> nil then begin
            // passage en couleur
            pDMode.dmFields := pDMode.dmFields or dm_Color;
            pDMode.dmColor := DMCOLOR_COLOR;
            GlobalUnlock(hDMode);
          end;
        end;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 064
    Points
    41 064
    Billets dans le blog
    62
    Par défaut Qu'en est il ?
    J'aurais bien aimé (n'ayant pas d'imprimante couleur sous la main) avoir un retour sur le code proposé .

    (ceci sert donc de up )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 064
    Points
    41 064
    Billets dans le blog
    62
    Par défaut
    J'ai enfin eu accès a une imprimante couleur et ça ne fonctionne pas

    Le code (malgré quelques "end;" manquants ) fonctionne mais la sortie quickreport reste en couleur .
    J'ai l'impression que la modification du paramètre indiqué ne suffise pas !
    impression renforcé par le fait que en passant en MONOCHROME puis en allant voir les propriétés de l'imprimante (une HP PSC2355) celles-ci restent à couleur .
    La propriété a changer est le 'niveau de gris' des options d'impression , il va falloir aller fouiller un peu plus loin
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Problème de couleur avec mes css
    Par thoughtless dans le forum Mise en page CSS
    Réponses: 20
    Dernier message: 13/08/2009, 14h45
  2. Problème de positionnement avec mes DIV
    Par Rifton007 dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 23/01/2007, 10h48
  3. Réponses: 1
    Dernier message: 31/10/2006, 12h40
  4. problème très étrange avec mes tableaux
    Par lelutin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/09/2006, 14h47
  5. Réponses: 2
    Dernier message: 31/07/2006, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo