如何加入TDBEdit的外框線和顏色 |
答題得分者是:speedup
|
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
當滑鼠放到DBEdit時,出現紅色邊框,看看是否是你需要的。
procedure TForm1.DBEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Form1.Repaint; Form1.Canvas.Pen.Color:=clRed; Form1.Canvas.Pen.Width:=5; Form1.Canvas.Polyline([Point(DBEdit1.left,DBEdit1.top), Point(DBEdit1.left DBEdit1.width,DBEdit1.top), Point(DBEdit1.left DBEdit1.width,DBEdit1.top DBEdit1.Height), Point(DBEdit1.left,DBEdit1.top DBEdit1.Height), Point(DBEdit1.left,DBEdit1.top)]); end; |
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
|
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
引言: 兩位前輩的方式都可以做,小弟有個問題就是,這個DBEdit會在開啟程式的時候就必須展現出框的顏色,當然mathewzhao前輩的方式必須改寫到其他地方,若當我要依資料判斷此DBEdit是否要顯示的時候,無論兩種方式都要也一起隱藏,若是用panel的話較簡單,若是用畫的話??是不是變成重新畫其他有顯示的就好~~小弟說的若有錯誤請前輩們在指點,或是有更好的方式ㄋ??補充一下,若用畫線的方式,若線畫在DBEdit上面,線還是會被DBEdit蓋住,看不到線,有辦法讓線呈現在DBEdit上面嗎?? |
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
//不知這是否是你需要的,當按Button1時紅框和DBEdit1都隱藏
procedure TForm1.DBEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin if DBEdit1.Visible then begin Form1.Repaint; Form1.Canvas.Pen.Color:=clRed; Form1.Canvas.Pen.Width:=5; Form1.Canvas.Polyline([Point(DBEdit1.left,DBEdit1.top), Point(DBEdit1.left DBEdit1.width,DBEdit1.top), Point(DBEdit1.left DBEdit1.width,DBEdit1.top DBEdit1.Height), Point(DBEdit1.left,DBEdit1.top DBEdit1.Height), Point(DBEdit1.left,DBEdit1.top)]); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Form1.Repaint; DBEdit1.Visible:=false; end; |
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
|
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
|
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 也就是我想把線畫在DBEdit的物件範圍內,但是DBEdit會將線遮住,不知您這樣了解嗎??改寫DBEdit元件如何, 我依據你的需求,稍加改寫DBEdit元件,增加FrameColor屬性,預設值為紅包 若設成clNone則呈現出原始樣式 Source Code 如下 unit DBEditFC; interface uses SysUtils, Classes,windows,messages, Controls, StdCtrls, Mask, DBCtrls,Graphics; type TDBEditFC = class(TDBEdit) private FFrameColor: TColor; FCanvas : TControlCanvas; procedure SetFrameColor(const Value: TColor); procedure WMPaint(var Message: TWMPaint); message WM_PAINT; published constructor Create(AOwenr:TComponent);override; Destructor Destroy;override; property FrameColor:TColor read FFrameColor write SetFrameColor; end; procedure Register; implementation procedure Register; begin RegisterComponents('Sample', [TDBEditFC]); end; { TDBEditFC } constructor TDBEditFC.Create(AOwenr: TComponent); begin inherited; FCanvas := TControlCanvas.Create; FCanvas.Control := Self; FFrameColor := clRed; end; destructor TDBEditFC.Destroy; begin FCanvas.Free; inherited; end; procedure TDBEditFC.SetFrameColor(const Value: TColor); begin FFrameColor := Value; invalidate; end; procedure TDBEditFC.WMPaint(var Message: TWMPaint); begin inherited; if FFrameColor <> clNone then begin FCanvas.Handle := Message.DC; FCanvas.Brush.Color := FFrameColor; FCanvas.FrameRect(ClientRect); end; end; end. 唉~
------
唉~ |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |