喫茶XRAYトップページ

[スレッド全体
]

[7523] StringGridでIMEをコントロールしたんですが・・・返信 削除
2014/4/22 (火) 11:38:15 taki
列によって数字と文字の入力を切り替えたいと思いました。

http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200604/200604_06040024.html
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00034.html

を参考にしました。

imOpen,imHira,imCloseは正常に動作するのですが、
imCloseの代わりにimDisableを使うとうまく動きません。の報告です。

Windows7 Pro + Microsoft Office IME 2010 SP2
Delphi XE4 Starter

新規作成
フォームにStringGrid1,StringGrid2を配置
オブジェクトインスペクタより
OptionのgoEditing,goAlwaysShowEditor,goTabsをTrueに設定

以下コードです。

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;

type
  _TGrid = class(TCustomGrid);    // 継承のクラス

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    procedure StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;
      var Value: string);
    procedure StringGrid2GetEditText(Sender: TObject; ACol, ARow: Integer;
      var Value: string);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// 継承を使う方法
procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
  with TEdit(_TGrid(Sender).InplaceEditor) do
    case ACol of
     1: ImeMode := imHira;  // Openと同じ
     2: ImeMode := imClose; // imDisableを使うと変になる
     3: ImeMode := imOpen;
     4: ImeMode := imClose;
    end;
end;

// SetImeMode()を使う方法
procedure TForm1.StringGrid2GetEditText(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
  case ACol of
   1: SetImeMode( Handle, imHira  );
   2: SetImeMode( Handle, imClose );  // imDisableを使うと変になる
   3: SetImeMode( Handle, imOpen  );
   4: SetImeMode( Handle, imClose );
  end;
end;

end.

ちなみに、継承を使う方法は理解できていません。マスターすみません。(^^;


[7524] Re:StringGridでIMEをコントロールしたんですが・・・返信 削除
2014/4/22 (火) 11:49:33 taki
すみません。
「imDisableを使うとうまく動きません。」の意味は
その列だけではなく、StringGrid全体でのIMEの動作が変になります。


[7526] Re2:StringGridでIMEをコントロールしたんですが・・・返信 削除
2014/4/23 (水) 10:13:07 snail
▼ takiさん

>imCloseの代わりにimDisableを使うとうまく動きません。の報告です。

とあるので以前の質問の続きでしょうか?
話の前が見えていなせんが

http://mrxray.on.coocan.jp/Delphi/plSamples/083_InplaceEditor.htm

は参考にされているのでしょうか。



[7527] Re3:StringGridでIMEをコントロールしたんですが・・・返信 削除
2014/4/23 (水) 10:38:30 Mr.XRAY
▼ snailさん

> とあるので以前の質問の続きでしょうか?
> 話の前が見えていなせんが


現象の報告ではないかと.
後で調べてみようと思っています.

>http://mrxray.on.coocan.jp/Delphi/plSamples/083_InplaceEditor.htm

この記事もいろいろ書いてあるので,読む人は迷ってしまうでしょうね.
だから「難解」なのか ?


▼ takiさん

>ちなみに、継承を使う方法は理解できていません。マスターすみません。(^^;

「継承」なんて難しいのは使わないでください.なんちゃって (笑)
でも,みんな自然に使っているんですよね.
用語なんて,用語の意味なんて,どうでもいいです.使っているんだかから.
「勝てば官軍,動けば正義」です.ハイ.


[7528] クラスとコンポーネント返信 削除
2014/4/23 (水) 11:17:14 Mr.XRAY
思いついた時に書いておかないと忘れてしまうので.

Delphi では,フォーム等に配置して使用する場合,
コンポーネントと言っているようです.
つまり,IDE のコンポーネントのパレットに表示されるものと言うことになります.

ただ,「このコンポーネントはインストールしないで使用します」
と書いている「コンポーネント(?)」もあります.

コンポーネントは,つまり「クラス」です.
プログラムの世界以外でも「コンポーネント」という言葉は使われています.
ある意味では,単なるクラスも,コンポーネントという言い方をしても,
決しておかしいとは思っていません.

あまり厳密に考えることはないと,個人的には思っています.
「いや,あんたの,その考え方はおかしい」
という方の反論は....  どうしようかな,受け付けようかな?


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82