Thread View: pl.comp.lang.delphi
9 messages
9 total messages
Started by Romek
Tue, 01 Aug 2017 12:49
TEdit i ReadOnly
Author: Romek
Date: Tue, 01 Aug 2017 12:49
Date: Tue, 01 Aug 2017 12:49
7 lines
1556 bytes
1556 bytes
Gdy zmianie ulegnie właściwość Enabled lub Visible, to do kontrolki wysyłany jest message CM_ENABLEDCHANGED lub odpowiednio CM_VISIBLECHANGED. Czy po zmianie właściwiości ReadOnly jest wysyłany komunikat do kontrolki? Nie udało mi się nic znaleźć na ten temat. Z góry dziękuję za pomoc. Romek
Re: TEdit i ReadOnly
Author: Roman Tyczka
Date: Tue, 01 Aug 2017 13:23
Date: Tue, 01 Aug 2017 13:23
23 lines
1457 bytes
1457 bytes
On Tue, 1 Aug 2017 05:49:52 -0700 (PDT), Romek wrote:
> Gdy zmianie ulegnie właściwość Enabled lub Visible, to do kontrolki
> wysyłany jest message CM_ENABLEDCHANGED lub odpowiednio
> CM_VISIBLECHANGED. Czy po zmianie właściwiości ReadOnly jest wysyłany
> komunikat do kontrolki? Nie udało mi się nic znaleźć na ten temat.
Wystarczy zajrzeć w źródła:
procedure TCustomEdit.SetReadOnly(Value: Boolean);
begin
if FReadOnly <> Value then
begin
FReadOnly := Value;
if HandleAllocated then
SendMessage(Handle, EM_SETREADONLY, Ord(Value), 0);
end;
FSaveReadOnly := FReadOnly;
end;
--
pozdrawiam
Roman Tyczka
Re: TEdit i ReadOnly
Author: Romek
Date: Tue, 01 Aug 2017 20:38
Date: Tue, 01 Aug 2017 20:38
3 lines
1728 bytes
1728 bytes
Niewłaściwie opisałem mój problem. Komunikat EM_SETREADONLY jest wysyłany do "systemu". Czy system wysyła w odpowiedzi jakiś komunikat do aplikacji inforujący, że stan kontrolki (ReadOnly) uległ zmianie? Stworzyłem klasę potomną dla TCustomEdit i chciałbym aby reagowała na zmianę właściwości ReadOnly. Romek
Re: TEdit i ReadOnly
Author: Roman Tyczka
Date: Wed, 02 Aug 2017 07:45
Date: Wed, 02 Aug 2017 07:45
14 lines
1462 bytes
1462 bytes
On Tue, 1 Aug 2017 13:38:32 -0700 (PDT), Romek wrote: > Niewłaściwie opisałem mój problem. Komunikat EM_SETREADONLY jest wysyłany do "systemu". Czy system wysyła w odpowiedzi jakiś komunikat do aplikacji inforujący, że stan kontrolki (ReadOnly) uległ zmianie? Stworzyłem klasę potomną dla TCustomEdit i chciałbym aby reagowała na zmianę właściwości ReadOnly. Żeby to sprawdzić możesz nadpisać metodę TWinControl: procedure WndProc(var Message: TMessage); override; i tam się dowiesz co kontrolka dostaje i kiedy. -- pozdrawiam Roman Tyczka
Re: TEdit i ReadOnly
Author: zpksoft
Date: Wed, 02 Aug 2017 08:16
Date: Wed, 02 Aug 2017 08:16
8 lines
1871 bytes
1871 bytes
W dniu wtorek, 1 sierpnia 2017 22:38:38 UTC+2 użytkownik Romek napisał: > Niewłaściwie opisałem mój problem. Komunikat EM_SETREADONLY jest wysyłany do "systemu". Czy system wysyła w odpowiedzi jakiś komunikat do aplikacji inforujący, że stan kontrolki (ReadOnly) uległ zmianie? Stworzyłem klasę potomną dla TCustomEdit i chciałbym aby reagowała na zmianę właściwości ReadOnly. > > Romek To nie jest komunikat wysyłany do systemu tylko do obiektu o uchwycie "handle", czyli do kontrolki. Paweł
Re: TEdit i ReadOnly
Author: Roman Tyczka
Date: Wed, 02 Aug 2017 08:31
Date: Wed, 02 Aug 2017 08:31
13 lines
1670 bytes
1670 bytes
On Wed, 2 Aug 2017 01:16:17 -0700 (PDT), zpksoft wrote: >> Niewłaściwie opisałem mój problem. Komunikat EM_SETREADONLY jest wysyłany do "systemu". Czy system wysyła w odpowiedzi jakiś komunikat do aplikacji inforujący, że stan kontrolki (ReadOnly) uległ zmianie? Stworzyłem klasę potomną dla TCustomEdit i chciałbym aby reagowała na zmianę właściwości ReadOnly. >> > To nie jest komunikat wysyłany do systemu tylko do obiektu o uchwycie "handle", czyli do kontrolki. Pisząc w cudzysłowie "systemu" Romek miał na myśli, że kontrolka TEdit (oraz kilka innych) to wrappery na systemowe kontrolki i komunikaty lecą właśnie do niższej warstwy obsługiwanej przez system. -- pozdrawiam Roman Tyczka
Re: TEdit i ReadOnly
Author: zpksoft
Date: Wed, 02 Aug 2017 09:10
Date: Wed, 02 Aug 2017 09:10
29 lines
2590 bytes
2590 bytes
W dniu środa, 2 sierpnia 2017 10:31:29 UTC+2 użytkownik Roman Tyczka napisał:
> On Wed, 2 Aug 2017 01:16:17 -0700 (PDT), zpksoft wrote:
>
> >> Niewłaściwie opisałem mój problem. Komunikat EM_SETREADONLY jest wysyłany do "systemu". Czy system wysyła w odpowiedzi jakiś komunikat do aplikacji inforujący, że stan kontrolki (ReadOnly) uległ zmianie? Stworzyłem klasę potomną dla TCustomEdit i chciałbym aby reagowała na zmianę właściwości ReadOnly.
> >>
> > To nie jest komunikat wysyłany do systemu tylko do obiektu o uchwycie "handle", czyli do kontrolki.
>
> Pisząc w cudzysłowie "systemu" Romek miał na myśli, że kontrolka TEdit
> (oraz kilka innych) to wrappery na systemowe kontrolki i komunikaty lecą
> właśnie do niższej warstwy obsługiwanej przez system.
>
> --
> pozdrawiam
> Roman Tyczka
Tak, wiem. Ale to niczego nie zmienia. Jeśli dobrze zrozumiałem Romka to wystarczy pokryć metodę setReadOnly i dać modyfikację, np.
if FReadOnly <> Value then
begin
FReadOnly := Value;
if HandleAllocated then
begin
SendMessage(Handle, EM_SETREADONLY, Ord(Value), 0);
NpPomalujCosNaCanvasieKontrolki();
end;
end;
FSaveReadOnly := FReadOnly;
Paweł
Re: TEdit i ReadOnly
Author: zpksoft
Date: Wed, 02 Aug 2017 09:14
Date: Wed, 02 Aug 2017 09:14
19 lines
2575 bytes
2575 bytes
W dniu środa, 2 sierpnia 2017 10:31:29 UTC+2 użytkownik Roman Tyczka napisał: > On Wed, 2 Aug 2017 01:16:17 -0700 (PDT), zpksoft wrote: > > >> Niewłaściwie opisałem mój problem. Komunikat EM_SETREADONLY jest wysyłany do "systemu". Czy system wysyła w odpowiedzi jakiś komunikat do aplikacji inforujący, że stan kontrolki (ReadOnly) uległ zmianie? Stworzyłem klasę potomną dla TCustomEdit i chciałbym aby reagowała na zmianę właściwości ReadOnly. > >> > > To nie jest komunikat wysyłany do systemu tylko do obiektu o uchwycie "handle", czyli do kontrolki. > > Pisząc w cudzysłowie "systemu" Romek miał na myśli, że kontrolka TEdit > (oraz kilka innych) to wrappery na systemowe kontrolki i komunikaty lecą > właśnie do niższej warstwy obsługiwanej przez system. > > -- > pozdrawiam > Roman Tyczka Można też przechwycić komunikaty EM_SETREADONLY i samodzielnie je obsłużyć, ale żeby nie wpaść w pętlę raczej należałoby wówczas zrezygnować ze standardowej procedury setReadOnly... Przynajmniej ja tak bym kombinował. Paweł
Re: TEdit i ReadOnly
Author: Romek
Date: Wed, 02 Aug 2017 14:13
Date: Wed, 02 Aug 2017 14:13
8 lines
1723 bytes
1723 bytes
Dziękuję za pomoc i podpowiedzi. Popełniłem błąd i dlatego wydawało mi się, że wysłanie komunikatu SendMessage(Handle, EM_SETREADONLY, Ord(Value), 0); nie działa. Romek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads