ページ 11

EditBoxに位置を指定して表示する

Posted: 2008年4月01日(火) 14:34
by 田中 宏
はじめまして
初めてABでプログラミングしています。(Ver.4.24)
プログラムの経験はN88BASICのみです。
kadushi氏や皆様方のコードを参考にRS232Cの通信プログラムを作りました。
受信したデータは19項目有り、それをエディタに、1行に2項目ずつ揃えて表示
したいのですが思うようにいきません。1項目目はスペースを入れて揃えたの
ですが、2項目目は1項目目の文字数により位置がずれてしまいます。
そこで*印の2行を加えてみたのですが何も変わりません。
EditBoxに位置を指定して表示する方法をご教授願えないでしょうか。
よろしくお願いいたします。

 ---前略---

 'エディタ表示
 Sub AddStr(ByVal hWnd As HWND,ByVal hID As Long,ByVal lpStr As String)
    SendMessage(GetDlgItem(hWnd,hID),EM_REPLACESEL,TRUE,lpStr)
 End Sub

 ---中略---

 If lstrcmp(DisN, "M1") = 0 Then                     '1
  AddStr(hMainWnd, EditBox1, " 計 測 値")
  AddStr(hMainWnd, EditBox1, Ex" "+Str$(Val(Data))+" ℃")
 End If
 If lstrcmp(DisN, "M2") = 0 Then                     '2
  AddStr(hMainWnd, EditBox1,Ex"\r")                             '*1
  SendMessage(GetDlgItem(hMainWnd,EditBox1),EM_LINESCROLL,50,0)   '*2
  AddStr(hMainWnd, EditBox1, " 電流検出器入力")
  AddStr(hMainWnd, EditBox1, Ex" "+Str$(Val(Data)))
  AddStr(hMainWnd, EditBox1, Ex"\r\n")
 End If
 If lstrcmp(DisN, "AA") = 0 Then                     '3
  AddStr(hMainWnd, EditBox1, " 上 下 限 警 報")
  If Val(Data) = 0 Then
   AddStr(hMainWnd, EditBox1, " OFF")
   Else
   AddStr(hMainWnd, EditBox1, " ON")
  End If
 End If

 ---後略---

  *1で行頭へ移動し、*2で位置を指定したつもりです。

Re:EditBoxに位置を指定して表示する

Posted: 2008年4月01日(火) 23:04
by M.K
こんばんは、
そちらの目的に沿った返事かどうかわかりませんが...

まず、EditBox自体のフォントが可変ピッチフォント(MS Pゴシック・UIゴシックなど)だと文字によって幅が変化するためキレイに整列できません。「MS ゴシック」などの固定ピッチフォントを使用してみてください。

あと、項目ごとに整列表示する方法として「リストビューコントロール」を検討してみては
いかがでしょうか?

Posted: 2008年4月02日(水) 09:14
by 田中 宏
M.Kさん、返信ありがとうございます。
フォントはMSゴシックです。
リストビューコントロールについて、調べて検討してみます。
結果はあらためてご報告いたします。

リストビューへ表示する

Posted: 2008年4月03日(木) 18:13
by 田中 宏
リストビュー? RADツールの「コントロール」一覧に載っていたのですが使用方法等、
解説が無くどうしたものかと、いろいろ検索しているとabfanというサイトにたどり着き
そこに詳しい解説とコードまで表示されていました。
おかげさまでリストビューに表示することが出来る様になりました。
エディタと比べるとコードも増えかなり扱いにくい感じはありますが、表示位置を容易に
指定できるのが利点です。
ABユーザーの方、みなさん親切な方ばかりだなと痛感しました。
これからもよろしくお願いいたします。ありがとうございました。