ab.com コミュニティ
https://www.activebasic.com/forum/

ボタンのクリック
https://www.activebasic.com/forum/viewtopic.php?t=635
ページ 12

作成者:  雷電 [ 2006年1月11日(水) 17:08 ]
記事の件名:  ボタンのクリック

ボタンをクリックすると、エディットボックスに指定した文字を入力するのが難しくて、悩んでます。

どうやったらうまくできるか教えてください。

作成者:  7 [ 2006年1月11日(水) 20:31 ]
記事の件名: 

RADツールでコマンドボタンを貼り付けたらそれを右クリックし、「イベントコード」、「ボタンがクリックされた時」を選択しコードを書きます。

ボタンをクリックした時に、エディットボックスに文字列を設定したい場合、SetWindowText()関数かSetDlgItemText()関数を使って文字列を設定します。
コード:
SetWindowText(GetDlgItem(hMainWnd,EditBox1),"Bonjour")
SetDlgItemText(hMainWnd,EditBox1,"Bonjour")


エディットボックスに設定されている文字列に、新たな文字を追加する場合は、SendMessage()関数を使います。

コード:
Dim hEdit As HWND
	hEdit=GetDlgItem(hMainWnd,EditBox1)
	SendMessage(hEdit,EM_SETSEL,GetWindowTextLength(hEdit),-1)
	SendMessage(hEdit,EM_REPLACESEL,TRUE,"ADD")
	SetFocus(hEdit)

作成者:  雷電 [ 2006年1月12日(木) 20:39 ]
記事の件名:  ちょこっと

ついでに、場合の改行は、どういうコードですか?

教えてください。

作成者:  雷電 [ 2006年1月12日(木) 20:47 ]
記事の件名:  すいません

書き直します。↑の文。

この場合の改行は、どういうコードですか?

教えてください。

また、このときにボタンを何回クリックしても、同じところにできてしまうんす。どういう意味かというと、ボタンを1回目クリックしたら、ちゃんとエディットボックスに出力されるのですが、2回目に、Enterキーをおして、クリックすると、もとの出力された場所に戻ってしまうんです。

どうしてでしょうか、↑のこと、教えていただけたら幸いです。[/hide]

作成者:  7 [ 2006年1月12日(木) 21:42 ]
記事の件名:  Re: すいません

> この場合の改行は、どういうコードですか?
AB付属のヘルプ、Chr$()関数とEx表記による文字列を読めば分かると思います。

> また、このときにボタンを何回クリックしても、同じところにできてしまうんす。
SetWindowText()関数は、文字列を設定するので既に入力されている文字列は無くなります。
どういったことがしたいのかよく分からないので解決するか分かりませんが、文字列を設定するのではなく、追加したら良いのではないのでしょうか。

エディットボックスの内容が消されることなく、最後尾に文字列が追加されます。
コード:
Sub AddEditBoxText(ByVal hDlg As HWND,ByVal nIDDlgItem As Long,ByVal lpString As BytePtr)
Dim hEdit As HWND
	hEdit=GetDlgItem(hDlg,nIDDlgItem)
	SendMessage(hEdit,EM_SETSEL,GetWindowTextLength(hEdit),-1)
	SendMessage(hEdit,EM_REPLACESEL,TRUE,lpString As LPARAM)
	SetFocus(hEdit)
End Sub

Sub MainWnd_CommandButton1_Click()
	AddEditBoxText(hMainWnd,EditBox1,"追加する文字")
End Sub

作成者:  雷電 [ 2006年1月13日(金) 21:33 ]
記事の件名:  それでも

すいません。
ほんと、AB初心者なんでわかりません・・・・とほほ・・・・

すいませんけど、教えてください。
Chr$()関数見てても、よく仕組みがわからないんで、。。。Exも・・・

お手間かけますが、よろしくお願いします。・・・

それと、もっと、AB勉強します・・・。<(_ _)>

作成者:  7 [ 2006年1月13日(金) 22:56 ]
記事の件名:  Re: それでも

