komunikaty i RichEdit

0

Witam.
Czy można się odwołąć poprzez Sendmessage lub PostMessage do RichEdit lub Memo.
Chodzi o to żeby dodać linię tekstu.

0

Raczej idzie. A poprzez jego właściwość Memo1.Handle masz dostęp do uchwytu.

Ale po co używać SendMessage skoro można to zrobić tak Memo1.Lines.Add('jakis tekst) ??

0

No pewnie że można Memo1.Lines.Add("jakis tekst") ale co zrobisz jeśli jesteś w wątku pobocznym i chcesz text dodać. No niestety ale to raz zadziała a raz pojawi się błąd.

0

Ktoś mi napisał taki text:
Pytałam na temat obsługi VCL z poziomu wątku pobocznego.

"w praktyce więc, jeżeli nie znajdzie Pani innego rozwiązania, użyłbym
SendMessage() z dwoma parametrami: jeden byłby adresem funkcji, którą
należy wywołac, drugi: adresem obiektu, ktory przechowuje w sobie
parametry. wewnątrz kodu obsługi komunikatu w wątku głównym po prostu
zawoła Pani funkcję na przekazanych parametrach (po wczesniejszym
zrzutowaniu parametrow na odpowiednie typy)."

Czy ktoś mógłby mi to przetłumaczyć na mały kawałek kodu

0

Jeśli Memo ma być tylko jedno w całym programie, to ja bym zrobił tak:

  • tworzymy komunikat odpowiadający za dodawanie tekstu (jakiś WM_ADDTEXT czy coś...)
  • w stosownym miejscu w wątku pobocznym wywołujemy komunikat poprzez SendMessage
  • w formularzu, w którym jest Memo dodajemy obsługę komunikatu (czyli dodawanie tekstu)

Jako uchwyt w SendMessage podajemu uchwyt do formy głównej. Jeśli dodawany tekst jest znany, wtedy jego treść ustalamy poprzez parametry komunikatu (np. jako indeks w tablicy). Jeśli nie, to deklarujemy zmienną globalną.

0

Jak dla mnie to ma wygladac tak:

SendMessage(Memo1.Handle, WM_SETTEXT, WskaznikNaCiagZnakow, 0);

1 użytkowników online, w tym zalogowanych: 0, gości: 1