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 .NET Discussion :

[D2005] question pour un champion!


Sujet :

Delphi .NET

  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 [D2005] question pour un champion!
    Hello again!

    J'ai une question asser sympas
    Disons qu'on place un nombre dans une Tedit1 et une chaine de caractere dans Tedit2.
    Le but serait d'obtenir une ligne dans une TlistBox qui serait divisé en deux :
    -une partie contiendrait le chiffre de Tedit1
    -l'autre la chaine de caractere de Tedit2

    Il faudrait repeter l'operation afin de pouvoir en creer plusieurs qui s'affichent dans TlistBox!

    Est ce que c'est possible?
    Merci d'avance!

  2. #2
    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
    Aucune reponse.... et je ne sais vraiment pas comment m'y prendre, j'ai pas mal cherché dans les aides et sur le net (comme d'ab) et ca finni par m'ennerver ...

    En realite je veux pouvoir ajouter plusieur champs tenant sur une ligne dans une TlistBox.
    Chaque ligne comprendra le meme nombre de champs et toutes les lignes seront distinctes.

    Je me suis dis que chaque ligne pourait etre represete par une classe. J'ai donc construi cette fameuse classe mais maintenant comment metre un objet par ligne!!!!

    Merci de m'aider .... siiiivouuuuuplééééééé!!!!

  3. #3
    Membre éclairé Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par défaut
    slt
    alors je suis pas sur d'avoir compris...mais je vais donner mon avis (il vaut ce qu'il vaut surtout que ton explication est vague)
    supposons ta listBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Ligne1Donnee1      Ligne1Donnee2
      Ligne2Donnee1      Ligne2Donnee2
      LigneNDonnee1      LigneNDonnee2
    apres tu peux t'y retrouver facillement (il te suffit de te fixer un nombre d'espace entre chaque donné de la meme ligne) et ensuite tu joue avec "Copy" "Delete" et "Pos" pour récupérer tes données.

    Exemple: si tu veux récupérer la premiere donnée de la ligne 2 tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      maDonnee1 := Copy(lisBox.item[2], 0, Pos(0,' ') -1);
    et hop le tour est joué...

    si tu veux la deuxieme valeur de la ligne 2 tu fais (en suposant que chaque donné est séparé par 3 espaces):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      maDonnee2 := Delete(lisBox.item[2], length(maDonnee1 + 3));
    et c'est gagné...enfin test c'est du code à la volé la ... est en plus y a peu etre plus simple mais moi, dsl, je suis compliqué dans ma tete

    Allé bon courrage et bon code

  4. #4
    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
    Exelent merci pour ta reponse

    De fait!!!! j'ai peut etre pas tres bien expliqué ce que je demandais.... c'est évident pour moi mais pour l'expliquer
    Imagine une Matrice ou toutes les lignes representerai un record.

    Je veux me retrouver avec un espece de tableau ou toutes les collonnes contiendrai un element de meme sorte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Byte1      String1     Integer1
    Byte2      String2     Integer2
    Byte3      String3     Integer3
    Le but final sera de traiter (créer,supprimer,modifier...) les lignes une par une!!!

    N'empeche que ce que tu viens de me dire est interessant
    Mais ça m'amenne à une autre question:
    Si j'ai une TlistBox à deux collonnes, quel est le code pour ecrire dans la collonne 1 : 'aaa' et dans la collonne 2 : 'bbb'

    J'ai lu que les collonnes par defaut sont égales à zero => y'a moyen de le faire!

    Thanx again!

  5. #5
    Membre éclairé Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par défaut
    ben en fait tu ne peux pas réellement définir plusieurs colonnes dans ta listBox (enfin pas à ma connaissance) mais tu peux tjs toujours les simuler en te fixant, comme je t'ai dit dans mon précédent post, un nombre fixe d'espace entre chacune de tes données.

    Voila un exemple d'écriture de ligne dans ta listBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       taListBox.Items.Add('aaa     bbb');
    enfin encore une fois la je sais pas si je répond à ta question

    bon courrage

    PS: si les TlistBox à plusieurs colonnes existent je suis preneur

  6. #6
    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
    Il est tout a fait possible de créer plusieurs collonnes ()
    Oui je creignais bien que tu me dises cela....
    Merci quant meme....

    Voila un exemple bien plus précis de ce que je cherche a faire :
    Nom : irlandebkg.jpg
