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 :

Comment créer un Tbutton?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Par défaut Comment créer un Tbutton?
    Disons que je voudrais créer un Second Tbuton nommé bout lorsqu'on clique sur boutton1.
    J'ai essayé cela mais marche pas affiche rien du tout :
    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
    var
      Form1: TForm1;
      bout: Tbutton;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      bout:= tbutton.Create(self);
      bout.Left:= 400;
      bout.Top:= 150;
      bout.Visible:= true;
    end;
    Comme l'a deja dit la petite marionnette Pinocchio : "Il doit me manquer klk chose klk part!!! Mais quoi???"
    Merci de m'eclairer

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    bout:= tbutton.Create(Self);
    bout.Parent := Self;
    bout.Left:= 100;
    bout.Top:= 150;
    bout.Visible:= true;
    end;
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Par défaut
    Nikel! ça fonctionne mais à quoi sert bien cette ligne :
    ??????

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Cela indique ,

    Le parent (Ici le Form) du contrôle (le bouton) contenant le contrôle:

    C'est indispensable pour que le bouton s'affiche sur la form

    Le bouton est lié au form si tu detruit la form le bouton et tous les objets de la form sont détruit avec...

    si tu créer la form le bouton se crée automatiquement..

    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Par défaut
    Okay... je ne comprend pas tres bien le tout mais disons que je vais l'accepter vu que ça marche.
    By the way: merci User

    Autre question du meme genre mais qui me declanche une exception du type ErestNotFound.
    J'aimerai créer une Tform nommé myform qui contiendrait bout si on clique sur bouton1.
    Voici mon code :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
        TMyform1 = class(TForm)
        Bout: TButton;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
     
     
    var
      Form1: TForm1;
      myform1: TMyform1;
      bout: Tbutton;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    myform1:= Tmyform1.Create(nil);
    myform1.bout:= tbutton.Create(self);
    bout.Parent := Self;
    //bout.Left:= 400;
    //bout.Top:= 150;
    bout.Visible:= true;
    bout.Caption:= 'yep!';
    myform1.Show;
    end;

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Cette fois ci le parent de bout est myform1 qui est du type TForm..


    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
     
     
    var
      Form1: TForm1;
      myform1: Tform;
      bout: Tbutton;
     
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    myform1:= Tform.Create(nil);
    bout:= tbutton.Create(myform1);
    bout.Parent := myform1;
    bout.Left:= 100;
    bout.Top:= 150;
    bout.Visible:= true;
    myform1.Show;
    end;
    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut

    Citation Envoyé par User
    Cela indique ,

    Le parent (Ici le Form) du contrôle (le bouton) contenant le contrôle:

    C'est indispensable pour que le bouton s'affiche sur la form

    Le bouton est lié au form si tu detruit la form le bouton et tous les objets de la form sont détruit avec...
    +1
    Citation Envoyé par User
    si tu créer la form le bouton se crée automatiquement..
    là je ne suis pas sur de capter, pourrais tu préciser ce que tu entends pas là ?

  8. #8
    Expert confirmé

    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 : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Attention ! Pour créer une TForm qui ne possède pas de DFM associé, il faut utiliser CreateNew et non Create !
    C'est cela qui provoque l'erreur EResNotFound.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  9. #9
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Citation Envoyé par sjrd
    Attention ! Pour créer une TForm qui ne possède pas de DFM associé, il faut utiliser CreateNew et non Create !
    C'est cela qui provoque l'erreur EResNotFound.
    Tu veux dire pour "créer une classe hérité de TForm qui ...", car on peut créer une instance de TForm sans soucis avec Create ... mais pas d'une classe héritée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    constructor TCustomForm.Create(AOwner: TComponent);
    begin
    ... 
        if (ClassType <> TForm) and not (csDesigning in ComponentState) then
    ...
              raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
    ...
    end;
    Ensuite, j'ai vu de l'amalgame ...

    Il y a le TComponent, qui introduit la notion du Owner (passé en général en paramètre au Create), c'est ce Owner qui lorsqu'il sera libéré, libéra ses Components ...

    Il y a le TControl, qui introduit la notion de Parent qui défini dans quel Control, le nouveau Control sera inséré (voir les Handles et la Gestion des Controles de Windows ...), et on a accès à la liste Controls ...

    C'est deux choses difféntes :
    - La liste Controls contient les Objets dépendant visuellement (imbrication) de leur parent
    - La liste Components contient les Objets dépendant logiquement (mémoire) de leur propriétaire (Owner)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.boutfree(sender: TObject);
    begin
      if Assigned(myform1) then
      begin
        myform1.release;
        myform1 := nil; // on oublie le pointeur, la libération va se faire dès que possible grace au release ...
      end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Par défaut
    ça fonctionne deja un peu mieux!
    Dès que l'on crée une seconde myform1 marche plus!

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Par défaut
    C bon!!! On arrete tout
    Je ne faisais que tester sur une toute nouvelle application.

    Je viens de rentrer en prod .... .... et .... comment dire..... TOUT PLANTE!!!

    En fait voila comment est sencé etre mon vrai code :
    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
    procedure boutfree1;
    begin
      if Assigned(myform1) then
      begin
        myform1.release;
        myform1 := nil; 
      end;
    end;
     
     
    procedure popup;
    begin
    try
    count:= count + 25;
    myform1:= Tform.Createnew(application);
    myform1.Height:= 220;
    myform1.Width:= 370;
    myform1.Top:= 300 + count;
    Myform1.left:= 600 + count;
    BoutFree:= tbutton.Create(myform1);
    BoutFree.Parent := myform1;
    BoutFree.Left:= 265;
    BoutFree.Top:= 145;
    BoutFree.Caption:= 'Close';
    boutfree1;
    BoutAdd:= tbutton.Create(myform1);
    BoutAdd.Parent := myform1;
    BoutAdd.Left:= 170;
    BoutAdd.Top:= 145;
    BoutAdd.Caption:= '+1 Hour';
    ...
    Vous voyez le genre!
    La procedure PopUp doit se lancer à un moment précis.... Dès qu'on y arrive exception EAccessViolation

  12. #12
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut
    Voilà la réponse à la demande initiale :
    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
     
    var
      Form1: TForm1;
      bout: Tbutton;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      bout:= tbutton.Create(form1);
      bout.Left:= 0;
      bout.Top:= 0;
      bout.Parent := form1 ;
      bout.Visible:= true;
    end;

  13. #13
    Expert confirmé

    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 : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Tu veux dire pour "créer une classe hérité de TForm qui ...", car on peut créer une instance de TForm sans soucis avec Create ... mais pas d'une classe héritée ...
    Euh oui c'est ça
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  14. #14
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Euh, c'est ton BoutFree qui m'étonne, ce n'était pas un gestionnaire de OnClick, tu libère un objet en cours de manipulation c'est dommage non ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Euh, c'est ton BoutFree qui m'étonne, ce n'était pas un gestionnaire de OnClick, tu libère un objet en cours de manipulation c'est dommage non ?
    Le boutfree sert à fermer le popup.
    D'autre Tbutton suivent qui sont plus utiles.

    Est ce que le code est sencé resté juste si l'on change les procedure onclick en procedure simple comme je viens de la faire?

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

Discussions similaires

  1. [FLASH 5] Comment créer un lien hypertexte
    Par ajit dans le forum Flash
    Réponses: 4
    Dernier message: 30/03/2006, 12h26
  2. Comment créer des barres de Menu ?
    Par MoKo dans le forum IHM
    Réponses: 5
    Dernier message: 30/07/2003, 14h58
  3. Comment créer un nouveau dossier par programmation ?
    Par annecyrond dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2003, 07h59
  4. Comment créer et executer un .EXE
    Par maher12 dans le forum Flash
    Réponses: 3
    Dernier message: 26/09/2002, 08h33
  5. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

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