Witam.
Czy można się odwołąć poprzez Sendmessage lub PostMessage do RichEdit lub Memo.
Chodzi o to żeby dodać linię tekstu.
komunikaty i RichEdit
- Rejestracja: dni
- Ostatnio: dni
- Postów: 97
- Rejestracja: dni
- Ostatnio: dni
- Postów: 32
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) ??
- Rejestracja: dni
- Ostatnio: dni
- Postów: 97
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 97
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
- Rejestracja: dni
- Ostatnio: dni
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ą.