Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Edit-Eingabe Problem =( (https://www.delphipraxis.net/101021-edit-eingabe-problem-%3D.html)

Tommy1988 7. Okt 2007 10:12


Edit-Eingabe Problem =(
 
Also,
Ich habe jetzt ungefähr eine Stunde nach einer Lösung gesucht aber keine hinbekommen.
In einem SpinEdit überprüfe ich, ob die erste Zahl eine 0 ist oder eine andere und reagiere entsprechend dadrauf:
Delphi-Quellcode:
if SpinEdit1.Text = '' then
 begin
  if not (Key in ['1'..'9', Char(VK_BACK)]) then
  Key := #0;
 end;
if SpinEdit1.Text >= '1' then
  begin
  if not (Key in ['0'..'9', Char(VK_BACK)]) then
  Key := #0;
  end;
Ist die erste Eingabe eine 0, wird sie unterdrückt. Ist es eine 1 oder was anderes, wird sie gestattet.

Im SpinEditChange prüfe ich ob die Eingabe eine bestimmte Größe nicht überschreitet:
Delphi-Quellcode:
if SpinEdit1.Value > kilobyte then
 begin
  SpinEdit1.Value := kilobyte; // Dürfte klar sein diese Zeile
 end;
Das klappt soweit.
Gebe ich jetzt aber (wen MaxValue 111 ist) 999 ein, so springt der Cursor an erste Stelle im SpinEdit,
und ich kann wieder eine 0 eingeben, was nicht sien sollte :idea:

Was kann man da machen?

SirThornberry 7. Okt 2007 10:15

Re: Edit-Eingabe Problem =(
 
die CursorPosition kannst du mit SelStart abfragen. Du solltest also nicht davon ausgehen das jemand prinzipiell die Zahlen nacheinander eintippt.
In diesem Sinne finde ich deinen Ansatz auch falsch. Was ist wenn ich eine 100 Eintragen will, 2 mal die 0 tippe und dann eine 1 davor eintippen will? dann würde nur eine 1 am ende da stehen?
Sag einfach mal was der Sinn des ganzen ist, dann kann man dir vielleicht eine sinnvollere Herangehensweise empfehlen.

Tommy1988 7. Okt 2007 10:35

Re: Edit-Eingabe Problem =(
 
Ok, der Sinn ist der:

Ich öffne mit einem Dialog eine Datei dessen Dateigröße ich in Kilobyte umrechne und in einer Variablen speichere.
Im SpinEdit kann ich angeben, in wieviele kleine Kilobyte-"Stückchen" diese Datei geteilt werden soll.

Deswegen sollte man keine 0 am anfang eingeben könne :( Weil das wäre ja rein theoretisch auch unsinn

SirThornberry 7. Okt 2007 10:41

Re: Edit-Eingabe Problem =(
 
dann lass den User unsinn eingeben und wenn er mit dem Unsinn arbeiten will gibst du aus was damit nicht stimmt. Im OnExit oder dergleichen kannst du das ja auch schon machen.

Tommy1988 7. Okt 2007 10:45

Re: Edit-Eingabe Problem =(
 
mhh... ich weis nicht so recht , unsinn ist nie gut =)

ich gucke mal.

Edit:
Leider ist das mit dem Unsinn nicht so gut. Sonst könnten z.B. 2000 Teilchen erstellt werden, was sehr unangenehm wäre

patti 7. Okt 2007 11:15

Re: Edit-Eingabe Problem =(
 
Zitat:

Zitat von Tommy1988
Edit:
Leider ist das mit dem Unsinn nicht so gut. Sonst könnten z.B. 2000 Teilchen erstellt werden, was sehr unangenehm wäre

Warum? Du kannst ja trotzdem überprüfen, ob der Wert innerhalb deines erlaubten Bereichs liegt :gruebel:
SpinEdit hat übrigens auch ne Eigenschaft MaxValue

Kann auch sein, dass ich dich jetzt irgendwie falsch verstehe...

P@Tti


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz