Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Nach Showmessage Daten aus einem Editfeld einlesen (https://www.delphipraxis.net/4388-nach-showmessage-daten-aus-einem-editfeld-einlesen.html)

kaddy 27. Apr 2003 12:37


Nach Showmessage Daten aus einem Editfeld einlesen
 
Hallo Netz,
ich möchte wie oben schon angekündigt nach dem Befehl showmessage Daten aus einem Editfeld einlesen. Hier ist mein code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
per: integer;

begin
 
 //Eingabe der Maschinendaten
 showmessage('Anzahl Maschinen eingeben');
 mac:=strtoint(Eingabefeld.text);

end;
Mein Problem ist nun, dass ich durch die Showmessage dem Benutzer sagen möchte, was er ins EditFeld eingeben soll. Wenn er nun okay klickt, stürtzt der Rechner ab, da er aus dem Editfeld nichts einlesen kann. Wenn ich vorher etwas eingebe funktioniert es, was ich aber nicht möchte. Hat jemand eine Idee. Ich bin nicht auf das showmessage festgelegt. Ich möchte grundsätzlich nur dem Benutzer sagen, was er eingeben soll und er soll dann die Zahlenwerte eingeben. Ich kann aber nicht für alles ein extra Editfeld mit Label bauen, da es zu viele Daten sind.
Danke!
Gruß
Kaddy :bounce2:

[edit=DAniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]

Christian Seehase 27. Apr 2003 12:47

Moin Kaddy,

das klingt für mich so, als solltest Du noch mal das Layout überarbeiten, wenn alle Eingabefelder ohne Beschriftung sind, so dass eine Meldung erforderlich ist, was einzugeben ist.
Und wenn es so viele Felder sind, dass es zu aufwendig wäre immer ein Label/Static hinzuzufügen, dürfte es für die Anwender recht nervig werden, immer wieder eine Meldung zu erhalten und bestätigen zu müssen.

Das einzige was mir einfiele, wäre ein nicht modales Meldungsfenster, bzw. ein Bereich im Formular, in dem die Meldungen was einzugeben ist angezeigt werden (z.B in einer Statusbar), wobei dann das nicht modale Fenster bei jedem Focuswechsel programmseitig zu schliessen und ein neues zu öffnen wäre.
Das Problem ist halt, dass Du bei einem modalen Meldungsfenster nichts in das Eingabefenster eingeben kannst.
Ausserdem könnte es nichts schaden, wenn den Eingabefeldern noch ein Hint zugeordnet wäre.

Die Exception bei StrToInt kannst Du mit StrToIntDef umgehen.

Stanlay Hanks 27. Apr 2003 12:49

Dein problem ist eigentlich nur, dass du dem Benutzer keine Zeit lässt, etwas einzugeben. Delphi arbeitet die Anweisungen von oben nach unten durch. Bei ShowMessage pausiert das Programm so lange, bis man die meldung schließt. Machs doch so: Zeig die Message ganz normal an. dann lässt du den Benutzer die Daten eingeben und dann machst du beim Onkeydown ereignis des EditFeldes eine Abfrage, ob es die Entertaste war, dann kann er die Daten einlesen. Sprich: Der Benutzer soll einfach seine Eingabe mit Enter bestätigen. Andererseits ginge es doch auch, dass du einfach ein Label nimmst, es auf das Formular setzt, und nach jeder bestätigten Eingabe den Inhalt Änderst, so dass der benutzer immer aktuelle Infos da hat, was er eingeben soll.

man liest sich, Stanlay :coder:

Duffy 27. Apr 2003 13:19

Hallo,
eine andere Methode wäre, man läßt das Eingabefeld weg und benutzt InputBox oder InputQuery. Dann hat man Hilfetext und Antwort zusammen.

Bye

Daniel B 27. Apr 2003 13:34

Hallo,

siehe hier.

Grüsse, Daniel :hi:

kaddy 27. Apr 2003 14:37

Hallo,
danke Euch für die vielen hilfreichen Antworten. Habe mich für die Variate Label und Enter entschieden. Habe leider aber etwas Probleme sie umzusetzen. Hier mein Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
mac: integer;
per: integer;

begin
 data_init;
 bedarf_init;
 prod_struc_init;

 //Eingabe der Maschinendaten
  Label1.caption:='Anzahl Maschinen eingeben';
  TForm1.EingabefeldKeyDown(Sender,key,shift);
  mac:=strtoint(Eingabefeld.text);

end;



procedure TForm1.EingabefeldKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key =13 then
end;
Was mache ich falsch? Er kann nicht complieren und springt auf key.
Danke!
Kaddy 8)
[edit=Daniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]

Christian Seehase 27. Apr 2003 14:43

Moin Kaddy,

der Fehler wird wohl in dieser Zeile geliefert:

Delphi-Quellcode:
TForm1.EingabefeldKeyDown(Sender,key,shift);
Du kannst zwar die Methode KeyDown auch direkt aufrufen, aber musst dazu natürlich die Parameter mit übergeben.
Das heisst statt Sender,key,Shift musst Du die entsprechenden Werte angeben. Bei Sender hast Du nur Glück gehabt, dass Du die Methode aus einer anderen Methode, die Sender als Parameter erhält, aufgerufen hast, ansonsten wäre die Meldung schon bei Sender gekommen.

Was mir nicht so ganz klar ist:
Was willst Du mit dem Aufruf überhaupt bewirken?

Stanlay Hanks 27. Apr 2003 14:44

Du muss #13 schreiben, sonst meint er dass du eine Integer Zahl willst und Word und Integer passt nicht zusammen.

:wall: schmarrn. vergiss, was ich grad geschrieben hab. is totaler müll

man liest sich Stanlay :bounce1:

Luckie 27. Apr 2003 14:48

Zitat:

Zitat von Stanlay Hanks
Word und Integer passt nicht zusammen.

Informier dich bitte mal über ganzzahl Datentypen.

Christian Seehase 27. Apr 2003 14:50

Moin Stanlay,

Zitat:

Zitat von Stanlay Hanks
...und Word und Integer passt nicht zusammen

Doch, warum nicht? Es handelt sich bei beiden Datentypen um ganzzahlige Typen, nur dass eben Word einen kleineren Wertebereich hat. Word 16 Bit ohne Vorzeichen, integer (bei 32 Bit Compilern) 32 Bit mit Vorzeichen.

@Kaddy:
Wenn ich mir so Deinen Code ansehe stellt sich mir eine Frage:
Kann es sein, dass Du bislang noch nicht mit ereignisgesteuerten Programmen gearbeitet hast?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.
Seite 1 von 2  1 2      

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