Autor Beitrag
Kokel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 79

XP Prof
delphi 2006 Prof.
BeitragVerfasst: So 20.02.05 20:59 
Ich krieg hier noch ein fön.
Da habe ich eine edit komponente und beim ändern des Feldes soll eine Messagebox angezeigt werden . Danach soll mit ebuttonw.onkeypress so getan werden als hätte der benutzer die Backspace taste getippt . so das statt z.B. 500 nur noch 50 im editfelt steht. Aber daran haperts dann auch.
Hier also der code: :cry:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.EbuttonwChange(Sender: TObject);
var a:char;
begin
a:=chr(8);
If ebuttonw.Text='' then exit;
If strtoint(ebuttonw.Text) > 400 then begin
        showmessage('Nicht mehr als 400 Bildpunkte !');
        Ebuttonw.OnKeyPress(self,a); // imitiere den druck der backspacetaste
        exit;   // und raus
    end;// if
    buttonw:=strtoint(ebuttonw.Text);
    setzewerte;
  end;

procedure TForm1.EbuttonwKeyPress(Sender: TObject; var Key: Char);
begin
If not (key in ['0'..'9',chr(8)]) then key:=#0;

end;
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.02.05 21:56 
warum entfernste nicht einfach das letzte Zeichen des Strings aus dem Edit-Feld?
Kokel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 79

XP Prof
delphi 2006 Prof.
BeitragVerfasst: So 20.02.05 22:04 
Ich wollte mal sehen ob ich das auch mit dem self befehl hinkriege.
Aber ich denke ich laß das mal besser.
Wäre für mich interessant gewesen das mal so zu versuchen.
Trotzdem danke für den tip one of ten.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: So 20.02.05 23:38 
Kokel hat folgendes geschrieben:
Danach soll mit ebuttonw.onkeypress so getan werden als hätte der benutzer die Backspace taste getippt .

Wenn du auf der Tastatur die Entf Taste drückst, guckt Windows nach welches Fenster den Fokus hat und sendet dann an das Fenster (z.B. TEdit) eine Nachricht. Die VCL nimmt diese Nachricht entgegen und guckt ob du z.B. OnKeyPress Ereignis zugewiesen hast. Sollte es so sein, wird dieses Ereignis ausgelöst. Um nun das gleiche Verhalten in deinem Programm zu simulieren, musst du entweder einen Tastendruck mit keybd_event simulieren oder halt an das Fensterhandle eine Tastendruck Nachricht per SendMessage bzw. PostMessage senden. Erst dann denkt die VCL, das du eine Taste gedrückt worden ist und löst dann das OnKeyPress Ereignis aus.

_________________
Ciao, Sprint.
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 21.02.05 11:22 
Kokel hat folgendes geschrieben:
Ich wollte mal sehen ob ich das auch mit dem self befehl hinkriege.
Aber ich denke ich laß das mal besser.
Wäre für mich interessant gewesen das mal so zu versuchen.

Ich sehe den Zusammenhang zwischen deinem Problem und deiner Verwendung von self überhaupt nicht.
Kokel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 79

XP Prof
delphi 2006 Prof.
BeitragVerfasst: Di 22.02.05 20:44 
Mit self geht nu wirklich nicht.
Und ich werde diese theorie von dem so tun als ob ereigniss auch nicht weiter verfolgen. Ich habe hier in einem Beitrag gelesen das, dass nicht so gut ist. Und dieser Beitag hat mich überzeugt.
Danke für eure Antworten.
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mi 23.02.05 01:13 
Kokel hat folgendes geschrieben:
Und ich werde diese theorie von dem so tun als ob ereigniss auch nicht weiter verfolgen. Ich habe hier in einem Beitrag gelesen das, dass nicht so gut ist. Und dieser Beitag hat mich überzeugt.
Das ist ja auch korrekt und völlig in Ordnung.

Aber mit self hatte das Scheitern deines vorherigen Versuches nichts zu tun. Angenommen, du hättest das "so tun, als ob Ereignis" korrekt implementiert (ist zwar unsinnig, aber wäre ja durchaus machbar), so wäre für self einfach Form1 übergeben worden. Das hätte niemanden gestört.