Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Text in ein DBRichEdit einfügen per SendMessage() (https://www.delphipraxis.net/206802-text-ein-dbrichedit-einfuegen-per-sendmessage.html)

juergen 30. Jan 2021 23:30


Text in ein DBRichEdit einfügen per SendMessage()
 
Hallo zusammen,

ich versuche nun schon länger einen Text per SendMessage() in ein DBRichEdit einzufügen.
Das Handle habe ich und es ist auch korrekt. Es passiert aber nichts. Der DB-Navigator zeigt keinerlei Änderung und demzufolge steht im DBRichEdit auch nicht mein Text.
Versucht habe ich einiges.
U.a. das hier:
Delphi-Quellcode:
  s := 'Test, Test, Test';
  FOR i := 1 TO Length( s ) DO
    SendMessage( my_HWnd, WM_CHAR, Word( s[i] ), 0 );
  // Simulate Return Key.
  PostMessage( my_HWnd, WM_KEYDOWN, VK_RETURN, 0 );
  // Simulate Space.
  PostMessage( my_HWnd, WM_KEYDOWN, VK_SPACE, 0 );
Mit Notepad z.B. funktioniert es.

Hat jemand eine wertvollen Tipp für mich?

Vielen Dank schon mal vorab!

hoika 31. Jan 2021 00:02

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Hallo,
ist das DataSet im EditMode?

juergen 31. Jan 2021 00:13

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Ja.
Ich weiß nicht ob es wichtig ist: es ist eine Fremdanwendung.

jziersch 31. Jan 2021 10:58

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Eine Möglichkeit wäre noch
WM_PASTE

venice2 31. Jan 2021 11:51

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
WM_COPYDATA
Aber keine gewähr ob die andere Anwendung diese Message behandelt.

juergen 31. Jan 2021 20:13

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Es liegt an der Fremdanwendung. Bei anderen Anwendungen funktioniert es. Da kann man wohl nichts machen.

hoika 1. Feb 2021 06:35

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Hallo,
Zitat:

DBRichEdit und Fremdanwendung.
Woher weisst Du., dass es ein DBRichEdit ist?

Zitat:

Mit Notepad z.B. funktioniert es.
Dein Code trägt in Notepad was ein?

Klappt es denn über die Windows-Zwischenablage?
Dann wäre das obige WM_PASTE eine Überlegung wert.
Du kopierst deine Daten in die Zwischenablage und schickst dem Fenster ein WM_PASTE.

juergen 1. Feb 2021 07:41

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Gute Morgen,
über WinSpy kann ich sehen welches Control es ist. Allerdings ist es kein Standardcontrol von Delphi, sondern ein abgeleitetes Control von DBRichEdit. (die Fremdanwendung ist auch in Delphi geschrieben)
Die Zwischenablage wollte ich nicht zerstören, da das Ganze recht häufig angewendet werden soll. Im Prinzip sollte es ein Ersatz für PhraseExpress werden. Also pro globalem Hotkey einen bestimmten Textbaustein am Mauscursor einfügen.

himitsu 1. Feb 2021 08:02

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Notepad ist ein Memo. (Wordpad ist das RichEdit)

WM_KEYDOWN alleine: Wenn man eine Taste drückt, dann muß man sie auch wieder loslassen!!!

WM_CHAR alleine reicht nicht immer aus.
Eine Tastendruck besteht aus einem/mehreren WM_KEYDOWN, einem WM_CHAR und einem/mehreren WM_KEYUP.
Rate mal, warum es mehrere Versuche von SndKey/SendKey/... gibt.



Tipp: EM_REPLACESEL (TCustomComboBox.SetSelText)

HolgerX 1. Feb 2021 16:49

AW: Text in ein DBRichEdit einfügen per SendMessage()
 
Hmm...

Zitat:

Zitat von juergen (Beitrag 1481900)
Gute Morgen,
über WinSpy kann ich sehen welches Control es ist. Allerdings ist es kein Standardcontrol von Delphi, sondern ein abgeleitetes Control von DBRichEdit. (die Fremdanwendung ist auch in Delphi geschrieben)
Die Zwischenablage wollte ich nicht zerstören, da das Ganze recht häufig angewendet werden soll. Im Prinzip sollte es ein Ersatz für PhraseExpress werden. Also pro globalem Hotkey einen bestimmten Textbaustein am Mauscursor einfügen.



wie in diesem Tread aus 2018:

https://www.delphipraxis.net/1419689-post33.html

Das Testtool macht etwas ähnliches..

Es wartet auf einen (Hot-) Key und schickt einen Text als KeyEvent.

Musst jetzt nur eigenen Keys definieren und statt des Memos von Dir vorgegebene Texte schicken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 Uhr.
Seite 1 von 2  1 2      

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