Couleur [Résolu]

Messages postés
52
Date d'inscription
samedi 15 octobre 2005
Dernière intervention
17 août 2008
- - Dernière réponse : JulioDelphi
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
- 4 mai 2008 à 12:41
Bonjour , je debute en delphi et j'en suis vraiment au debut.
En cliquant sur un tbutton je sait changer la couleur de l'ecran avec la formule

Form().color :=Clyellow par exemple , mais je n'arrive pas

1- a attribuer 2 ou 3 couleur consecutives pour le meme bouton

2- a alterner en permanence 2 couleur comme "bleu" puis "blanc" pour le meme bouton

merci
Afficher la suite 

Votre réponse

20/25 réponses

Meilleure réponse
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
34
3
Merci
tu integre mon codes { mycolor start a end } entre le {$R *.dfm} et le End.

ensuite,
click sur le boutton de ta fiche
click sur l'onglet "evenements" de la fenetre "inspecteur d'objet"
trouve l'evenement "OnClick" et double click dans la zone de saisie a coté.
la si tu a tout bien fait, une nouvelle procedure apparait dans ton unité,
cette procedure se presentera comme suis :

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

insere ce code entre le begin et le end;
self.color := MyColorsNext;

self.color permet d'acceder a la classe TForm1 (regarder l'aide delphi pour self)

appuis sur F9 pour compiler et lancer le programme, hop, click sur le bouton et le fond de la fiche vas alors changer de couleur a chaque click.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
3
Merci
Salut,

il y avait plus simple pour faire une bascule entre deux couleurs
que d'écrire un plâtrée qu'il aura du mal à comprendre
surtout pour un débutant :

Var
  {booléen pour
la bascule entre 2 couleurs}
  BoolColor: Boolean;
  {Tableau de deux couleurs}
Const ColorArray: Array[Boolean] Of
TColor = (clBlue, clWhite);

Procedure
TForm1.Button1Click(Sender: TObject);
Begin
  {on inverse la
valeur du booléen}
  BoolColor := Not
BoolColor;
  {et on affecte la
couleur}
  Color := ColorArray[BoolColor];
End ;

ps: l'appel à Self n'était pas utile
 
@+
Cirec

<hr siz ="" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
34
0
Merci
{ MyColors start ---- }
const
  __MyColorsMax = 3; // nombres de couleurs maxi
  __MyColors : array[0..__MyColorsMax-1] of TColor = (
    { colors start > } // couleurs
    clWhite,
    clBlack,
    clBlue
    { < colors end }
  );

var
  __CurrentColor : integer = 0;

function MyColorsFirst: TColor; // renvois la premiere couleur
begin
  __CurrentColor := 0;
  result := __MyColors[__CurrentColor];
end;

function MyColorsLast: TColor; // renvois la derniere couleur
begin
  __CurrentColor := __MyColorsMax;
  result := __MyColors[__CurrentColor];
end;

function MyColorsNext: TColor; // renvois la couleur suivante
begin
  __CurrentColor := (__CurrentColor+1) mod __MyColorsMax;
  result := __MyColors[__CurrentColor];
end;


function MyColorsPrec: TColor; // renvois la couleur precedente
begin
  __CurrentColor := (__CurrentColor+__MyColorsMax-1) mod __MyColorsMax;
  result := __MyColors[__CurrentColor];
end;

{ MyColors end ---- }

{ buttons }

procedure TForm1.ButtonFirstClick(Sender: TObject);

begin

  Self.Color := MyColorsFirst;

end;


procedure TForm1.ButtonPrecClick(Sender: TObject);

begin

  Self.Color := MyColorsPrec;

end;


procedure TForm1.ButtonNextClick(Sender: TObject);

begin

  Self.Color := MyColorsNext;

end;


procedure TForm1.ButtonLastClick(Sender: TObject);

begin

  Self.Color := MyColorsLast;

end;












Commenter la réponse de f0xi
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
34
0
Merci
créer un index rotatif :

exemple a deux elements :

MAX = 2
CUR = 0

CUR := (CUR + 1) mod MAX;

generera les indexs suivants en permanence:
1, 0, 1, 0 ...

utilisable avec par exemple :
const TAB : array[0..1] of {type data} = ({data 0}, {data 1});