Affichages : 95
Taille : 63,1 Ko

    Peut etre qu'il faut que j'utilise un objet different de TlistBox!!!!
    Mais je ne sais pas lequel. tu n'aurai pas un idée???

  7. #7
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    par rapport à ton image :
    TstringGrid ou TlistView

    J'ai mal compris ou tu veux réinventé la roue

  8. #8
    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
    Non... c'est juste que je debute en OO

    Enfin... je vais essayé cela des ce soir... je vais faire du 150 sur l'autoroute pour arrive le plus vite possible et passer des heures a lire les fonctions de ces objets

    Merci bcp RamDevTeam

  9. #9
    Membre éclairé Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par défaut
    Ah oui ta piece jointe aurait du etre mise depuis le début...ça aide.
    Mais en effet une listBox ne convient pas...Comme t'a dit RamDevTeam regarde le TstringGrid (ca me semble plus adapté)...
    BON COURRAGE ET DOUCEMENT SUR LA ROUTE

  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
    Jayceblaster

    P.S: Ta signature est vraiment exelente m'a bien fait rire

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Si on s'en tient au composant de base fourni dans delphi,
    Le TlistView à l'avantage de te permettre de gérer des images et différentes vue. Le Tlistview correspond au panel droit de l'explorateur windows.
    => Vues possibles : Detail, Liste, Petites ou grandes Icones.
    Pour les images, tu met tes icones dans un TimageList et tu l'associe au TlistView via l'éditeur de propriétés.

    Pour remplir un Tlistview :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var MyItem : TListItem;
    begin
      //ajout d'une ligne au treeview
       Myitem := MyListView.add;
       MyItem.caption := 'Texte de la premiere colonne';
      // pour les colonnes suivantes on se sert de la collection SubItems.
      MyItem.subitems.add('Texte de la 2eme colonne');
      MyItem.subitems.add('Texte de la 3eme colonne');
    end;
    Le TstringGrid est une grille simple chaque cellule ne contenant que du texte.
    si tu veux des grilles évolués (colonne triable), il doit y en avoir dans la JVCL ou la RXLib.

    Pour remplir un TstringGrid;

    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
    begin
       //pour chaque ligne, on écrit cellule par cellule. la premiere colonne est la "0"
     // la ligne "0" correspond à la ligne de titre (si FixedRow=1 et FixedCol=0)
     
       if nbElement_a_ajouter >1 then
         MyStringGrid.rowcount := nbElement_a_ajouter +1
      else
        MyStringGrid.rowcount := 2; //rowcount à 1 fait disparaitre la ligne de titre.
     
      for ilig:=1 to nbElement_a_ajouter do
      begin
        MyStringGrid.cells[ilig, 0] := 'Valeur colonne 1';
       //vérifier l'ordre dans l'aide col,ligne ou ligne,colonne
      MyStringGrid.cells[ilig, 1] := 'Valeur colonne 2';
      end;
    end;
    Bon dev.

  12. #12
    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
    Ta reflexion m'a fait penser a mon problem actuel :

    si tu veux des grilles évolués (colonne triable), il doit y en avoir dans la JVCL ou la RXLib.
    Est ce possible d'avoir une erreur de compilation type exeption outOf-klkchose (sorry, j'ai pas mon prog sous les yeux) pcq j'essaye d'entrer des données differentes (integer, string...) dans un TstringGrid??

    Je m'y prend peut etre mal... Mon but initial est d'afficher certains elements d'un ojet dans une ligne d'un tableau:
    Voici mon objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    MonObjet = class
                    a;integer;
                     b;integer;
                     c:string:
                     constructor create (x,y; integer ; z;string)
              End;
     
    Procedure MonObjet.create (x,y; integer ; z;string);
      begin
             a:=x;
             b:=y;
             c:=z;
      end;
    Par la suite, j'utilise l'objet pour ecrire dans le StrinGrind1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StringGrid1.cells[0, 1] := strToIn(MonObjet.a);
    StringGrid1.cells[1, 1] := strToInt(MonObjet.b);
    StringGrid1.cells[2, 1] := MonObjet.c;
    De la une exception m'envoie pettre ...
    Je ne vois pas tres bien ce qui plente mais possible qu'une fois encore TstringGrind n'est pas le bon objet a utiliser... et ma classe est surement fausse aussi...
    J'essaye de comprendre comment ca fonctionne en travaillant logiquement
    Maintenant si quelcun vois mon erreur... thx to help me!!

  13. #13
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MonObjet = class
                    a;integer;
                     b;integer;
                     c:string:
                     constructor create (x,y; integer ; z;string)
              End;
    Par la suite, j'utilise l'objet pour ecrire dans le StrinGrind1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StringGrid1.cells[0, 1] := strToIn(MonObjet.a);
    StringGrid1.cells[1, 1] := strToInt(MonObjet.b);
    StringGrid1.cells[2, 1] := MonObjet.c;
    Normal, le cellule du stringrid ne peuvent recevoir que des chaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    StringGrid1.cells[0, 1] := IntToStr(MonObjet.a);
    StringGrid1.cells[1, 1] := IntToStr(MonObjet.b);
    StringGrid1.cells[2, 1] := MonObjet.c;
    pour un date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StringGrid1.cells[0, 1] := DateToStr(MonTDateTime);
    Maintenant assure toi que MonObjet existe bien quand tu execute ce code.

  14. #14
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    j'avais lu un peu vite.
    effectivement ta classe est fausse :


    Pour faire simple :

    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
    type TMonObjet = Class
      private
           a : integer;
           b : integer;
           c : string;
      public
           constructor Create(p_a ,p_b:integer;p_c:string);
    
    end;
    
    implementation
    
    Constructor TMonObjet.Create(p_a ,p_b:integer;p_c:string);
    begin
      inherited create;
      a := p_a;
      b := p_b;
      c := p_c;
    end;
    Pour l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Test;
    var
      MonObjet : TMonObjet;
    begin
      MonObjet := Tmonobjet.create(1,5,'Bienvenue');
    end;
    Bon dev

  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
    C'est cool.... Je suis content pcq j'etais pas si loin que ca
    Mais pourquoi ajouter le "p_"

  16. #16
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Pourquoi ajouter le "p_"
    aucune incidence. Tu peux continuer à les appeler x,y,z ou autrement;

  17. #17
    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
    WOW WooW WOOOOOAWW
    Rien ne fonctionne!!!

    Apres avoir effectué les modification a la classe ; j'ai l'erreur [Erreur] ClasseTicket.pas(30): E2035 Pas assez de paramètres originaux.

    Il veut que je rajoute klk chose entre parenthese à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Constructor TMonObjet.Create(p_a ,p_b:integer;p_c:string);
    begin
      inherited create;  
      a := p_a;
      b := p_b;
      c := p_c;
    qui soit du type boolean sinon [Erreur] ClasseTicket.pas(30): E2010 Types incompatibles : 'Boolean' et 'Integer'

    J'ai testé true et false pour voir ce que ça donne bien sur ça ne va pas avec la déclaration de ma classe qui contient des integer et string en parametre

    qu'est ce qui cloche???? j'en sais rien!!! connais pas les classes.
    Personne n'a un tutoriel ou klk chose??
    J'ai mal à la tete.... je vais fermer mes yeux 10 minute

  18. #18
    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
    Me revoila tout motivé

    Le inherited create; me gene alors je l'ai viré et ça ne plente plus.... plutot cool.

    Et j'ai pris un exemple tout bete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      T1.create(1,2);  // T1 objet contenant juste deux integer
                        //  j'ai viré le string... et me retrouve a poil :)
      i:=t1.a;      // ou i est un integer
    Et bien ça plente [Erreur] Unit1.pas(48): E2361 Impossible d'accéder au symbole private ticket.a


    En cherchant sur le net j'ai trouvé cela :
    PRIVATE : permet de déclarer des variables, des procédures et des fonctions internes à la classe. De ce fait, aucune classe extérieure (parente ou enfante) ne peut agir sur cette section.
    Une fois la classe compilée, il n'y a plus aucun recours pour pouvoir modifier cette section (une dérivation de classe ne libère pas le contenu).
    Donc, si je veux utiliser mes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i:=t1.a    //a déclaré en private
    Il faut déclarer mes a et b ailleurs que dans private!!!!

    RamDevTeam? Es tu sur de ce que tu m'a donné comme conseille???

  19. #19
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Quelques précisions :
    c'est bien des erreurs à la compilation ?
    Ton unité est dans un projet delphi.net ou delphi 32 ?

    Je fais le code que je t'ai donné sur Delphi.Net, aucun pb.

  20. #20
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Pour l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Test;
    var
      MonObjet : TMonObjet;
    begin
      MonObjet := Tmonobjet.create(1,5,'Bienvenue');
    end;
    Code:
    T1.create(1,2); // T1 objet contenant juste deux integer
    Ne peux pas marcher.

    le create est une méthode la classe et non de l'objet.
    => visiblement, tu mélange un petit peu les classes et les objets.

    le code suivant est correcte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T1 := LeNomDeTaClasse.Create(1,2);
    Concernant la notion private / public
    Si tu accéde à ton unité depuis une autre unité, tu met tes attributs en public. si c uniquement depuis le même fichier .pas, tu peux laisser en private.

    RamDevTeam? Es tu sur de ce que tu m'a donné comme conseille???
    oui

    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
    constructor TmonObjet.Create(x,y : integer; z:string);
    begin
     a := x;
     b := y;
     c := z;
    end;
     
    procedure TForm3.bt_AddClick(Sender: TObject);
    var
      MonObjet : TMonObjet;
    begin
      MonObjet:=TmonObjet.create(1,5,'Test');
     
      stringgrid1.Cells[0,1] := inttostr( MonObjet.a);
      stringgrid1.Cells[1,1] := inttostr( MonObjet.b);
      stringgrid1.Cells[2,1] := MonObjet.c;
     
    end;
     
    procedure TForm3.FormShow(Sender: TObject);
    begin
      stringgrid1.Cells[0,0] := 'a';
      stringgrid1.Cells[1,0] := 'b';
      stringgrid1.Cells[2,0] := 'c';
    end;
    Le résultat est en miniature..

    Un autre conseils : http://delphi.developpez.com/cours/


    Bon dev
    Images attachées Images attachées  

Discussions similaires

  1. Question pour un champion -> redirection php
    Par autofill dans le forum Langage
    Réponses: 7
    Dernier message: 09/04/2009, 15h52
  2. Une question pour un champion
    Par yoann7638 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 26/06/2008, 10h04
  3. [Emission TV] Question pour un champion
    Par Le Pharaon dans le forum La taverne du Club : Humour et divers
    Réponses: 33
    Dernier message: 19/02/2007, 12h31
  4. Question pour un champion des div
    Par Zan dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 28/12/2006, 22h06

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