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 :

Comment créer des dbctrlgrid avec dbtext dynamiquement


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 33
    Points : 17
    Points
    17
    Par défaut Comment créer des dbctrlgrid avec dbtext dynamiquement
    Bonjour à tous,
    Je suis un peu débutant sur delphi, j ai voulu créé une petite application, ou j ai besoin de créer d'une manière dynamique un dbctrlgrid(1 ligne et 3 colones) avec un dbtext. Le problème c'est que tout fonctionne bien sauf que le dbtext n est apparu que sur le premier panel de dbctrlgrid, et pas sur l ensemble des panels, j ai pensé à la valeur parent de dbtext:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dbtext1 := tdbtext.create(dbctrlgrid1);
    Dbtext1.parent := dbctrlgrid1;
    Mais ca marche pas, je ne sais pas quoi lui attribué comme valeur, merci d'avance pour toute petite idée. Bonne soirée

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    C'est surtout étrange comme besoin le Tdbctrlgrid est justement pour conçu pour éviter de gérer cela manuellement

    Force un Grid.Invalidate();
    Il ne doit pas comprendre qu'il faut qu'il dessine le composant les autres Panels

    As-tu affecté aussi le DataSource et DataField
    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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    merci ShaiLeTroll pour ta réponse, malheureusement ça marche toujours pas avec invalidate, sinon je vous explique mon problème:
    j ai différentes catégories du plat, et on a des menus:
    un menu peut avoir 2 pizza au choix par exemple, 1 boisson et 1 dessert, donc pour ce menu là, j ai besoin d'un dbctrlgrid pour choisir la première pizza, et un autre dbctrlgrid pour choisir la 2eme pizza et encore 2 dbctrlgrid pour choisir la boisson et le dessert, sachant que le menu change de catégorie et de nombre de plat, et si vous avez une autre solution pour ce problème c'est avec un grand plaisir

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Ton code génére des Tdbctrlgrid à la volée, Ok, je comprends mieux

    Est-ce que le Panel d'un dbctrlgrid est le même pour pizza, boisson ou dessert ?
    il y a un :
    - DBEdit Nom (Reine, Calzone | Soda, Limo, Eau | Glace, Cookie)
    - DBImage, comme dans la démo FMX de Thierry Laborde qui gère justement une Pizzeria
    - DBCombo pour la Taille (Junior, Senior | 33cl 1,5L | 100ml, 500ml), ...

    Tu peux faire une TFrame (oui, j'ai osé) ou alors une TForm ancrée (BorderStyle bsNone et Parant ...)

    Dans la TFrame\TForm, tu designe un Tdbctrlgrid pouvant gérer un élément générique, tu joue sur Visible si tu veux caché certains DBControls
    Tu affecte le bon DataSource et les bon DataField pour utiliser la bonne table \ bonne colonne (rien à faire si tout est dans la même)
    C'est plus simple que de vouloir tout positionner par Code !
    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    merci encore mais malheureusement j'ai besoin des composants qui permette la rapidité d'utilisation avec les clic(comme les bouton, ou panel..etc), voila un exemple qui genere le meme probleme que le mien:

    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
    procedure TfrmMenuPlat.FormCreate(Sender: TObject);
    var
    requette1: TQuery;
    DSrequette1: TDataSource;
    DBCtrlGrid1: TDBCtrlGrid;
    DBText1: TDBText;
    SqlQuery: String;
    begin
     
        //requette sql
        requette1 := TQuery.Create(frmMenuPlat);
        requette1.DatabaseName := 'rolin';
        requette1.Close;
        requette1.SQL.Clear;
        SqlQuery := 'SELECT Code_plat, Nom FROM plats WHERE Code_catégorie = 3';
        requette1.SQL.Add(SqlQuery);
        requette1.ExecSQL;
        requette1.Active := true;
     
        //datasource
        DSrequette1                 := TDataSource.Create(frmMenuPlat);
        DSrequette1.DataSet     := requette1;
     
     
        DBCtrlGrid1                  := TDBCtrlGrid.Create(self);
        DBCtrlGrid1.Parent        := frmMenuPlat;
        DBCtrlGrid1.Top           := 80;
        DBCtrlGrid1.Left           := 50;
        DBCtrlGrid1.RowCount    := 1;
        DBCtrlGrid1.ColCount     := 5;
        DBCtrlGrid1.Width         := 800;
        DBCtrlGrid1.Height        := 60;
        DBCtrlGrid1.DataSource := DSrequette1;
     
        DBText1                 := TDBText.Create(self);
        DBText1.Parent       := DBCtrlGrid1;
        DBText1.Top           := 5;
        DBText1.Left           := 5;
        DBText1.Width         := 140;
        DBText1.Height        := 60;
        DBText1.DataSource := DSrequette1;
        DBText1.DataField    := 'Nom';
     
    end;

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut


    Citation Envoyé par kameleon80 Voir le message
    merci encore mais malheureusement j'ai besoin des composants qui permette la rapidité d'utilisation avec les clic(comme les bouton, ou panel..etc),

    J'ai l'impression que tu n'as rien compris à ce que j'ai proposé

    Ma proposition à base de TForm\TFrame ne pose aucun problème d'ergonomie et même permettra peut-être un meilleur confort en activant les TabStop\TabOrder !

    Comme tous les plats sont dans la même table, il est donc évident que tu peux donc faire une TFrame contenant une TDBCtrlGrid prédéfini en DesignTime, tu n'aurais que la TFrame à créer et pas le contenu


    Tu n'utiliserais pas une TDBCtrlGrid pour n'afficher qu'une colonne et qu'un seul DBEdit !
    Si tu n'as pas d'élément comment une TDBImage, une TDBGrid ou même une TDBLookupComboBox est largement suffisante !
    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/05/2010, 10h54
  2. comment créer des pages avec le c
    Par litle-hacker dans le forum C
    Réponses: 8
    Dernier message: 21/07/2008, 17h34
  3. Comment créer des onglets comme avec Excel (sheet1/sheet2)
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/09/2005, 16h36

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