Rozmiar (obszar) własnego komponentu

0

Witam.
Tworzę komponent np. TComp = class(TCustomControl). I teraz potrzebuję żeby miał kształt prostakšta, załóżmy 50x100. Ustawiam rozmiar w construktorze, rysuję jego wyglšd i to co potrzebuję. I teraz w dolnej częci tego komponentu ma być Label. Label.Caption może być szerszy niż szerokoć komponentu (np. 70). W chwili obecnej to co "wystaje" poza szerokoć komponentu jest obcinane. Pytanie jest takie, czy komponent może mieć inny kształt niż prostokšt - jak to zrobić? Jak zadeklarować?
Oczywicie mogę zadeklarować większš szerokoć, tylko wtedy kłopot (no, może utrudnienie) będzie ze zdarzeniami typu onMouseMove itp.

Sebastian

0

SetWindowRgn()

0

Witam ponownie.
Otóż sposób wskazany powyżej jest wydaje się idealny :)
Niemniej jednak pojawił się problem - po przestudiowaniu przykładó, dokumentacji itp. nie udało się go rozwiązać, proszę więc o pomoc :))
Otóż mam komponent.

TMojComponent = class(TCustomControl);

W TMojComponent.Create mam kod:

 var MojKsztalt :HRGN;
begin
   inherited ...; // standardowo z AOwner

   MojKsztalt = CreateEllipticRgn(0, 0, Self.Width, Self.Height);
   SetWindowRgn(Self.Handle, MojKsztalt, TRUE);
end;

No i kłopot polega na tym, że wywala mi się na SetWindowRgn błedem "Control has no parent window"..

Proszę o pomoc.

0

... hmm powyżej to byłem ja (jarząbek ;)) - coś szybko wywala :/

Ok, zapomniałem dopisać, że jeżeli usunie się linijkę SetWindowRgn..., skompiluje, potem umieści komponent na formie, potem wstawi z powrotem - ok, nie ma problemu. Podczas uruchomienia działa, obszar jest okręgiem. Problem pojawią się w momencie umieszczania komponentu na formie!
Dlaczego tak jest?

Tak teraz patrze, i widzę coś takiego: deklaracja zmiennej

var MojKsztalt : HRGN

vs.

var MojKsztalt : THandle 

czy to jest jest różnica, czy to może być przyczyna?

Pozdrawiam
Sebastian (bednar)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.