![]() |
Auf Control zugraufen per Schleife?
Ich möchte gerne auf Controls (u. a. auf Buttons und Panels) per schleifen zugreifen.
Das klappt aber nicht so wie ich es mir vor stelle, kann mir einer sagen wie ich es richtig machen muß? z.b.:
Delphi-Quellcode:
for i := 0 to 5 do begin
button[i].visible := false; panel[i].visible := false: end; |
Re: Auf Control zugraufen per Schleife?
Die Suche ist dein Freund:
![]() |
Re: Auf Control zugraufen per Schleife?
Ich finde nur Win32 antoworten.
Delphi-Quellcode:
Hier wird nur schön fein säuberlich FindComponent rot unterkringelt...
FindComponent('Button' + (i)) as Button).Visible := false
|
Re: Auf Control zugraufen per Schleife?
Man könnte ja auch mal so verwegen sein und das genannte Stichwort in der Hilfe nachschlagen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; const NamePrefix = 'MyEdit'; begin for i := 1 to 20 dobegin TEdit.Create(Self).Name := NamePrefix + IntToStr(i); with TEdit(FindComponent(NamePrefix + IntToStr(i))) do begin Left := 10; Top := i * 20; Parent := self; end; end; end; |
Re: Auf Control zugraufen per Schleife?
Zitat:
//Ups, sorry Luckie... Hab' mir den Post zu lange angesehen... |
Re: Auf Control zugraufen per Schleife?
Das gepostete Beispiel funtkionert nicht bei .Net anwendungen
|
Re: Auf Control zugraufen per Schleife?
Hallo,
habe diesen Code eben mit Delphi 2005 VCL.NET getestet und er lässt sich kompilieren:
Delphi-Quellcode:
oder arbeitest Du mit WinForms?
var
i: integer; begin for i := 0 to 3 do begin (FindComponent('Button' + (IntToStr(i))) as TButton).Visible := false end; end; mfG mirage228 |
Re: Auf Control zugraufen per Schleife?
Zitat:
was du willst ist wahrscheinlich:
Delphi-Quellcode:
Habe ich zwar nicht mit D.Net gestestet, aber in dem Punkt dürfte die Syntax beider Pascal.Net gleich sein. ;)
class procedure DingsBums.SetChildrenVisibility(parent :Control; visible :Boolean);
var Control : Control; begin for Control in parent.Controls do Control.Visible := visible; |
Re: Auf Control zugraufen per Schleife?
Zitat:
|
Re: Auf Control zugraufen per Schleife?
In welcher Hinsicht? Verstehst du es nicht? Oder lässt es sich nicht kompilieren?
Du musst solche Informationen auch angeben, :roll:, weil man dir sonst nicht helfen kann. |
Re: Auf Control zugraufen per Schleife?
Ich dachte ich greife dein Beispiel auf. ;)
Zitat:
|
Re: Auf Control zugraufen per Schleife?
Delphi sagt mir aber, das ein ArrayTyp erforderlich ist. Soweit war ich auch schon, das klappt leider nicht.
|
Re: Auf Control zugraufen per Schleife?
![]()
Code:
private void SetChildrenVisibility(Control parent, bool visible)
{ foreach(Control control in parent.Controls) { control.Visible = visible; } } this.SetChildrenVisibility(this, false); |
Re: Auf Control zugraufen per Schleife?
ich nutze jedoch delphi
|
Re: Auf Control zugraufen per Schleife?
Das habe ich bereits bemerkt. Wenn du aber tatsächlich für das .NET Framework schreibst, und nicht die VCL.NET benutzt, dann ist es letztlich nur eine Frage der anderen Syntax.
|
Re: Auf Control zugraufen per Schleife?
Ich habe das kurze Codestückchen mal eben kompiliert und die Exe im Reflector betrachtet. Die Umschaltung auf Delphi ergab:
Delphi-Quellcode:
Warum jetzt die Variable control1 nirgendwo deklariert wird, kann ich dir aber nicht sagen. :gruebel: Evtl. ein kleines Problem im Programm, denn die VB-Variante scheint korrekt zu sein:
procedure MainForm.SetChildrenVisibility(parent: Control; visible: boolean);
begin for control1 in parent.Controls do begin control1.Visible := visible end end;
Code:
Private Sub SetChildrenVisibility(ByVal parent As Control, ByVal visible As Boolean)
Dim control1 As Control For Each control1 In parent.Controls control1.Visible = visible Next End Sub |
Re: Auf Control zugraufen per Schleife?
Auch wenn obriges beispiel funtionieren sollte, hilft es nciht weiter. Immerhin will ich nicht alle sondern ausschlißlich ein paar Panels und Buttons sichbar (und andocken) machen.
|
Re: Auf Control zugraufen per Schleife?
Bevor hier Mathias noch 5-mal sagt, dass es geht und du darauf sagst, dass es nicht geht und ... :freak:
Ich habe deine Problem so aufgefasst, dass du auf ein paar Controls in einer Schleife zugreifen willst: Zitat:
Mein kleiner Minischnipdel macht nix anderes als Visible der Controls eines Forms/Panels/TabSheets/whatsoever auf true oder auf false zu setzen. Die Syntax /IST/ kompatibel zu D.Net auch wenn ich zuviel Stolz habe um es selbst auszuprobieren. ;) Was Delphi vielleicht nicht schnallt ist das hier:
Delphi-Quellcode:
auch wenn's dann kkomisch aussieht, benenne die Variable einfach mal um. ;))
Control : Control;
Nachtrag:
Delphi-Quellcode:
Aha! nun kommen wir doch der Sache etwas näher. ;)
Auch wenn obriges beispiel funtionieren sollte, hilft es nciht weiter. Immerhin will ich nicht alle sondern ausschlißlich ein paar Panels und Buttons sichbar (und andocken) machen.
Werfe betreffende Controls in einen Container (ArrayList, ControlCollection, ...) und nun kansst du durch den iterieren. p.s.: Mathias' Code war natürlich falsch. :lol: |
Re: Auf Control zugraufen per Schleife?
Zitat:
|
Re: Auf Control zugraufen per Schleife?
Zitat:
|
Re: Auf Control zugraufen per Schleife?
:hi: Ich sagte doch, der Delphi-Codeschnippsel kam aus Lutz Roeder's Reflector. Meine CSharp-Funktion findest du auf Seite 1.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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