Autor Beitrag
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: 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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 27.06.07 20:07 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Mi 27.06.07 20:10 
mh, schade, da kommt immernoch folgende fehlermeldung:

ausblenden Quelltext
1:
2:
3:
Im Projekt ... ist eine Exception der Klasse EInvalidCast aufgetreten.
Meldung: 'Ungültige Typumwandlung'. Prozess wurde angehalten.
Mit einzelne Anweisung oder Start fortsetzen.



Der Fehler beruht auf folgender Zeile:

ausblenden Delphi-Quelltext
1:
s := (Sender as TEdit).Text;					


Zuletzt bearbeitet von whitef am Mi 27.06.07 20:17, insgesamt 2-mal bearbeitet
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 27.06.07 20:13 
In welcher Zeile?

_________________
Markus Kinzler.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 27.06.07 20:35 
Ist st auch ein TEdit? Und diese Methode ist auch mit dieser Komponente verknüpft?

_________________
Markus Kinzler.
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 27.06.07 20:49 
Dann ersetze mal den Cast

_________________
Markus Kinzler.
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Mi 27.06.07 21:10 
sry, was ist cast?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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
BeitragVerfasst: 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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Do 28.06.07 12:52 
Geht das denn nicht leichter? Eventuell mit dem Ereignis "onKeyDown" oder "OnChange"??
24karatboy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 110

Win XP
Delphi (Delphi Win32)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 28.06.07 14:13 
user profile icon24karatboy hat folgendes geschrieben:
warum so kompliziert du machst nen onkeydown ereignis auf die taste a und machst dann

edit1.text:='a ';

Warum so kompliziert, dann müsste ich ja jeden Buchstaben behandeln ... da gefällt mir Kajjos version besser, aber etwas fehlt: Wenn ich a gedrückt halte, bekomme ich 'aaaa' nicht 'a a a a'. Wie man das ändert kann ich dir grad nicht sagen ;) Ob die Ansicode-Abfrage Zahlenmäßig korrekt ist, kann ich auch nicht garantieren, aber ich glaub eigentlich schon.

user profile iconKajjo hat folgendes geschrieben:
ausblenden 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;

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Do 28.06.07 16:12 
Ich hätt's anders gemacht (ziemlich unelegant):
ausblenden 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). :oops:

Sonst müsstes für die Cursorposition CaretPos geben.^^
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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:
ausblenden 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 + ' ';
   //Hier die Sache mit SelText von einigen Posts über mir
end;

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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:
ausblenden Quelltext
1:
'00\ 000\ 00000;1;0'					

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 28.06.07 21:56 
user profile iconwhitef 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 28.06.07 22:18 
Wie immer noch mal ins blaue geraten, war aber auch das letzte mal !!!
ausblenden 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)