Vider ces edits et combobox en une fois. Au lieu de...

Signaler
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
-
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
-
Bonjour!

Les codes colorés de rouge me permettent de vides mes edits et combobox. Je voulais changer de methode: comment pourrai-je vider ceux-ci qu'avec une ligne de commande.
 
with ADORegisApreensDiam do
  ADORegisApreensDiam.Append;
  ADORegisApreensDiam.FieldValues['province']:= provinciaRegistoApreensoesDiamantes.Text;
  ADORegisApreensDiam.FieldByName('mois').AsString:= mesRegisApreensDiamantes.Text;
  ADORegisApreensDiam.FieldByName('anee').AsString:= anoRegisApreensDiamantes.Text;
  ADORegisApreensDiam.Post;
provinceRegistoApreensoesDiamantes.Text:= '';
moisRegisApreensDiamantes.Text:= '';
aneeRegisApreensDiamantes.Text:= '';



Merci,




 






Developper est une dimension pour moi.
Leader2000

2 réponses

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Tu fais une boucle sur chacun des composants de ton appli, tu vérifies si ils sont des TEdit ou TComboBox et tu vides : voilà quelques mots clefs :

ComponentCount
Components[Index: Integer]
if Components[..] is TEdit then
TEdit(Components[..])
(Components[..] as TEdit)

Voilà ...

Mais pour 3 composants il vaut mieux laisser 3 lignes de code :)

Cordialement, Bacterius !
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
38
Salut,

c'est tout simple

Ajouer "TypInfo" au Uses

type
  Tfrm_Main = class(TForm)
  ...
  private
    { Déclarations privées }
    procedure SetPropertys(ClassName: String;
      SomeProperty: array of string; Value: array of Variant);

implementation

procedure Tfrm_Main.SetPropertys(ClassName: String; SomeProperty: array of string; Value: array of Variant);
var
  i, j: integer;
  PropInfo: PPropInfo;
  Component: TComponent;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    Component := Components[i];
    if (Component is TControl) and ((Component.ClassName = ClassName)
      or (ClassName = 'AllComponents')) then
    Begin
    if High(SomeProperty) = High(Value) Then
    for j := 0 to High(SomeProperty) do
    Begin
            PropInfo := GetPropInfo(Component.ClassInfo, SomeProperty[j]);
            if Assigned(PropInfo) then
            SetPropValue(Component, PropInfo.Name, Value[j]);
    End
    else
    for j := 0 to High(SomeProperty) do
    Begin
            PropInfo := GetPropInfo(Component.ClassInfo, SomeProperty[j]);
            if Assigned(PropInfo) then
            SetPropValue(Component, PropInfo.Name, Value[0]);
    end;
    end;
  end;
end;

Utilisation
  SetPropertys('AllComponents',['Text'],['']);
si tu mets "Caption" à la place de "Text" la portée sera plus grande

ou
  SetPropertys('TEdit',['Text'],['']);

ou
  SetPropertys('TComboBox',['Text'],['']);

on peut aussi l'étendre à plusieurs propriétés:
SetPropertys('AllComponents', ['Enabled', 'Checked', 'Text'],[ True, False, '']);
SetPropertys('AllComponents', ['Enabled', 'Checked'],[ True]);

pour le reste ben faut tester soit même
 
@+
Cirec

<hr siz="" />