如何在界面上显示法语(如:a^,i^之类,^在字母之上)(100分)

  • 主题发起人 主题发起人 innocent
  • 开始时间 开始时间
I

innocent

Unregistered / Unconfirmed
GUEST, unregistred user!
本人想做一个与法语相关的程序,因此需在界面上显示和输入法语,输入能够实现,
但想在某一控件上(比如Edit or Memo)显示法语却无法实现,另外似乎数据库中
也无法输入法语。请教各位高手有何解决办法?
 
能啊,我在WORD里面输入以后,将他赋给label的caption,或者edit控件的text都能正确的显示
啊,我觉得你只要把那些符号当作字符串来处理就行了.
 
to bswilson:
不行啊,我在word里输入法语后,拷贝到delphi Edit里的都是乱码。
 
innocent: 你的专业是法语?哪个学校的?
像edit,memo之类的控件都只接受ansistring型字符,所以不能显示宽字符。
你可以改源码,或者干脆自己做一个(我个人倾向用后者)。下面来看看具体做法:
1.新建一工程,再增加一个unit2;
2. 在unit StdCtrls; 找到TCustomEdit,然后把它的声明和实现全部拷贝到unit2中。
3.好了,开始修改吧。找到
TCustomEdit = class(TWinControl)
private
//...
public
//...
property SelText: string read GetSelText write SetSelText; //这里就是要改的关键
因为delphi默认string代表ansistring,所以为了显示法语等宽字符我们要把string改成widestring。
首先把上面一句改为:
property SelText: wideString read GetSelText write SetSelText;
然后在GetSelText 下按ctrl+左键,跟踪到
//...
function GetSelText: string; virtual;

把上一句改为function GetSelText: wideString ; virtual;
接下来,不用多说了吧,把SetSelText也改了,注意声明和实现出都要改。

好了,可以显示éé了。
 
to savenight:
Thanks very very much.
我会试着改改看,希望能有用。谢谢你能如此详细的解答。北外。
 
不客气。:)
 
首先声明,我是菜鸟。我按savenight的方法做了,甚至还改了stdctrls,但还是无法实现
显示法语特殊字符,“接下来,不用多说了吧”,还是说说吧,也许问题就出在这里。其
实我想实现的是在数据库中输入法语后,在delphi中调用它并显示其内容,因此问题有两
个:
1。如何在数据库中输入法语特殊字符
2。如果在delphi中显示这些特殊字符
如果谁能解决此问题,我愿意奉送我的全部银子。
 
留下email,我把例子发给你。
 
我的email:zjf2@yahoo.com.cn
 
email也发,请查收。
 
to savenight
Merci (Thanks in french).

你用的是不是delphi6啊,无法编译。按你的思路在delphi3里改了之后终于明白了
你的意思,需要说明的是:
1。法语不是等宽字符,绝大部分与英语一样,只有少部分符号不一样。
2。你要显示的本身已在设计阶段输进去了,而法语里的那些‘少部分符号‘在设计
阶段是输不进去的,比如:a^,i^,u^,e..等(^和..都在字母之上)。
3。我是在Excel里输入法语的,因为在dbf,db,dbisam的dat里都输不进去。现在通过
delphi将Excel文件倒入数据库后特殊字符显示的都是乱码,即使直接倒入Edit里也
是乱码。
欢迎继续讨论。
 
纠正一下我的说法:法语字符应该是不等宽字符,而不是宽字符。
确实我考虑的太简单了,对于你的问题需要改tcontrol里有关响应输入的事件中的类型,因为
delphi默认string是ansistring,所以需要把所有涉及到的类型改为widestring,工作量有些大。
不好意思,开始说的有些草率了。[:D]
 
to savenight:
我昨天试了一下richedit,将Excel中的法语数据拷入clipboard,然后在copy到richedit
中,显示的法语字符非常完美,但奇怪的是如果直接从Excel中读取到RichEdit时,
Richedit却拒绝添加含有法语字符的数据,这两种操作有何本质上的区别?
 
你是用RichEdit1.Lines.Add()方法吧? 应该用RichEdit1.Text,看下面的方法。
不过像 ç 的字符即使是delphi编辑器也没办法输入。

var
str: widestring;

for i := 1 to excelApp.WorkSheets[1].UsedRange.Rows.count do
for j := 1 to excelApp.WorkSheets[1].UsedRange.Columns.count do
str := str + wideString(excelApp.cells[i, j]);
RichEdit1.Text := str;
 
这个应该是FontCharSet的问题吧!
 
确实我用的是add方法,用.text确实能显示部分特殊字符,但正如savenight所说,ç 及
某些其他字符无法输入且无法显示,但是clipboard却能实现。我试过将clipboard中的
内容付给paste给edit控件,显示正确,然后做richedit1.lines.add(edit1.text)或
richedit1.text:=edit1.text,甚至做过如下,也显示的是乱码:
var j:widestring;
j:=widestring(edit1.text);
richedit1.lines.add(j);
//richedit1.text:=j;
=====================
为什么clipboard能实现?如果明白其中的道理,我想应该能从中受到某些启发吧。
 
ç 是可以直接输入richedit的,我是说目前还无法将excel中的ç 用程序导入richedit(除了用clipboard)。
 
你都说目前还无法将excel中的ç 用程序导入richedit(除了用clipboard),天!如此
说来我只有放弃了.......
 
innocent:我是菜鸟,水平有限,你可以找找高手来帮你啦。[:D][:D]
 
你要是菜鸟,我只有哭的份了,高手都不理我,呜呜,收队了。
谢谢你的关注。Merci de votre attention.
 
后退
顶部