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 :

Intercepter Application.CreateForm ou équivalent


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 57
    Par défaut Intercepter Application.CreateForm ou équivalent
    Afin de redimensionner automatiquement toutes les Fiches (Forms) de mon projet à la résolution de l'écran, je voudrais savoir si il est possible d'intercepter l'évènement "oncreate" des fiches de manière "globale" pour y réaliser le traitement de mise à l'echelle (avec "scaleby") ?
    En fait le but, vous l'aurez compris, c'est déviter de mettre dans chaque "oncreate" de chaque fiche (soit + de 100 fiches !)la méthode de mise à l'echelle...

  2. #2
    Membre Expert 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
    Par défaut
    change la proprité windowsstate des form en wsMaximized, non???

  3. #3
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Salut,

    Sinon tu ne peux pas faire un parcours de toutes tes forms au moment de la création de ton application et tu fais ton redimensionnement à ce moment la ?
    Comme ça tu ne fais en code qu'une fois le redimensionnement nécessaire mais appliqué à toutes tes forms ...

    Jette un oeil à un psot un peu plus bas que le tiens, tu y trouveras peut-être ton bonheur

  4. #4
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Tiens regarde jette un oeil ici :
    Parcourir toutes les Forms d'une application

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 57
    Par défaut
    Mes fiches sont concues en 800 x 600 par défaut.
    J'ai une méthode qui permet de redimensionner les fiches pour que visuellement les controles (boite de saisies, les polices,etc) gardent la même taille même si on est en résolution 1280 x 1024 par exemple. (maximized est forcé par défaut)
    En fait toutes les fiches du projet sont créées dynamiquement, lorsque l'utilisateur clique sur une rubrique du menu ou sur un bouton d'une fiche qui affiche une boite de dialogue... Il ne me semble pas pertinent qu'à chaque fois qu'une fiche doit être affichée de parcourir la liste pour effectuer le redimensionnment.
    Alors peut on surcharger la méthode CreateForm, pour que lors de la création de la fiche ma méthode de redimensionnement s'exécute à chaque fois ?

  6. #6
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Tu peux aussi faire de l'héritage de form.
    Ainsi, ta form ancêtre prend en charge le redimensionnement sur le FormCreate, puis toutes les forms hérite de l'ancêtre.
    Il faut donc chercher autour de l'héritage de form.

  7. #7
    Membre Expert 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
    Par défaut
    ou crée un composant non visuelle

  8. #8
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    En fait toutes les fiches du projet sont créées dynamiquement, lorsque l'utilisateur clique sur une rubrique du menu ou sur un bouton d'une fiche qui affiche une boite de dialogue... Il ne me semble pas pertinent qu'à chaque fois qu'une fiche doit être affichée de parcourir la liste pour effectuer le redimensionnment.
    Je suis tout à fait d'accord mais je ne savais pas que la création était dynamique ...

    Vois alors avec ce qui t'as était dit

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 57
    Par défaut
    Peut on surcharger la methode CreateForm de TApplication ?

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour,

    Je pense que vous pouvez définir un constructeur dans un TForm (le classique constructor Create(AOwner: TComponent). Ceci dis pourquoi ne pas utiliser le OnCreate. c'est comme si vous appelier une procédure apres le inherited d'un constructeur.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 57
    Par défaut
    Oui mais dans ce cas il faudra le faire dans chaque Form et c'est ce que je veux éviter...

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Dans ce cas vous devez faire une forme de base contenant votre traitement, puis vous créer toutes vos formes en vous servant de cette forme de base comme source.

    C'est tous bêtement le principe des composants.

    TMyForm = Class(TForm)

    Tmyform contoient le traitememnt standard.

    puis
    TForm1 = Class(TMyForm)
    TForm2 = Class(TMyForm)
    TForm3 = Class(TMyForm)
    etc..

    Il y à eut un message indiquant comment faie la semaine dernière

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 57
    Par défaut
    J'ai regardé du coté de la gestion des messages Windows avec la fonction WndProc mais je n'arrive pas à intercepter la création des fiches (WM_CREATE)...quelqu'un a t-il un petit exemple sous la main ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 57
    Par défaut
    Voila le code que j'utilise pour intercepter la création des fiches, cela fonctionne pour la fiche principale mais pas pour les autres :
    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
     
    type
      TMainForm = class(TForm)
        MainMenu1: TMainMenu;
        Fichier1: TMenuItem;
        Fiche11: TMenuItem;
        procedure Fiche11Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure WndProc(var Msg: TMessage); override;
      end;
     
    var
      MainForm: TMainForm;
     
    implementation
     
    {$R *.dfm}
    Uses Unit1;
     
    procedure TMainForm.WndProc(var Msg: TMessage);
    begin
      inherited;
      if Msg.Msg = WM_CREATE then
      begin
        ShowMessage('Create !');
      end;
     
    end;

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Si vous tenez impérativement à intercepter les créations vous pouvez utiliser un creator. Je pense que cela devrait fonctionner.

    Je n'ai pas Delphi içi mais de tête cela devrait être quelque chose de ce genre:

    En Public:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Constructor Create(Owner: TObject);
    En Implementation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Constructor TMyForm.Create(Owner: TObject);
    Begin
    showMessage('Avant le constructeur');
    Inherited; // constructeur puis évènement OnCreate
    ShowMessage('Apres le constructeur');
    End;

Discussions similaires

  1. HookMouse Dll interception application externe
    Par BuzzLeclaire dans le forum Débuter
    Réponses: 15
    Dernier message: 28/09/2010, 09h17
  2. Windows-Messages : comment intercepter "application.quit"
    Par Alekhine dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 03/04/2009, 15h08
  3. Réponses: 4
    Dernier message: 23/05/2005, 18h11
  4. Réponses: 4
    Dernier message: 14/02/2005, 19h41
  5. Réponses: 4
    Dernier message: 21/09/2003, 15h50

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