> Chr$()関数見てても、よく仕組みがわからないんで、。。。Exも・・・
Chr$()関数は指定された文字コードを文字に変換してくれる関数です。
Ex表記は、普通文字列はダブルコーテーション(")で囲みますが、Ex"文字列"とすることによってエスケープシーケンスで文字列を表現することができます。

メッセージボックスに「A(改行)B(改行)C」と表示させる。
コード:
MessageBox(hMainWnd,Chr$(65)+Chr$(13)+Chr$(10)+Chr$(66)+Chr$(13)+Chr$(10)+Chr$(67),"Chr$()関数",MB_OK)
MessageBox(hMainWnd,Ex"A\r\nB\r\nC","Ex表記による文字列",MB_OK)
ということで改行は、Chr$()関数の場合、Chr$(13)+Chr$(10)、Ex文字列は、Ex"\r\n"、と表現します。

お勉強頑張ってください(^_^)

作成者:  雷電 [ 2006年1月14日(土) 15:19 ]
記事の件名:  Thanks

ありがとうございました。
ちゃんといい具合に作動しました。

また、AB勉強して、もっといいプログラムを作っていきます。

応援よろしく(^^♪

by RAIDEN

↑雷電って言うのは、戦闘機の名前です。

作成者:  雷電 [ 2006年1月14日(土) 18:25 ]
記事の件名:  それはそうと

いま、APMのファイルを作っています。
APMは、ゲームのファイルなんですが、ためしにコードを書いてみます。
コード:
[Mission]
Name=~爆撃被害~日本を守れ!!
Author=雷電
Rank=8
PlaneSelectable=0
SubSelectable=0
DfPlane=MEIRYU
DfSub=Bomb
Sky=4
Map=海陸砂陸海
Reward=10000
Capt_Win=相手の爆撃機を落とす
Capt_Lose=友軍爆撃機の損傷
Message=相手はソ連軍。日本に対してかなりの大群を送ってきました。#それを阻止するために頑張ってください。
Type=3
Atlas_Sort=2
Atlas_X=155
Atlas_Y=55
WinAtLimit=0
Limit_Time=0
Limit_Comment=
ReversePrior=0
BGM=0

[PlayerUnit]
Block=2
Sector=1
Factor=InitOnBase

[Camp1]
WinCond=NoEnemyTank,NoEnemyHead,NoEnemyBomber
Escape=HTF,NoL,NoR
Wave1_comment=第一部隊出動!敵発見しだい打ち落とせ。
Wave2_comment=増援部隊を送る。直ちに敵陣地を攻撃せよ。
Wave2_time=40
Wave3_comment=第三部隊、特攻隊出撃せよ。
Wave3_time=90
WinComment=よし、直ちに空母に帰還せよ。
SplashEnemyPer=90
SplashTargetPer=90
EscFriendTargetPer=0

[Camp2]
WinCond=NoEnemyTank,NoEnemyHead,NoEnemyBomber
Escape=HTF,NoL,NoR
Wave2_comment=敵の第二部隊を確認。直ちに出撃隊を送る。
Wave2_time=30
Wave3_comment=敵の第三部隊確認。特攻隊を出撃させる。
Wave3_time=80
WinComment=空母がなくなった。相手の軍に特攻せよ。
SplashEnemyPer=90
SplashTargetPer=90
EscFriendTargetPer=0

[UnitSet1]
SetName=TaskForce1
Num=1
camp=1
wave=1
Level=5
Block=1
Sector=1
Factor=GreatGeneral

[UnitSet2]
SetName=TaskForce1
Num=1
camp=2
wave=1
Level=5
Block=5
Sector=12
Factor=GreatGeneral

[UnitSet3]
SetName=ArmyBase2
Num=1
camp=1
wave=1
Level=5
Block=2
Sector=9
Factor=

[UnitSet4]
SetName=ArmyBase2
Num=1
camp=2
wave=1
Level=5
Block=4
Sector=3
Factor=

[UnitSet5]
UnitName=SINDEN
SetName=
Num=7
camp=1
wave=1
Level=5
Block=1
Sector=1
Factor=InitOnBase,TouchDown

[UnitSet6]
UnitName=LA7
SetName=
Num=10
camp=2
wave=1
Level=5
Block=5
Sector=12
Factor=InitOnBase,TouchDown

[UnitSet7]
UnitName=RENZAN
SetName=
Num=7
camp=1
wave=1
Level=5
Block=1
Sector=1
Factor=InitOnBase,TouchDown

[UnitSet8]
UnitName=Tu2
SetName=
Num=10
camp=2
wave=1
Level=5
Block=5
Sector=12
Factor=InitOnBase,TouchDown

[UnitSet9]
UnitName=LRC
SetName=
Num=10
camp=1
wave=1
Level=5
Block=2
Sector=9
Factor=

[UnitSet10]
UnitName=LRC
SetName=
Num=10
camp=2
wave=1
Level=5
Block=4
Sector=3
Factor=

[UnitSet11]
UnitName=JPinf
SetName=
Num=30
camp=1
wave=1
Level=5
Block=2
Sector=11
Factor=GreatGeneral

[UnitSet12]
UnitName=SVinf
SetName=
Num=30
camp=2
wave=1
Level=5
Block=4
Sector=1
Factor=GreatGeneral

[UnitSet13]
UnitName=HONI
SetName=
Num=7
camp=1
wave=1
Level=5
Block=2
Sector=10
Factor=GreatGeneral

[UnitSet14]
UnitName=BT7
SetName=
Num=7
camp=2
wave=1
Level=5
Block=4
Sector=2
Factor=GreatGeneral

[UnitSet15]
UnitName=KI102
SetName=
Num=7
camp=1
wave=2
Level=5
Block=0
Sector=10
Factor=TouchDown

[UnitSet16]
UnitName=IL10
SetName=
Num=7
camp=2
wave=2
Level=5
Block=6
Sector=2
Factor=TouchDown

[UnitSet17]
UnitName=SIDEN21
SetName=
Num=7
camp=1
wave=3
Level=5
Block=0
Sector=10
Factor=TouchDown

[UnitSet18]
UnitName=JINPU
SetName=
Num=7
camp=1
wave=3
Level=5
Block=0
Sector=10
Factor=TouchDown

[UnitSet19]
UnitName=YAK9U
SetName=
Num=10
camp=2
wave=3
Level=5
Block=6
Sector=2
Factor=TouchDown

[UnitSet20]
UnitName=YAK9B
SetName=
Num=7
camp=2
wave=3
Level=5
Block=6
Sector=2
Factor=TouchDown

[UnitSet23]
UnitName=RENZAN
SetName=
Num=5
camp=1
wave=3
Level=5
Block=0
Sector=10
Factor=TouchDown

[UnitSet24]
UnitName=IL4
SetName=
Num=5
camp=2
wave=3
Level=5
Block=6
Sector=2
Factor=TouchDown

[UnitSet25]
UnitName=TroopShip
SetName=
Num=2
camp=1
wave=1
Level=5
Block=1
Sector=1
BorneBlock=3
BorneSector=5
Factor=GreatGeneral

[UnitSet26]
UnitName=TroopShip
SetName=
Num=2
camp=2
wave=1
Level=5
Block=5
Sector=12
BorneBlock=3
BorneSector=5
Factor=GreatGeneral

[UnitSet27]
UnitName=JPinf
SetName=
Num=7
camp=1
wave=1
Level=5
Block=3
Sector=5
Factor=Embark,GreatGeneral

[UnitSet28]
UnitName=SVinf
SetName=
Num=7
camp=2
wave=1
Level=5
Block=3
Sector=5
Factor=Embark,GreatGeneral
というものなんですが、これをプログラムに利用したいと思います。
それは、このコード内にある、UnitSet(数字)を変数で扱おうと思っています。

しかし、まだ、変数を利用したことがありません。
変数を、入力するのはどうやればいいですか?

ちなみに、このゲームの名前はTWB(The Wing Bluff)といいます。
このゲームに関しては、http://primulasoft.cool.ne.jp/
を見てください。

作成者:  7 [ 2006年1月14日(土) 20:01 ]
記事の件名:  Re: それはそうと

> というものなんですが、これをプログラムに利用したいと思います。
えーと、そのプログラムを出力するプログラムを、作っているんでしょうか?
やりたいことを分かりやすく書いてくれるとレスが返しやすいです。

> それは、このコード内にある、UnitSet(数字)を変数で扱おうと思っています。
>
> しかし、まだ、変数を利用したことがありません。
> 変数を、入力するのはどうやればいいですか?
AB付属のヘルプで「変数」と検索してみましたか?
変数はDimステートメントで宣言してあげた識別子が使用可能になります。 "UnitSet(数字)"という文字列をエディットボックスに出力したいのなら、下のようになります。 実行してみると、
[UnitSet1]
[UnitSet2]
.
.
.
[UnitSet28]
となります。

長いコードを書く場合、「hide」「code」「/code」「/hide」、とすると良い感じになります。

作成者:  雷電 [ 2006年1月14日(土) 20:21 ]
記事の件名:  ...

入力してやってみた。
やばい。バグで、危なくなった、。。。

[UnitSet1]
[UnitSet2]
.
.
.
[UnitSet28]

となるのはいいんだけど、1回目押すと

[UnitSet1]
.
.
.
.

となって、2回目に押すと

[UnitSet2]
.
.
.
.
.

となっていくような、コードはありませんか?
あれば幸いです。
これは、あるプログラムを参考に作っているものです。

作成者:  雷電 [ 2006年1月14日(土) 20:25 ]
記事の件名:  追記

追記します。
こうすると、前に記入していた文字が消えてしまうんです。
初期化と入っているので、消えるのは当たり前ですが、、、

参考にしているプログラム
http://www.geocities.jp/niikata4747/twb/AppendMaster/

です。

作成者:  7 [ 2006年1月14日(土) 20:42 ]
記事の件名:  Re: ...

> 入力してやってみた。
> やばい。バグで、危なくなった、。。。
どんなバグか気になりますね...。

> となるのはいいんだけど、1回目押すと
> となって、2回目に押すと
> となっていくような、コードはありませんか?
押す度に数値が増えていくようにしたいのであれば、下のようになります。 エディットボックスが初期化されて困るなら初期化の部分を飛ばして下さい。

> これは、あるプログラムを参考に作っているものです。
自分も昔、こういった入力支援プログラムを作ったことがあります。

作成者:  雷電 [ 2006年1月14日(土) 21:40 ]
記事の件名:  できました

プログラム完成です

AppendMIssionEditor Ver1.00 完成

やっと。
1.20になったら、ツリービューも入れよかなーーー。

そのときもよろしくお願いします。
というより今から教えてもらいたいんですけどね。

作成者:  7 [ 2006年1月14日(土) 22:04 ]
記事の件名:  Re: できました

> 1.20になったら、ツリービューも入れよかなーーー。
> というより今から教えてもらいたいんですけどね。
構いませんが、ツリービューに関してはusher@@さんのサイトが参考になります。
ここの、「ActiveBasicFan」「Control Windows」「11.ツリービューの使い方」を読んだ上で分からないことが有ったら質問するのが賢いと思います。
当たり前ですが、その時は新しくトピックを作って下さいね。

ページ 12 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/