Dobry den.
Jak zpruhlednit form je na netu spousta zdrojaku.
Ja bych však potřeboval do něj nacpat text aby to vypadalo že je text na tapetě plochy.
Pokud je form pruhledny tak Form1.Canvas.TextOut(200, 100, 'ahoj'); nefunguje.
Poradite.
Dobry den.
Jak zpruhlednit form je na netu spousta zdrojaku.
Ja bych však potřeboval do něj nacpat text aby to vypadalo že je text na tapetě plochy.
Pokud je form pruhledny tak Form1.Canvas.TextOut(200, 100, 'ahoj'); nefunguje.
Poradite.
Pokud v Create zakažu proceduru NewWindowRgn tak to vykresli.
constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
NewWindowRgn;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.canvas.Font.Size:=18;
Form1.Canvas.Font.Style := [fsBold, fsUnderline];
Form1.Canvas.Font.Name:= 'Times New Roman';
Form1.Canvas.TextOut(200, 100, 'ahoj');
end;
procedure TForm1.NewWindowRgn;
var
i, CoordX, CoordY: Integer;
FormRgn, NewRgn: THandle;
begin
CoordX:=(Width-ClientWidth) div 2;
CoordY:=Height-ClientHeight-4;
FormRgn:=CreateRectRgn(0, 0, Width, Height);
NewRgn:= CreateRectRgn(
CoordX,
CoordY,
CoordX+ClientWidth,
CoordY+ClientHeight);
CombineRgn(FormRgn, FormRgn, NewRgn, RGN_DIFF);
for i:= 0 to ControlCount -1 do
with Controls[i] do
begin
NewRgn:= CreateRectRgn(
CoordX + Left,
CoordY + Top,
CoordX + Left + Width,
CoordY + Top + Height);
CombineRgn(FormRgn, FormRgn, NewRgn, RGN_OR);
end;
SetWindowRgn(Handle, FormRgn, True);
end;
procedure TForm1.Resize;
begin
inherited;
NewWindowRgn;
end;
Moc jsem nepochopil, co má přesně dělat ta procedura NewWindowRgn, ale vypadá to, že vyřízne klientskou část aplikace a vyjme ji z regionu. To pak do ní nemůžeš kreslit, protože ti nepatří.
A co to zkusit takto:
- vyhoď NewWindowRgn
- vyber nějakou hezkou jinde nepoužívanou barvu formuláři
- nastav mu property TransparentColor na true
- stejnou barvu jako si nastavil jako barvu formuláře nastav i do property TransparentColorValue
Nyní by si ten text měl vidět.
Tak jsem vyzkoušel.
Fungovat to funguje ale neni to ono.
Text neni te barvy co nastavim font.color ale trochu je tam odstin te barvy form.
Pokud mam bily text a světle pozadi plochy jde kolem pisma vidět stin v darvě form.
To same pokud mam text černy a tmave pozadi.
Udělal jsem to tak jak jste napsal.
Ale nechal NewWindowRgn
A text dal do komponenty label.
Je to užasne
Dik za nakopnutí.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku