Lunasoft
Messages postés75Date d'inscriptionsamedi 28 juin 2008StatutMembreDernière intervention16 août 2011
-
13 août 2008 à 17:02
Lunasoft
Messages postés75Date d'inscriptionsamedi 28 juin 2008StatutMembreDernière intervention16 août 2011
-
15 août 2008 à 17:16
Bonjour!
Je suis entrain de faire un test qui marche déjà mais en moitié.
Les codes ci-après me permettent d'avoir un message m'avertissant s'il y a un Tedit vide (ils permettent aussi d'averti quand il n'y a aucun Tedit vide).
procedure ...BitBtn1Click...
Const a Msg : Array[boolean] of string ('pas d''Edit vide', 'du moins un edit vide');
begin
showMessage(aMSG[CheckForBlankText(Self)]);
end;
Ma préoccupation est celle-ci:
comment pourrai-je écrire un code qui ne pourra m'avertir SEULEMENT s'il y a plus de 3 Tedit vides.
procedure TForm1.Button1Click(Sender: TObject);
var
N, CountEmpty : integer;
begin
CountEmpty := 0;
for N := 0 to High(EditsArray) do
begin
if EditsArray[N].Text = EmptyStr then
inc(CountEmpty);
end;
if CountEmpty >= 3 then
MessageDlg('Trois edit sont vide', mtWarning, [mbOk], 0);
end;
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 13 août 2008 à 17:42
bonjour,
procedure TForm1.Button1Click(Sender: TObject);
var
i, num: integer;
begin
num := 0;
for i := 0 to ComponentCount - 1 do
if Components[i] is TEdit then
if TEdit(Components[i]).Text = '' then Inc(num);
if num > 3 then
showmessage('alerte....');
end;
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 13 août 2008 à 17:28
Bonjour,
voici comment je l'aurais écrit moi le code :
function GetNumberOfEmptyEdits: Integer;
var
I: Integer;
begin
Result := 0;
for I := 0 to ComponentCount do
if (Component[I] is TEdit) and (Component[I].Text = '') then Inc(Result);
end;
Ca te renvoie le nombre d'édits vides !
Tu peux aussi faire cette fonction accessoirement :
function GetNumberOfEdits: Integer;
var
I: Integer;
begin
Result := 0;
for I := 0 to ComponentCount do
if Component[I] is TEdit then Inc(Result);
end;
Celle là renvoiera le nombre total d'edits (vides ou pas) sur la fiche.
Seul hic avec ces fonctions : ils ne marcheront que si les edits sont directement placés sur la fiche (pas de panel, groupbox, etc ..)
si ils sont dans un panel, groupbox il faudra appeller les routines ComponentCount et Component[Index: Integer] avec le parent (par exemple Panel1.ComponentCount) si ils sont sur un panel.
Ces fonctions ne marcheront pas si il y a une partie des edits sur un panel et l'autre moitié sur un autre (il faudra adapter, faire des boucles pour chaque composant qui peut accueillir des enfants (c.a.d. panel, groupbox ...).
Je t'ai donné les fonctions de base. A toi de les adapter à tes besoins.
J'espère avoir répondu à ta question. Le cas échéant, pense à Réponse Acceptée !
Cordialement, Bacterius !
Vous n’avez pas trouvé la réponse que vous recherchez ?
procedure TForm1.Button1Click(Sender: TObject);
var
N, CountEmpty : integer;
begin
CountEmpty := 0;
for N := 0 to High(EditsArray) do // ici
begin
if EditsArray[N].Text = EmptyStr then
inc(CountEmpty);
end;
if CountEmpty >= 3 then
MessageDlg('Trois edit sont vide', mtWarning, [mbOk], 0);
end;
on peu donc eviter d'ecrire en dur les boucles et d'utiliser des types de tableau plus long ou plus court dans ces même boucles :
for N := Low(array) to High(array) do ...
ou
N := Low(Array);
while N < High(Array) do begin ... inc(N); end;
ou
N := Low(Array);
repeat
inc(N);
until N = high(Array);
fonctionne avec tout type de tableau a taille fixe ou dynamique.
on peu egalement faire cela :
const
MyArrayIndexLow = 0;
MyArrayIndexHigh = 10;
MyOtherArrayCount = 25;
type
TMyArray = array[|MyArrayIndexLow..MyArrayIndexHigh-1] of ...
TMyOtherArray = array[0..MyOtherArrayCount-1] of ...
les methodes avec Controls[x] ou Components[x] c'est bien mais ce n'est pas assé souple et demande des verifications suplementaire pour :
savoir si le control ou le composant est un TEdit,
si ce TEdit entre en ligne de compte dans le control des Edit ne devant pas etre vide etc.
l'avantage de ma methode, c'est qu'elle permet de mettre des edits de provenances diverses (fiche principale, fiche secondaire, panel etc), le seul inconvegniant etant la declaration pour tabler les edit dans EditArray. ce qui n'est pas vraiment un problemen en fait.