AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Handle anderer Form und Komponente (Memo) - Text hinzufügen
Thema durchsuchen
Ansicht
Themen-Optionen

Handle anderer Form und Komponente (Memo) - Text hinzufügen

Ein Thema von Yheeky · begonnen am 30. Dez 2003 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Handle anderer Form und Komponente (Memo) - Text hinzufügen

  Alt 30. Dez 2003, 18:40
Hi,

wie kann ich denn einer Memo, die sich in einer anderern Form befindet, einen Text hinzufügen?

Code:
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;
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?

Gruß Yheeky
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 30. Dez 2003, 18:42
Hi!

Kannst du dir nicht den Text vorher besorgen, das neue anhängen und dann wieder schreiben?

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 30. Dez 2003, 19:05
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.
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#4

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 00:04
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;
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 00:45
Zitat von Nogge:
Anstelle von #10#13 habe ich #$D#$A verwendet, denn dadurch werden keine nervigen | übertragen und Zeilenumbrüche wunderbar umgesetzt.
... schonmal an "#13#10" gedacht? Also eben die echte Entsprechung von deinem gepriesenen "#$D#$A"???

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!
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#6

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 07:38
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...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 14:38
Zitat von Nogge:
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...
Wo genau siehst du Aggression in meinem Text? Ich kann nach mehrmaligem Drüberlesen keine entdecken. ...

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.
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#8

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 15:34
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:
AndereForm.Memo1.Lines.Add(Edit1.Text); Hierzu muß dann allerdings die andere Form in die Liste mit automatisch zu kreierenden Formularen aufgenommen werden.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 15:43
Oh, das andere Form ist im gleichen Prozeß? Sorry, dann vergiß meine obigen Aussagen, Yheeky!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Handle anderer Form und Komponente (Memo) - Text hinzufü

  Alt 4. Jul 2005, 15:49
Zitat von Yheeky:
Delphi-Quellcode:
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;
Öhm, wenn Yheeky mit so etwas anfängt, handelt es sich wahrscheinlich um einen anderen Prozess .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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