線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1379
推到 Plurk!
推到 Facebook!

如何加入TDBEdit的外框線和顏色

答題得分者是:speedup
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-04 12:30:08 IP:61.221.xxx.xxx 未訂閱
小弟想要把DBEdit的外框加上線和顏色用來做欄位的分別,請問如何可做到??
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-04 15:49:02 IP:61.155.xxx.xxx 未訂閱
将DBEdit放在panel上,设置panel的color属性就可以实现了!
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-04 15:52:22 IP:219.145.xxx.xxx 未訂閱
當滑鼠放到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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-04 16:53:36 IP:61.221.xxx.xxx 未訂閱
兩位前輩的方式都可以做,小弟有個問題就是,這個DBEdit會在開啟程式的時候就必須展現出框的顏色,當然mathewzhao前輩的方式必須改寫到其他地方,若當我要依資料判斷此DBEdit是否要顯示的時候,無論兩種方式都要也一起隱藏,若是用panel的話較簡單,若是用畫的話??是不是變成重新畫其他有顯示的就好~~小弟說的若有錯誤請前輩們在指點,或是有更好的方式ㄋ??
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-04 17:08:16 IP:61.221.xxx.xxx 未訂閱
引言: 兩位前輩的方式都可以做,小弟有個問題就是,這個DBEdit會在開啟程式的時候就必須展現出框的顏色,當然mathewzhao前輩的方式必須改寫到其他地方,若當我要依資料判斷此DBEdit是否要顯示的時候,無論兩種方式都要也一起隱藏,若是用panel的話較簡單,若是用畫的話??是不是變成重新畫其他有顯示的就好~~小弟說的若有錯誤請前輩們在指點,或是有更好的方式ㄋ??
補充一下,若用畫線的方式,若線畫在DBEdit上面,線還是會被DBEdit蓋住,看不到線,有辦法讓線呈現在DBEdit上面嗎??
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-04 17:16:56 IP:219.145.xxx.xxx 未訂閱
//不知這是否是你需要的,當按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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-04 18:30:32 IP:61.221.xxx.xxx 未訂閱
了解~~感謝~~但若線畫在DBEdit上面,線還是會被DBEdit蓋住,看不到線,有辦法讓線呈現在DBEdit上面嗎?? 發表人 - yabula 於 2003/09/04 18:32:31
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-05 08:18:25 IP:61.134.xxx.xxx 未訂閱
Hi! yabula兄 
引言: 但若線畫在DBEdit上面,線還是會被DBEdit蓋住,看不到線,有辦法讓線呈現在DBEdit上面嗎?
如果方便的話,能否稍做一下解釋你的問題,我不太明白.
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-05 09:08:48 IP:61.221.xxx.xxx 未訂閱
也就是我想把線畫在DBEdit的物件範圍內,但是DBEdit會將線遮住,不知您這樣了解嗎??
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-05 17:16:29 IP:210.243.xxx.xxx 未訂閱
引言: 也就是我想把線畫在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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-09-09 09:44:31 IP:61.221.xxx.xxx 未訂閱
不好意思~~忙到今天才有空回,改元件的方式我試過了,這方式應該比較適合我,謝謝您,再多請教一下,若框線可以調整粗細要怎改??
------
ivankuo
系統時間:2024-05-18 16:24:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!