| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Gennemløbe en anden form form komponenter Fra : Ukendt | 
  Dato :  26-12-06 13:42 |  
  |   
            Hej og god baghjul til alle.
 
 Jeg ønsker at lave en "nulstil" funktion, der nulstiller nogle editbokse i 
 en række forms. Nulstillingen skal ske fra et menupunkt i hovedmenuen på 
 hovedformen. Her havde jeg forestillet mig noget lignende nedenstående kode 
 for hver form, der skal nulstilles.
 
 ---
 with formPI do
   begin
     for I:= 0 to ComponentCount -1 do
       If Components[i] is TEdit then
         TEdit(Components[i]).Text:= IntToStr(0);
   end;
 etc for de øvrige forms.
 ---
 
 Men denne kode nulstiller intet i denne form.
 
 Flytter jeg koden over i selve formens unit og undlader "with formPI do" så 
 fungerer det fint.
 
 Mit spørgsmål er derfor, hvordan kan jeg gennemløbe formPI for komponenter 
 fra min hovedform, når jeg ikke kan bruge "with formPI do"
 
 På forhånd tak. 
 
 
  
            
             |   |   
            
        
 
            
         
           PØLLE (26-12-2006) 
         
	
            | Kommentar Fra : PØLLE | 
  Dato :  26-12-06 15:09 |  
  |   
            Hej Michael
 > with formPI do
 >  begin
 >    for I:= 0 to ComponentCount -1 do
 >      If Components[i] is TEdit then
 >        TEdit(Components[i]).Text:= IntToStr(0);
 >  end;
 
 Da det virker, når det er direkte formen gå gør dog følgende
 
 
 TFformPI = class(TForm)
     Panel3: TPanel;
     Panel6: TPanel;
     Panel4: TPanel;
     Edit1: TEdit;
 private
     PriorPanel:TPanel;
     KundeIdentitetCaptionBeforeTest,
     TestModeKodeRest:String;
     procedure FormShowAfterHide(Sender: TObject);
     function CalcSystemLock:longint;
 public
     procedure IdleHandler(Sender: TObject; var Done: Boolean);
     procedure Reklame;
     procedure ClearTEdit;
 end;
 
 var
   FformPI: TFformPI;
 
 implementation
 
 Procedure TFformPI.ClearTEdit;
     var    onChange : TNotifyEvent;
              I : Integer;
 begin
     for I := 0 to ComponentCount - 1 do
         if  Components[I] is TEdit then begin
             onChange := TEdit(Components[I].onChange;
             TEdit(Components[I].onChange := Nil;
             TEdit(Components[I].Clear;
             TEdit(Components[I].onChange := onChange;
         end;
 end;
 
 FORKLARING:
 Det er ikke afprøver, men burde kunne virke.
 Årsagen til jeg gør det på denne måde er, at det Proceduren ClearTEdit er 
 det samme i til alle andre forme.
 Du vil sikkert bemærke, at jeg har lavet en "var" som hedder onChange. Når 
 man sletter en TEdit og der måske er en onChange i funktion, har du ikke 
 styr på, hvad der sker, derfor sætter jeg midlertidig 
 TEdit(Components[I].onChange := Nil, hvorefter jeg kobler onChange på igen 
 i TEdit(Components[I].onChange := onChange.
 
 PØLLE - du kan evt ringe, du kender mit Skypenavn
 
 
 
 
 
 
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |