Couleur [Résolu]

watrem 52 Messages postés samedi 15 octobre 2005Date d'inscription 17 août 2008 Dernière intervention - 2 mai 2008 à 20:21 - Dernière réponse : JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention
- 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

25 réponses

Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 2 mai 2008 à 22:50
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.

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 3 mai 2008 à 03:34
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 ="" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Cirec
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 2 mai 2008 à 20:50
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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 2 mai 2008 à 21:02
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
watrem 52 Messages postés samedi 15 octobre 2005Date d'inscription 17 août 2008 Dernière intervention - 2 mai 2008 à 21:31
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
watrem 52 Messages postés samedi 15 octobre 2005Date d'inscription 17 août 2008 Dernière intervention - 3 mai 2008 à 00:48
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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 3 mai 2008 à 02:36
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
watrem 52 Messages postés samedi 15 octobre 2005Date d'inscription 17 août 2008 Dernière intervention - 3 mai 2008 à 03:34
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
watrem 52 Messages postés samedi 15 octobre 2005Date d'inscription 17 août 2008 Dernière intervention - 3 mai 2008 à 03:52
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 3 mai 2008 à 04:03
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
watrem 52 Messages postés samedi 15 octobre 2005Date d'inscription 17 août 2008 Dernière intervention - 3 mai 2008 à 04:10
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
Utilisateur anonyme - 3 mai 2008 à 04:16
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
Utilisateur anonyme - 3 mai 2008 à 04:21
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 3 mai 2008 à 04:26
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 3 mai 2008 à 04:27
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 3 mai 2008 à 04:30
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
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 3 mai 2008 à 09:37
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
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 3 mai 2008 à 10:17
0
Merci
Foxi y va un peu fort pour renseigner un débutant, FAUT S'ADAPTER FOXI ! ^^
Commenter la réponse de JulioDelphi
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 3 mai 2008 à 12:09
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
Utilisateur anonyme - 3 mai 2008 à 16:01
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.