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 :

Se passer de TDataSource ?


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut Se passer de TDataSource ?
    Bonjour,

    Chaque fois que j'écris un programme FMX se connectant à une Base de Données je me pose cette question.
    Pour une table ou une requête je suis souvent obligé d'y associer un TDataSource soit pour passer des paramètres soit pour obtenir les évènements par exemple:

    OnStateChange pour activer/désactiver des boutons.
    Nom : Capture.PNG
Affichages : 211
Taille : 10,6 Ko
    En effet quand on regarde le BindNavigator les boutons de celui-ci sont "réactifs" or je ne vois pas comment lier la propriété Enabled à des boutons "ordinaires" sauf à coder l'évènement OnStateChange du TDataSet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TApposition.DSApposeStateChange(Sender: TObject);
    var btnEnabled : Boolean;
    begin
    btnEnabled:=DSAppose.State in [TDataSetState.dsEdit,TDataSetState.dsInsert] AND Datas.CanModify;
    btnOk.Enabled:=btnEnabled;
    btnCancel.Enabled:=btnEnabled;
    BtnOk.Visible:=Datas.CanModify;
    BtnCancel.Visible:=Datas.CanModify;
    end;
    Ce que je me pose comme question est "suis-je trop habitué aux programmes VCL et ai-je raté quelque chose au niveau des Livebindings ?"
    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

  2. #2
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    ah, tiens, bonne question ça, tu as un cas particulier sur lequel on pourrait se pencher ? je dois admettre que je ne me suis pas posé la question depuis longtemps, bossant peu sur des projets avec des bases de données à titre personnel

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Grosso modo tu as toutes les infos, tout est dans ma capture ou presque
    Soit une simple table que l'on veut pouvoir modifier (dans mon cas elle se nomme APPOSE et c'est une table d'une BDD Firebird mais peu importe)

    Donc je pose un FDConnection, un FDQuery et mes zones d'éditions
    Ensuite je procède aux liaisons entre les zones d'éditions et les colonnes de la table
    Solution a : Poser un BindNavigator pour avoir les boutons seulement ils sont moches et fixes dans le sens où le dessin n'est pas modifiable (en fait ce sont des TPaths inscrit en constante) mais ils sont réactifs (enabled/disabled) . Ce n'est pas un composant dont on peut modifier le style. À moins de poser un BindNavigator par bouton mais c'est quand même pas très beau (voir les deux boutons du bas) et cela fait un lien par bouton

    Nom : Capture.PNG
Affichages : 191
Taille : 14,6 Ko

    Solution b : utiliser des TButton ou autre xxxButton mais je ne vois pas (à part via le DataSource) comment gérer cette "réactivité" via Livebindings.


    Autre cas deux querys en relations maitre-détail la seconde étant un sorte de SELECT * FROM TABLEDETAIL WHERE ID_MAITRE=:ID (detail ayant pour mastersource la première requête. Idem, part en utilisant le DataSource je ne vois pas. Il y a bien un BindParams que je n'ai pas étudié mais je ne crois pas que cela ait un rapport avec les paramètres d'une requête
    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
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    cela ne reviendrait il pas a ecrire un composant observable ?

    voir ici
    Tuto serge girard sur developpez
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    me renvoyer mon tuto bon, cela étant il est vrai que je relis très souvent ceux-ci qui sont en fait des sortes de carnets de développement.

    Effectivement, en théorie, il serait possible de créer un sorte de TDBNavButton qui serait personnalisable à souhait
    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
    Membre actif Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Mars 2019
    Messages : 213
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par SergioMaster Voir le message

Discussions similaires

  1. Passer un projet de la version 6 à la version 7
    Par clisson dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/02/2003, 11h37
  2. Passer de la zone d'édition vers une instruction sql
    Par tripper.dim dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 14h44
  3. pk passer de mysql à postgre
    Par pioums dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 03/10/2002, 10h31
  4. Passer du Pascal à Delphi
    Par poppels dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2002, 21h07
  5. Passer en mode 800*600
    Par flavien tetart dans le forum Assembleur
    Réponses: 8
    Dernier message: 30/05/2002, 23h05

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