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 :

Utilisation de composant sans Form est elle possible


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Points : 40
    Points
    40
    Par défaut Utilisation de composant sans Form est elle possible
    Bonjour a tous,
    je suis en train de developpe une DLL, celle ci ne contient pas de form et pourtant j aimerais utiliser les fonctions timer et jvsystem. Comment faire ?
    J avais de l habitude de travailler avec des Forms et donc de glisser le composant et de l attaquer dans le code, mais la pas de Form. Je suis bloque.

    Merci pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    yop
    essaye comme ca :
    var
    timer1 : Ttimer ;
    begin
    Timer1:=Ttimer.create ;

  3. #3
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Dit toi que tu peut utiliser a peut pres nimporte quoi sans avoir besoin d'une forme . Le systeme est relativement simple. Si tu a besoin d'un TComponent comme ancètre, tu passe un TComponent.create en paramètre
    De toutes les choses que j'ai perdue,
    Celle qui me manque le plus...
    c'est mon esprit !

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Tu peux effectivement créer dynamiquement des objets en Delphi (voir FAQ pour de plus amples infos)
    Par contre, n'oublie pas de les détruire quand tu décharge ta DLL
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    j ai un plantage lors du Run sur le timer1.Enabled:=true;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Ttimer.Create(Timer1);
      timer1.Enabled:=true;
      timer1.Interval:=1000;
    [/code]

  6. #6
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Var
    Timer1:TTimer;
    begin
    Timer1:= TTimer.create;
    Try
    Timer1.Enabled:=true;
    Timer1.Interval:=1000;
    Finally
    Timer1.free
    end;

  7. #7
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Timer1.Create(Timer1) n'est pas bon !!!
    fait plutôt Timer1 := TTimer.create
    De toutes les choses que j'ai perdue,
    Celle qui me manque le plus...
    c'est mon esprit !

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Hypollite76
    j ai un plantage lors du Run sur le timer1.Enabled:=true;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Ttimer.Create(Timer1);
      timer1.Enabled:=true;
      timer1.Interval:=1000;
    [/code]
    C'est pas bon comme ca.

    tu dois ecrire de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Timer1 := Ttimer.Create(self);
      timer1.Interval:=1000;
      timer1.Enabled:=true;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    merci a tous, cela fonctionne mieux avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Timer1 := Ttimer.Create(self);
    maintenant a quoi correspond le self ?

    Pour ce qui est du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Timer1:= TTimer.create;
    , lors da le compile j ai un message pas assez de parametres originaux.

    Vous allez me trouver chiant, mais comment avoir l equivalent de la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TForm1.Timer1Timer(Sender: TObject);
    puisque le timer1 ne fait pas partie de TForm1?

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Hypollite76
    merci a tous, cela fonctionne mieux avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Timer1 := Ttimer.Create(self);
    maintenant a quoi correspond le self ?
    Le self sert à dire au composant qu'il est son propre proprietaire (si je me trompe pas). Si tu avais mis panel1 (avec un panel existant) et que tu detruit ce panel, le timer sera lui aussi détruit.
    Alors qu'avec self, même si tu detruis le panel, le timer existera toujours
    l'exemple est pas super bien choisi, mais c'est l'idée qui compte.

    Pour ce qui est du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Timer1:= TTimer.create;
    , lors da le compile j ai un message pas assez de parametres originaux.
    Normal vu que create attend que tu lui passes un paramètre.

    Vous allez me trouver chiant, mais comment avoir l equivalent de la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TForm1.Timer1Timer(Sender: TObject);
    puisque le timer1 ne fait pas partie de TForm1?
    tu crées une procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      procedure Timer1Timer(Sender : TObject);
    et tu assignes a ton Timer1.onTimer := Timer1Timer

    Tu devrais te renseigner plus sur la création dynamique de composants avant de continuer ta DLL
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Le self correspond à l'entité responsable de la destruction du composant. en l'occurence, "Self" signifie que le TTimer est responsable de sa destruction.
    Pour avoir un composant créer dynamiquement et qui appartient à une form il faut rajouter
    Timer1.parent:=La forme qui sera le parent du Timer1.
    A ne pas confondre "le owner" celui qui détruit le composant et le "parent" celui qui le posséde et qui va gérer ses messages.
    Tu devrais jeter un oeil au cours qui t'ont été indiqué, je t'assure que ce ne sera pas du temps de perdu
    Cordialement,
    Hauwke

    PS: j'avais oublié le (self) dasn mon bout de code, sorry

  12. #12
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    Hauwke, tu me parles de cours
    Tu devrais jeter un oeil au cours qui t'ont été indiqué, je t'assure que ce ne sera pas du temps de perdu
    mais dans la FAq je ne trouve pas du tout et la je cherche dans les tutoriels.

  13. #13
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Décidément, je te prie de me pardonner. J'ai la tête dans le guidon aujourd'hui!
    Un cours complet fait par un enseignant, trés bien
    Ensuite prendre quelques bonnes résolutions:
    Télécharger la FAQ et la consulter systématiquement avant de se connecter au forum.
    Télécharger les sources et faire la mm chose qu'avec la FAQ.
    utiliser les "TO DO" peut de gens le conseille mais au début c'est une aide précieuse: Ecrire ce que tu veux faire avec des mots simples, étape par étape y compris
    iiii) rechercher dans la faq sur Owner, Parent
    iiiii) Chercher la déclaration générique d'un événement
    Etc
    Par exemple
    Au début, c'est un peu fastidieux, mais on trouve vite son retour sur investissement...
    Cordialement,
    hauwke

  14. #14
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Citation Envoyé par Hypollite76
    Pour ce qui est du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Timer1:= TTimer.create;
    , lors da le compile j ai un message pas assez de parametres originaux.
    Désolé . J'ai marqué ça a la va vite... il était pour moi evident que s'il y'avait besoin de paramère, le developpeur en action les aurais ajouté .
    De toutes les choses que j'ai perdue,
    Celle qui me manque le plus...
    c'est mon esprit !

  15. #15
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Ou bien il aurait noté sur sa TO DO LIST:
    iii) Vérifier la déclaration du constructeur de la classe TTimer et en faisant il aurait trouvé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public constructor Create(AOwner: TComponent);
    ce qui lui aurait permis de renvoyer:
    :trouve: je vais enfin pouvoir arrêter et à tous pour votre aide
    RIRES
    Cordialement,
    Hauwke

  16. #16
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    rebonjour a tous

    merci Hauwke pour l adresse des cours, je suis en train de le telecharger, et je vais me mettre a fond dedans.


    En attendant, j ai un autre souci,
    j ai cree la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      procedure Timer1Timer(Sender : TObject);
    et je realise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Timer1.onTimer := Timer1Timer
    et jai lors de la compile le fameux message
    • [Erreur] Unit1.pas(116): Pas assez de paramètres originaux



  17. #17
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    Essay Timer1.onTimer := @Timer1Timer... si ce n'est pas ça... Redéclare ton Timer1Timer dans ta Form1
    De toutes les choses que j'ai perdue,
    Celle qui me manque le plus...
    c'est mon esprit !

  18. #18
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    apres avoir essaye je compile et j ai
    • [Erreur] Unit1.pas(121): Types incompatibles : 'TNotifyEvent' et 'Pointer'
    oui mais puisque je nais de Form alors comment faire

  19. #19
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Citation Envoyé par Touche F1 IDE Delphi
    TTimer.OnTimer Evénement

    Se produit quand le temps spécifié par la propriété Interval s'est écoulé.
    Classe
    TTimer
    Syntaxe
    [Delphi] property OnTimer: TNotifyEvent;
    Description
    Ecrivez un gestionnaire d'événement OnTimer qui exécute des actions à intervalles réguliers.
    La propriété Interval détermine la périodicité des événements OnTimer. A chaque fois que l'intervalle spécifié s'écoule, l'événement OnTimer a lieu.

    Rubriques associées
    Interval
    C'est un événement, on teste s'il se produit et on écrit un gestionnaire qui fait réagir l'appli en conséqunce.
    La gestion des événements est dans le cours. Je te donne la formulation générale:
    Si mon composant a déclenché l'évenement "événement" alors fait ceci sinon fait celà.
    Cordialement,
    Hauwke

  20. #20
    Membre actif
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Points : 245
    Points
    245
    Par défaut
    ok... c'est pas un pb de pointeur alors...
    Créer une nouvelle class TMonTimer, par ex., et tu déclare ta procedure Timer1Time a l'interieur (en privé tant qu'a faire :p )
    De toutes les choses que j'ai perdue,
    Celle qui me manque le plus...
    c'est mon esprit !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 18
    Dernier message: 27/08/2010, 09h34
  2. Réponses: 7
    Dernier message: 17/07/2008, 09h32
  3. La modification du vote (étoile) du sujet est-elle possible ?
    Par pottiez dans le forum Evolutions du club
    Réponses: 1
    Dernier message: 04/05/2006, 21h48
  4. Comment utiliser un composant sans son nom ?
    Par aliwassem dans le forum Langage
    Réponses: 4
    Dernier message: 03/10/2005, 20h47
  5. une interpolation de forme est elle possible
    Par tetsuo chima dans le forum Flash
    Réponses: 3
    Dernier message: 07/10/2003, 16h31

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