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 :

Modifier la couleur de l'afficher TvrMatrix (TMS) avec un TButton et un TcolorDialog D6 et Windows 10 64 Bits


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut Modifier la couleur de l'afficher TvrMatrix (TMS) avec un TButton et un TcolorDialog D6 et Windows 10 64 Bits
    Bonjour à toutes et à tous,

    J'essaye depuis un certain temps de pouvoir modifier la couleur de l'afficheur digital et de son fond.

    Voici les couleurs disponibles de cet afficheur :

    Couleurs du composant TvrMatrix

    Pour chaque couleur il y a 2 propriétés :

    Low et Hight

    Choix de la couleur de base disponible

    Red

    Blue

    Green

    Cyan

    Purple

    Yellow
    Il faut noter que si je choisis la couleur ClRed pour High, Low sera ClMaroon automatiquement.

    Comme j'utiliserai un TcolorDialog je ne sais choisir qu'une seule couleur.

    J'avais d'abord imaginé avec les 6 choix de couleurs disponible de déterminer la couleur High et Low à l'avance.

    Qu'en pensez vous ?

    Merci d'avance.

    @+,

    cincap

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Je ne vois pas comment faire avec un ColorDialog, qu'il faudrait restreindre à des couleurs imposées.
    Pourquoi ne pas proposer un panel de boutons aux couleurs pour le choix ? Avec un fonctionnement style RadioButton.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ tourlourou, merci pour ta suggestion, avec les TRadioButton cela fonctionne mais avec les items du TRadioGroup je patine.

    Sinon voici le résultat de mon test avec un TRadioButton nommé "Rb1":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Rb1Click(Sender: TObject);
    begin
    vr1.palette.High := clred ;
    vr1.Palette.Low := clmaroon;
    end;
    Le résultat est sauvé à la fermeture de mon application dans mon fichier *.ini.

    Je testerai encore dans la journée avec un TRadioGroup avant de fermer le topic.

    @+,

    cincap

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ tous, le topic est fermé, cela fonctionne avec le TRadioGroup et ses Items.

    Merci.

    @+,

    cincap

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    Je m'excuse de revenir sur ce sujet, voici mon code pour déterminer les couleurs du fond et de l'afficheur mais serait t'il possible plutôt que d'utiliser un TRadioGroup de pouvoir le faire avec un seul click et un seul TButton.

    A chaque appui du TButton les couleurs changent sur l'afficheur vr1.

    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
     
    procedure TForm1.Rg1Click(Sender: TObject);
    begin
     
    case RG1.ItemIndex OF
     
     0 : begin 
    vr1.palette.High := clred ;
    vr1.Palette.Low := clmaroon;
          end;
     1 : begin 
    vr1.palette.High := clblue ;
    vr1.Palette.Low := clnavy;
          end;
     2 : begin 
    vr1.palette.High := claqua ;
    vr1.Palette.Low := clteal;
          end;
     3 : begin 
    vr1.palette.High := clfuchsia ;
    vr1.Palette.Low := clpurple;
          end;
     
     4 : begin 
    vr1.palette.High := clyellow ;
    vr1.Palette.Low := clolive;
          end;
     5 : begin 
    vr1.palette.High := cllime ;
    vr1.Palette.Low := clgreen;
          end;
     
    end;
     
     end;
    Peut être en utilisant la propriété tag ?

    Merci d'avance.

    @+,

    cincap

  6. #6
    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,

    si Rg1 est un bouton alors oui, tag pourrait être utile, quelque chose comme :
    suppose qu'au design vr1.palette.High := clred et vr1.Palette.Low := clmaroon et Rg1.tag:=0

    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
    procedure TForm1.Rg1Click(Sender: TObject);
    begin
    inc(RG1.tag);
    if RG1.Tag>5 then RG1.Tag:=0; 
    case RG1.tag OF
     
     0 : begin 
    vr1.palette.High := clred ;
    vr1.Palette.Low := clmaroon;
          end;
     1 : begin 
    vr1.palette.High := clblue ;
    vr1.Palette.Low := clnavy;
          end;
     2 : begin 
    vr1.palette.High := claqua ;
    vr1.Palette.Low := clteal;
          end;
     3 : begin 
    vr1.palette.High := clfuchsia ;
    vr1.Palette.Low := clpurple;
          end;
     
     4 : begin 
    vr1.palette.High := clyellow ;
    vr1.Palette.Low := clolive;
          end;
     5 : begin 
    vr1.palette.High := cllime ;
    vr1.Palette.Low := clgreen;
          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

  7. #7
    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
    et cela peut se condenser



    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
    procedure TForm1.Button1Click(Sender: TObject);
    type
      TPaletteColors =  record
        ColorLow: TColor;
        ColorHigh: TColor;
      end;
    const
      COLORS: array [0..5] of TPaletteColors =
        (
          (ColorLow: clmaroon; ColorHigh: clred ),
          (ColorLow: clnavy; ColorHigh: clblue),
          (ColorLow: clteal; ColorHigh: claqua),
          (ColorLow: clpurple; ColorHigh: clfuchsia ),
          (ColorLow: clolive; ColorHigh: clyellow ),
          (ColorLow: clgreen; ColorHigh: cllime)
        );
    begin
      if Button1.Tag >= High(COLORS) then
        Button1.Tag := Low(COLORS)
      else
        Button1.Tag := Button1.Tag + 1 ;
     
      vr1.palette.High := COLORS[Button1.Tag].ColorHigh;
      vr1.Palette.Low := COLORS[Button1.Tag].ColorLow;
    end;
    ou plus court si maintenir deux tableaux ne rebutent pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button1Click(Sender: TObject);
    const
      COLORS_LOW: array [0..5] of TColor = (clmaroon, clnavy, clteal, clpurple, clolive, clgreen);
      COLORS_HIGH: array [0..5] of TColor = (clred, clblue, claqua, clfuchsia , clyellow , cllime);
    begin
      if Button1.Tag >= High(COLORS) then
        Button1.Tag := Low(COLORS)
      else
        Button1.Tag := Button1.Tag + 1 ;
     
      vr1.palette.High := COLORS_HIGH [Button1.Tag];
      vr1.Palette.Low := COLORS_LOW [Button1.Tag];
    end;
    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

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ SergioMaster et ShaiLeTroll merci à vous deux pour l'excellente modification.

    @ ShaiLeTroll, j'ai testé les 2 solutions et impeccables la dernière me plait bien, réduite à l'extrême.

    J'ai du juste modifier l'erreur de retranscription :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin
      if Button1.Tag >= High(COLORS_LOW) then
        Button1.Tag := Low(COLORS_HIGH)
    Il me reste à vérifier si je sais sauver l'état du mode couleur aussi dans mon fichier .ini lors de la fermeture de l'application.

    Bonne fin de journée,

    @+,
    cincap

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

Discussions similaires

  1. Modifier couleur des dossiers affichés dans le terminal
    Par nekcorp dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 04/12/2014, 17h25
  2. Réponses: 1
    Dernier message: 14/04/2014, 18h19
  3. Réponses: 0
    Dernier message: 29/12/2011, 14h48
  4. Réponses: 11
    Dernier message: 21/04/2008, 09h42
  5. Modifier la couleur de fond d'un popupmenu
    Par lil_jam63 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 05/08/2004, 20h23

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