![]() |
Handle anderer Form und Komponente (Memo) - Text hinzufügen
Hi,
wie kann ich denn einer Memo, die sich in einer anderern Form befindet, einen Text hinzufügen?
Code:
Mit WM_SETTEXT wird, wie der Name schon sagt, leider nur der Text überschrieben und nicht hinzugefügt. Ich benötige also nur noch die passende Message. Hab auch schon in der Message.pas gesucht, aber bei Memo stand da leider nichts. Hat da jemand eine Idee?
procedure TForm1.Button1Click(Sender: TObject);
var hMemo, hHandleDesFensters : HWND; begin hHandleDesFensters := FindWindow(nil, 'TestForm'); hMemo:= FindWindowEx(hHandleDesFensters, 0, 'TMemo', nil); SendMessage(hMemo, HIER SUCHE ICH DIE MESSAGE, 0, Integer(@Edit1.Text[1])); SendMessage(hHandleDesFensters,WM_SYSCOMMAND,SC_RESTORE,0); SetForegroundWindow(hHandleDesFensters); end; Gruß Yheeky |
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Hi!
Kannst du dir nicht den Text vorher besorgen, das neue anhängen und dann wieder schreiben? Ciao fkerber |
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Auf Umwegen funktioniert das schon. Momentan schreibe ich den Text in ein Edit und in diesem OnChance-Event wird der Text ins Memo geschrieben. Ich will nur wissen, ob ich das nicht direkt machen kann.
|
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Hatte gerade dasselbe Problem...Diese Procedure ist meine schönste Lösung.
Delphi-Quellcode:
procedure AddTextToMemo(MemoHandle:HWND; MemoText: String);
var TextLength:Integer; TextP:Pointer; begin TextLength:=SendMessage(MemoHandle,WM_GETTEXTLENGTH,0,0); GetMem(TextP,TextLength+1); try SendMessage(MemoHandle,WM_GETTEXT,TextLength+1,lParam(TextP)); SendMessage(MemoHandle,WM_SETTEXT,0,lParam(PChar(TextP)+#$D#$A+MemoText)); //#13#10 finally FreeMem(TextP); end; end; |
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Zitat:
Denn bei mir ist: 10 = $A 13 = $D entsprechend rückübersetze ich dein #$D#$A mal nach #13#10, bei dir ist es exakt umgekehrt - also mußt du dich nicht über verschiedene Wirkungen wundern! @Yheeky: Jain. Wenn es WM_SETTEXT usw. sein sollen, kannst du nur den kompletten Text setzen. Alternativ kann man versuchen (dadurch versaust du aber den Clipboardinhalt) das Caret zu setzen und dann WM_PASTE zu schicken, wobei vorher das Clipboard modifiziert wird. Letzteres ist aber kein gutes "Geschäftsgebaren"! ACHTUNG: Bei EDITs funktioniert das nur, weil es eines jener Controls ist, die in Win16 schon existierten. Bei Richedit und anderen muß die Prozeßschranke beachtet werden! |
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Ja, ich weiß, dass es eigentlich dasselbe sein sollte, nur funktionierte es nicht so bei mir. Jetzt gerade habe ich gemerkt, dass die Reihenfolge der #13 und #10 wichtig war o_O
Trotzdem musst du nicht so aggressiv schreiben. Wenn du alles besser weißt, dann hättest du Yheeky ja auch schon mal helfen können... |
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Zitat:
Yheeky habe ich versucht mit meinem Hinweis zu helfen, siehe mein Post. Bisher gab es von ihm als Fragesteller noch keine Rückfragen, also sehe ich keine Notwendigkeit anderweitig zu reagieren. |
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Nachdem grundsätzlich alle Komponenten, die Du im Designer erstellst published sind und jede formular-unit eine Variable mit der Form erstellt, kannst du auch das andere Formular in die Uses-Liste aufnehmen und dann kannst du einfach schreiben:
Delphi-Quellcode:
Hierzu muß dann allerdings die andere Form in die Liste mit automatisch zu kreierenden Formularen aufgenommen werden.
AndereForm.Memo1.Lines.Add(Edit1.Text);
|
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Oh, das andere Form ist im gleichen Prozeß? Sorry, dann vergiß meine obigen Aussagen, Yheeky!
|
Re: Handle anderer Form und Komponente (Memo) - Text hinzufü
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz