cs_yeho
Messages postés25Date d'inscriptionjeudi 12 octobre 2006StatutMembreDernière intervention27 février 2007
-
22 févr. 2007 à 20:08
cs_yeho
Messages postés25Date d'inscriptionjeudi 12 octobre 2006StatutMembreDernière intervention27 février 2007
-
25 févr. 2007 à 15:26
Salut!
J'ai écrit ces codes afin d'être averti parmon programme quand il y a un Tedit qui n'est pas rempli (ou auquel rien n'a été écrit dessus). Mais le bugg s'affiche là où j'ai coloré en rouge.
Que pensez-vous? Merci d'avance.
var
Form1: TForm1;
implementation
{$R *.dfm}
function CheckForBlankText : Boolean;
var i : Integer;
begin
for i := 0 to ComponentCount-1 do
begin
if (Components[i] is TEdit) then begin Result :(Components[i] as TEdit).Text '';
if Result then Exit;
end;
end;
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 22 févr. 2007 à 20:36
Salut,
Rajoute ce qu'il y a en rouge et appuie sur Ctrl+Maj+C (ce qui référencera la fonction dans l'objet Form1 dans la section PRIVATE)
function TForm1.CheckForBlankText : Boolean;
var i : Integer;
begin for i := 0 to ComponentCount-1do begin if (Components[i] is TEdit) then begin Result : (Components[i] as TEdit).Text '';
if Result then Exit;
end;
end;
end;
//Et pour tester la chose
procedure TForm1.Button1Click(Sender: TObject);
Const aMsg : Array[Boolean] of String = ('Non Vide', 'Vide');
begin ShowMessage(aMSG[CheckForBlankText]);
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 22 févr. 2007 à 22:48
Salut Japee,
tu n'es ni le premier ni le dernier à qui ca arrive
Moi même je suis coutumier du fait
@ Yeho:
Voici un autre exemple qui n'a pas besoin d'être référencé ...
il permet, en plus, de cibler la recherche en fonction du conteneur ...
en admettant que tu as des TEdits placés directement sur ta Form et d'autres dans un TPanel et encore d'autres dans
un TGroupBox :
function CheckForBlankText2(Container : TWinControl) : Boolean;
var i : Integer;
begin With Container do If HasParent Then for i := 0 to ControlCount-1do begin if (Controls[i] is TEdit) then begin Result : (Controls[i] as TEdit).Text '';
if Result then Exit;
end;
end Else for i : = 0to ComponentCount-1do begin if (Components[i] is TEdit) then begin Result :(Components[i] as TEdit).Text '';
if Result then Exit;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
Const aMsg : Array[Boolean] of String = (' il n''y a pas d''Edit Vide', ' il y a au moins un Edit Vide');
begin
{Ne contrôle que dans Panel1}
ShowMessage('Dans Panel1' + aMSG[CheckForBlankText2(Panel1)]);
{Ne contrôle que dans GroupBox1} ShowMessage('Dans GroupBox1' + aMSG[CheckForBlankText2(GroupBox1)]);
{Contrôle dans toute la Forme y compris dans Panel1 et GroupBox1} ShowMessage('Dans Form1' + aMSG[CheckForBlankText2(Self)]);
end;
@+
Cirec
<hr size ="2" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_yeho
Messages postés25Date d'inscriptionjeudi 12 octobre 2006StatutMembreDernière intervention27 février 2007 24 févr. 2007 à 12:15
Merci Cirec de me venir en aide.
Je suis un tout petit peu confus (peut être que c'est moi qui suis en erreur). J'ai fait comme vous m'aviez dit de faire. Mais il y a toujours un bugg (c'est peut être moi qui suis en erreur)... J'aimerai un conseil de plus de votre part. Au fait, dans quel evènement par exemple devais-je mettre ces codes (c'est juste pour beaucoup plus de PRECISION). Parce que j'ai essayé presque toute la soirée d'hier...
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 févr. 2007 à 16:23
Quel est le message d'erreur
Et à quelle ligne se produit l'erreur
Petite préscision :
function CheckForBlankText2(Container : TWinControl) : Boolean;
C'est une fonction qui n'est pas destinée à être liée à un évènement
Container : représente le composant contenant les TEdits à contrôler ... Ex. la Forme un TPanel, un TGoupBox ...etc...
ah oui ... au cas ou, il y a un espace après le zéro et après le 1 dans les deux lignes suivantes :
for i := 0 to ControlCount-1do
for i : = 0to ComponentCount-1do
Ou placer cette fonction ? :
Tu colles cette function le plus haut possible (Mais toujours dans la section Implementation) dans l'unité
Un exemple :
If CheckForBlankText2(Panel1) Then // ne contrôle que les TEdits dans Panel1 renvoie True si un des TEdits est vide ...
// ici ton code si true
Else // ... et False si aucun n'est vide
// ici ton code si False;
Un autre exemple :
CheckForBlankText2(Form1)
// Contrôle tous les TEdits que Form1 peut contenir et renvoie True si un des TEdits est vide ...
si c'est autre chose il me faut plus de préscisions
cs_yeho
Messages postés25Date d'inscriptionjeudi 12 octobre 2006StatutMembreDernière intervention27 février 2007 25 févr. 2007 à 15:26
Salut Cirec!
Immensement merci d'avoir contribué à la solution à mon problème.
Comme tu l'aurai constaté...j'ai déjà cliqué sur 'reponse accepté'.
Seulement, j'ai encore une toute petite question toujours dans le même ordre d'idée qui pourra surement aider dans ce forum
un autre inicié comme moi.
voici ma question:
comme tu pourras le voire, j'ai ajouté quelques deux ou trois lignes de codes qui devra me permettre de sauvegarde.
Curieusement, quand je clique. Le dit message concernant les Edits s'affiche parfaitement bien. Mais seulement aucune
sauvegarde ne faite après le fameux message. Peux-tu suggerer quelque chose?
procedure TForm1.Button1Click(Sender: TObject);
Const aMsg : Array[Boolean] of String = (' il n''y a pas d''Edit Vide', ' il y a au moins un Edit Vide');
begin
{Ne contrôle que dans Panel1}
ShowMessage('Dans Panel1' + aMSG[CheckForBlankText2(Panel1)]);
begin
Adotable1.Edit;
Edit1.Text:= Adotable1.FieldValues['name'];
Adotable1.Post;
end;