Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Event bei Änderung der Cursorposition (TEdit) (https://www.delphipraxis.net/141993-event-bei-aenderung-der-cursorposition-tedit.html)

himitsu 20. Okt 2009 11:44


Event bei Änderung der Cursorposition (TEdit)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Tachchen, :hi:

gibt es irgendwo ein Event, welches eintritt, wenn man den Eingabe-Cursor in einem TEdit irgendwie verschiebt?
(egal ob Maus, Tastatur, ...)

OK, ich könnte einfach pollen und über 'nen Timer dieses ständig prüfen, aber anders wäre es mir schon lieber :angel:

MfG dat himilein



PS: es geht darum, in diesem noch knuffigem Tachenrechner, eine Aktion auszulösen wenn man sowas macht.
(keine Sorge ... ein paar weitere Funktionen und meine kleine StringMatheLib kommen auch irgendwann mal da rein)

schon witzig, was man alles mit D7, nur Standardkomponenten und 'nen klitzekleinem erweitertem TEdit so alles machen kann


[add]
ach ja, ich arbeite nur mit Standardkomponenten, aber ein Message in das TEdit reinzubekommen, wäre kein Problem

sirius 20. Okt 2009 11:49

Re: Event bei Änderung der Cursorposition (TEdit)
 
Mir ist von einem Edit keine derartige Message bekannt. Du kannst nur selber die Tasten und Mausereignisse abfangen.

himitsu 20. Okt 2009 11:54

Re: Event bei Änderung der Cursorposition (TEdit)
 
also OnKeyPress liefert schonmal keine Tasten, aber mir wfällt grad auf ... ich hab die ganze Zeit OnKeyDown vergessen ... bin gleich wieder da ... nur mal schnell testen :oops:

mleyen 20. Okt 2009 12:02

Re: Event bei Änderung der Cursorposition (TEdit)
 
Am besten du leitest von TEdit ab, erstellst ein eigenes Event und prüfst das OnKeyUp - und OnMouseUp-Event.
Oder kann man den noch irgendwie anders ändern?

Auf-die-Sprünge-hilf-code:
Delphi-Quellcode:
type
  TOnEditCursPosChanged = procedure of object;
var
  OnEditCursPosChanged: TOnEditCursPosChanged;
  LastCursPos: Integer;

//....

procedure TBluppForm.CheckIfCursPosChanged;
begin
  if LastCursPos <> edt1.SelStart then
  begin
    if Assigned(OnEditCursPosChanged) then
      OnEditCursPosChanged;
    LastCursPos := edt1.SelStart;
  end;
end;

procedure TBluppForm.edt1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  { **Vieeel Code** }

  CheckIfCursPosChanged;
end;

procedure TBluppForm.edt1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  { **Vieeel Code** }

  CheckIfCursPosChanged;
end;
Aber das dürfte so ganz performant sein.
(Da braucht man gar nicht auf die einzelnen Tasten prüfen, ist imho unsinn)

Aber auf keinen fall pollen. :shock: (also himi...^^)

[so, genug rumeditiert...]

sirius 20. Okt 2009 12:04

Re: Event bei Änderung der Cursorposition (TEdit)
 
Das wird dann wohl klappen:
Zitat:

Zitat von Hilfe (gekürzt)
Entspricht die Taste keinem ASCII-Zeichenwert, wird kein OnKeyPress-Ereignis generiert. [...] Verwenden Sie die Ereignisbehandlungsroutine für OnKeyDown oder OnKeyUp, um auf Nicht-ASCII-Tasten oder -Tastenkombinationen zu antworten.

3 ende rohr :mrgreen:

himitsu 20. Okt 2009 15:08

Re: Event bei Änderung der Cursorposition (TEdit)
 
joar OnKeyUp war die Lösung ... irgendwie hatte ich da wohl das berühmte Brett vom Köpfchen :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz