AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Controls mit FOR-IN durchlaufen?

Ein Thema von Sharky · begonnen am 5. Jun 2005 · letzter Beitrag vom 5. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#1

Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 08:49
Hai,

ist es möglich diesen Code:
Delphi-Quellcode:
var
  ndx : Integer;
begin
  for ndx := 0 to Panel1.ControlCount -1 do
  begin
    if (Panel1.Controls[ndx] is TSpeedButton) then
    begin
      (Panel1.Controls[ndx] as TSpeedButton).Glyph := nil;
    end;
  end;
end;
mit dieser "FOR-IN" Konstruktion zu ersetzen?

Irgendwie blicke ich bei der noch nicht so richtig durch.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:07
Hi,

bei der Controls Eigenschaft von TForm gibt es keine Möglichkeit diese mit einer for..in Schleife zu durchlaufen, da es sich um eine Array-Property handelt. (Controls.pas, Z. 1462).

Aber, vielleicht geht es ja so:
Delphi-Quellcode:
var
  Control: TComponent;
begin
  for Control in Self do
    if Control is TSpeedButton then
      TSpeedButton(Control).Glyph := nil;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:26
Hai mirage228,

Danke für deine Antwort.

Leider werden in diesem Fall alle Componenten von Form1 durchlaufen. Mir ging es aber in diesem Fall nur um die TSpeedButton die auf Panel1 liegen.
Jetzt kann ich das natürlich mit einer weiteren IF-Abfrage prüfen. Nur ist dann der "Vorteil" des FOR-IN wieder dahin.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:28
Hi,

oh, da hatte ich mich wohl verlesen.

Was mit TForm geht, sollte natürlich auch mit TPanel klappen:
Delphi-Quellcode:
var
  Control: TComponent;
begin
  for Control in Panel1 do
    if Control is TSpeedButton then
      TSpeedButton(Control).Glyph := nil;
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:40
Zitat von mirage228:
... Was mit TForm geht, sollte natürlich auch mit TPanel klappen:
Genau das geht leider nicht.

Ich fürchte es liegt daran das der Owner der Buttons die Form und nicht das Panel ist.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:43
Hi,

habs mal getestet: Der Owner der Speedbuttons ist tatsächlich das Form, und nicht das Panel.

Da fällt mir nur dieser Code zu ein:
Delphi-Quellcode:
var
  Control: TComponent;
begin
  for Control in Self do
    if (Control is TSpeedButton) and (TSpeedButton(Control).Parent = Panel1) then
      TSpeedButton(Control).Glyph := nil;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:48
Hallo Sharky,

Zitat von Sharky:
Genau das geht leider nicht.
hast du den Schreibfehler im Code von mirage228 bei deinem Test mit übernommen?

Code:
var
  Control: TComponent;
begin
  for Control in Panel1 do      // muss heißen: Panel1.Controls
    if Control is TSpeedButton then
      TSpeedButton(Control).Glyph := nil;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:53
Hi marabu,

genau .Controls geht ja nicht.
Den Grund habe ich schon in meinem ersten Posting geschrieben...

Der Enumerator von TComponent bezieht sich nur auf das Components und nicht auf das Controls Array.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 09:54
Dann bleibe ich in diesem Fall bei meinem ersten Code. Da dieser nur die Controls auf dem Panel durchläuft ist er effektiver als die FOR-IN Variante.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Alle Controls mit FOR-IN durchlaufen?

  Alt 5. Jun 2005, 11:01
Lasst mich nicht dumm sterben. Ich arbeite noch mit D7. Warum kann das FOR-IN-Konstrukt für Components verwendet werden, aber nicht für Controls? Warum nicht für Arrays? Waldteufel hat mir eben in der Online-Hilfe von D2005 gezeigt, dass FOR-IN mit ArrayExpr, StringExpr, SetExpr und CollectionExpr funktionieren soll. Warum also nicht mit einem Controls-Array? Ist da ein Fehler in der Dokumentation?

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 Uhr.
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