| Autor |
Beitrag |
whitef
      
Beiträge: 202
Erhaltene Danke: 1
Windows X
Delphi XE X
|
Verfasst: Mi 27.06.07 20:00
hi... ich wollte bei eingabe in einem edit-feld immer ein leerzeichen einfügen lassen - ganz automatisch
bsp:
eingabe: abc
ausgabe: a b c
nachdem man auf a geklickt hat, soll er schon ein leerzeichen reinhauen.
das hier hab ich schonmal zusammen gefrimmelt, aber das packt delphi net... da gibts immer ne fehlermeldung.
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.stChange(Sender: TObject); begin st.Text := Copy(st.text, 1, 1 ) + Copy(st.text, 2, 1) + Copy(st.text, 3, 1); end; |
wäre nett wenn ihr mir helfen könntet!
mfg
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mi 27.06.07 20:07
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.stChange(Sender: TObject); var s, s2: string; i: Integer; begin s := (Sender as TEdit).Text; s2 := ''; for i := 1 to Length( s) do s2 := s2 + s[i]+' '; (Sender as TEdit).Text := s2; end; |
_________________ Markus Kinzler.
|
|
whitef 
      
Beiträge: 202
Erhaltene Danke: 1
Windows X
Delphi XE X
|
Verfasst: Mi 27.06.07 20:10
Zuletzt bearbeitet von whitef am Mi 27.06.07 20:17, insgesamt 2-mal bearbeitet
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mi 27.06.07 20:13
In welcher Zeile?
_________________ Markus Kinzler.
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mi 27.06.07 20:35
Ist st auch ein TEdit? Und diese Methode ist auch mit dieser Komponente verknüpft?
_________________ Markus Kinzler.
|
|
whitef 
      
Beiträge: 202
Erhaltene Danke: 1
Windows X
Delphi XE X
|
Verfasst: Mi 27.06.07 20:48
ja es ist mit sich selber verknüpft (onChange).
Ja ich benutze ein Edit, aber nicht den normalen, sondern JvEdit von JVCL.
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mi 27.06.07 20:49
Dann ersetze mal den Cast
_________________ Markus Kinzler.
|
|
whitef 
      
Beiträge: 202
Erhaltene Danke: 1
Windows X
Delphi XE X
|
Verfasst: Mi 27.06.07 21:10
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mi 27.06.07 23:01
Ein Typecast ist eine Typenumwandlung und in diesem Fall ist damit (Sender as TEdit) gemeint. Du sollst aus dem TEdit ein TJvEdit machen.
PS: Übrigens, du kannst Fehlermeldungen mit STRG+C kopieren. Er macht dann ein *bimm*-Geräusch und du bekommst die Fehlermeldung in diesem Stil:
| Zitat: | ---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EInvalidCast aufgetreten. Meldung: 'Ungültige Typumwandlung'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
|
Dann musst du's nicht abtippen 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Kajjo
Hält's aus hier
Beiträge: 4
XP, 2K
D6 Prof
|
Verfasst: Do 28.06.07 12:50
Bei TEdit.OnChange sollte man nicht den Text ändern, sonst wird OnChange gleich wieder aufgerufen. Füge den Code einfach unter OnKeyUp ein. Lösche den Code unter OnChange.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key > 31) and (Key < 128) then begin (Sender as TEdit).Text := (Sender as TEdit).Text + ' '; (Sender as TEdit).SelStart := Length((Sender as TEdit).Text); end; end; |
Die if-Abfrage stellt sicher, daß Steuercodes korrekt verarbeitet werden (z.B. die Taste Entf). Die Zeile mit SelStart setzt den Cursor an das Ende der Zeile.
Kajjo
|
|
SteheAufDerLeitung
      
Beiträge: 104
|
Verfasst: Do 28.06.07 12:52
Geht das denn nicht leichter? Eventuell mit dem Ereignis "onKeyDown" oder "OnChange"??
|
|
24karatboy
      
Beiträge: 110
Win XP
Delphi (Delphi Win32)
|
Verfasst: Do 28.06.07 12:57
warum so kompliziert du machst nen onkeydown ereignis auf die taste a und machst dann
edit1.text:='a ';
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Do 28.06.07 14:13
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Do 28.06.07 16:12
Ich hätt's anders gemacht (ziemlich unelegant):
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.JvEdit1Change(Sender: TObject); begin keybd_event(VK_SPACE,0,0,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0) end; |
Solche Aufgaben erledige ich aber sonst nur in SynEdits so (da habe ich noch keine andere Variante gefunden).
Sonst müsstes für die Cursorposition CaretPos geben.^^
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Do 28.06.07 16:54
Unelegant und nicht funktionierend, da das KeboardEvent ein onChange-Event auslöst und damit zur Endlosschleife wird (iirc)
Mir fällt da nochwas ein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.JvEdit1Change(Sender: TObject); begin if JvEdit1.Text[length(JvEdit1.Text)] <> ' ' then JvEdit1.Text := JvEdit1.Text + ' '; end; |
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
whitef 
      
Beiträge: 202
Erhaltene Danke: 1
Windows X
Delphi XE X
|
Verfasst: Do 28.06.07 19:49
mh... dachte nicht das sowas "einfaches" doch so schwer sein. ich dacht da kommt jetzt was ganz simples. und ich kann es meine anforderungen gerecht schnipseln. Eigentlich such ich was, was mir im edit-feld nach der 2.ten stelle und nach der 5.ten stelle (5.te stelle ohne das vorherige leerzeichen) ein Leerzeichen (" ") reindrückt.
Bsp: normal: 1234567890
will: 12 345 67890
mfg
danke schonmal für die zahlreiche bemühungen!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Do 28.06.07 20:49
Hallo,
willst Du genau das, dann könnte eventuell TEditMask das richtige für dich sein.
Die folgende Maske in MaskEdit.EditMask eintragen:
Quelltext
Die 1 besagt das die Leerzeichen in EditMask.Text enthalten sind.
Die letzte 0 wird in diesem Beispiel als Platzhalter für die einzugebenen Zahlen eingesetzt.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 28.06.07 21:56
whitef hat folgendes geschrieben: | mh... dachte nicht das sowas "einfaches" doch so schwer sein. ich dacht da kommt jetzt was ganz simples. und ich kann es meine anforderungen gerecht schnipseln. Eigentlich such ich was, was mir im edit-feld nach der 2.ten stelle und nach der 5.ten stelle (5.te stelle ohne das vorherige leerzeichen) ein Leerzeichen (" ") reindrückt.
Bsp: normal: 1234567890
will: 12 345 67890
mfg
danke schonmal für die zahlreiche bemühungen! |
Was sollte denn daran so schwer sein (Pos, Copy).
Wie schon in einem anderen Thread erwähnt gewöhne es Dir an vernünftige Fragen zu stellen, dann brauchst Du Dir die Antworten nicht zusammen zu "schnipseln" und so langsam denke Ich mal der Crashkurs könnte auch nicht schaden.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 28.06.07 22:18
Wie immer noch mal ins blaue geraten, war aber auch das letzte mal !!!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var s:String; begin s:='1234567890'; Insert(' ',s, 3); Insert(' ',s, 7); Caption:=s; end; |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|