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

Design time 變化Edit的Border的顏色?

尚未結案
Leway
一般會員


發表:43
回覆:71
積分:22
註冊:2003-07-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-05 10:09:57 IP:218.80.xxx.xxx 未訂閱
Edit的color屬性可以在Design time變化Edit的背景顏色. Font->color屬性可以在Design time變化Font的顏色. 請問怎樣實現在Design time 變化Border的顏色呢? ======================================= 為學日益,為道日損,損之又損,以致於無。為無為,而無不為。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-07 17:15:00 IP:202.39.xxx.xxx 未訂閱
TEdit 沒法做到 得繼承之後再來實現 小弟看了一下 R3C 的 TRzEdit 元件的 source 其方式為攔截 WM_NCPaint 這個 message 然後再去畫邊框(border)的顏色    -- He just never quits.
Leway
一般會員


發表:43
回覆:71
積分:22
註冊:2003-07-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-08 08:10:26 IP:218.80.xxx.xxx 未訂閱
我想看看TRzEdit的Source. 謝謝 ======================================= 為學日益,為道日損,損之又損,以致於無。為無為,而無不為。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-08 08:25:40 IP:202.39.xxx.xxx 未訂閱
Raize Components: http://www.raize.com/DevTools/Products.htm    或者參考 Peter Below 大大的作品 TPBLineEdit 原始碼如下:
unit PBLineEdit;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;    type
  TPBLineEdit = class(Tedit)
  private
    { Private declarations }
    procedure WMNCPaint( var msg: TWMNCPaint ); message WM_NCPAINT;
  public
    Constructor Create( aOwner: TComponent ); override;        property ParentColor default true;
  end;    procedure Register;    implementation    procedure Register;
begin
  RegisterComponents('PBGoodies', [TPBLineEdit]);
end;    { TPBLineEdit }    constructor TPBLineEdit.Create(aOwner: TComponent);
begin
  inherited;
  ParentColor := true;
end;    procedure TPBLineEdit.WMNCPaint(var msg: TWMNCPaint);
var
  cv: TCanvas;
  dc: HDC;
  r: TRect;
begin
  dc:= GetWindowDC( handle );
  SaveDC( dc );
  try
    cv:= TCanvas.Create;
    try
      cv.Handle := dc;
      cv.Lock;
      r:= Rect( 0, 0, Width, Height );
      With cv.Brush Do Begin
        Color := Self.Color;
        Style := bsSolid;
      End;
      cv.FrameRect( r );
      InflateRect( r, -1, -1 );
      cv.FrameRect( r );
      With cv.Pen Do Begin
        Color := clBlack;
        Style := psSolid;
        Width := 2;
      End;
      cv.MoveTo( r.Left, r.Bottom );
      cv.LineTo( r.right, r.Bottom );
    finally
      cv.Unlock;
      cv.free;
    end;
  finally
    RestoreDC( dc, -1 );
    ReleaseDC( handle, dc );
  end;
end;    end.
-- He just never quits.
系統時間:2024-06-25 14:52:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!