Delphi2005でプログラムを作っています。
UTFコードの文字(ドイツ語)をTEditに表示させたいのですが、文字化けしてしまいます(ウムラウト等)。
なにかいい方法があるでしょうか?
UNICODE対応のDelphi2009以降を使うのは、だめですか?
# 最新の DelphiXE3 体験版がダウンロードできるので、それで試してみるとか・・・
Delphi2005で、ということでしたら、
TMS Unicode Component Pack(英語版)
http://www.componentsource.co.jp/products/tms-unicode-component-pack/index.html
のようなコンポーネントもあるようです。
# 実際、使ったことはないので、“お世話になります”さんが希望されることができるかわかりませんが・・・
igyさん、ありがとうございます。
今はあまりお金がないので、体験版でやってみます。
ところで、Delphi2005のプログラムはそのまま使えるのでしょうか?
(TEditに表示する部分以外は)正常に動いているソフトを修正して使いたいのです。
>ところで、Delphi2005のプログラムはそのまま使えるのでしょうか?
>(TEditに表示する部分以外は)正常に動いているソフトを修正して使いたいのです。
思いつくことを、挙げてみると・・・
・Delphi2005にコンポーネントをインストールして使用しているなら、XE3に対応したものが必要です。
・Delphi2005には標準搭載されていたが、XE3に搭載されなくなったコンポーネントがあれば、
その処理の部分の書き換えか、
(Starter版以外の製品版のXE3には旧バージョンの2009〜XE2もダウンロードして使用できますので、)
Delphi2009〜XE2で搭載されているなら、XE3ではなく、搭載しているほうのDelphiを使用するなど、検討する必要があります。
・UNICODE対応のための修正
DEKOさんの資料
http://ht-deko.minim.ne.jp/tech045.html#tech093
あたりを参照してみてください。
でしょうか。
TMS Unicode Component Packの元になったTNT Unicode Controlsが下記からダウンロード出来るようなので、Delphi2005で行くならこちらを使うのもありかと思います。
http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index
XE3の体験版を使ってみようかと思ったんですが、いろいろと変更するところが多いみたいで、私にはハードルが高いです。
1ヶ月という制限もあります。
TNT Unicode Controlsを使ってみようかと思って検索していたんですが、いまいちよくわからず、調べているうちにRichEditでもいける(Delphi2005でも?)ようなことを書いていたので、RichEditに表示させようとしたのですが、やはり文字化けしました。
RichEditでエンコードを指定する方法でもあるのでしょうか?
表示するのが目的なら TWebBrowser 使っちゃうとか
WebBrowser1.Navigate('D:\中身がUNICODE.txt');
右クリックとかできちゃうけど
けどさん、ありがとうございます。
試してみます。
WebBrowserを使った方法で、右クリックの内容を変更したいなら以下のコードで可能です。
PopupMenu1: TPopupMenu;
を追加したら、右クリックメニューを自由にカスタマイズすることが可能です。
ただし、クリップボードへのコピーを可能にしたいなら以下を参照して下さい
https://www.petitmonte.com/bbs/answers?question_id=4744
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('D:\中身がUNICODE.txt');
Application.OnMessage := HookWndProc;
end;
procedure TForm1.HookWndProc(var Msg: TMsg; var Handled: Boolean);
//var
// Pos: TPoint;
begin
with msg do
begin
if (message = WM_CONTEXTMENU) or (message = WM_RBUTTONUP) then
begin
if GetParent(GetParent(hwnd)) = WebBrowser1.Handle then
begin
// GetCursorPos(Pos);
// PopupMenu1.Popup(Pos.x, Pos.y);
Handled := true;
Exit;
end;
end;
end;
end;
SpTBXLibとか
http://www.silverpointdevelopment.com/
ツイート | ![]() |