Brakuje znaku karetki (WM_SETFOCUS i TMemo)

0

Mam taki problem - mam w programie kontrolkę dziedziczącą po TMemo. Wszystko ma praktycznie to samo, jednak musi w pewien specjalny sposób zaragować, na uzyskanie focusa. No więc napisałem procedure obsługującą komunikat WM_SETFOCUS... No i teoretycznie działa, z jednym głupim wyjątkiem. W ogóle nie pojawia się "karetka" (ta migająca kreska oznaczająca miejsce, gdzie będzie się wpisywał tekst). W MSDN jest to nawet napisane w sekcji Remarks:

To display a caret, an application should call the appropriate caret functions when it receives the WM_SETFOCUS message.

No dobra, ale JAK to zrobić? Pomoże ktoś? :)

0

Po 1. Wiesz, że SET_FOCUS będzie wysłane za każdym razem, gdy jakikolwiek komponent uzyska focus?
Musisz rozpoznać po handle'u.

Po 2. Jest taka właściwość jak CaretPos(którą mogłeś znaleźć w spisie metod - dzięki podpowiedziom, ale Tobie się pewnie nie chciało szukać, nie wiem, co robi, ale nazwa mówi swoje).
Po 3. Memo ma takie zdarzenie jak onEnter.

0
Juhas napisał(a)

Po 2. Jest taka właściwość jak CaretPos(którą mogłeś znaleźć w spisie metod - dzięki podpowiedziom, ale Tobie się pewnie nie chciało szukać, nie wiem, co robi, ale nazwa mówi swoje).

Chyba coś takiego:
Indicates the position of the caret in the client area of the memo.

Delphi syntax:

property CaretPos: TPoint;

C++ syntax:

__property TPoint CaretPos = {read=GetCaretPos, write=SetCaretPos};

Description

Use CaretPos to determine the coordinates of the cursor. CaretPos defines a pixel location onscreen, with the origin in the top left corner of the memo. X specifies the horizontal coordinate of the point, Y specifies the vertical coordinate.

To determine the position of the caret in terms of characters of text only (rather than X/Y location), use the SelStart property.

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