przezroczysty Richedit

0

Chciałbym aby richedit był przezroczysty, tzn. pod Richeditem mam jakies tam obrazki i chciałbym, aby były one jakby tłem dla Richedita...

Szukałem na google.pl, 4programmers i nic nie znalazłem
Było tylko żeby napisać:

richedit1.brush.style:=bsclear;

napisałem tak i nie działa ;(
Czy moze ktos mi pomóc???

0

Nie ma takiej możliwości, jeśli chodzi o komponent RichEdit. Jeśli czcionka nie ma być kolorowa w Twoim RichEdit. To możesz użyć komponentu TransparentMemo [CoolForm].

0

:-/ na pewno nie ma???
Richedit musi być, bo mam różne wielkości, fonty, kolory, itd...
Czy może ktoś wie jak to zrobić???
Potrzebuje tego bardzo...

0

Czy to jest edytor, czy tylko Twój RichEdit ma zawiera treść, która będzie tylko odczytana.

0

to jest edytor...
A własciwie generator stron interetowych-dla osób nie umiejących html- wszystko zrobi za ciebie ;)

0

Jeśli chcesz tylko wyświetlić kod, możesz zrenderować to na bitmapę i bez problemu złożyć z tłem. Jak chcesz móc edytować, na standardowym komponencie raczej tego nie zrobisz.

0

windows mnie coraz bardziej wnerwia :[
udostepnili nawet fajna procedurke:
SetLayeredWindowAttributes
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp

szkoda tylko, ze nie dziala dla zadnego okna potomka :-/
bo wtedy nie bylo by wiekszego problemu. za handle podal bys tylko uchwyt do Richedita....

meczylem sie z tym z pol godziny i nic nie wymyslilem....
ale sprobuj jeszcze pokombinowac, moze sie uda...

pozdro i zycze powodzenia [browar]

0

po dość długim przeszukiwaniem neta znalazłem rozwiązanie :)
Nie ma to jak google... ;)
Kod krótki i przejrzysty:

richedit1.Brush.Style:=bsclear;
richedit1.HandleNeeded;
setwindowlong(richedit1.handle, GWL_EXSTYLE, WS_EX_TRANSPARENT);

Wstawić w onCreate formy, albo przy dynamiczym tworzeniu wywołać to (odpowiednio zmienione) na końcu tworzenia-czyli po przypisaniu wartości...
Przykład:

zawartosc[liczba] := TRichEdit.Create( Form1 );
zawartosc[liczba].Parent:=panel3;
zawartosc[liczba].Left:=15;
zawartosc[liczba].Top:=15;
zawartosc[liczba].Height:=panel3.Height-30;
zawartosc[liczba].Width:=panel3.Width-30;
zawartosc[liczba].BorderStyle:=bsnone;
zawartosc[liczba].Font.Name:='arial';
zawartosc[liczba].Font.Size:=12;
zawartosc[liczba].Brush.Style:=bsclear;
zawartosc[liczba].HandleNeeded;
setwindowlong(zawartosc[liczba].handle, GWL_EXSTYLE, WS_EX_TRANSPARENT);
0

tylko że ten kod powoduje nieznaczne miganie... Czy da się je zniwelować???
w oncreate formy mam juz napsisane doublebuffered:=true;

0

U mnie nie działa :P

0

Czy to musi być TRichEdit? Może spróbuj kombinować na Labelu (on ma właściwość Transparent).
A jeśli musi być na RichEdicie, to spróbuj użyć Canvasa lub ControlCanvasa (TCanvas, TControlCanvas). :-)

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