exemple a 42 elements :

MAX = 42
CUR = 0

CUR = (CUR + 1) mod MAX

generera les indexs suivants en permanence :
1, 2, 3,..., 39, 41, 0, 1, 2, ..., 39, 41, 0, ...

utilisable avec par exemple :
const TAB : array[0..41] of {type data} = ({data 0}, {data 1}, {...}, {data 41});

en gros cela fonctionne avec tout type de tableau ayant pour index de depart [0..n] ==> CUR := (CUR+1) mod MAX;
cela est moins aisé avec des tableaux a index negatif/positif [-n..n] ==> CUR := -n+((CUR+1) mod MAX);
il faut penser a decaler avec les tableaux qui commence a 0+ [5..n] ==> CUR := 5+((CUR+1) mod MAX);

Commenter la réponse de f0xi
Messages postés
52
Date d'inscription
samedi 15 octobre 2005
Dernière intervention
17 août 2008
0
Merci
Bon deja merci pour votre reponse, mais comme je l'ai dis je debute carrement.Quand j'ouvre delphi , j'ai ma FORM sur celle ci j'y ajoute un TButton et j'obtiens ceci et je ne sais pas encore integre les elements a leurs bonne place;
unit Unit1;




interface




uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;




type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;




var
  Form1: TForm1;




implementation




{$R *.dfm}




end.

comment dois je integre vos codes dans ma page d'acceuil ? merci
Commenter la réponse de watrem
Messages postés
52
Date d'inscription
samedi 15 octobre 2005
Dernière intervention
17 août 2008
0
Merci
J'ai fait exactement ce que vous m'avez dit , j'ai compris quelques processus mais j'ai des erreurs ici :
{ buttons }
procedure TForm1.ButtonFirstClick(Sender: TObject);
begin
  Self.Color := MyColorsFirst;
end;


procedure TForm1.ButtonPrecClick(Sender: TObject);
begin
  Self.Color := MyColorsPrec;
end;


procedure TForm1.ButtonNextClick(Sender: TObject);
begin
  Self.Color := MyColorsNext;
end;


procedure TForm1.ButtonLastClick(Sender: TObject);
begin
  Self.Color := MyColorsLast;
end;
Commenter la réponse de watrem
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
34
0
Merci
Attention :

quand tu depose un bouton sur une fiche, celui ci prend automatiquement le nom "buttonX"
ou X vaux 1 puis 2 puis 3 etc

pour qu'un boutton s'appel ButtonFirst ou ButtonPrec il faut definir ce nom dans la propriété Name (dans l'inspecteur d'objet).
toutes procedures faisant reference a son ancien nom sera automatiquement renomée.

de plus, tu ne dois pas ecrire toi même ces procedure, double click sur le boutton (dans la fiche) ou double click sur l'evenement dans l'inspecteur d'objet.

Commenter la réponse de f0xi
Messages postés
52
Date d'inscription
samedi 15 octobre 2005
Dernière intervention
17 août 2008
0
Merci
desole j'arrive tres bien a effectue la premiere procedure de la bonne maniere ( celle que vous m'avez decrite) le hic c'est quand je cherche a renommer le meme bouton , il me remet sur ma 1ere procedure !!


je vais bien modifier "name" ds proprietes pourtant mais il reecrit par dessus et ne me cree pas une deuxieme procedure
Commenter la réponse de watrem
Messages postés
52
Date d'inscription
samedi 15 octobre 2005
Dernière intervention
17 août 2008
0
Merci
AH merci Cirec l'alternance entre les deux couleurs fonctionne tres bien.

J'essaie quand meme de faire la formule de Foxi pour les trois couleurs mais je bloque au renommage du bouton .


comment renomme t'on ce satane bouton pusieur fois ???


 


merci a vous deux
Commenter la réponse de watrem
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
0
Merci
tu t'y prends mal

il faut en premier:
- déposer un TButton sur la Form
- le nommer (propriété Name)
- double-cliquer sur lui pour génerer le code
- et enfin complèter avec le code de F0xi

