Mam poniższy kod:
[code]SetWindowRgn(kraje.Handle,CombineRgn(CreateRectRgn(0,0,kraje.Width,kraje.Height),CreateRoundRectRgn(0,0,kraje.Width,kraje.Height,24,24),CreateRectRgn(kraje.Height,0,119,70), RGN_OR), true);[/code]
i niestety nie działa.. Czy moglibyście mi powiedzieć co robię nie tak?? "kraje" to listobox. Dzięki
Nie działa, bo czytasz helpa bez zrozumienia (jeśli w ogóle).
var r:HRGN;
begin
r:=CreateRectRgn(0,0,kraje.Width,kraje.Height);
CombineRgn(r,r,CreateRoundRectRgn(0,0,kraje.Width,kraje.Height,24,24),RGN_OR);
CombineRgn(r,r,CreateRectRgn(kraje.Height,0,119,70),RGN_OR);
SetWindowRgn(kraje.Handle,r,true);
end;
Zresztą coś mi sie tu nie zgadza... Co ty chcesz w ogóle osiągnąć? Bo do tej pory osiągnąłes standardowy prostokąt wielkości pierwotnego okna. Wykombinowałeś standardowy kształt okna, czyli lepiej byłoby , gdybyś nic nie robił.
Chodzi mi o to, żeby listbox(wnętrze) był zaokrąglony, a paski przewijania całe.
var r:HRGN;
begin
r:=CreateRoundRectRgn(0,0,kraje.Width-szerpaska_ver,kraje.Height-wyspaska_hor,24,24);
CombineRgn(r,r,CreateRectRgn(kraje.Width-szerpaska_ver,0,kraje.Width,kraje.Height);,RGN_OR);
CombineRgn(r,r,CreateRectRgn(0,kraje.Height-wyspaska_hor,kraje.Width,kraje.Height);,RGN_OR);
SetWindowRgn(kraje.Handle,r,true);
end;
Mozesz sie jeszcze pozbyc kwadracika, w dolnym prawym rogu:
var r:HRGN;
begin
r:=CreateRoundRectRgn(0,0,kraje.Width-szerpaska_ver,kraje.Height-wyspaska_hor,24,24);
CombineRgn(r,r,CreateRectRgn(kraje.Width-szerpaska_ver,0,kraje.Width,kraje.Height-wyspaska_hor
);,RGN_OR);
CombineRgn(r,r,CreateRectRgn(0,kraje.Height-wyspaska_hor,kraje.Width-szerpaska_ver,kraje.Height);,RGN_OR);
SetWindowRgn(kraje.Handle,r,true);
end;
wyspaska_hor - wysokość paska horyzontralnego (poziomego)
szerpaska_ver - szerokość paska wertykalnego (pionowego)
// I pewnie jeszcze grubość ramki i takie tam trzeba uwzględnić.
Dzięki, ale właśnie przy pomocy tej: http://www.republika.pl/delphipl/wyklady/region/region.htm doszedłem do tego. :D
Dziękuję zły obolu :D
//A czy da się zrobić wokół wnętrza listboxa jeszcze powiedzmy czarną ramkę??
chyba nie.
Da się... Trzeba albo pobawić sie canvasem (jesli jest), albo zrobić to poprzez api (device context... getdc() i funkcje/procedury z tej grupy). Chyba nawet jest drawellipse(), czy drawrectangle(). To znaczy jest na pewno, ale nie wiem, czy akurat pod tymi nazwami.
Jednym słowem dużo roboty.... :( Jak będziesz miał czas to mógłbyś się tym pobawić ??
Witam wszystkich na forum.
Jak ktoś do tego nie doszedł to prezentuje sprawdzony kod na zaokrąglanie panelu co może być stosowane do róznych komponentów ,a także do formularzy:
http://www.noribo.prv.pl/faq/faq.html
Pytanie: 53
Pozdrawiam Grupa Noribo Częstochowa