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 :

Problème suite harmonisation résolution écran


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 62
    Points : 29
    Points
    29
    Par défaut Problème suite harmonisation résolution écran
    Dans le dernier topic que j'ai créé, je demandais comment adapter une application développée sur du 1280X1024 à des clients 800X600

    J'ai trouvé ma réponse seulement maintenant que je mets en application la solution je me retrouve confronté à certains problèmes :


    je déclare ma procédure RescaleForm dans implementation de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Définition de la procédure pour adapter la fenêtre à l'écran
    procedure RescaleForm(F: TScrollingWinControl);
    var
      M, D : Integer;
      begin
       M := Screen.Width; // multiplicateur = définition actuelle de l'écran
       D := 1280; // diviseur = définition de l'écran à la conception
       F.ScaleBy(M, D);
       F.Realign;
      end;
    En tout j'ai 7 Forms, dans la première (le menu principal) j'appelle la procédure dans le FormActivate de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Appel de la procédure pour adapter la fenêtre à l'écran
    procedure TForm1.FormActivate(Sender: TObject);
    var
      M, D : Integer;
    begin
       ShowWindow(Handle, SW_MAXIMIZE); // maximise ma fenêtre
       RescaleForm(Form1);
    end;
    Puis dans les 6 autres Forms j'appelle la procédure dans le FormShow de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Appel de la procédure pour adapter la fenêtre à l'écran
    procedure TForm2.FormShow(Sender: TObject);
    var
      M, D : Integer;
    begin
       ShowWindow(Handle, SW_MAXIMIZE); // maximise ma fenêtre
       RescaleForm(Form2);
       Form2.Close;
    end;
    Lorsque je lance mon appli elle démarre convenablement, seulement, Lorsque j'appuie sur le bouton de la Form1 qui me conduit à la Form2 avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin
    Form2.show;
    end;
    Ca Plante ... avec le message d'erreur suivant :




    Quelqu'un peut il me dire où est le problème ??????
    Le but étant d'afficher la Form en lui appliquant la procédure RescaleForm.

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    Le lien que tu m'as donné parle des "anchors" et "aligns" ainsi que de "changescale". Mais donne pas de réponse à mon problème :

    Pourquoi j'ai cette erreur au dessus ?? Pourquoi le Visible ne peut pas être activé quand je fais un .show ?? Comment palier à ce problème ?

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    On ne peut pas changer la propriété Visible dans l'événement OnShow, ce qui est logique.

    il faut la changer avant.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    oh un Lyonnais ! comme moi ...

    Donc tu veux dire que si je change le visible avant de faire le onshow, ca va marcher ?

  6. #6
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    Dans ton OnShow tu fais un Close (donc un Visible := False). Donc il y a un problème.

    Je déclarerai plutot une methode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm2.ShowPersonal;
    begin
    ShowWindow(Handle, SW_MAXIMIZE); // maximise ma fenêtre
    RescaleForm(Self);
    end;
    et au lieu de
    mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    form2.ShowPersonnal
    Pour le form2.Close, je ne vois pas l'intérêt

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    ou déclares tu la méthode ??
    dans quelle class ??

    et qu'est ce que c'est que ce showpersonal ? c'est quoi le but ?

  8. #8
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    ShowPersonal est à déclarer dans les méthodes de TForm2.
    (au cas où: tu déclares ta méthode puis tu fais Ctrl+Shift+C et ça te donne le prototype de fonction).

    ShowWindow(Handle, SW_MAXIMIZE) rend la fenêtre visible et maximisée.

    Le but est d'afficher ta form maximisée et redimensionnée ...

    Sinon à quoi servait le form2.close dans ton FormShow?

Discussions similaires

  1. Problème d'affichage (résolution écran)
    Par bernayer dans le forum Langage
    Réponses: 15
    Dernier message: 17/10/2009, 16h08
  2. problème résolution écran
    Par damii1 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 16/06/2009, 11h14
  3. Réponses: 10
    Dernier message: 20/11/2008, 15h29
  4. [Debutant]Problème de résolution écran
    Par obito dans le forum Ubuntu
    Réponses: 5
    Dernier message: 26/08/2008, 16h58

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