Tips エディタのテキストを揃える

 エディタ部品のテキストはふつう左揃えで表示されます。これを中央揃えにしたり右揃えにしたい場合は、APIを使います。

'***** サンプル *****
'定数設定
GWL_STYLE=-16
ES_LEFT=$0
ES_CENTER=$1
ES_RIGHT=$2
'部品作成
エディタAとはエディタ
エディタAのテキストは「なでしこ」
ボタンBとはボタン
ボタンBについて
  テキストは「左」。ポケットはES_LEFT
  クリックした時は~書式変更
ボタンCとはボタン
ボタンCについて
  テキストは「中」。ポケットはES_CENTER
  クリックした時は~書式変更
ボタンDとはボタン
ボタンDについて
  テキストは「右」。ポケットはES_RIGHT
  クリックした時は~書式変更
●書式変更
  HndAはエディタAのハンドル。 'エディタ部品のウィンドウハンドル取得
  newStyle=イベント部品ポケット。 'クリックしたボタンのポケットの値を取得
  Styleとは整数。
  Style=GetWindowLong(HndA,GWL_STYLE) '現在の書式を取得
  Style=AND(Style,$FFFFFFFC)+newStyle '書式部分をクリア($FFFFFFFC)してから変更
  SetWindowLong(HndA,GWL_STYLE,Style) '新たな書式を設定
  textA=エディタA。エディタAは「」。エディタAはtextA。 '書き換えないと反映しない
'API宣言
●GetWindowLong(hWnd,nIndex) =DLL("user32.dll",
"LONG GetWindowLongA(
HWND hWnd, // ウィンドウハンドル
int nIndex // 取得するデータの指定
)")
●SetWindowLong(hWnd,nIndex,dwNewLong) =DLL("user32.dll",
"LONG SetWindowLongA(
HWND hWnd, // ウィンドウハンドル
int nIndex, // 変更するデータの指定
LONG dwNewLong // 新しい値
)")
'***** ここまで *****

 文字位置を設定するには、エディタ部品のGWL_STYLEに、ES_LEFT(左寄せ)、ES_CENTER(中央揃え)、ES_RIGHT(右寄せ)を設定します。
 GetWindowLongでエディタ部品の現在の状態を取得し、Styleに代入します。
 GWL_STYLEの最後の2ビットを書き換えることにより、変更できるのですが、変更前の状態がわからないために、一度クリアしてから値(newStyle)を加えています。
 SetWindowLongで変更したStyleをGWL_STYLEに設定します。

 上記プログラムの「定数設定」部分と「API宣言」部分は、なでしこライブラリの「windows.nako」に定義されていますので、次のように取り込むことで、わざわざ定義しなくても済みます。

'***** サンプル *****
!「windows.nako」を取り込む。
'部品作成
エディタAとはエディタ
エディタAのテキストは「なでしこ」
ボタンBとはボタン
ボタンBについて
  テキストは「左」。ポケットはES_LEFT
  クリックした時は~書式変更
ボタンCとはボタン
ボタンCについて
  テキストは「中」。ポケットはES_CENTER
  クリックした時は~書式変更
ボタンDとはボタン
ボタンDについて
  テキストは「右」。ポケットはES_RIGHT
  クリックした時は~書式変更
●書式変更
  HndAはエディタAのハンドル。 'エディタ部品のウィンドウハンドル取得
  newStyle=イベント部品ポケット。 'クリックしたボタンのポケットの値を取得
  Styleとは整数。
  Style=GetWindowLong(HndA,GWL_STYLE) '現在の書式を取得
  Style=AND(Style,$FFFFFFFC)+newStyle '書式部分をクリア($FFFFFFFC)してから変更
  SetWindowLong(HndA,GWL_STYLE,Style) '新たな書式を設定
  textA=エディタA。エディタAは「」。エディタAはtextA。 '書き換えないと反映しない
'***** ここまで *****

最終更新:2008年06月26日 17:35
添付ファイル