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 :

Débutant conception d'un petit projet


Sujet :

Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Débutant conception d'un petit projet
    Bonjour tout le monde !

    Voilà, je suis débutant en programmation orientée objet et donc j'aimerais profiter de ce forum afin d'avoir de l'aide quand je cale.
    Je remercie d'avance toute la communauté.

    Donc, en fait, ici j'ai une série de "Tedit" qui comprennent des chiffre ; j'appuie sur un bouton et ça les envoie dans une listbox
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TFPrince.BtnverslisteClick(Sender: TObject);
    var sttemp : string [200];
    begin
    sttemp := edtn1.Text+','+edtn2.Text+','+edtn3.Text+','+edtn4.Text+','+edtn5.Text+','
              +edtn6.Text+','+edtn7.Text;
    Lbliste.Items.Add(sttemp);
    Là, c'est nickel .
    Ma question est que je ne sais pas comment faire l'inverse !
    Prendre une série de la listbox et la réintégrer dans les Tedits !

    Voilà

    Bien à vous !

  2. #2
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    bonjour,

    Evidemment analyser la string ce n'est pas facile.
    Je pense que vous devriez utiliser un "TStringList", ce qui vous permettra d'en récupérer les éléments.
    Voir la doc.

    PL

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour et bienvenue ,

    Bien sur indiquer votre version de Delphi serait un plus à ne pas oublier , j'en profite pour vous indiquer qu'il existe un moyen de mettre votre code entre balises qui permet une meilleure lisibilité en utilisant le bouton [#]

    je me suis amusé (pour réveiller mes neurones) un peu avec le "problème" et en voici une solution qui m'a permise de me remémorer la gestion de sélection dans un memo. Ce n'est pas optimum mais , c'est du vite fait (un peu comme on boit un café sur le bord d'une chaise, bistro)

    Soit une forme avec 5 Tedit, un Tmemo et un bouton, le bouton stocke les 5 valeurs des TEdits dans une ligne du mémo,
    un double-clic sur une des lignes du Tmemo remplit les valeurs

    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        Edit5: TEdit;
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Memo1DblClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var i : Word;
        SL : TStringlist;
    begin
    SL:=TStringList.Create;
    for i:=0 to ComponentCount-1  do
      if Components[i] is Tedit
        then SL.Add(TEdit(Components[i]).text);
    Memo1.Lines.Add(SL.CommaText);
    SL.Free;
    end;
     
    procedure TForm1.Memo1DblClick(Sender: TObject);
    var i,line,Nedit : word;
        SL : TStringList;
    begin
      Line := memo1.Perform(EM_LINEFROMCHAR, -1, 0) ;  // ligne en cours
      // mettre en évidence la ligne cliquée
      memo1.SelStart := memo1.Perform(EM_LINEINDEX, Line, 0) ; 
      memo1.SelLength := Length(Memo1.Lines[Line]) ;
      // vérifie que c'est pas une ligne vide
      if memo1.SelLength>0 then
           begin
             SL:=TStringList.Create;
             SL.CommaText:=memo1.Lines[line];
             Nedit:=0;  // numéro d'ordre du TEdit
             for i:=0 to ComponentCount-1  do
                if Components[i] is Tedit then
                  begin
                   // au cas où les composants Tedits ne seraient pas seuls en liste ;)  
                   TEdit(Components[i]).text:=SL[nEdit];
                   inc(nedit);
                  end;
              SL.Free;
           end;
    end;
     
    end.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour le tuyau.

    Comme je l'ai précisé je suis vraiment débutant !

    La version que j'utilise est une "XE5" c'est la seule que j'ai.

    Je vais essayer avec votre méthode mais je comprend pas le "SL : TStringList;"

    J'ai un message d'erreur aussi avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Line := memo1.Perform (EM_LINEFROMCHAR, -1, 0);  // ligne en cours
    Il me dit " l'expression constante dépasse les limites de sous entendu !" Donc le principe serait de selectionner la liste de chiffre dans le mémo , clicquer sur un btn et renvoyer cette liste dans les Tedits.

    Ce soir j'aurais un corrigé du bazzar avec certainement une autre méthode ("celle d'un prof") je partagerais !

    Bonne journée à toute et a tous !

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par djnightshop Voir le message
    Je vais essayer avec votre méthode mais je comprend pas le "SL : TStringList;"
    c'est la déclaration de la variable SL en TStringList, que je crée à l'exécution avec l'instruction SL:=TStringList.Create;
    j'utilise ensuite simplement la propriété Commatext d'un Tstringlist

    J'ai un message d'erreur aussi avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Line := memo1.Perform (EM_LINEFROMCHAR, -1, 0);  // ligne en cours
    c'est le -1 qui peut poser soucis , remplaçable par Memo1.SelStart
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Autre solution pour laquelle j'ai utilisé 1 bouton qui au cllick envoie la string des Edit's dans une Listbox puis au click sur une ligne de la Listbox fait l'inverse.
    Je n'ai utilisé que 3 Edits mais il suffit de compléter le code pour en augmenter le nombre à condition, en phase conception
    de poser les Edits edtn1, edtn2, etc dans l'ordre croissant sur la Form et de donner à leur propriété Tag la valeur de cet ordre croissant 1 pour edtn1, 2 pour edtn2, etc.

    A placer dans private :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private
        { Déclarations privées }
        procedure RecupVersEdits(var str: string);
      public
    Et dans Implementation :
    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
    var sttemp: string;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      sttemp := edtn1.Text + ',' + edtn2.Text + ',' + edtn3.Text; // etc si plus de 3 Edits
      Lbliste.Items.Add(sttemp);
    end;
     
    procedure TForm1.RecupVersEdits(var str: string);
    var i: integer; sn: string;
     
      function SubStr(var str: string): string;
      var po: integer;
      begin
        Result := Str;
        if str = '' then Exit;
        po := Pos(',', str);
        Result := Copy(str, 1, po - 1);
        Delete(str, 1, po);
        if po = 0 then begin Result := Str; str := ''; end;
      end;
     
    begin
      if str = '' then Exit;
      for i := 0 to ComponentCount - 1 do
        if (Components[i] is Tedit) then begin
          case (Components[i] as Tedit).tag of
            1: begin edtn1.Text := SubStr(str); edtn1.Update; end;
            2: begin edtn2.Text := SubStr(str); edtn2.Update; end;
            3: begin edtn3.Text := SubStr(str); edtn3.Update; end;
            // etc si plus de 3 Edits
          end;
        end;
    end;
     
    procedure TForm1.LbListeClick(Sender: TObject);
    begin
      sttemp := Lbliste.Items[Lbliste.ItemIndex];
      RecupVersEdits(sttemp);
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. [N-Tier] Débutant - Besoin d'aide sur un petit projet à visée autodidacte
    Par glamdrick dans le forum Autres
    Réponses: 3
    Dernier message: 11/02/2015, 11h31
  2. Quel EDI pour un petit projet de débutant
    Par sevyc64 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 18/04/2011, 03h14
  3. [Débutante] Conception
    Par bolo dans le forum Assembleur
    Réponses: 14
    Dernier message: 25/11/2004, 03h40
  4. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48
  5. [Débutant][Conception] LIFO et Iterator
    Par Wisefool dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 05/05/2004, 13h50

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