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 :

Comment relancer une fiche toujours en Maximize ?


Sujet :

Composants VCL Delphi

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut Comment relancer une fiche toujours en Maximize ?
    Title : Possible de relancer une fiche toujours en "maximize" ?


    Bonjour et Bonne Année,

    Pour simplifier : dans une Form j'ai un bouton qui lance une fiche, cette fiche est paramétrée pour la possiblité "Minimize".

    Jusque là rien d'extraordinaire, mais si cette fiche est fermée en position "Minimize", si jamais elle est relancée, elle se replace en "Minimize".. une sorte de mémoire Windows grrreeuuuu :o(

    Voici ma question précise : est-il possible de relancer cette fiche toujours en "Maximize" (enfin normal quoi ;o) ?

    J'ai tenté bien des choses pour éviter cette relance en "Minimize", exemple de redonner les dimensions de cette fiche dans le OnCreate ; de tenter les "WindowsState" ; même un "Free" à la fermeture de cette fiche, mais là... ;o)

    Dernière minute : j'ai enfin réussi (???) avec dans le OnClose un (FreeAndNil(MaForm)), cette solution vous paraît-elle convenable et fiable ?

    Heuuuuu en passant encore un peu de temps aux essais = non, car si je ferme cette fiche en "Minimize" et ensuite la relance, j'ai droit au bout d'un moment d'essais à un beau message d'erreur !

    Bref je pensais que cette étape était plus simple à réaliser.

    Merci de me donner vos avis de pros.

    PS : Je suis débutant

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Crée ta fiche au moment de la lancer (et désactive sa création automatique dans le menu Projet|Options) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with TFicheQueTuVeuxOuvrir.Create(Application) do
    try
      ShowModal;
    finally
      Release;
    end;
    Maintenant si tu veux l'ouvrir avec Show et non avec ShowModal alors fais ceci (mais je suis vraiment pas certain que ça va marcher ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TFicheQueTuVeuxOuvrir.Create(Application).Show;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFicheQueTuVeuxOuvrir.FormClose(...);
    begin
      Release; // j'ai très peur de ça en fait
    end;

  3. #3
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    J'ai pris le "risque" de tester pour toi !

    Ca fonctionne bien... Enfin en tout cas, ça ne plante pas !
    De là à dire que ça pose pas de problème en mémoire...

  4. #4
    Membre confirmé
    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
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Juste pour un détaille.
    Si vous avez peur de mette realease dans le forme close (mois aussi j'aurais peure), pourquois ne pas mettre CaFree dans la propriété action du form close.

    Nota:
    Formclose est un TCloseEvent, il posséde don une propriété action. voir ci dessous.

    TCloseEvent = procedure(Sender:TObject;var Action:TCloseAction)of object;
    TCloseAction comprend les valeurs suivantes :
    caNone La fiche n'est pas autorisée àse fermer et rien ne se passe.
    caHide La fiche n'est pas fermée,juste cachée.L'application peut toujours accéder àla fiche.
    caFree La fiche est fermée et toute la mémoire allouée àla fiche est libérée.
    caMinimize La fiche est réduite,pas fermée.

  5. #5
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    En effet j'ai vérifié ta solution est bien meilleure. Mais comme j'étais sceptique (je pensais que par défaut c'était déjà caFree), j'ai vérifié :
    Citation Envoyé par Aide Delphi
    Si une fiche est une fiche enfant SDI, l'action par défaut est caHide.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFormQueTuVeuxAfficher.FormClose(...);
    begin
      Action := caFree;
    end;
    Bien joué Jean-François

  6. #6
    Membre confirmé
    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
    Points : 576
    Points
    576
    Par défaut
    Re bonjour,

    j'ai essayer d'ajouter un ShowWindow dans le on show d'une forme.
    Cela semble régler le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShowWindow(Handle, SW_NORMAL) ;
    En l'ocurence vous devriez utilise SW_MAXIMIZE pour "maximizer" la forme.

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour à Tous,

    En fait par souci de clarté pour exposer mon blème, j'avais omis de vous indiquer que je créais ma Form secondaire via un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if MaForm=nil then Application.CreateForm(TMaForm,MaForm);
        MaForm.Show;

    Bestiol écrivait :
    J'ai pris le "risque" de tester pour toi !

    Ca fonctionne bien... Enfin en tout cas, ça ne plante pas !
    De là à dire que ça pose pas de problème en mémoire...
    Merci pour ton acte de bravoure au combat

    Mais il ne me fallait absolument pas une ouverture en Modal, c'est pour cette raison que je l'ouvrais comme indiqué ci-dessus ===> if MaForm=nil then...

    Or la seule chose pas trop mauvaise pour la fermer était :

    sjrd écrivait :
    Maintenant si tu veux l'ouvrir avec Show et non avec ShowModal alors fais ceci (mais je suis vraiment pas certain que ça va marcher :
    J'ai bien testé sous toutes les coutures au moins une cinquantaine de fois ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TFicheQueTuVeuxOuvrir.Create(Application).Show;
    Avec le couple de fermeture :
    Et c'est

    Je pensais à tout mais pas à regarder du côté de cette procédure d'ouverture autre que if MaForm=nil then...

    Autrement dit, je pense que mon blème venait du point de vue que :
    - Lorsque je fermais la fiche secondaire en état de Minimize via le :
    ce code ne libérait pas les ressources, alors ressources non libérées et si ensuite un clic sur la procédure de CreateForm... ;o(

    Je précise qu'avec tout ceci j'ai enfin la libération de ressources, dans tous les cas de fermeture de cette fiche secondaire : Maximize ou Minimize.

    Merci à tous et particulièrement à sjrd et Jean-François et surtout bravo !

    PS : Oupssss je viens de voir le complément de réponses et je regarde...

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Re bonjour,

    Citation Envoyé par Tardiff Jean-François
    Re bonjour,

    j'ai essayer d'ajouter un ShowWindow dans le on show d'une forme.
    Cela semble régler le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShowWindow(Handle, SW_NORMAL) ;
    En l'ocurence vous devriez utilise SW_MAXIMIZE pour "maximizer" la forme.
    Là Jean-François, tu me donnes une autre cartouche.
    Oui je viens de tester et c'est également impec !

    Enfin je vais aussi savoir comme directement relancer ou lancer la Form toujours en Maximize.

    Mais je suis super content pour tout ça (plus haut), car il me fallait aussi une libération fiable des ressources de cette fiche secondaire, ce qui me permet désormais de renvoyer une routine via le OnClose enfin detected.

    Merci encore !

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

Discussions similaires

  1. [CF]Comment faire une fiche de "Contact" ?
    Par yannick_frere dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 13/11/2006, 20h50
  2. [Access 2003]Comment créer une fiche commande?
    Par steeves5 dans le forum Access
    Réponses: 5
    Dernier message: 16/05/2006, 10h17
  3. [Langage] Comment importer une fiche de calculs ?
    Par fonlay dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 10/05/2006, 15h01
  4. Réponses: 18
    Dernier message: 03/11/2005, 13h00
  5. Comment afficher une fiche dans une autre fiche ?
    Par psidonio dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2005, 23h22

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