Autor Beitrag
BifiRanger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP
Delphi 3 Standard
BeitragVerfasst: Mo 30.07.07 16:29 
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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 30.07.07 17:15 
Moin!

Du suchst Suche in: Delphi-Forum, Delphi-Library FINDCOMPONENT ;)

Alternative: die Controls dynamisch anlegen und Referenzen in einem Array speichern. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
BifiRanger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP
Delphi 3 Standard
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 30.07.07 19:21 
FindComponent funktioniert etwa so:
ausblenden Delphi-Quelltext
1:
2:
3:
with findcomponent('Edit'+IntToStr(i)) as TEdit do begin
  Visible:=True://False; oder was du eben willst
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

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Mo 30.07.07 19:59 
user profile iconBifiRanger 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