Dans son code F0xi utilise 4 boutons
il te faudra donc répeter 4 fois les étapes ci-dessus

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
Messages postés
52
Date d'inscription
samedi 15 octobre 2005
Dernière intervention
17 août 2008
0
Merci
Bon 4 heures pour comprendre comment faire une alternance de couleur , c'est pas gagne lol

Const ColorArray: Array[Boolean] Of TColor = (clBlue, clWhite);

Procedure TForm1.Button1Click(Sender: TObject);
Begin
   {on inverse la valeur du booléen}
  BoolColor : = Not BoolColor;
  {et on affecte la couleur}
  Color := ColorArray[BoolColor];
End ;

J'aurai 2 questions au sujet de ce code
1)J'ai essayer de rajouter une 3 ieme couleur Const ColorArray: Array[boolean]OfTColor =(Clblue, ClWhite,ClRed); evidemment ca ne marche pas et je crois comprendre pourquoi le "NOT" signifie dans le cas suivant cad 2 couleurs si c'est pas l'une c'est donc l'autre!!!!
Comment ajouter une 3 ieme couleur a ce code ???

2)Est-il possible d'automatiser l'alternance des couleurs sans avoir a cliquer sur le bouton ? Toujours avec ce bout de code que je connais desormais par coeur  bg
Commenter la réponse de watrem
0
Merci
Ze crois que f0xi il a bouffé du lion




procedure TForm1.ChangerLePetitNomDeMonBouttonClick(Sender: TObject);
Const
  PetitsNomsDeMonBoutton:Array [1..5] of String=('La','Lo','Li','Lu','Le');
Var
  IndexBanane:Cardinal;
Begin
  For IndexBanane:=1 To 5 Do
    Begin
      Button1.Name:=PetitsNomsDeMonBoutton[IndexBanane];
      Button1.Refresh;
      Sleep(500);//

A pas confondre avec slip : ca s'est un rappel pour Cari

      Application.ProcessMessages;


    End;
End;
Commenter la réponse de Utilisateur anonyme
0
Merci
Version de ta fonction avec 3 couleurs

Const
ColorArray: Array[0..2] Of TColor = (clBlue, clWhite,ClGreen);
Var IndexColor:Cardinal;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
  Color : = ColorArray[IndexColor];  
  Inc(IndexColor);
  If IndexColor>2 Then IndexColor: =0;
End;

Penser à initialiser IndexColor: à zéro dans le OnCreate de ta fiche
Commenter la réponse de Utilisateur anonyme
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
0
Merci
avec ce code il n'est pas possible de mettre plus que deux couleurs dans le tableau:
Const ColorArray: Array[Boolean] Of TColor = (clBlue, clWhite);
est identique à :
Const ColorArray: Array[0..1] Of TColor = (clBlue, clWhite);

Un Boolean n'a que valeurs possible : True où False (0 où 1)

et : BoolColor := Not BoolColor;
ne fait qu'unverser ces deux valeurs (il bascule entre True et False "Vrai ou Faux")

sinon c'est possible bien sûr avec plusieurs couleurs mais il faut
changer de méthode ... celle de F0xi en est une

si il te faut un autre exemple (si tu n'y arrives vraiment pas avec le code de F0xi) je te donnerai ça ... mais plus maintenant ... c'est l'heure d'aller au dodo là

Francky t'es pas encore couché où déjà levé

sur ce bonne nuit les petits

 
@+
Cirec

<hr siz ="" />
Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
0
Merci
Francky a eu le courage de le faire ... chapeau ..
moi j'ai les yeux qui me brulent ... lol

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
0
Merci
Pour l'initialisation de IndexColor il suffit de faire :
Var IndexColor:Cardinal = 0;

Cette fois j'y vais

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
12
0
Merci
... Se faire initier à delphi au milieu de la nuit, et par les plus grands, il n'y a que sur CS qu'on voit ça.

Chapeau! 
Commenter la réponse de Caribensila
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
12
0
Merci
Foxi y va un peu fort pour renseigner un débutant, FAUT S'ADAPTER FOXI ! ^^
Commenter la réponse de JulioDelphi
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
0
Merci
@Caribensila:
franchement ...
on assure sur CS hein
et tout ça gratos

je n'ai q'une chose à dire :

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
0
Merci
Je viens juste de me reveiller : Dis donc cette question elle a du succes
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.