Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mehrere Objekte aufzählen... (https://www.delphipraxis.net/76080-mehrere-objekte-aufzaehlen.html)

schwan88 29. Aug 2006 16:42


mehrere Objekte aufzählen...
 
Wie kann ich mehrere Objekte aufzählen?

Bsp.: Ich habe 60 Editfenster und möchte nun mit einem Knopfdruck alle "unvisible" machen...wie das prinzipiel geht weiß ich ja:

edit1.text.visible:=false

Ich will nun aber sinngemäß folgendes:

edit1 bis 60.text.visible:=false

das geht so natürlich nicht ^^....klar ich könnte die auch inna Groupbox zusammenfassen, aber ich muss teilweise auch nur einzelnge Gruppen dieser Fenster ansprechen und das alles mit Boxen...nääää. Gibt doch bestimmt ne ganz simple Lösung oder!?

Chewie 29. Aug 2006 16:44

Re: mehrere Objekte aufzählen...
 
Entweder mit Hier im Forum suchenFindComponent oder du packst alle in ein Array.
Eine Schleife wirst du auf jeden Fall brauchen.

Jelly 29. Aug 2006 16:50

Re: mehrere Objekte aufzählen...
 
Da du die Editfelder nicht als Array ansprechen kannst, bleibt dir nur der Weg über Components.

Delphi-Quellcode:
procedure TForm1.ChangeVisibility (IsVisible : boolean) ;
var
 i : integer ;
begin
     for i := 0 to ComponentCount-1 do
         if (Components[i] is TEdit) then with (Components[i] as TEdit) do begin
              Visible := IsVisible ;
         end ;
end ;

schwan88 29. Aug 2006 16:53

Re: mehrere Objekte aufzählen...
 
:shock: Bahnhof.....also nen bissel mit Schleifen spielen wir grad in der Schule, aber so ganz check ich den Code hier nicht. Wo muss ich beispielsweise die Zahlenbereiche eintragen? Also alle Editfenster von 10-30 oder so....

API 29. Aug 2006 16:58

Re: mehrere Objekte aufzählen...
 
Delphi-Quellcode:
for i:= 10 to 30 do
    begin
      TEdit(FindComponent('Edit'+IntToStr(i))).Visible := True
    end;

Jelly 29. Aug 2006 16:59

Re: mehrere Objekte aufzählen...
 
Mein Code setzt die Visible Eigenschaft für alle Edit Felder auf dem Form.

Editfelder sind Komponenten, die alle auf einem Formular liegen. Mit meinem Code durchsuch ich alle Komponenten auf dem Formular, und setze aber visible nur für die Edit-Felder. Deshalb prüfe ich noch mit components[i] is TEdit, ob es sich beim i-ten Element um ein Editfeld handelt... Wenn ja, so setzte ich die Eigenschaft.

Willst Du noch andere Bedingungen reinbringen, so musst Du die Prüfung noch durch andere Kriterien ergänzen.

Jelly 29. Aug 2006 17:00

Re: mehrere Objekte aufzählen...
 
@API: Dein Code knallt, solltest Du wider Konvention z.B. eine Checkbox auf dem Form haben, dessen Name edit123 ist. Eine Prüfung sollte deshalb immer gemacht werden.

schwan88 29. Aug 2006 17:04

Re: mehrere Objekte aufzählen...
 
hmm, vlt. verwirrte mein Beispiel etwas, aber es geht ja nicht um ALLE fenster, sondern nur um einen Teil dieser Fenste.

neues Bsp ^^: Habe 100 Editfenster und möchte die ersten 60 "unvisible" haben....

API 29. Aug 2006 17:06

Re: mehrere Objekte aufzählen...
 
mit Prüfung:
Delphi-Quellcode:
var
  MyComp: TComponent;
begin
    for i:= 10 to 30 do
    begin
     MyComp := FindComponent('Edit'+IntToStr(i));
     if MyComp is TEdit then
       TEdit(MyComp).Visible := False;
    end;

schwan88 29. Aug 2006 17:08

Re: mehrere Objekte aufzählen...
 
Zitat:

for i:= 10 to 30 do
Damit greift er dann automatisch auf die "nummern" der edit fenster zu??

@API und FindComponent kennt er angeblich nicht...

gibts denn da gaar keine andere Variante außer Schleifen!? kann man den kram nichmal irgendwie durch nen komma trennen? edit1,edit2,edit3..... is zwar auch noch viel, aber auf jeden Fall schonmal weniger.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz