Soyez le premier à donner votre avis sur cette source.
Vue 6 304 fois - Téléchargée 426 fois
{=============================================================================== Code source : BEAUMONT Christophe Version : 1.4.2 Date : 19 Mars 2010 Micro-projet 05 - Un générateur aléatoire d'expressions, programme amusant mais qui ne sert strictement à rien. Retrouvez ce source également sur mon site : "http://www.delphinautes.fr" ===============================================================================} unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI, Math, XPMan; type Tf_Main = class(TForm) List1: TListBox; Memo: TMemo; List2: TListBox; List3: TListBox; List4: TListBox; List5: TListBox; List6: TListBox; List7: TListBox; List8: TListBox; List9: TListBox; BtnGenere: TButton; LabSite: TLabel; XPLook: TXPManifest; procedure LabSiteMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure LabSiteMouseLeave(Sender: TObject); procedure LabSiteClick(Sender: TObject); procedure BtnGenereClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ListXClick(Sender: TObject); private { Déclarations privées } procedure PrintPipo; public { Déclarations publiques } end; var f_Main: Tf_Main; Liste : array[1..9] of String; Const PipoLine = '%s %s %s %s %s %s %s %s %s'; implementation {$R *.dfm} procedure Tf_Main.BtnGenereClick(Sender: TObject); var i : integer; begin // On va traiter les 9 TListBox for i:=1 to 9 do with TListBox(FindComponent('List'+IntToStr(i))) do begin // RandomRange renvoie un entier aléatoire entre 0 et le nombre d'expressions du TListBox // ce qui va définir l'expression choisie ItemIndex := RandomRange(0, Items.Count); // Et on sauvegarde le texte Liste[i]:=Items[ItemIndex]; end; PrintPipo; end; // Procédure commune aux 9 TListBox, on récupère l'évènement et on sauvegarde // l'expression à la position définie dans la propriété "Tag". procedure Tf_Main.ListXClick(Sender: TObject); begin if (Sender is TListBox) then begin with (Sender as TListBox) do // On définit l'expression sélectionnée Liste[Tag] := Items[ItemIndex]; // On l'affiche dans le TMemo PrintPipo; end; end; procedure Tf_Main.PrintPipo; const voy : array[1..10] of Char =('a','e','é','è','ê','i','o','u','y','h'); var s : string; i : integer; begin // On assemble l'ensemble des expressions s := Format(PipoLine,[Liste[1],Liste[2],Liste[3],Liste[4],Liste[5],Liste[6],Liste[7],Liste[8],Liste[9]]); // On va passer en revue les voyelles et autres accords avec l'expression "de" for i := 1 to 10 do begin // On remplace les expressions "de a...","de e..." par "d'a...","d'e..." etc... s:=StringReplace(s,'de '+voy[i],'d'''+voy[i],[rfReplaceAll]); end; // Vide le composant TMemo de tout texte Memo.Clear; // On affiche dans le TMemo l'ensemble des expressions choisies Memo.Lines.Add(s); end; procedure Tf_Main.FormCreate(Sender: TObject); begin // Initialise le générateur de nombre aléatoire, à faire avant d'utiliser RandomRange Randomize; end; procedure Tf_Main.LabSiteMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin // Souligne l'adresse du site quand la souris passe dessus LabSite.Font.Style := [fsUnderline]; end; procedure Tf_Main.LabSiteMouseLeave(Sender: TObject); begin // Retire le soulignement du site quand la souris n'est plus dessus LabSite.Font.Style := []; end; procedure Tf_Main.LabSiteClick(Sender: TObject); begin ShellExecute(Handle,'Open','http://www.delphinautes.fr',nil,nil,SW_SHOWDEFAULT) end; end.
Bonjour à tous,
Je laisse le mode du source sur "débutant" malgré l'évolution du code grâce à vos contributions.
Merci à tous ceux qui ont participé à ce projet car j'ai beaucoup appris au fil des changements.
Cordialement.
Christophe
Christophe, tu peux enlever "débutant" à ton introduction.
L'évolution de ce code aura été vraiment intéressante à suivre.
A+
Dom
voici une petite modification au code de JulioDelphi qui ne faisait pas de contrôle sur le type de la classe et une simplification de la procédure "BtnGenereClick" ...
je te laisse voir ça tout seul !!
procedure Tf_Main.BtnGenereClick(Sender: TObject);
var i : integer;
begin
// On va traiter les 9 TListBox
for i:=1 to 9 do
with TListBox(FindComponent('List'+IntToStr(i))) do
begin
// RandomRange renvoie un entier aléatoire entre 0 et le nombre d'expressions du TListBox
// qui va définir l'expression choisie
// On sélectionne l'expression choisie
ItemIndex := RandomRange(0, Items.Count);
// Et on sauvegarde le texte
Liste[i] := Items[ItemIndex];
end;
PrintPipo;
end;
// Procédure commune aux 9 TListBox, on récupère l'évènement et on sauvegarde
// l'expression à la position définie dans la propriété "Tag".
procedure Tf_Main.ListXClick(Sender: TObject);
begin
// On récupère l'évènement du TListBox
if (Sender is TListBox) then
begin
with (Sender as TListBox) do
// On définit l'expression sélectionnée
Liste[Tag] := Items[ItemIndex];
// On l'affiche dans le TMemo
PrintPipo;
end;
end;
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.