Delphi-PRAXiS

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)

Davidlocke13 3. Dez 2012 16:04

SpinEdit für ' ' Wert zuordnen
 
Wie kann ich meinem SpinEdit für ' ' den Wert '12' zuordnen ?

habe schon folgendes Probiert:

Code:
  if SpinEdit1.Text = ' ' then
  SpinEdit1.Text := '12';
klappt nur leider nicht !

LG

Klaus01 3. Dez 2012 16:09

AW: SpinEdit für ' ' Wert zuordnen
 
Hallo,
kann ein TSpinEdit überhaupt ein ' ' im Text property annehmen?
Normalerweise bewegt es ich doch zwischen minValue und maxValue?

Einen Wert setzen würde ich über die value Eigenschaft.

Grüße
Klaus

Davidlocke13 3. Dez 2012 16:18

AW: SpinEdit für ' ' Wert zuordnen
 
Ja es bewegt sich ja bei mir auch zwischen 1 und 800.
Nur wenn ich da einen wert per Tastatur eintrage und vorher das Teil lehre zeigt der mir bei ' ' also Lehr einen Fehler an,
deshalb will ich im für ' ' sagen das er '12' nehmen soll.

Klaus01 3. Dez 2012 16:21

AW: SpinEdit für ' ' Wert zuordnen
 
.. kannst Du das nicht im onChange event abfangen.

Aber ist es nicht irgendwie befremdlich, wenn ich den Eintrag ändern will
einfach so ein 12 eingetragen wird?

Grüße
Klaus

freeway 3. Dez 2012 16:23

AW: SpinEdit für ' ' Wert zuordnen
 
probier mal statt
Delphi-Quellcode:
if SpinEdit1.Text = ' ' then
Delphi-Quellcode:
if SpinEdit1.Text = '' then

Popov 3. Dez 2012 16:24

AW: SpinEdit für ' ' Wert zuordnen
 
Wenn du es schaffst ein Leerzeichen einzugeben:

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
  with Sender as TSpinEdit do
  begin
    if Text = '' {' '} then Text := '12'; //Edit: Leerzeichen oder Nichts
    SelStart := Length(Text);
  end;
end;
Moment, jetzt ein Leerzeichen oder Leer? Im ersten Beitrag war es ein Leerzeichen. Falls es bei leer sein soll, bitte anpassen

Davidlocke13 3. Dez 2012 16:27

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

Zitat von Klaus01 (Beitrag 1194134)
..
Aber ist es nicht irgendwie befremdlich, wenn ich den Eintrag ändern will
einfach so ein 12 eingetragen wird?

Ja stimmt, da währe es eigentlich besser das der die Eingabe ignoriert bis ich aus dem SpinEdit raus klicke oder Enter drücke :wink:

Davidlocke13 3. Dez 2012 16:28

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

Zitat von Davidlocke13 (Beitrag 1194131)
... zeigt der mir bei ' ' also Lehr ...

Lehr habe ich gemeint nix drin also '' :wink:

Popov 3. Dez 2012 16:30

AW: SpinEdit für ' ' Wert zuordnen
 
Oder so. Hier wird einfach alles danach markiert. Folgt ein weiterer Tastendruck, wird die 12 überschrieben.

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
  with Sender as TSpinEdit do
  begin
    if Text = '' then Text := '12';
    SelStart := Length(Text);
    SelectAll;
  end;
end;

Davidlocke13 3. Dez 2012 16:39

AW: SpinEdit für ' ' Wert zuordnen
 
Die Anderen Sachen klappen zwar alle und mein Fehler war bei ' ' sollte so sein '', aber es ist halt doch recht unpraktisch !

Also wenn ich '' eingebe soll der das ignorieren bis ein Wert kommt ! Das währe am besten :wink:

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 ;)

Davidlocke13 4. Dez 2012 11:06

AW: SpinEdit für ' ' Wert zuordnen
 
genau mit dem teil hat es ja Probleme gemacht es hat zwar alles markiert aber aber die 12 nicht überschrieben. 12 + eine einstellige Zahl !
Ich habe die 12 durch die 0 ersetzt und das alles markieren raus geschmissen jetzt bleibt zwar noch die O drin aber ich kann eine beliebig lange zahl
hinter kloppen und 08 ist dann halt auch wie 8

Popov 4. Dez 2012 11:28

AW: SpinEdit für ' ' Wert zuordnen
 
Nun, ich möchte dem was du behauptest nicht widersprechen, aber dann sollte dir klar sein, dass auf deinem Rechner die Naturgesetze nicht gelten ;)

Wenn man einen Text markiert und dann einen Buchstaben oder Zahl oder Sonderzeichen eingibt, dann wird der markierte Text überschrieben. Einfache Regel die auf Milliarden von Rechnen funktioniert und funktionierte ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 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