Simples Anfängerproblem (onclick +1 machen)

Spreemy

Grünschnabel
Simple Anfängerprobleme

Also bin noch ganz neu dabei und will ein Button der bei click zu einem Editfeld immer eins dazuzählt. Wird keine große sache sein, aber ich hab nach stundenlangen googeln nix gefunden.
THX im vorraus
 
Zuletzt bearbeitet:
Hallo,

Im OnClick Ereignis des Buttons einfügen:

Code:
Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1);

Du musst nur darauf achten, dass im Editfeld auch wirklich eine Zahl steht, sonst wird bei der Umwandlung vom Text in eine Zahl eine Exception ausgelöst. Unter "Beispiele" gibt es glaube ich auch eine Komponente, die bereits zwei Schaltflächen zum hoch- und runterzählen eines Editfeldes besitzt.


Grüße Thomas
 
Danke hat prima geklappt.

Aber jetzt kommt gleich das nächste prob!

Ich will 5 Tedit ´s in eines zusammen addieren.
Aber ohne dass ich ein Button drücken muss, also selbstaktualisiered.
Ich komm da auf kein grünen Zweig.

und noch ein Problem ;)

wie kann ich diesen wert dann speichern? Dass ich das Programm schließen und wieder öffnen kann und der wert wieder da ist?

THX
 
Einfach in einen Timer packen, der alle x Sekunden das Ergebnis aktualisiert. Oder eine Prozedur/Funktion schreiben, die den Text als int aller Edit-Felder zusammenrechnet und diese Prozedur bzw. Funktion in den OnChange-Event-Handler von jedem Edit-Feld packst.
 
tut mir leid, da versteh ich net viel.
ich code delphi seit 2 tagen ;)

kannst du mir vlt ein code beispiel geben?

thx
 
Hallo,

wie Sebastian schon geschrieben hat, würde ich für ein Editfeld eine OnChange-Routine anlegen, in der die Werte der einzelnen Felder addiert werden und anschließend diese Routine den restlichen Editfeldern für das OnChange Ereignis zuweisen.

Bevor die einzelnen Werte addiert werden können, müssen Sie natürlich in eine Zahl umgewandelt werden, da die Eingabe in einem Editfeld als Text abgespeichert wird. Dies wird über die Funktion StrToInt gemacht. Also z.B. so:

Code:
Summe := StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + ...

Wohin möchtest du die Werte den abspeichern? Möglich wäre hier z.B. eine Datei oder die Registry.


Grüße Thomas
 
Zuletzt bearbeitet:
ich glaub wir haben ein kleines Kommunicationsproblem ;)
Du weißt net so richtig was mein Problem ist!
Deshalb Anhang!

Also ich will alle edit Felder die bei "Input" stehen zusammenzählen und bei "Gesamt Heute" ausgeben...usw.(ist ja selbsterklärend)
Per Button wär das ja leicht machbar, aber das dieses Feld wie eine Zelle in Excel aggiert, und immer aktuell ist, schaff ich nicht.
Danke
 

Anhänge

  • screeny.jpg
    screeny.jpg
    24,5 KB · Aufrufe: 181
so jetzt sitzt ich endlich vor einem Computer wo Delphi installiert ist. ;)

Da ich nicht weiß, wie deine Editfelder heißen, nenne ich die fünf Eingabefelder einfach mal Edit1 bis Edit5 und das Ausgabefeld Edit6.

Nun zum Problem:

In Delphi ist in einem Editfeld u.a. das Ereignis OnChange definiert. Dieses Ereignis wird immer dann ausgelöst, wenn sich der Inhalt des Editfeldes ändert. Dies kann sowohl durch eine direkte Benutzereingabe (Tastatur) oder durch Programmcode (z.B. die "+" "-" Schaltflächen) geschehen. Um bei diesem Ereignis Code auszuführen, muss eine Ereignisbehandlungsroutine geschrieben und dem Ereignis zugewiesen werden.

In diesem Fall also im Designer das erste Editfeld markieren, im Objektinspektor die Karteikarte Events auswählen und dopplet auf den Eintrag OnChange klicken. Delphi erstellt nun automatisch die Behandlungsroutine und weist sie dem Ereignis zu.

Hier brauch jetzt nur noch der Code zum Addieren hinzugefügt zu werden (siehe vorh. Post):

Code:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Edit6.Text := IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + StrToInt(Edit3.Text) + StrToInt(Edit4.Text) + StrToInt(Edit5.Text));
end;

Ab sofort wird nun das Ergebnisfeld aktualisiert, sobald sich der Inhalt von Edit1 ändert. Damit dies auch bei den restlichen Editfeldern funktioniert, muss die eben geschriebene Behandlungsroutine noch den restlichen Editfeldern zugewiesen werden.

Dazu jeweils ein Editfeld markieren, im Objektinspektor wieder zu Events wechslen und neben dem Eintrag OnChange aus der Listbox die eben geschriebene Routine auswählen.

Grüße Thomas
 
Danke, hat mir sehr gehofen.

Es ist mir ja fast schon peinlich zu fragen...
aber ich hab tatsächlich noch ein Problem ;)
Hat soweit alles geklappt, aber wenn ich jetzt auf das "+" Klicke, bekomm ich ne Meldung:

[...]EConvertError[...] "1,5" ist kein gültiger Integerwert.

Vielleicht hätt ich erwähnen sollen dass es in 1,5e/1er/0,5er Schritten hochgeht.





By the way, würdest du mir verraten ob du das beruflich machst, wenn ja was für ne ausbildung du gemacht hast?

ach ja... und wie kann ich jetzt den untersten wert "noch zu zahlen" speichern?
 
Zuletzt bearbeitet:
Hallo,

[...]EConvertError[...] "1,5" ist kein gültiger Integerwert.
Die Funktionen StrToInt und IntToStr arbeiten nur mit Ganzzahlen. Um mit Fließkommazahlen zu arbeiten einfach StrToInt mit StrToFloat und IntToStr mit FloatToStr ersetzen.


Grüße Thomas
 
Zurück