全然更新しないブログ
HSPメモ帳
ボタンに画像表示(HSP)
◆一覧リスト:HSP Ver2.61 ブログ関連 ・・・ 人気blogランキング
◆HSPプログラミングメモ
このページはHSP勉強中のメモです
不具合が起こらない様に配慮はしていますが
各ソースの使用は各自の責任においてご利用お願いします
◆HSPプログラミングメモ
- ●ボタンに絵を貼り付ける
- ① 「misc.as」をインクルードする
② ボタンを作成する
③ 「btnimg」命令を使用する
btnimg n1, n2, n3, n4, n5, n6
n1 : イメージを貼りつけるボタンのID(0~63)
n2 : イメージが描画されているウィンドウのID(0~7)
n3 : イメージの位置
n4 : イメージの位置
n5 : イメージの幅
n6 : イメージの高さボタンに画像を貼り付けるサンプル 使用画像ファイル
ファイル名: btntest.JPG
画像サイズ: 200×50#include "llmod.as" // 「btnimg」命令を使用する為 #include "misc.as" //ボタンに貼り付ける画像を、buffer 2 に用意する buffer 2 : picload "btntest.JPG" screen 0,200,100 : title "btnimg TEST" color : boxf 0 , 50 , 200 , 100 objsize 50,50 repeat 4 pos cnt*50,0 : button "",*btnclick btnimg cnt , 2 , cnt*50 , 0 , 50 , 50 loop stop // ボタンを押した時の処理 *btnclick sdim data,64 //statにボタンIDが代入される objsel -1 if stat=0 : data="丸が押されました" if stat=1 : data="三角が押されました" if stat=2 : data="四角が押されました" if stat=3 : data="星が押されました" color : boxf 0 , 50 , 200 , 100 color 255 , 255 , 255 : pos 10 , 64 : mes ""+data stop
実行結果
- ★文字検索ソフト作成記録
- ◆間違いの手直し
- 「*findlist」ルーチン内の if listdata!="" : objprm 4,listdata
if listdata=!"" は必要ありません。
◆変更点
- ボタンに画像を貼り付ける。
- ウィンドウの初期化エリアの変更。
現在ウィンドウのサイズ変更ができません。
今後可能なようにする為の前準備です。
- テキストデータの選択の際、ウィンドウ内で情報表示
することで判りやすくする。
- 現在、テキストファイルを開く際に一度ウィンドウを
作り直しています。作り直さず、mesboxを使用しない
場合はウィンドウの奥に隠します(邪道?)。
- 「*findlist」ルーチン内の if listdata!="" : objprm 4,listdata
- ☆実行画面
- 起動画面
選ボタンから、HSPヘルプ(width)をクリックした時の画面
※取得したテキストを表示しています。
- ☆ソースコード
- 青の部分は追加したコード、赤の部分は変更したコードです。
ソフト名 未定 HSP Ver 2.61 内容 任意のテキストを検索 btnimg.JPG
(60×20)ソース ///////////////////////////////////////////////////////// // インクルード #include "llmod.as" //「btnimg」使用の為 #include "misc.as" ///////////////////////////////////////////////////////// // ボタンイメージ読込 buffer 2 : picload "btnimg.JPG" ///////////////////////////////////////////////////////// // メインウィンドウの作成 //dispx:ディスプレイ横幅(システム変数) //dispy:ディスプレイ縦幅(システム変数) screen 0,dispx,dispy width 160,340 title "テスト" objsize 20,20 pos 0,0 : button "開",*fileopen //ID:0 btnimg 0,2,0,0,20,20 pos 20,0 : button "選",*textselect //ID:1 btnimg 1,2,20,0,20,20 sdim ftext,64 : pos 40,0 : input ftext,100,20,64 //ID:2 pos 140,0 : button "調",*find //ID:3 btnimg 3,2,40,0,20,20 //dim listno listno=-1 : listno2=-1 sdim listdata,1024 objsize 160,320 pos 0,20 : listbox listno,0,listdata //ID:4 sdim str1,1024 sdim str2,1024 sdim editdata,65536 sdim editdata2,65536 //mesbox を作成するが見えないようにする pos -10,-10 : mesbox editdata,0,0,5,65536 //mesboxの状態変数 mbflag=0 ///////////////////////////////////////////////////////// // メインループ *main // リストボックス処理 if listno2!=listno{ notesel listdata : noteget str1,listno getstr str1,str1,1,']':int str1 : str1-- notesel editdata : noteget str2,str1 instr tmp.0,str2,ftext,0 strlen tmp.1,ftext prm=hedit,0xBB,str1,0 dllproc "SendMessageA",prm,4,D_USER tmp.0+=dllret : tmp.1+=tmp.0 prm=hedit,0xB1,tmp.0,tmp.1 dllproc "SendMessageA",prm,4,D_USER prm=hedit,0xB7,0,0 dllproc "SendMessageA",prm,4,D_USER prm=hedit,0xCE,0,0 dllproc "SendMessageA",prm,4,D_USER str1=(str1-dllret)/2 prm=hedit,0xB6,0,str1 dllproc "SendMessageA",prm,4,D_USER str str1 listno2=listno } wait 10 goto *main ///////////////////////////////////////////////////////// // 「開」のボタンを押した時 *fileopen //ファイルを開くダイアログの表示 dialog "*",16,"" if stat=1{ exist refstr if strsize < 0:goto *main if strsize > 65536:goto *main /* screen 0,460,340 title "テスト ["+refstr+"]" objsize 20,20 pos 0,0 : button "開",*fileopen //0 pos 20,0 : button "選",*textselect //1 sdim ftext,64 : pos 40,0 : input ftext,100,20,64 //2 pos 140,0 : button "調",*find //3 dim listno sdim listdata,1024 objsize 160,320 pos 0,20 : listbox listno,100,listdata //4 pos 160,0 //sdim editdata,65536 mesbox editdata,300,340,5,65536 //5 */ _hspobjhandle 5:hedit=stat //mesboxを移動 if mbflag=0{ width winx+200 prm=hedit,160,0,200,winy,1 dllproc "MoveWindow",prm,6,D_USER mbflag=1 } notesel editdata noteload refstr objprm 5,editdata } gosub *findlist goto *main ///////////////////////////////////////////////////////// // 「選」のボタンを押した時 *textselect //dialog "OKを押した後、テキストをクリックして下さい",0,"確認" //screen 0 を隠す gsel 0,-1 //screen 3 にマウス下の情報を表示 screen 3,400,225 : title "テキストを左クリックして下さい" gsel 3,2 //cls:ウィンドウのオブジェクトを消去して色を塗りつぶす cls 1 //現在選択しているテキストを取得 if hedit!=0{ prm=hedit,0x000D,65536 getptr prm.3,editdata2 dllproc "SendMessageA",prm,4,D_USER } pos 2,3 : mes "取得テキスト:" pos 0,25 : mesbox editdata2,400,200 objsize 60,25 pos 260,0 : button "決定",*wnd3ok pos 330,0 : button "取消",*wnd3cancel //bmscrにウィンドウ情報が入ります mref bmscr,67 //repeat ※breakで抜けれない為 *wnd3loop stick st,0,0 //フォアグラウンドウィンドウハンドル取得 //screen 3がアクティブの時は何もしない prm=0 : dllproc "GetForegroundWindow",prm,0,D_USER if st=256 &(bmscr.13!=dllret){ ginfo 0 prm=prmx,prmy dllproc "WindowFromPoint",prm,2,D_USER hedit=dllret if dllret!=0{ //sdim editdata,65536 prm=hedit,0x000D,65536 getptr prm.3,editdata2 dllproc "SendMessageA",prm,4,D_USER objprm 0,editdata2 //gosub *findlist //break } } wait 10 goto *wnd3loop //loop //goto *main *wnd3ok //mbflagが1の時はmesboxを隠す if mbflag=1{ gsel 0 width winx-200 _hspobjhandle 5 prm=stat,-10,-10,0,0,1 dllproc "MoveWindow",prm,6,D_USER mbflag=0 } editdata=editdata2 gosub *findlist *wnd3cancel gsel 3,-1 gsel 0,1 goto *main // 「調」ボタンを押した時 *find gosub *findlist goto *main //テキスト検索+リストアップ *findlist notesel editdata : notemax tmp listdata="" repeat tmp notesel editdata : noteget str1,cnt instr tmp,str1,ftext,0 if tmp!=-1{ getstr str1,str1,tmp,'' tmp=cnt+1 notesel listdata : noteadd "["+tmp+"] "+str1,-1 } loop /* if listdata!="" : */objprm 4,listdata return
このページはHSP勉強中のメモです
不具合が起こらない様に配慮はしていますが
各ソースの使用は各自の責任においてご利用お願いします
コメント ( 0 ) | Trackback ( 0 )
« 前の記事へ | ウィンドウサ... » |
コメント |
コメントはありません。 |
![]() |
コメントを投稿する |