我想达到的效果就是让Edit里面的文字呈现类似“水平反转”显示。图片里的Edit中显示的是“你是好人”,我就要这个显示样式。如果因为汉字是占两个字节而无法实现,那么只要能实现数字是水平反转显示也行。例如下面的图片就是“12345”的显示效果:
提供第三方控件能解决问题同样给分,直接用代码实现最好。分其实并不重要,希望朋友们不吝赐教!
解决方案 »
- delphi如何获取网页的http返回状态及反应时间
- 关于FOXMAIL地址簿的导入导出功能的实现(分可以再加!!)
- 怎样向ActiveForm传递对象?
- 数据库报表的问题?
- 关于动态创建TDataSetProvider的问题
- 在线等待
- delphi中有个装入库的功能,在安装第方组件的时候经常用到,请问那里是不是限制了数目的,好象装入十来个就不可以在装了
- 添加控件的安装方法
- ODBC方式连接 DB2 9.1+FIX3 问题 [IBM][CLI Driver] CLI0125E 函数顺序错误。 SQLSTATE=S1010
- 如何在桌面属性工文件属性窗口中添加一个自定义的选项卡
- 通过TIdTCPServer操作数据库的问题(ADO)
- TMainMenu菜单左边如何出现一列带有颜色的列?
到BCB版去问吧,200分,我帮你. 不管数字还是汉字.
偶然来D版看到了这个问题,比较有兴趣才准备伸手,lz的分还是自己留着吧.
我倒是想看看谁能给你解答.btw:以前有个同事,比我先跳槽.他学Delphi我学BCB,有一次遇到,他用很不屑的语气对我说,
学CB干什么,VCL都是Delphi语言开发的.如果再见面我会说,学Delphi干什么,Windows都是
C语言开发的.
你说“我倒是想看看谁能给你解答”,如果真没人可以解答的话,我已经说过处理办法了,另加一条,顶者有分。目前我已经想到了(原创)一种方法可以实现,基本上不用写什么代码。就是用Delphi内嵌网页(用流动态生成)中的<input type=text...来实现,通过操控网页来控制显示,已经达到了要求,只是效果不如Edit来得直接。。如果有人需要这段代码,请加QQ:5555044或群:37802783 。代码放到手里面发不了财,知识是共享的,欢迎大家一起交流。另外,据说用API函数GetGlyphOutline可以实现,目前正在研究中。
不过有些闪烁,是因为有些消息没有处理造成的.效率也很低.
自己处理一下吧(仅供参考).
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TMyEdit = class(TEdit)
protected
procedure WndProc(var Msg: TMessage); override;
end; TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TMyEdit }procedure TMyEdit.WndProc(var Msg: TMessage);
var
tmpCanvas: TControlCanvas;
tmpBmp : TBitmap;
i, j: integer;
begin
if Msg.Msg = WM_PAINT then
begin
tmpBmp := TBitmap.Create;
tmpCanvas:= TControlCanvas.Create; try
tmpCanvas.Control:= self; tmpBmp.Width := Width;
tmpBmp.Height:= Height; tmpBmp.Canvas.Brush.Color:= clWhite;
tmpBmp.Canvas.FillRect(Self.BoundsRect); tmpBmp.Canvas.Font.Assign(Font);
tmpBmp.Canvas.TextOut(5, 5, Self.Text); for i:= 1 to tmpBmp.Height - 1 do
begin
for j:= tmpBmp.Width - 1 downto 1 do
tmpCanvas.Pixels[Width - j, i]:= tmpBmp.Canvas.Pixels[j, i]
end;
finally
FreeAndNil(tmpBmp);
FreeAndNil(tmpCanvas);
end;
end
else
inherited;
end;procedure TForm1.Button1Click(Sender: TObject);
var
edtTest: TMyEdit;
begin
edtTest:= TMyEdit.Create(nil); edtTest.Parent:= self;
edtTest.Left := 0;
edtTest.Top := 0; edtTest.Visible:= true;
end;end.
else
inherited;
改为调用TEdit中原来的消息就可以了。可是不知道如何修改。现在主要的问题是该Edit不能执行全选所达到的那种效果。
edtTest:= TMyEdit.Create(nil);
edtTest.Font.Color:= clWhite;//加个颜色....
tmpBmp.Canvas.Font.Assign(Font);
tmpBmp.Canvas.Font.Color:= clBlack;//加个颜色效果稍微好一点。
tmpBmp.Canvas.Brush.Style:=bsClear;另外屏蔽了一些鼠标消息,这样鼠标放上去就不会那么闪了。但就是无法使上面的文字处于选中状态的效果。另外就是无法出现输入光标。