当前位置:主页>仓库管理软件> 列表

请问有没有这样的输入控件?详请见内 找怎么使用管家婆软件

记账软件版1楼: 带下划线的输入框,但无外框,只有一条下划线提示输入?

2楼: http://www.delphibbs.com/delphibbs/dispq.asp?lid=1767749 如怎么使用管家婆软件

3楼: 搞一条线,然后将Edit设置为无边框[:)]

4楼: 无边框Edit,下面放一个宽度与Edit一样,高度为1的Shape

5楼: 只要将bevelinner和bevelouter读设为bvnone
然后在字体中设置为下划线 OK

6楼: 透明 无边框 下划线
unit QClarityEdit;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

const
TMWM__SpecialInvalidate = WM_USER + 1111;

type
TClarityEdit = class(TEdit)
private
FClarity : Boolean;
procedure SetClarity(const Value: Boolean);
{ Private declarations }
protected
{ Protected declarations }
procedure CMEraseBkgnd (var Message: TWMEraseBkgnd); Message WM_ERASEBKGND;
procedure WMSetText (var Message: TWMSetText);


procedure SpecialInvalidate(var Message: TMessage); message TMWM__SpecialInvalidate;
procedure CNCTLCOLOREDIT (var Message: TWMCTLCOLOREDIT); message CN_CTLCOLOREDIT;
procedure WMKeyDown (var Message: TWMKeyDown); message WM_KEYDOWN;
procedure WMKillFocus (Var Message: TWMKillFocus); Message WM_KillFocus;
procedure WMLButtonDown (Var Message: TWMLButtonDown); Message WM_LButtonDown;
procedure WMMove (Var Message: TWMLButtonDown); Message WM_Move;
procedure WMMouseMove (Var Message: TWMMouseMove); Message WM_MouseMove;
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
procedure Invalidate; override;
property Clarity:Boolean read FClarity write SetClarity default True;
published
{ Published declarations }
property BevelKind default BKFlat;

property BorderStyle default bsNone;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents(''subin'', [TClarityEdit]);
end;

{ TClarityEdit }
procedure TClarityEdit.CMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
if Clarity then
Message.Result := 1;
end;

procedure TClarityEdit.CNCTLCOLOREDIT(var Message: TWMCTLCOLOREDIT);
begin
if Clarity then
with Message do
begin
SetBkMode(ChildDC,Windows.TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH);
end
else inherited;
end;

constructor TClarityEdit.Create(AOwner: TComponent);
begin
inherited create(AOwner);
self.BorderStyle:=bsNone;
self.BevelKind:=bkflat;
self.BevelInner:=bvnone;
self.BevelOuter:=bvnone;
self.Font.Style:= [fsUnderline];
Clarity:=true;
end;

procedure TClarityEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);


if (CsDesigning in ComponentState) then exit;
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT;
end;
end;

procedure TClarityEdit.CreateWnd;
begin
inherited CreateWnd;
if Clarity then
begin
SetWindowLong(Parent.Handle, GWL_STYLE,
GetWindowLong(Parent.Handle, GWL_STYLE) and not WS_CLIPCHILDREN);
end;
end;

procedure TClarityEdit.Invalidate;
begin
if Clarity then PostMessage(Handle,TMWM__SpecialInvalidate,0,0)
else inherited;
end;

procedure TClarityEdit.SetClarity(const Value: Boolean);
begin
FClarity := Value;
end;

procedure TClarityEdit.SpecialInvalidate(var Message: TMessage);
var
rect:TRect;
begin
if Parent<>nil then
begin
rect:=ClientRect;
rect.TopLeft:=Parent.ScreenToClient(ClientToScreen(rect.TopLeft));
rect.BottomRight:=Parent.ScreenToClient(ClientToScreen(rect.BottomRight));
InvalidateRect(Parent.Handle,@rect,true);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
end;
end;

procedure TClarityEdit.WMKeyDown(var Message: TWMKeyDown);
begin
SendMessage(Handle,TMWM__SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM__SpecialInvalidate,0,0);
end;

procedure TClarityEdit.WMKillFocus(var Message: TWMKillFocus);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM__SpecialInvalidate,0,0)
end;

procedure TClarityEdit.WMLButtonDown(var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM__SpecialInvalidate,0,0);
end;

procedure TClarityEdit.WMMouseMove(var Message: TWMMouseMove);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM__SpecialInvalidate,0,0);
end;

procedure TClarityEdit.WMMove(var Message: TWMLButtonDown);
begin
inherited;
//if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM__SpecialInvalidate,0,0);
end;

procedure TClarityEdit.WMSetText(var Message: TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM__SpecialInvalidate,0,0);
end;

end.

记账软件版7楼: Delphi6及更高版本可像如下设置:
object Edit1: TEdit
Left = 80
Top = 40
Width = 121
Height = 15
BevelEdges = [beBottom]
BevelInner = bvNone
BevelKind = bkTile
BevelOuter = bvRaised
BorderStyle = bsNone
Color = clBtnFace
Ctl3D = True
ParentCtl3D = False
TabOrder = 0
Text = ''Edit1''
end

8楼: 接受答案了