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 :

Aide pour réaliser un simulateur de détection des pannes dans le protocole PROFIBUS


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Aide pour réaliser un simulateur de détection des pannes dans le protocole PROFIBUS
    Salut tous le monde, je suis entrain de réaliser un simulateur pour détécter les pannes dans le réseau local industriel en utilisant le protocole PROFIBUS, ce protocole contient des machines maîtres et des machines esclave chaque maître peut accéder à ses esclaves via un bus s'il a le jeton pour accéder au bus pour cela je crée lors l’exécution des bouton comme étant des maîtres et pour les esclave la même chose alors je veux savoir comment faire pour ajouter des événements au boutons dynamiques que je crée lors l’exécution et aussi je veux savoir comment je peux énumérer les boutons que je crée pendant l’exécution afin de pouvoir après faire ma structure de données pour représenter le réseau et lancer l'algorithme de détection de pannes. Vous trouvez ci-dessous le code de l'application que je réalise.
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, ComCtrls, Menus, XPMan;
     
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Button2: TButton;
        MainMenu1: TMainMenu;
        Fichier1: TMenuItem;
        Fermer1: TMenuItem;
        Apropos1: TMenuItem;
        StatusBar1: TStatusBar;
        Button1: TButton;
        Button3: TButton;
        GroupBox1: TGroupBox;
        XPManifest1: TXPManifest;
        Button4: TButton;
        Memo1: TMemo;
        Button5: TButton;
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
            drawing:boolean;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
     
     
    {$R *.dfm}
     
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var but:TButton ;
      sha:tshape;
    begin
     
    if Statusbar1.SimpleText='Création maitre' then
    begin
    but:= TButton.Create(self); //self a la place de form
      but.Caption := 'Maitre';
      but.Width := 50;
      but.Height := 20;
      but.Top := y;
      but.Left := x;
      but.Visible := True;
     but.Parent := Form1; //ajouter aussi ça
    end;
     
    if Statusbar1.SimpleText='Création esclave' then
    begin
    but:= TButton.Create(self); //self a la place de form
      but.Caption := 'Esclave';
      but.Width := 50;
      but.Height := 20;
      but.Top := y;
      but.Left := x;
      but.Visible := True;
     but.Parent := Form1; //ajouter aussi ça
    end;
     
    if Statusbar1.SimpleText='Création bus' then
    begin
    sha:= Tshape.Create(self); //self a la place de form
      sha.Width := 150;
      sha.Height := 40;
      sha.Top := y;
      sha.Left := x;
      sha.Visible := True;
            sha.Parent := Form1;
     sha.Shape:=strectangle;
    end;
    if statusbar1.SimpleText='Création lien' then
    begin
     with form1.canvas do
      begin
        pen.width:=1;
      pen.color:=clblack;
        drawing:=true;
     
        moveto(x,y);
      end;
      end;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Statusbar1.SimpleText:='Création maitre';
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Statusbar1.SimpleText:='Création esclave';
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    Statusbar1.SimpleText:='Création bus';
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    memo1.Clear;
    end;
     
    procedure TForm1.Button5Click(Sender: TObject);
    begin
    Statusbar1.SimpleText:='Création lien';
    end;
     
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
     
    if statusbar1.SimpleText='Création lien' then
    begin
      If drawing
      then with form1 do
      begin
       // cursor:=crNone; {to keep cursor redraw from erasing part of our line}
        canvas.lineto(x,y);
      //  cursor:=crdefault;
      end;
     
      end;
    end;
     
    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    if statusbar1.SimpleText='Création lien' then
          drawing:=false;
    end;
     
    end.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 62
    Points : 61
    Points
    61
    Par défaut Evènements pour un bouton créé dynamiquement
    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
    Procedure MonButtonOnlick(Sender: TObject);
    Begin
    With Sender as TButton then
    //Evènement
    End;
     
    //Ton code
    but:= TButton.Create(self); //self a la place de form
      but.Caption := 'Esclave';
      but.Width := 50;
      but.Height := 20;
      but.Top := y;
      but.Left := x;
    // il faut ajouter
     But.OnClick:=MonButtonOnlick ; //procédure que tu dois ajouter
      but.Visible := True;
     but.Parent := Form1; //ajouter aussi ça
    end;
    A+

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par bm1990 Voir le message
    ... je veux savoir comment faire pour ajouter des événements au boutons dynamiques que je crée lors l’exécution...
    94340DB vous a donné le principe, je vais juste corriger une ligne : but.Parent := Self; //Form1;Et aussi celles là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sha.Parent := Self; // Form1;
    //...
    with Self.Canvas do  // with form1.canvas do
    //...
      if drawing
      then with Self do // form1 do
    De manière générale, ne pas utiliser une variable d'instance (Form1) de la classe (TForm1) dans une procédure de cette même classe, mais plutôt Self.
    Si vous créez une deuxième fiche de nom Form1Bis, votre code restera opérationnel...

    Citation Envoyé par bm1990 Voir le message
    et aussi je veux savoir comment je peux énumérer les boutons que je crée pendant l’exécution afin de pouvoir après faire ma structure de données pour représenter le réseau et lancer l'algorithme de détection de pannes.
    Tous ces contrôles (composants visuels) créés dynamiquement avec l'instruction *.Create(Self) sont référencés auprès de la fiche propriétaire, On peut donc les rechercher.
    Toutefois pour les identifier de manière univoque, il faut les nommer et ce de manière unique auprès de leur prorpriétaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    But.Name := 'Esclave' + IntToStr(Self.NbEsclaves);
    Inc(Self.NbEsclaves);
    On réalise la même chose pour les maîtres.
    On pourra par exemple ecrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i := 0 to Self.ControlCount -1 do
    begin
      if (Self.Controls[i] is TButton) and (Self.Controls[i].Name = 'Esclave5' then
        // Action voulue
    end;
    Philippe.

  4. #4
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Une autre question
    Merci 94340DB et surtout un grand merci à Ph. B., j'ai une autre question comment je peux par exemple rendre la propriété Enabled d'un Tbutton recherché à false par exemple le bouton Esclave5 que tu l'as utiliser pour me montrer l'exemple de recherche et merci une autre fois.

  5. #5
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Bonjour à tous,

    il suffit de faire comme Ph. B. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i := 0 to Self.ControlCount -1 do
    begin
      if (Self.Controls[i] is TButton) and (Self.Controls[i].Name = 'Esclave5' then 
      begin
        Self.Controls[i].Enabled:=false;
        break;
      end;
    end;
    Il y a aussi une autre possibilité : utiliser FindComponent(c'est peut être plus lent, les experts me diront)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TButton(FindComponent('Esclave5')).Enabled:=false;

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for i := 0 to Self.ControlCount -1 do
    var
      TheGoodButton: TButton;
    begin
      if (Self.Controls[i] is TButton) and (Self.Controls[i].Name = 'Esclave5' then
      begin
        TheGoodButton := TButton(Self.Controls[i]); // on récupère la référence sous forme de TButton et non simplement de son ancêtre TControl
        TheGoodButton.Enabled := False;
      end;
    end;
    ou, si les noms sont spécifiques de la classe de l'objet cherché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for i := 0 to Self.ControlCount -1 do
    begin
      if Self.Controls[i].Name = 'Esclave5' then
        with Self.Controls[i] as TButton do // as renvoie la référence sous le type désiré, sauf transtypage impossible
          begin
            Enabled := False;
            Show;
          end;
    end;
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for i := 0 to Self.ControlCount -1 do
    var
      TheGoodButton: TButton;
    begin
      if Self.Controls[i].Name = 'Esclave5' then
        begin
          TheGoodButton := Self.Controls[i] as TButton;
          TheGoodButton.Enabled := False;
        end;
    end;
    Delphi 5 Pro - Delphi 10.4 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Remerciement
    Citation Envoyé par Basile le disciple Voir le message
    Bonjour à tous,

    il suffit de faire comme Ph. B. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i := 0 to Self.ControlCount -1 do
    begin
      if (Self.Controls[i] is TButton) and (Self.Controls[i].Name = 'Esclave5' then 
      begin
        Self.Controls[i].Enabled:=false;
        break;
      end;
    end;
    Il y a aussi une autre possibilité : utiliser FindComponent(c'est peut être plus lent, les experts me diront)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TButton(FindComponent('Esclave5')).Enabled:=false;
    Merci beaucoup

  8. #8
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Remerciement
    Citation Envoyé par tourlourou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for i := 0 to Self.ControlCount -1 do
    var
      TheGoodButton: TButton;
    begin
      if (Self.Controls[i] is TButton) and (Self.Controls[i].Name = 'Esclave5' then
      begin
        TheGoodButton := TButton(Self.Controls[i]); // on récupère la référence sous forme de TButton et non simplement de son ancêtre TControl
        TheGoodButton.Enabled := False;
      end;
    end;
    ou, si les noms sont spécifiques de la classe de l'objet cherché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for i := 0 to Self.ControlCount -1 do
    begin
      if Self.Controls[i].Name = 'Esclave5' then
        with Self.Controls[i] as TButton do // as renvoie la référence sous le type désiré, sauf transtypage impossible
          begin
            Enabled := False;
            Show;
          end;
    end;
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for i := 0 to Self.ControlCount -1 do
    var
      TheGoodButton: TButton;
    begin
      if Self.Controls[i].Name = 'Esclave5' then
        begin
          TheGoodButton := Self.Controls[i] as TButton;
          TheGoodButton.Enabled := False;
        end;
    end;
    Merci beaucoup beaucoup tourlourou je vais pas encore marqué la discussion comme résolu afin de poser d'autres questions si j'ai puis je vais clôturer la discussion et la marquer comme résolu.

  9. #9
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut
    je veux savoir aussi comment affecter les propriétés d'un tcontrol à un autre tcontrol par exemple affecter les propriétés d'un checkbox à un autre checkbox

  10. #10
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par bm1990 Voir le message
    je veux savoir aussi comment affecter les propriétés d'un tcontrol à un autre tcontrol par exemple affecter les propriétés d'un checkbox à un autre checkbox
    Dans une même fiche, on peut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CheckBox2.Enabled := CheckBox1. Enabled;
    Button4.Caption := Button3.Caption;
    D'une fiche à une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormEsclave.Button1.Caption :=  FormMaitre.Button1.Caption;
    De la fiche courante vers une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Self.Label3.Caption := FormTierce.Label1.Caption; // on peut omettre Self
    if (Self.Controls[i] is TButton) and (Self.Controls[i].Name = 'Maitre' then
      FormEsclave.ButtonSoumis.Caption := TButton(Self.Controls[i]).Caption;
    On peut également affecter des objets. Attention, dans ce cas, on affecte l'instance de l'objet, on ne le duplique pas ! Le supprimer (par exemple) peut avoir alors des conséquences... plus ou moins désagréables.
    Philippe.

  11. #11
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut
    Merci beaucoup Ph. B je connais bien le code que tu m'as donner mais je cherche comment affecter tous les propriétés d'un tcontrol à un autre tcontrol d'une autre part pour le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm2.Button1Click(Sender: TObject);
    var i:integer;
    begin
    for i := 0 to form2.groupbox1.ControlCount-1 do
     
    if (form2.groupbox1.Controls[i] is Tcheckbox) then
     
    if form2.groupbox1.Controls[i].checked=true then
    showmessage('') ;
    end;
    il m'affiche que checked identificateur non déclaré comme un message d'erreur alors comment résoudre ce problème ?

  12. #12
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    bonjour à tous,

    il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if Tcheckbox(form2.groupbox1.Controls[i]).checked=true then showMessage('');
    Sinon delphi va penser que c'est un TControl et il ne possède pas cette propriété, il faut lui indiquer le type de l'objet en question...

  13. #13
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut
    ah d'accord merci pour le code alors selon ce que j'ai compris vous tcheckbox n'est pas un tcontrol ?

  14. #14
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Si, il descend de l'objet TControl mais TControl ne possède pas la propriété Checked, donc, il faut donner le type de l'objet que vous voulez utiliser.

  15. #15
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Dernière question
    Merci Basile le disciple, j'ai une dernière question je veux tracer des lignes pour les utiliser comme des lien j'ai le code mais je veux que mes lignes soient droites pas comme elles sont dans l'image suivante
    Nom : 1.JPG
Affichages : 159
Taille : 54,5 Ko

    je veux savoir comment tracer une ligne droite d'un point à un autre point par clique de souris et je remercie tous les membres qui m'ont aider c'est vraiment gentille de votre part.

  16. #16
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Je n'ai pas vraiment bien compris ta question :

    Si tu veux dessiner une ligne au click de la souris, je te propose ce code ci :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        PaintBox1: TPaintBox;
        procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure PaintBox1Paint(Sender: TObject);
      private
        { Déclarations privées }
        xold,yold : integer;
        bmp : TBitmap;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      xold:=x;
      yold:=y;
    end;
     
    procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      bmp.Canvas.MoveTo(Xold,Yold);   //dessin d'une ligne
      bmp.Canvas.LineTo(X,Y);
      Paintbox1.OnPaint(nil);
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bmp := TBitmap.Create;
      With bmp do
      begin
        Width:=paintbox1.ClientWidth;
        Height:=Paintbox1.ClientHeight;
      end;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      bmp.Free;
    end;
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    begin
      Paintbox1.Canvas.Draw(0,0,bmp);
    end;
     
    end.
    Sinon, si ce n'est pas ce que tu veux, donne moi d'autres explications...

  17. #17
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Remerciement
    Merci beaucoup Basile le disciple ton code est très utile j'ai pu fixer mon problème et merci à tout ce qui m'ont aider à réaliser ce simulateur.

  18. #18
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    de rien, si tu as d'autres problèmes, n'hésite pas, le disciple se fera une joie de t'aider (s'il le peut).

  19. #19
    Membre du Club
    Homme Profil pro
    Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Inscrit en
    Juin 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Tutulaire d'un Master Academique en Réseaux et Systèmes repartis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 227
    Points : 51
    Points
    51
    Par défaut Merci beaucoup
    Merci beaucoup Basile le disciple c'est très gentille de votre part.

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

Discussions similaires

  1. [XL-2007] Besoin d'aide pour réaliser des calcul dans mon usf
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/08/2014, 20h42
  2. [DW MX2004] Aide pour réaliser la page traitement_commande.php
    Par hoangeric dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 30/06/2007, 00h22
  3. demande aide pour réaliser mcd merise
    Par hugue dans le forum Schéma
    Réponses: 1
    Dernier message: 30/04/2007, 18h39
  4. Réponses: 5
    Dernier message: 22/02/2007, 13h09
  5. Réponses: 8
    Dernier message: 03/11/2005, 09h51

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