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

Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 10 janv. 2009 à 11:52
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 10 janv. 2009 à 21:38
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

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 janv. 2009 à 13:07
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 !
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 janv. 2009 à 21: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="" />
0
Rejoignez-nous