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/)
-   -   Fokusproblem im Richedit (https://www.delphipraxis.net/160782-fokusproblem-im-richedit.html)

martin_ 31. Mai 2011 16:44

Fokusproblem im Richedit
 
Hallo,
ich habe eine Autovervollständigung mit einem Richedit und einer Listview.
Der Fokus ist entweder im Richedit oder in der Listview. Befindet sich der Fokus auf dem Richedit, werden die Einträge der Listview aktualisiert, das Caret befindet sich auch auf dem Richedit. Wird der Fokus auf die Listview gewechselt, verliere ich (a) das Caret im Richedit und wenn ein Buchstabe in der Listview eingegeben wird, soll (b) dieser direkt im Richedit übernommen werden - dh. Fokus an Richedit übergeben inkl. des aktuell eingegeben Buchstabens.

Für (b) würde es schon reichen, wenn bei 2 Richedit Instanzen (RE1, RE2) der Fokus inkl. aktuelles Zeichen übergeben wird.
Zb. RE2 hat den Fokus. Eine Eingabe erfolgt im RE2 und der aktuell eingegebene Buchstabe soll direkt im RE1 dargestellt werden und Fokus ist auch im RE1.

p80286 31. Mai 2011 17:11

AW: Fokusproblem im Richedit
 
Wo ist denn jetzt das Problem?
Wenn eine Komponente den fokus hat kann sie auf die Tastatureingaben reagieren.
Das heißt nicht, daß es so aussieht als ob diese Komponente den Fokus hätte (Cursor, selektion etc.)
Du kannst jederzeit sowohl in Trichedit und Tlistview(?) eine Tastatureingabe abfangen und an eine beliebige Komponente auf Deiner Form weiterreichen.
(und an nicht visuelle Variable und Objekte und ......)

Gruß
K-H

martin_ 31. Mai 2011 17:19

AW: Fokusproblem im Richedit
 
Zitat:

Zitat von p80286 (Beitrag 1103969)
Du kannst jederzeit sowohl in Trichedit und Tlistview(?) eine Tastatureingabe abfangen und an eine beliebige Komponente auf Deiner Form weiterreichen.

Ich habe jetzt das KeyPreview der Form auf true und im Keypress
Delphi-Quellcode:
if redt2.focused then
begin
  redt1.setFocus;
  keybd_event(Byte(Key), 0, KEYEVENTF_EXTENDEDKEY,0);
  Key := #0;
end;
ein neues Tastatur Event.
Ich bin am Testen ob das für mich funktioniert.

Zitat:

Zitat von p80286 (Beitrag 1103969)
Das heißt nicht, daß es so aussieht als ob diese Komponente den Fokus hätte (Cursor, selektion etc.)

Und wie würde ich das bei dem Beispiel machen: siehe(a)?

Lannes 31. Mai 2011 19:32

AW: Fokusproblem im Richedit
 
zu a) wenn der Cursor an der Stelle im RichEdit steht(gestanden hat) an der eingefügt werden soll, schreibst Du:
Delphi-Quellcode:
RichEdit.SelText := Key;
Ist im RichEdit Text markiert, wird dieser dabei überschrieben. Willst Du das nicht, kannst Du mit RichEdit.SelLength :=0; die Markierung aufheben. Die Markierung im RichEdit -bei Focusverlust- siehst Du auch noch wenn Du Hideselectien auf False setzt.

martin_ 1. Jun 2011 08:45

AW: Fokusproblem im Richedit
 
Ich versuche es nochmals anders zu beschreiben:
2 Richedit (RE1 + RE2). Im RE1 befindet sich ein Text, das Caret steht (bzw. blinkt) sichtbar. Nun mache ich eine Fokuswechsel auf RE2. Sichtbares Caret auf RE1 ist verschwunden. Wie schaffe ich, das es weiterhin auch in RE1 sichtbar bleibt - obwohl es keinen Fokus mehr hat?

DeddyH 1. Jun 2011 08:49

AW: Fokusproblem im Richedit
 
Du willst, dass rein optisch beide RichEdits den Fokus haben? Ich wüsste jetzt nicht, wie das gehen soll, abgesehen davon würde mich als Anwender so etwas wahnsinnig machen.

martin_ 1. Jun 2011 08:53

AW: Fokusproblem im Richedit
 
Das wäre nur zum testen. In "echt" ist es eine Richedit in der ich tippe und passende Vorschläge in der Listview erhalte und in diesem Fall macht es für mich schon einen Sinn.

p80286 1. Jun 2011 11:14

AW: Fokusproblem im Richedit
 
Zitat:

Zitat von DeddyH (Beitrag 1104047)
Du willst, dass rein optisch beide RichEdits den Fokus haben? Ich wüsste jetzt nicht, wie das gehen soll, abgesehen davon würde mich als Anwender so etwas wahnsinnig machen.

Bei mir ist es umgekehrt, ein Tmemo hat den Fokus und es gibt keinen Cursor und keine Selektion......
Das erheitert auch nicht, aber funktioniert.

Gruß
K-H


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