Delphi-PRAXiS

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.

Jelly 29. Aug 2006 17:15

Re: mehrere Objekte aufzählen...
 
Vielleicht solltest Du uns einfach mal dein Vorhaben genauer schildern. Wie in der Schule die Lehrer können die Forumleute auch hier nicht hellsehen.

Du hast doch mittlerweilen schon etwas Code gekriegt, damit wird sich doch wohl was machen lassen.

schwan88 29. Aug 2006 17:20

Re: mehrere Objekte aufzählen...
 
Ich beschäftige mich nebenbei mehr oder weniger aus Interesse mit Delphi und habe eigentlich recht wenig Ahnung.

Also nochmal ein Bsp.: Auf einem Formular habe ich verschiedene Objekte liegen. Labeles, Editfenster (davon sind 30 vorhanden) und was es nicht alles tolles bei Delphi gibt. Wenn ich nun auf einen Button klicke sollen von den 30 Editfenster die ersten 15 unsichtbar werden. Also edit1, edit2 usw.....

API 29. Aug 2006 17:24

Re: mehrere Objekte aufzählen...
 
Ohne Überprüfung ist es ja nur ein 1-Zeiler, also nicht viel Code.
Delphi-Quellcode:
for i:= 10 to 30 do TEdit(FindComponent('Edit'+IntToStr(i))).Visible := True

schwan88 29. Aug 2006 17:32

Re: mehrere Objekte aufzählen...
 
"FindComponent" kennt er dennoch nicht

Klaus01 29. Aug 2006 17:42

Re: mehrere Objekte aufzählen...
 
Aber die Unit Classes steht schon bei Dir in den uses?
Sollte automatisch gehen.

Welche Delphi Version nutzt denn Du?

Grüße
Klaus

schwan88 29. Aug 2006 17:43

Re: mehrere Objekte aufzählen...
 
Version 7 nutze ich, classes steht auch drin ja!

API 29. Aug 2006 17:46

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.

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