Witam
Jak zmienic kolor obramowania edita ktorego wlasciwosc ctl3d wylaczylem (plaski).
0
0
Wrzucasz sobie w Timer i ustawiasz Interval na 1:
procedure TForm1.Timer1Timer(Sender: TObject);
var
H: HDC;
begin
if Form1.Active then begin
Canvas.Refresh;
H:=GetDC(0);
Canvas.Handle:=H;
Canvas.Pen.Color:=clBlue; // tu ustawiasz sobie swój kolor :)
Canvas.MoveTo(Form1.Left+Edit1.Left+4, Form1.Top+Edit1.Top+30);
CAnvas.LineTo(Form1.Left+Edit1.Left+4+Edit1.Width, Form1.Top+Edit1.Top+30);
Canvas.MoveTo(Form1.Left+Edit1.Left+4, Form1.Top+Edit1.Top+30);
Canvas.LineTo(Form1.Left+Edit1.Left+4, Form1.Top+Edit1.Top+30+Edit1.Height);
Canvas.MoveTo(Form1.Left+Edit1.Left+4, Form1.Top+Edit1.Top+30+Edit1.Height-1);
Canvas.LineTo(Form1.Left+Edit1.Left+4+Edit1.Width, Form1.Top+Edit1.Top+30+Edit1.Height-1);
CAnvas.MoveTo(Form1.Left+Edit1.Left+4+Edit1.Width-1, Form1.Top+Edit1.Top+30);
Canvas.LineTo(Form1.Left+Edit1.Left+4+Edit1.Width-1, Form1.Top+Edit1.Top+30+Edit1.Height-1);
ReleaseDC(0, H);
end;
end;
Sposób może troszke "okrężny" ale działa :P :) ;)
0
Można łatwiej :)
Dajesz to np. w onCreate:
var
C: TControlCanvas;
begin
try
C := TControlCanvas.Create;
C.Control := Edit1;
C.Pen.Color:= clGreen;
C.Brush.Style:= bsClear;
c.Rectangle(0,0, Edit1.Width, Edit1.Height);
finally
c.Free;
end;
0
Dobre, dzieki.
Czy podczas OnResize formy, jesli chce zmienic Width dla Edit'a musze wykonac cala ta funkcje (TControlCanvas) ponownie?