HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1214
inaトラックバーにTABフォーカスさせるには、どうしたら良いのでしょうか?2解決


ina

リンク

2008/12/14(Sun) 02:15:11|NO.21552

はじめまして
コモンコントロールのトラックバーを数個使いたいのですが
[TAB]キーでフォーカスを移動できるようにするには、
どのようにすればよいのでしょうか?
以下のようなコードを書いたのですが動作しません。
どなたか、教えて下さい。よろしく、お願いします(泣)


#const global TBM_SETPOS 0x0405 //スライダーの位置を設定 #const global TBM_SETRANGEMIN 0x0407 //スライダー位置の可変範囲の最小値の設定 #const global TBM_SETRANGEMAX 0x0408 //スライダー位置の可変範囲の最大値の設定 max = 100 : min = 0 : posi = 50 repeat 5 winobj "msctls_trackbar32", "No"+cnt, 1, $50000000|$10000, 150, 30 id = objinfo(stat,2) sendmsg id, TBM_SETRANGEMIN, 1, min sendmsg id, TBM_SETRANGEMAX, 1, max sendmsg id, TBM_SETPOS, 1, posi loop

WS_TABSTOP = $10000 ???



この記事に返信する


flory

リンク

2008/12/14(Sun) 04:25:53|NO.21553

とりあえずこんな感じで。

#const global TBM_SETPOS 0x0405 //スライダーの位置を設定 #const global TBM_SETRANGEMIN 0x0407 //スライダー位置の可変範囲の最小値の設定 #const global TBM_SETRANGEMAX 0x0408 //スライダー位置の可変範囲の最大値の設定 onkey gosub *label num = 5 : max = 100 : min = 0 : posi = 50 repeat num winobj "msctls_trackbar32", "No"+cnt, 1, $50000000|$10000, 150, 30 id = objinfo(stat,2) sendmsg id, TBM_SETRANGEMIN, 1, min sendmsg id, TBM_SETRANGEMAX, 1, max sendmsg id, TBM_SETPOS, 1, posi loop stop *label if wparam = 9 { objsel -1 objsel (stat+1)\num } return


まあ、個人的な意見を言わせてもらうと、
「動作しません。教えてください。」
ではなく、
「動作しない、ならばどうすればよいだろう?」
と、まず自分で考えてもらいたいです。
今回の場合なら、「Tabキー押下を検知→現在フォーカスが合っているオブジェクトを得る→次のオブジェクトにフォーカスを合わせる」というような処理でできそうだな、と見当をつけて、実際にプログラムを書く。それだけのことです。


ちなみに、WS_TABSTOPはモードレスダイアログボックスのコントロールに使うもので、HSPで使う機会はほとんどありません。WS_TABSTOPを使えばたしかにTabキーによるフォーカス移動はできるのですが、それはあくまでもモードレスダイアログボックスを考慮したメッセージループを作ればの話で、HSPでは無理っぽいです。



ina

リンク

2008/12/14(Sun) 22:39:12|NO.21564

素早い回答ありがとうございます。
onkey命令で割り込み検知をかけるとは、思いもよりませんでした。
脳みそコチコチです。(涙)

WinAPIをググればググるほど、便利なシロモノなだけに
これだけ(API)あれば、解決できる!…と、思い込んでいました。


>「動作しない、ならばどうすればよいだろう?」
>と、まず自分で考えてもらいたいです。

はい。まさに、その通りです。反省いたします。



ONION software Copyright 1997-2023(c) All rights reserved.