Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrere Objkete auf einmal anzeigen/ausblenden (https://www.delphipraxis.net/61659-mehrere-objkete-auf-einmal-anzeigen-ausblenden.html)

daniel8520 24. Jan 2006 17:22


Mehrere Objkete auf einmal anzeigen/ausblenden
 
Hallo DPler,

mein Problem hört sich zwar einfach an, aber ich möchte es möglichst elegant lösen.
Ich möchte ganz einfach mehrer Objekte (also Edits, Buttons, etc.) auf einen Klick verschwinden bzw. anzeigen lassen.
Ich könnte nun natürlich alle Objekte einzeln ein- bzw. ausblenden lassen, aber das erscheint mir doch ziemlich unelegant.

Wie sollte ich das besser lösen?

arbu man 24. Jan 2006 17:25

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Setze die Objekte auf ein panel und blende das panel aus

daniel8520 24. Jan 2006 17:30

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Ehrlich gesagt wäre das mein "Not-Lösung" gewesen.

Noch andere Vorschläge?

RavenIV 24. Jan 2006 17:40

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
wieso Not-Lösung.
muss doch keiner merken, dass die Komponenten auf nem Panel drauf sind...

daniel8520 24. Jan 2006 17:40

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Kann man ein Panel transparent machen?

Khabarakh 24. Jan 2006 17:41

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Du könntest ein Array of TControl (als Konstante) benutzen.

daniel8520 24. Jan 2006 17:55

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Zitat:

Zitat von Khabarakh
Du könntest ein Array of TControl (als Konstante) benutzen.

Hab ich versucht, klappt aber so nicht:
Delphi-Quellcode:
const
  test: array[1..2] of TControl = ((Button1),(Button2));
Fehler:
[Fehler] Main.pas(74): E2026 Konstantenausdruck erwartet

Khabarakh 24. Jan 2006 18:04

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Jetzt, wo du es sagst, fällt mir selbst auf, dass das schlecht gehen kann :wink: .

ConstantGardener 24. Jan 2006 22:32

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Hallo erstmal(s)...

wenn's das Panel nicht tut dann setz doch TComponent.Tag der auszublendenden Komponenten auf bestimmten Wert und iteriere über alle Komponenten des Forms. Wenn der Tag der aktuellen Komponente den entsprechenden Wert hat blendest du die Compo aus/ein. Hat den Vorteil, daß du bei verschiedenen Tags auch verschiedene Compos bzw. Zusammenstellungen ein-/ausblenden kannst.

daniel8520 25. Jan 2006 13:51

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Guter Idee,

ich werd's versuchen!
[OFF]Endlich mal ein Halberstädter hier![/OFF]

Danke!

ConstantGardener 25. Jan 2006 14:17

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Hallo Daniel8520, hatte ich beim antworten gar nicht gesehen :shock: :cyclops: ... Da hätte es kürzere Wege gegeben als die Frage und die Antwort einmal im Internet um die halbe Welt zu schicken... :mrgreen: Na ja, die Welt ist halt klein...

inherited 25. Jan 2006 14:47

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Es gab mal eine Funktion FindComponent:
Delphi-Quellcode:
For i:=1 to 27 do
  (FindComponent('Edit'+IntToStr(i)) as TEdit).text := 'bla';
Ich weiss aber nicht ob es die noch gibt(da ich es unter Delphi2006 noch nie ausprobiert habe, unter 3.0 zumindest funktioniert es)

daniel8520 30. Jan 2006 15:45

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Hallo,

ich habs jetzt mal so probiert!
Delphi-Quellcode:
var
   m,i: Integer;
begin
   m := MainForm.ComponentCount;
   for i := 0 to m-1 do
   begin
     If MainForm.Components[i].Tag = 10 then
     begin
       MainForm.Components[i].???
     end;
   end;
end;
Allerdings hat TComponent keine Visible Eigenschaft (siehe Fragzeichen). Wie kann ich nun diese Komponenten mit dem Tag 10 ausblenden bzw. einblenden?

Danke bis hier her!

Lannes 30. Jan 2006 18:07

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
Hallo,

die Eigenschaft Visible stammt von TControl, also IMHO so:
Delphi-Quellcode:
var aObj : TObject;
    i: Integer;
begin
  for i := 0 to ComponentCount-1 do
    begin
    aObj := Components[i];
    if aObj is TControl then
      if TControl(aObj).Tag = 10 then
        TControl(aObj).Visible := False;
    end;
end;

ConstantGardener 30. Jan 2006 21:48

Re: Mehrere Objkete auf einmal anzeigen/ausblenden
 
.... genau so. :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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