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

Windows Discussion :

[API] Supprimer un objet


Sujet :

Windows

  1. #1
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut [API] Supprimer un objet
    Bonjour à tous,

    je voudrais par API supprimer un objet. J'ai bien trouvé dans l'aide l'API "DeleteObject", mais je n'arrive pas à m'en servir.
    Citation Envoyé par API-Guide
    · hObject : Identifies a logical pen, brush, font, bitmap, region, or palette.
    ce hObject est le paramètre qui va avec l'API. mais je ne vois pas ce que c'est, ni comment l'obtenir à partir du nom de l'objet.

    Est-ce que quelqu'un a une idée?

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 951
    Points : 59 625
    Points
    59 625
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il s'agit du handle de l'objet.
    Ce handle a été renvoyé par la fonction qui a créé l'objet.

    Exemple d'un crayon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HandleCrayon := CreatePen(ps_Solid, 0, RGB(255,0,0));
    ...
    DeleteObject(HandleCrayon);

  3. #3
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Ok, mais... c'est quoi un crayon? Moi ce que je voudrais c'est supprimer un champ image de Windev 7... Je sais, je suis chiant, mais je débute .

    Il me faudrait un peu plus d'aide, parce que tout ce que je trouve comme aide sur Internet est en Anglais, et les textes de programmation traduits par des logiciels comme sur Trans.Voila donnent des trucs du style "Hwnd est la poignée...", un peu dur à comprendre, même quand on sait que Handle = poignée

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    deleteobject est pour un objet DGI, rien avoir avec ton pb.

    Pour ton pb, c'est directement lié au langage WinDev donc aucune idée

  5. #5
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Non, ce n'est pas lié à Windev, enfin je ne crois pas. En windev on peut aussi utiliser les API, et je suis sûr qu'en Windev il n'y a pas de fonction pour supprimer un objet. J'en suis sûr puisque j'ai épluché l'aide pendant au moins 3 heures à ce sujet...

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Quel genre d'objet veux-tu supprimer ?
    Tu as delete, free, DeleteObject, tous font du nettoyage.
    Tu peux aussi mettre une propriété "Visible" de l'objet (je ne sais pas si elle existe sous Windev, mais il doit y a avoir l'équivalent) à false, comme celà l'objet est caché.

  7. #7
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Pour le type d'objet, je l'ai precisé plus haut c'est un champ d'image. Mais pour la propriété Invisble, j'y ai pensé, mais je risque de me retrouver au bout d'un moment avec des milliers de champs images invisbles, soit énormement de mémoire vive. Je veux supprimer ce champ dans un but d'optimisation (indispensable)

    Sinon, pour Delete et Free, je ne les vois pas dans l'API-Guide. Et DeletObject, je n'arrive pas à m'en servir...

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu dis avoir des milliers de champs images invisibles, c'est donc que tu les crées quelque part avec un constructeur, donc tu dois pouvoir les détruire avec le destructeur correspondant (e.g. new => delete, malloc => free ...)

  9. #9
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Pour l'instant j'utilisais la fonction ChampClone de Windev, parce que je n'arrive pas à le faire par des API. Vus pouuriez me donner des exemples de création de champ image et de sa destruction?

  10. #10
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Désolé, ne connaissant pas WinDev, je ne peux pas t'aider.
    Dans la doc de Windev, il doit être indiquer comment on détruit les objets créés avec ChampClone tout de même ?
    Sur ce cher voilà ce que j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ChampClone permet de créer une copie de champs existant dans une fenêtre.
    
    L'inverse est possible par l'API
    
    AppelDLL32('user32','DestroyWindow',handle(cNomChamp))
    
    
    Limites : 
    - Pour les champs composés (tables, onglets...) cela ne marche pas ! il faudrait disposer du handle du composant (colonne, volet) et tester.
    - Impossible de réutiliser un champ cloné puis supprimé. Si l'API supprime le contrôle dans la fenêtre, le contexte fenêtre de WinDev n'est pas rafraîchit (le champ existe encore).
    Pas l'air terrible le "ChampClone"

  11. #11
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Mais le ChampClone est bien pratique. Je vais utiliser cette API. Maintenant ce que je n'arrive pasà faire c'est à trouver le handle de l'objet. En Windev il y a la fonction SysFenHandle qui donne le Handle d'une fenêtre à partir de son titre, mais je ne vois rien pour trouver le handle d'un objet à partir de son nom...

  12. #12
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    C'est bon, j'ai trouvé. Une fonction de Windev permet de trouver le handle d'un objet très simplement:
    Handle(<Nomdelobjet>)
    . Je pensais que cette fonction ne donnait que le handle des fenêtres, et je viens seulement d'avoir l'idée qu'elle pouvait s'appliquer à un objet!

    Donc merci à tous pour votre aide. Ca faisait 2 semaines que je cherchais à supprimer un objet dans mon programme! Encore merci!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/08/2006, 09h25
  2. Supprimer un objet de classe dans visual basic
    Par Access Newbie dans le forum Access
    Réponses: 4
    Dernier message: 02/08/2006, 20h26
  3. Comment supprimer des objets
    Par akrobat dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 17/06/2006, 11h48
  4. [debutant]Supprimer un objet instancié
    Par mikedavem dans le forum Général Java
    Réponses: 9
    Dernier message: 12/05/2006, 00h19
  5. Supprimer un objet
    Par ana2sb dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 20h34

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