Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   SpinEdit für ' ' Wert zuordnen (https://www.delphipraxis.net/171937-spinedit-fuer-wert-zuordnen.html)

Popov 3. Dez 2012 16:58

AW: SpinEdit für ' ' Wert zuordnen
 
Also inzwischen verstehe ich auch das Problem nicht. Wenn man alles zahlen löscht, so dass das SpinEdit Feld leer ist, dann passiert zuerst nichts. Keine Fehlermeldung, Nichts. Also wo ist das Problem?

Oder soll es reagieren wenn das Feld verlassen wird?

Dann das obere Beispiel in diese Prozedur packen:

Delphi-Quellcode:
procedure TForm1.SpinEdit1Exit(Sender: TObject);
begin
  //...wie gehabt
end;

Davidlocke13 3. Dez 2012 17:09

AW: SpinEdit für ' ' Wert zuordnen
 
Liste der Anhänge anzeigen (Anzahl: 2)
bei mir gibt es aber eine Fehlermeldung ! das liegt daran das wenn ich eine 1 rein schreibe der das Teil sofort auf Schriftgröße 1 Macht und wenn ich nix eingebe kann der auch auf keine Schriftgröße machen und schwups habe ich einen Fehler

Anhang 38185 Anhang 38186

Davidlocke13 3. Dez 2012 17:13

AW: SpinEdit für ' ' Wert zuordnen
 
Mein Code:
Code:
private
    FUpdating: Boolean;
    function CurrText: TTextAttributes;

function TForm1.CurrText: TTextAttributes;
begin
  if RichEdit1.SelLength > 0 then Result := RichEdit1.SelAttributes
  else Result := RichEdit1.DefAttributes;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
 if FUpdating then Exit;
  CurrText.Size := StrToInt(SpinEdit1.Text);
end;

Popov 3. Dez 2012 17:33

AW: SpinEdit für ' ' Wert zuordnen
 
Ok, das Problem ist soweit ich es sehe nicht SpiEdit, sonder die Zeile mit
Delphi-Quellcode:
StrToInt(SpinEdit1.Text)
. Denn hier wird bei Änderung von SpinEdit der Text Wert sofort mit StrToInt konvertiert. Und hier erzeugt dann StrToInt die Fehlermeldung.

Mehrere Möglichkeiten:

1. statt
Delphi-Quellcode:
StrToInt
nimmst du
Delphi-Quellcode:
StrToIntDef(SpinEdit1.Text, 12);
. Ist SpinEdit1.Text leer oder keine Integer Zahl, wird der Ersatzwert genommen.

2. du setzt den Code von #9 in die SpinEdit1Change ganz an Anfang ein. Ist SpinEdit1.Text leer, wird zwar automatisch die 12 eingefügt, aber markiert, so dass der nächste Tastendruck den Wert überschreibt.

Medium 4. Dez 2012 00:38

AW: SpinEdit für ' ' Wert zuordnen
 
Und hättest du von Anfang an erwähnt, dass du im OnChange agierst, wäre der Thread hier sicherlich um 50% und einen Haufen Verwirrung kürzer gewesen. (TSpinEdit hat imho übrigens auch eine Property "Value" vom Typ Integer. Du musst überhaupt nicht selber umwandeln. Ansonsten ist Popovs Vorschlag natürlich auch prima.)

Davidlocke13 4. Dez 2012 09:27

AW: SpinEdit für ' ' Wert zuordnen
 
Bei Popov Vorschlag gibt es nur ein Problem.
Es wird zwar die 12 markiert aber nicht überschreiben, da hängt der einfach meine Zahl an die 12 rann!

Also so etwa 129

user0815 4. Dez 2012 10:25

AW: SpinEdit für ' ' Wert zuordnen
 
so geht das doch oder :?:

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
  Caption := IntToStr(TSpinEdit(Sender).Value);
end;

procedure TForm1.SpinEdit1Exit(Sender: TObject);
begin
  if length(TSpinEdit(Sender).Text) = 0 then TSpinEdit(Sender).Value := 12;
end;

Popov 4. Dez 2012 10:32

AW: SpinEdit für ' ' Wert zuordnen
 
Zitat:

Zitat von Davidlocke13 (Beitrag 1194228)
Bei Popov Vorschlag gibt es nur ein Problem.
Es wird zwar die 12 markiert aber nicht überschreiben, da hängt der einfach meine Zahl an die 12 rann!

Also so etwa 129

An Popovs Vorschlag stimmt schon alles, da Popov zwei Beispiele genannt hat und zuletzt den #9 vorgeschlagen hat. Da ist noch eine zusätzliche Zeile drin. Und wenn man vor der nächsten Eingabe nicht zufällig die Corsortaste drückt, dann wird es überschrieben. Kann es sein, dass du den #6 genommen hast?

Davidlocke13 4. Dez 2012 10:45

AW: SpinEdit für ' ' Wert zuordnen
 
So habe das jetzt in der Zwischenzeit anders gelöst :-)

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
  with Sender as TSpinEdit do
  begin
    if Text = '' then Text := '0';
    SelStart := Length(Text);
  end;
  begin
 if FUpdating then Exit;
  CurrText.Size := StrToInt(SpinEdit1.Text);
  end;
end;
Da steht dann zwar wenn ich 8 eingebe 08 da aber das ist wie eine 8 !

Danke für eure Hilfe

Popov 4. Dez 2012 10:59

AW: SpinEdit für ' ' Wert zuordnen
 
Dir ist schon klar was
Delphi-Quellcode:
SelAll
bewirkt? Es markiert den gesamten Inhalt des Eingabefeldes, so dass zwar ein Wert rein geschrieben wird, aber bei nächsten Gelegenheit sofort überschrieben wird. Irgendwie magst du wohl das zweite Beispiel nicht, oder ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 Uhr.
Seite 2 von 3     12 3      

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