Autor Beitrag
elduchte
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Mo 23.06.03 00:21 
Hallo Leute,

ich habe mal ein Frage: Ich habe neun Eingabefelder. Nachdem ich in jedem Feld ein Wert eingegeben habe, klicke ich auf einen Button. Jetzt soll folgende Überprüfung stattfinden:
  1. befindet sich in einem der Felder ein bestimmter Wert, soll eine Meldung erscheinen und weiter nichts.
  2. ist dies nicht der Fall soll überprüft werden, ob in 2 von den neun Felder jeweils ein bestimmter Wert steht, auch dann --> Meldung und sonst nichts.
  3. sind o. g. Punkte nicht zutreffend, will ich eine Berechnung durchführen.
Dieses Problem kann ich mit unzähligen IF-Anweisungen durchführen, allerdings halte ich das nicht für wirklich "elegant".

Gibt es da nicht auch eine bessere Lösung, die selbst ein Anfänger versteht?

Vielen Dank für Eure Hilfe
Andreas

Moderiert von user profile iconTino: List-Tags hinzugefügt.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 23.06.03 02:07 
Du kannst die Methode FindComponent des Formulars benutzen, auf dem die Komponenten sind (MeineSelbstdefinierteForm.FindComponent kann nur Komponenten finden, die als Owner "MeineSelbstdefinierteForm" haben)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for Zahl := 0 to Anzahl - 1 do
begin
  MyEdit := (FindComponent('Name' + IntToStr(Zahl)) as TEdit;
  if MyEdit.Text = 'a' then ...
end;


Oder du schreibst die Edits in ein Array:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var Edits: array[0..Anzahl - 1of TEdit;
begin
  Edits[0] := EditStart;
  Edits[1] := EditEnd;
  Edits[2] := ...
  ...
end;

begin
  for Zahl := 0 to Anzahl - 1 do
    if Edits[Zahl].Text = 'a' then ...
end;

_________________
Ist Zeit wirklich Geld?
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 23.06.03 07:44 
Hallöle..

hab auch ne Möglichkeit:

myInteger : Integer;

jetzt als Ereignis auf jeweils die 8 Edit-Felder, und zwar bei "OnExit"
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if Edit1.Text <> '' then  inc(MyInteger, 2else inc(MyInteger, -2);
if Edit2.Text <> '' then  inc(MyInteger, 4else inc(MyInteger, -4);
if Edit3.Text <> '' then  inc(MyInteger, 8else inc(MyInteger, -8);
if Edit4.Text <> '' then  inc(MyInteger, 16else inc(MyInteger, -16);
[...] usw


dann fragst du bei ButtonClick in einer Case-Abfrage myInteger ab:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
case myInteger of:
2// Edit1 enthält Text
4// Edit2 enthält Text
8// Edit3 enthält Text
16// Edit4 enthält Text

6// Edit1 und Edit 2 enthalten Text
10// Edit1 und Edit3 enthalten Text

28// alle ausser Edit1 enthalten Text
end//case

so. Fertig

Prinzip verstanden? ist zwar vielleicht genauso lang wie deine IF-Abfragen, sieht aber unheimlich clever aus ;)

mfG
BeniSchindler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win 2k / suse9.1
D7 Prof / Kylix 3
BeitragVerfasst: Di 24.06.03 11:32 
sieht verdammt klever aus hat jedoch einen Fehler. ;) Den wenn blos in Edit2 ein Wert drin steht, ist der Wert "MyInteger" nicht bei 2 sondern bei -376 (oder so) . Man sollte also in jeder Zeile das Else weglassen. "else inc(MyInteger, -2); ". Und dann stimmt das ganze wieder so wie du das geschrieben hast.

ich würde das ganze auch wie AndyB veranstalten.

_________________
Result := 42; Application.ProcessMessages;
lb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

Win98, win2000, winxp, linux
D5,Kylix
BeitragVerfasst: Mo 14.07.03 23:07 
Titel: zu Andy B
Die Sache mit den Edits als Array funtkioniert bei mir nicht so ganz.
Nenne ich die Variable

var
Edits : Array[0..5] of TEdit;

Dann muss ich doch zumindest mit TEdit.Create die Edits erzeugen. Mache ich dass, so werden Sie zwar erzeugt, sind jedoch mirgends auf meiner Form zu sehen! Auch wenn ich Edits[0].visible := True, ..., setzte!

Wie bekomme ich die Edits auf meiner form zur Erscheinung?

_________________
Aus dieser hohlen Gasse muss er kommen
Guesse Lutz
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mo 14.07.03 23:48 
Du musst den Edits noch mitteilen, WO sie erscheinen sollen.
Sprich, die brauchen ein Übergeordnetes Element .Parent

Nach einem Edit[n].Parent := Form1; sollten die Edits auch erscheinen.
(Netter weise erst mal alle übereinander... Musst halt auch noch positionieren...)

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 15.07.03 00:04 
Das ist ein drei Wochen alter Beitrag. Hätte der Frager Interesse an weiteren Vorschlägen, dann hätte er sich noch mal gemeldet ;)

Also nicht zu viel Mühe machen. Eigentlich hab ich auch schon ein Beispielcode geschreiben bis ich merkte, daß sein Programm wahrscheinlich schon längst fertig ist.

_________________
Popov
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Di 15.07.03 14:11 
Ups, hatte gar nicht auf das Datum geachtet.
Nun, aber vielleicht benutzt ja doch mal jemand die Suchfunktion und findet diesen Thread (OkOk. Träumen darf man ja, oder?)

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
lb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

Win98, win2000, winxp, linux
D5,Kylix
BeitragVerfasst: Mi 16.07.03 22:24 
Titel: Danke
Vielen Dank,
Wolf68, jetzt funktioniert es! Auch wenn dieser Beitrag 3 Wochen alt ist, mich hat das mit den Arrays von Edits interresiert. Ich wusste, in VB kann man das machen, jedoch nicht wie das in Delphi geht.

_________________
Aus dieser hohlen Gasse muss er kommen
Guesse Lutz
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mi 16.07.03 22:43 
Verkehrte Welt, hä? Das ist echt lustig. Eine(r) eröffnet einen Beitrag und ein(e) andere(r) bedankt sich. :rofl:

_________________
Hasta La Victoria Siempre