Czemu to nie działa?? :( (CombineRgn)

Odpowiedz Nowy wątek
2004-02-21 16:24

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

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);
i niestety nie działa.. Czy moglibyście mi powiedzieć co robię nie tak?? "kraje" to listobox. Dzięki


Pozostało 580 znaków

2004-02-21 19:25

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

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ł.


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa.

'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E'

extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers

Pozostało 580 znaków

-WoJTeK-
2004-02-21 21:06
-WoJTeK-
0

Chodzi mi o to, żeby listbox(wnętrze) był zaokrąglony, a paski przewijania całe.

Pozostało 580 znaków

2004-02-21 21:23

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0
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ć.


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa.

'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E'

extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers

Pozostało 580 znaków

2004-02-21 21:30

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

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ę??


Pozostało 580 znaków

delphi-master
2004-02-21 21:48
delphi-master
0

chyba nie.

Pozostało 580 znaków

2004-02-21 22:26

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

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.


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa.

'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E'

extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers

Pozostało 580 znaków

2004-02-21 22:28

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

Jednym słowem dużo roboty.... :( Jak będziesz miał czas to mógłbyś się tym pobawić ??


Pozostało 580 znaków

2004-02-21 22:39

Rejestracja: 17 lat temu

Ostatnio: 12 lat temu

1

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

Pozostało 580 znaków

Odpowiedz

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