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

 Delphi Discussion :

Delphi et W7


Sujet :

Delphi

  1. #41
    Membre éclairé
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Points : 664
    Points
    664
    Par défaut
    Onglet Dialogues.

    Sinon :

    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
    uses Dialogs;
    // ...
    procedure TForm1.btn2Click(Sender: TObject);
    var
      psd: TPrinterSetupDialog;
    begin
      psd := TPrinterSetupDialog.Create(Self);
      try
        if psd.Execute then
        begin
          // ...
        end;
      finally
        psd.Free;
      end;
    end;

  2. #42
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    J'ai trouvé l'onglet ...

  3. #43
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    en testant sous XP j'avais laissé le PrintDialog1 donc j'ai déclenché une violation d'accés qui semble être nettoyée avec le try ... finally.

    Je relance vers Vista...

  4. #44
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par F@bien.fd Voir le message
    en testant sous XP j'avais laissé le PrintDialog1 donc j'ai déclenché une violation d'accés qui semble être nettoyée avec le try ... finally.

    Je relance vers Vista...
    pareil qu'avec PrintDialog1 ...

    Bon on verra demain ... bonne nuit.

  5. #45
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Euh, avez-vous bien lu le contenu de la boîte de dialogue ?

    Ça ne dit pas qu'il n'y a pas d'imprimante, ça dit "Aucune imprimante par défaut sélectionnée"...

    Du coup j'essayerais déjà de mettre un...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Printer.PrinterIndex := -1;
    ...avant de lancer l'impression !?

  6. #46
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    Euh, avez-vous bien lu le contenu de la boîte de dialogue ?

    Ça ne dit pas qu'il n'y a pas d'imprimante, ça dit "Aucune imprimante par défaut sélectionnée"...

    Du coup j'essayerais déjà de mettre un...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Printer.PrinterIndex := -1;
    ...avant de lancer l'impression !?
    Merci, j'va essayer ...

  7. #47
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Points : 1 935
    Points
    1 935
    Par défaut
    C'est justement ce que je me demandais là ce matin : certainement pas de coché "par défaut" une imprimante installée, mais seulement le pilote existant d'office en ce dossier des imprimantes (document "XPS").

    Enfin nous le saurons

  8. #48
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Ploufff ploufff

    J'ai essayé ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Printer.Printers.Count > 0 then Printer.PrinterIndex := -1;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Printer.Printers.Count > 0 then Printer.PrinterIndex := 0;
    Nada...

  9. #49
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    sur Xp en faisant varier PrinterIndex avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShowMessage(IntToStr(Printer.Printers.Count));
    ShowMessage(IntToStr(Printer.PrinterIndex));
    me donne les bonnes réponses et ça roule je vérifie dans la foulée sur Vista

  10. #50
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
         if Printer.Printers.Count > 0 then Printer.PrinterIndex := -1;
     
    ShowMessage(IntToStr(Printer.Printers.Count));
    ShowMessage(IntToStr(Printer.PrinterIndex));
     
         If PrintDialog1.Execute then If Printer.Aborted = True
            then Exit
            else
              begin
    je n'ai même pas les ShowMessage ...

  11. #51
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 468
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 468
    Points : 1 342
    Points
    1 342
    Par défaut
    Bonjour à toutes et à tous,

    @ F@bien.fd, attention, je pense que tu mélanges les problèmes :

    Il me reste néanmoins deux problèmes à régler :
    la procédure appelée TForm1.DefautClick(Sender: TObject); qure Cincap m'a fournie est-elle bien à installer dans le fichier iss sauf erreur de ma part si j'ai bien compris. Je ne pense pas que cela soit une procédure à placer dans le programme à installer avec par exemple un appel à la fin du TForm1.Create(Sender: TObject); dans l'application FileName n'est-ce pas ?
    Je t'ai fourni une fonction et l'exemple de son utilisation, donc la procédure TForm1.DefautClick est un exemple utilisé par uniquement mon application, c'est la fonction et son utilisation que tu dois utilisées pour ton application dans le cas de pour creer, renommer, chercher un dossier sous Seven 64bits et être accepté par l'UAC concernant les dossiers spéciaux.

    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
     
    Function ChangeFSRedirection(bDisable: Boolean): Boolean;
     
    Type TWow64DisableWow64FsRedirection = Function(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall; 
          TWow64EnableWow64FsRedirection  = Function(var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
     
      Var
        hHandle: THandle;
        Wow64DisableWow64FsRedirection: TWow64DisableWow64FsRedirection;
        Wow64EnableWow64FsRedirection:  TWow64EnableWow64FsRedirection;
        Wow64FsEnableRedirection:       LongBool;
     
    begin
     
    Result := True;
     
    try
        hHandle := GetModuleHandle('kernel32.dll');
        @Wow64EnableWow64FsRedirection  := GetProcAddress(hHandle, 'Wow64EnableWow64FsRedirection');
        @Wow64DisableWow64FsRedirection := GetProcAddress(hHandle, 'Wow64DisableWow64FsRedirection');
     
        if bDisAble then begin
         If ((hHandle <> 0) and (@Wow64EnableWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil)) Then
          Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection);
        end;
     
        if not bDisAble then
        If ((hHandle <> 0) and (@Wow64EnableWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil)) Then
          Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection);
     
    Except Result := False;
    end;
     
    end;
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ChangeFSRedirection(true);
    //Ton code renommer, creer, chercher ect....
    ChangeFSRedirection(false);
    Pour ton imprimante, vérifie que tu en as au moin une installée par défaut comme on te l'as suggéré.

    @+,

    Cincap

  12. #52
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Merci Cincap,

    l'exemple que tu m'as fourni est évidemment à adapter, mais je n'ai pas tout compris, je saisissais mal comment en tirer profit.
    Cela commence à s'éclaircir.


    Pour l'imprimante j'ai testé avec le code suivant en cliquant sur un memo

    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
    ShowMessage(IntToStr(Printer.Printers.Count));
    ShowMessage(IntToStr(Printer.PrinterIndex));
     
     
    //var
    //  psd: TPrinterSetupDialog;
    begin
      psd := TPrinterSetupDialog.Create(Self);
      try
        if psd.Execute then
        begin
          // ...
          ShowMessage(' ça roule 1');
        end;
      finally
        psd.Free;
     
        ShowMessage(' ça roule 2');
      end;
    end;{}
    et voilà ce que ça donne :

    1er ShowMessage --> 5
    2eme ShowMessage non affiché et remplacé par l'InsultBox
    3eme ShowMessage non affiché et remplacé par l'InsultBox
    4eme ShowMessage --> ça roule 2

    Donc même le fait de demander celle qui est par défaut ... ça plante puiqu'il ne semble pas y en avoir, or il y en a 5 et avec les autres applications ça ne pose pas de problème.
    En fait Vista refuse que la boite de dialogue imprimante ne s'affiche...

  13. #53
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Bon ben

    Avec InstallShield, l'installation est longue et elle est parfois (mais très rarement à réinitialiser) , mais à la fin la commande "Executer" donne la main à l'administrateur qui fait tourne l'application correctement.

    Avec InnoSetup, l'installation est instantannée et est réalisée du 1er coup , mais à la fin la commande "Executer" NE donne PAS la main à l'administrateur, et là ça plante. Conclusion avec InnoSetup il ne faut pas laisser l'option "Exécuter" à l'installateur.
    ça y est avec InnoSetup l'administrateur garde la main à la fin avec la commande "Executer".
    Il suffit de l'avoir fait tourner après la conception et la compilation, et on peut l'utiliser sous un autre environnement.

    Je crois avoir trouvé la méthode pour installer une font dans le dossier Fonts de Win avec InnoSetup ...

  14. #54
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Idée: est-ce que l'impression est accessible à l'utilisateur en cours ? Peut-être que les imprimantes installées sont d'usage limité à un utilisateur (ex. administrateur) ou à un groupe !?
    Si tu lances l'application en mode administrateur, est-ce que tu peux imprimer ???

  15. #55
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    Idée: est-ce que l'impression est accessible à l'utilisateur en cours ? Peut-être que les imprimantes installées sont d'usage limité à un utilisateur (ex. administrateur) ou à un groupe !?
    Si tu lances l'application en mode administrateur, est-ce que tu peux imprimer ???
    Vi vi vi , je lance en mode administrateur ... et simultanément une autre application peut imprimer ...

  16. #56
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Si tu fais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Printer.Printer := -1
    ShowMessage(IntToStr(Printer.PrinterIndex));
    ...est-ce que la deuxième ligne passe bien ?

  17. #57
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ShowMessage(IntToStr(Printer.Printers.Count));
    Application.ProcessMessages;
     
    ShowMessage(IntToStr(Printer.PrinterIndex));
    Application.ProcessMessages;
    Résultat : 5 et après le OK ... Insultebox


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ShowMessage(IntToStr(Printer.PrinterIndex));
    Application.ProcessMessages;
     
    ShowMessage(IntToStr(Printer.Printers.Count));
    Application.ProcessMessages;
    Insultebox immédiate

    de même ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Printer.PrinterIndex := -1
    Insultebox déclenchée

  18. #58
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    As-tu essayé sur un autre système que le tiens (même OS) ?

  19. #59
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par GoustiFruit Voir le message
    As-tu essayé sur un autre système que le tiens (même OS) ?
    Non, je n'en ai pas.

    j'ai une partie de la solution ... qui tient aux messages d'erreurs ... quand je ne démarre par clic droit avec droits administrateurs.

    Mon développement est réalisé sous XP et là, tout roule à merveille.

    Lorsque je passe à Vista avec tous les verrous, cet OS m'envoie les messages d'erreur publiés plus haut, donc pour ne pas planter je démarre non pas clic gauche mais clic droit avec droits administrateurs demandés (code secret).
    Et tout fonctionne sauf avec l'imprimante...

    Pour en avoir le coeur net, j'ai réalisé une mini application qui demande une imprimante et que j'ai donc testé sous vista.
    clic gauche ... ça roule.
    clic droit avec droits administrateurs ... problème identique.

    Il faut donc que je m'affranchisse des droit administrateurs pour la faire tourner. On m'a déjà bien aidé, mais là j'avoue que je peine sacrément. Je ne pense pas suffisamment maitriser l'outil pour m'en sortir.

  20. #60
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Points : 1 935
    Points
    1 935
    Par défaut
    Il faut donc que je m'affranchisse des droit administrateurs pour la faire tourner.
    Et quelle est donc cette partie très très spéciale de code en écriture ?

    Oupssss, dans la bagarre je ne me souviens plus ; là tu parles toujours de la phase d'installation IS ?

    Il serait certainement bon de recentrer tout ça

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 21h09
  2. Réponses: 1
    Dernier message: 13/05/2002, 10h19
  3. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 23h50
  4. Réponses: 4
    Dernier message: 27/03/2002, 12h03
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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