watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008
-
2 mai 2008 à 20:21
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 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
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 2 mai 2008 à 22:50
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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 3 mai 2008 à 03:34
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 ;
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;
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 2 mai 2008 à 21:02
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);
Vous n’avez pas trouvé la réponse que vous recherchez ?
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 2 mai 2008 à 21:31
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;
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 3 mai 2008 à 00:48
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;
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 3 mai 2008 à 02:36
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.
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 3 mai 2008 à 03:34
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
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 3 mai 2008 à 04:03
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
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 3 mai 2008 à 04:10
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
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
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 3 mai 2008 à 04:26
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à