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 FMX Delphi Discussion :

Incruster des composants en FMX dans un TGrid


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 228
    Par défaut Incruster des composants en FMX dans un TGrid
    Bonsoir à tous,

    je me suis inspiré du web pour un code qui fonctionne bien pour la partie ComboBox.

    ce code insère un TComboBox dans une cellule de mon TGrid (relié à une base de données)
    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
     
    type THelpModelGrid = class(TGridModel);
     
    procedure TFormMain.ChangeGrid_NDFcomboBoxTypeFrais(Sender: TObject);
    begin
         Grid_NDF.BeginUpdate;
         try
             THelpModelGrid(Grid_NDF.Columns[3].Model).DoSetValue(Grid_NDF.col, Grid_NDF.row, TValue.From<String>(TCombobox(sender).Items[TCombobox(sender).ItemIndex]));
             Grid_NDF.Model.PostEditorValue;
             BindSrc_FDQ_NDF.DataSet.Edit;
             BindSrc_FDQ_NDF.DataSet.FieldByName('NDF_TypeFrais').AsString:= TComboBox(sender).Items[TCombobox(sender).ItemIndex];
             BindSrc_FDQ_NDF.DataSet.Post;
         finally
            Grid_NDF.EndUpdate;
         end;
    end;
     
    procedure TFormMain.Grid_NDFCreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl);
    begin
         if Column = Grid_NDF.Columns[3] then
         begin
              Control:= TcomboBox.Create(self);
              TComboBox(Control).Items.Add('Autres frais');
              TComboBox(Control).Items.Add('Carburant');
              TComboBox(Control).Items.Add('Courrier');
              TComboBox(Control).Items.Add('Etc');
              TCombobox(Control).ItemIndex:= TCombobox(Control).Items.IndexOf(THelpModelGrid(Grid_NDF.Columns[3].Model).DoGetValue(Grid_NDF.col, Grid_NDF.row).AsString);
              TComboBox(Control).OnChange:= ChangeGrid_NDFcomboBoxTypeFrais;
         end;
         if Column = Grid_NDF.Columns[0] then
         begin
              Control:= TDateEdit.Create(self);
              TDateEdit(Control).OnChange:= ChangeDate_NDF;
         end;
    end;
    je souhaite maintenant faire de même dans une autre colonne et y insérant cette fois un TDateEdit pour le choix d'une date.
    mais là je coince : avec ChangeDate_NDF :

    avec ce code j'obtiens une erreur comme quoi : l'ensemble de données n'est pas en mode edition ou insertion...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TFormMain.ChangeDate_NDF(Sender: TObject);
    begin
         Grid_NDF.BeginUpdate;
         try
             THelpModelGrid(Grid_NDF.Columns[0].Model).DoSetValue(Grid_NDF.col, Grid_NDF.row, TValue.FromVariant(TDateEdit(Sender).Date));
             Grid_NDF.Model.PostEditorValue;
             BindSrc_FDQ_NDF.DataSet.Edit;
             BindSrc_FDQ_NDF.DataSet.FieldByName('NDF_Date').AsString:= Grid_NDF.Cells[Grid_NDF.col,Grid_NDF.row];
             BindSrc_FDQ_NDF.DataSet.Post;
         finally
            Grid_NDF.EndUpdate;
         end;
    end;

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Ma première réaction : "Pourquoi Ducros il se décarcasse ?" (remplacer Ducros par Embarcadero ou Sergio).

    Le combobox c'est un type de colonne déjà fourni : TPopupColumn Sergio : voir tuto

    ou en utilisant un menu contextuel dans le même tuto mon tableau de pêche


    Quant aux dates, même réaction, il suffit de changer le type de colonne en TDateColumn tuto

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 228
    Par défaut
    bonjour Sergio,

    merci pour ces infos, je m'y penche...

    Bonne journée.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Si tu trouves un moyen d'utiliser la TPopupColumn de façon à remplir la colonne donnée en fonction de l'item index (ou autre valeur), j'en serais ravi, car je n'ai pas beaucoup "travaillé" ce truc
    Il y a bien sûr moyen de le faire, mais, dans mon idée, via les CustomFormat/ParseFormat des Livebindings cela risque d'être fastidieux
    Peut-être en ajoutant une fonction au moteur de LiveBindings, mais cela aussi, c'est plutôt ardu.

    Dommage que cela n'ait pas été prévu dans le TPopupColumn !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 228
    Par défaut
    Bonjour Sergio,

    pas de problème pour ta requête, en espérant avoir du temps.

    de mon côté, j'ai télécharger l'exemple que tu proposes et sur lequel je souhaite également travailler c'est celui-ci : https://github.com/ne0bot/delphi-sci...iantColumnDemo

    je ne dois pas être très réveillé, j'ai toute les peines du monde à faire fonctionner l'exemple, j'ai des erreurs dans FMX.VariantColumn.pas. (je l'ai placé dans le dossier du projet)

    peux-tu m'éclairer ?

    merci d'avance...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 228
    Par défaut
    Bonjour à vous,

    après analyse, le mixte entre mon code pour insérer la combobox (liste des types de frais) et configurer l'autre colonne en ColumnStyle = DateColumn me va très bien.

    j'étudierai une autre fois les autres cas.

    Merci pour ton aide...

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

Discussions similaires

  1. Placement des composants en ligne dans un JPanel !
    Par ateppaz dans le forum Composants
    Réponses: 1
    Dernier message: 17/06/2014, 16h16
  2. Insérer des composants graphiques dynamiques dans une JSP
    Par wafabrj dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 22/05/2012, 11h31
  3. appel des composants appartenants à page dans une autre
    Par mariooma dans le forum Silverlight
    Réponses: 1
    Dernier message: 04/12/2008, 22h52
  4. Réponses: 4
    Dernier message: 02/07/2004, 10h31
  5. [Delphi] Icone des composants dans la palette
    Par jacquesberger dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/04/2004, 15h42

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