Entwickler-Ecke
Sonstiges (Delphi) - Komponenten unsichtbar machen
BifiRanger - Mo 30.07.07 16:29
Titel: Komponenten unsichtbar machen
Hi,
ich habe in meinem Programm über 80 Panele. Ein Mausklick auf ein Panel macht ein unsichtbares Editfeld sichtbar. Bis zu einer Eingabe vom Benutzer(OnCange), dann wird es wieder unsichtbar.
Ich möchte, dass aber maximal 1 Editfeld zur Zeit sichtbar ist.
Meine Idee war als erstes in die OnClick Abfrage der Panele
Quelltext
1: 2: 3: 4:
| Edit1.visible := false; Edit2.visible := false; ... Edit80.visible := false; |
zu kopieren, copy und paste sei dank :)
Nur um dann die sowieso schon unsichtbare Komponente, die ich nochmal unsichtbargemacht habe wieder sichtbar zu machen.
z. B.
Edit2.visible := true;
Das würde das Programm aber nur aufblähen, den Code unübersichtlich machen.
Gibt es eine einfachere Methode?
Falls es wichtig ist:
- Das Editfeld zum Panel liegt genau über dem Panel.
- Ich nutze keine Buttons, weil ich die "color" Eigenschaft des Panels benötige.
Gruß
Bifi
Narses - Mo 30.07.07 17:15
Moin!
Du suchst
FINDCOMPONENT ;)
Alternative: die Controls dynamisch anlegen und Referenzen in einem Array speichern. :idea:
cu
Narses
BifiRanger - Mo 30.07.07 19:16
Tut mir leid, aber das Findcomponent versteh ich überhaupt nicht
Zitat: |
Die Methode FindComponent gibt an, ob der Komponente die im Parameter AName angegebene Komponente untergeordnet ist.
function FindComponent(const AName: string): TComponent;
Beschreibung
FindComponent gibt diejenige Komponente im Array Components zurück, deren Name mit dem String im Parameter AName übereinstimmt. Mit Hilfe von FindComponent können Sie feststellen, ob eine bestimmte Komponente einer anderen Komponente untergeordnet ist.
Die Methode ignoriert Groß- und Kleinschreibung.
|
Aber ich habe mir grad überlegt, ob man nicht einen "Globalen Befehl" für das Formular anlegen kann. Also sowas wie,
Wenn click auf irgendein Panel dann alle Editfelder unsichtbar.
Ich frage mich nur ob es möglich ist, pauschal alle Komponenten eines Types ansprechen kann.
[Edit]
Wenn nicht, ob man sowas evtl. mit einer Schleife erledigen kann.
[/Edit]
Gruß
Bifi
Fighter#1 - Mo 30.07.07 19:21
FindComponent funktioniert etwa so:
Delphi-Quelltext
1: 2: 3:
| with findcomponent('Edit'+IntToStr(i)) as TEdit do begin Visible:=True:end; |
i ist eine Variable des Typs Integer, damit kannst du zum beispiel in einer Schleife alle Edits unsichtbar machen.
Du kannst zB eine Funktion für ALLE Panels machen, wo mit hilfe des Senders der Panel bestimmt wird (panel1 -- i := 1)
... viel Spaß
mfg, Fighter#1
Reinhard Kern - Mo 30.07.07 19:59
Titel: Re: Komponenten unsichtbar machen
BifiRanger hat folgendes geschrieben: |
Hi,
ich habe in meinem Programm über 80 Panele. Ein Mausklick auf ein Panel macht ein unsichtbares Editfeld sichtbar. Bis zu einer Eingabe vom Benutzer(OnCange), dann wird es wieder unsichtbar.
Ich möchte, dass aber maximal 1 Editfeld zur Zeit sichtbar ist.
...
Bifi |
Hallo,
ich habe sowas mal mit einem Stringgrid gemacht: wenn man ein Feld anklickt, legt sich ein Editfeld (unsichtbar weil ohne Rand) drüber. Ich habe aber nur EIN Editfeld benutzt und die Koordinaten nach denen des Gridfeldes gesetzt. Damit hört dein ganzes Problem einfach auf zu existieren.
Ich kann mich nicht mehr genau erinnern, vielleicht habe ich das TEdit auch dynamisch erzeugt, aber das spielt ja keine grosse Rolle.
Gruss Reinhard
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!