VB.NET質問スレ (Part12 ..
[2ch|▼Menu]
232:デフォルトの名無しさん
05/08/16 09:03:51
>>224
Enterイベントだとタブでの移動では全選択されるようなのですが、
マウスでクリックした場合は全選択されないですよね?
Clickイベントで実装するとテキストボックス内で他の場所を
クリックしたときにも全選択されてしまうし。



233:デフォルトの名無しさん
05/08/16 10:36:43
>232
いや、だからMouseDown

>テキストボックス内で他の場所
これってどういう意味ですか?

234:デフォルトの名無しさん
05/08/16 11:20:26
>>232
>Enterイベントだとタブでの移動では全選択されるようなのですが、
>マウスでクリックした場合は全選択されないですよね?
いや、実際は一旦全選択されているはずだけれどもね。
恐らく一旦全選択された後、解除されてしまうんだよね。
単にクリックしたはずが、クリックしたついでに微妙にドラッグになってしまっているために。

>>233
だいたい話の文脈でわかるでしょ?
そうでないならこの話題にのっかる資格はないと思うけど。
フォーカスが来たとき以外も全選択されてしまうということでしょう。

235:デフォルトの名無しさん
05/08/16 11:57:37
>234

>恐らく一旦全選択された後、解除されてしまうんだよね。
これはあってる。

>単にクリックしたはずが、クリックしたついでに微妙にドラッグになってしまっているために。
これはちがう。単なるクリックでも全選択は解除される。
イベントハンドラの発生順の問題。
もし微妙にドラッグしちゃった時でも全選択させたいならMouseUp。

フォーカスが元々ある状態の場合は全選択したくないということであれば、
フラグでEnter経由かどうか判断するのがいいかと思う。

あと、いちいち絡むなよ。


236:デフォルトの名無しさん
05/08/16 12:07:32
あー、ごめ。単にEnter経由で判断だけだと、
タブ移動後にクリックした時にも全選択になっちゃうわ。
なんかうまい方法ないかなぁ。


237:デフォルトの名無しさん
05/08/16 12:12:18
Private mouseEnter As Boolean = False
Private Sub TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Enter
Me.SelectAll()
If Me.MouseButtons <> MouseButtons.None Then
mouseEnter = True
End If
End Sub
Private Sub TextBox_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
MyBase.SelectAll()
mouseEnter = False
End Sub


238:235-237
05/08/16 12:13:56
マウスクリックでのEnterかどうかを判断するようにしてみた。


239:デフォルトの名無しさん
05/08/16 12:14:22
>あと、いちいち絡むなよ。
馬鹿じゃないの。
「何も分かってないならだまってろ」
それを君に遠まわしに言ってるのに。。

240:デフォルトの名無しさん
05/08/16 16:31:55
なんだもっと煽り合いになるかと思ったのに過疎っちまいやがったつまらん

241:最凶VB厨房
05/08/16 17:02:40
次はもうちょっとうまいこと釣ってくれよ。

242:デフォルトの名無しさん
05/08/17 22:21:50
>>all
色々ありがとうございます。

MouseDownで実装してみましたが、これもClickと
同様、テキストボックスのテキストの一部だけを選択
することができなくなるという問題がありました。

>>237 オリジナルのテキストボックスを作るのかな?
面倒だから、そこまでは勘弁して欲しいな・・・。
VB.NETの継承とかコントロールの作り方はまだよく
分からないので。



243:デフォルトの名無しさん
05/08/17 22:34:07
>>242
ユーザーコントロール作るの意外と簡単だよ。
前にも書いたけど、例えばここで解説されてる
URLリンク(www12.plala.or.jp)

まあ実際には、ここの方法を応用してクラスライブラリ化した方が使いやすいと思う。

ユーザーコントロール作らないとしても、Tagにフラグ(mouseEnter)を食わせれば
ソースを必要以上に汚さずに>>237のやり方が使えると思う。

244:デフォルトの名無しさん
05/08/17 23:00:54
会社で作った.netのソリューションファイルを家に持ってきて開こうとしたら開けません。
家のは2002で会社のは2003なんですけど、全く互換性無いんですか?

245:デフォルトの名無しさん
05/08/17 23:03:31
2002のを2003のにするのはできるけど逆は無理。
一度2002のから2003のに変換したら逆変換は不可能。

246:237
05/08/18 00:20:27
>242
243に同意。テキストボックスが複数あるなら(というかあるだろうし)
絶対にユーザーコントロール作ったほうがいいと思います。
おんなじロジックを全てのテキストボックスに組み込むなんて
ありえないっすよ。

あと、237のですが、mouseEnterがイベントハンドラの名前と
かぶってます。ちゃんと見直してからうpしろよ俺。
とりあえず、他の名前にしてください。


247:デフォルトの名無しさん
05/08/18 17:13:45
VB.NETというよりAxWebBrowserの質問になるんですけど、
AxWebBrowserで表示されているPageからzipファイル等がResponse.Redirectされた場合、
ダウンロードが開始されるんですけど、そのダウンロードされているファイルのURLは取れますか?


248:デフォルトの名無しさん
05/08/18 18:12:00
普通にBeforeNavigate2とかで取れるだろ

249:247
05/08/18 21:15:24
実際に画面表示しないと取れないんですよ・・・。
zipとかのファイルであった場合、ダウンロードされるだけで画面表示されないので、
URLが変更されないみたい・・・。

250:デフォルトの名無しさん
05/08/18 21:27:33
変更?
AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2EventにuRLプロパティが存在するが?

251:247
05/08/18 22:25:54
確かに存在するのですが、ダウンロードされるファイルのURLがuRLプロパティには入っていないんです。
nRLプロパティには現在表示しているURLが入っています・・・。

252:247
05/08/18 22:26:51
ひょっとして、Response.Redirectがだめなんですかね・・・?

253:デフォルトの名無しさん
05/08/19 00:05:39
リダイレクトが発生したときのリダイレクト先のURLはNavigateComplete2が一番早く取得できるみたいだね。
リダイレクトでダウンロードが発生するところを知らないから試せないが。
で、これがzipとかの場合AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventのuRLプロパティが正しく指さないってこと?
リダイレクトでhtml、直接zipはどっちも正しく指すんだけど。
//ん〜、FileDownloadが発生しない……

254:デフォルトの名無しさん
05/08/19 06:54:28
VB.NETかVB6でできるだけ多くの環境で動くネットワークプログラムを作りたいんすけど
その場合VB6を選択すべきですか?
.NET FrameworkってXPでもデフォルトでインストールされてないし。

255:247
05/08/19 09:21:50
AxWebBrowser.Navigate2でzipファイルを指定するとNavigateComplete2.uRLで確かにzipファイルのURLが取得出来るんですが、
webForm1.aspxをNavigate2した後に、aspxのButton_ClickでzipファイルをResponse.Redirectしても
NavigateComplete2.uRLにはwebForm1.aspxのURLが入ってる状態です。
FileDownloadは発生しないですね・・・。


256:デフォルトの名無しさん
05/08/19 09:24:12
>>254
別にインストーラー作ればいいだけだし。
今更新規にVB6で作るって何考えてるのって思うし。

257:デフォルトの名無しさん
05/08/19 09:37:01
>>256
んだな。今更ocx入れるのマンドクセ。

258:デフォルトの名無しさん
05/08/19 13:50:47
別のPCのLAN上にIISがインストールされていれば
ローカルにIISがインストールされていなくても
ASPとかつくれますかね?

259:デフォルトの名無しさん
05/08/19 14:27:04
何作るかしらんが、作るだけなら作れるでしょ。
ASPってのが何指してるのか不明だけど。

260:デフォルトの名無しさん
05/08/21 06:12:21
>>69は天才だと思います。

261:デフォルトの名無しさん
05/08/21 07:17:27
>>254
本当に「できるだけ多くの環境で動く」事が優先されるなら、VB6もVB.NETも不可だろう。

VB6で作成した場合、Windows Vistaまでしか動作保障されない。
VB.NETで作成した場合、Windows95や98は切り捨てることになるな。

262:デフォルトの名無しさん
05/08/21 07:46:31
一応98は.NET動くぜ。

263:デフォルトの名無しさん
05/08/21 21:58:21

名前空間に漢字使ってますが問題ないですかね?
問題あったら教えてください。



264:デフォルトの名無しさん
05/08/21 22:06:07
少なくとも日本国内で開発する分には問題ないだろう。
実行には全く問題ない。

265:デフォルトの名無しさん
05/08/21 22:06:07
>>263
漢字を使うという頭が問題あり

266:デフォルトの名無しさん
05/08/21 22:09:45
現在Visibleプロパティがtrueになっているformを知りたいときって
どのようにしたらいいでしょうか?
If フォームA.Visible = True Then
 〜処理〜
ElseIf フォームB.Visible = True Then
 〜処理〜
 :
 :
みたいにif文やswitch文を書き連ねていくと、ソースが汚らしく思えるのですが。。。

267:デフォルトの名無しさん
05/08/21 22:11:57
ActiveForm/ActiveMdiChildとかそんなんじゃ駄目か?
ていうか何をどうやったらそんな判断が必要になるんだか。

268:デフォルトの名無しさん
05/08/21 22:26:40
ありがとうございます。
Form.ActiveFormで現在アクティブなフォームを表すFormが取得できるんですね。
if文やらswitch文よりすっきり書けそうですね。

269:デフォルトの名無しさん
05/08/21 23:19:32
>>264-265
サンクス。
楽に仕事がこなせるならそれで良いのです。

270:デフォルトの名無しさん
05/08/22 12:57:22
フォーム(Public Class WebForm1)にラベルがあります。
Public WithEvents Label1 As System.Web.UI.WebControls.Label

別モジュール(Module1)に関数(sub kan1)を作りました。その中で
Dim refForm1 As New プロジェクト名.WebForm1
というインスタンスを作りました。
で、refForm1.Label1.Text = "1"
とやると「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と出ます。refForm1.Label1 ← ここでNothingになります。
なぜですか?

271:デフォルトの名無しさん
05/08/22 13:36:13
Newしてないからだろ

272:デフォルトの名無しさん
05/08/22 13:38:44
これじゃダメでしょうか?他のNewを思いつきません。
>Dim refForm1 As New プロジェクト名.WebForm1

273:デフォルトの名無しさん
05/08/22 13:50:51
いや、あのよ、何がNothingなのか考えろ?

274:デフォルトの名無しさん
05/08/22 14:16:49
横からでWebFormは知らんが、WebFormのインスタンスを生成しても、中のLabelのインスタンスが生成されてないんですよ。

Winformだと、コンストラクタからInitializeComponentが呼び出されてNewしてるんだけど、Webはしらん。しらべてみ。

275:デフォルトの名無しさん
05/08/22 18:41:54
テキストボックスでIMEが変換中かどうか取得する目的で
WndProcをオーバーライドしているのですが
スペースのみ入力してタブキーで次のテキストボックスに移ったときは
ENDCOMPOSITIONが来てくれません。

If m.Msg = &H10F Then 'WM_IME_COMPOSITION
bIMEmode = True
End If
If m.Msg = &H10E Then 'WM_IME_ENDCOMPOSITION
bIMEmode = False
End If

対策としてとりあえずKILLFOCUSでIMEモードのフラグを
OFFにしてみましたが、あまり美しくありません。
If m.Msg = &H8 Then 'WM_KILLFOCUS
bIMEmode = False
End If

スペースのみの場合はWM_IME_COMPOSITIONが飛んでこないように
するにはどうすればよいでしょうか?

276:デフォルトの名無しさん
05/08/23 00:20:20
え、飛んできてるんだけど>WM_IME_ENDCOMPOSITION
あとWM_IME_COMPOSITIONじゃなくてWM_IME_STARTCOMPOSITIONじゃないかなぁ

277:デフォルトの名無しさん
05/08/23 08:20:20
>>276
WM_IME_STARTCOMPOSITIONにしたら期待通りの動作をしてくれました。
ものすごく感謝です。

278:デフォルトの名無しさん
05/08/24 10:31:47
AccessのMDBからOelDbDataReaderを使用してデータを取得したいのですが、
OelDbDataReaderのループの中でもう1つOelDbDataReaderを実行すると
「この接続に関連付けられているDataReaderがすでに開いています。」とエラーになってしまいます。

OleDbConnectionを複数作成してコネクションを複数張れば出来ると思うのですが、
色々と不都合(トランザクションが作れないとか)がありそうなのでやりたくありません。

OelDbDataReaderをネストしない場合は正常にデータを取得できています。
下はエラーになるサンプルです。
何か根本的に間違えているのでしょうか?
よろしくお願いします。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim DbConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.mdb")
  DbConn.Open()
  Dim dbCmd1 As OleDbCommand = DbConn.CreateCommand
  dbCmd1.CommandText = "select * from TEST_TAB "
  Dim dbReader1 As OleDbDataReader = dbCmd1.ExecuteReader()
  While dbReader1.Read()
    Trace.WriteLine(dbReader1("TEST_NO").ToString)

    Dim dbCmd2 As OleDbCommand = DbConn.CreateCommand
    dbCmd2.CommandText = "select * from TEST_TAB "
    Dim dbReader2 As OleDbDataReader = dbCmd2.ExecuteReader()  '← *** ここでエラー発生 ***
    While dbReader2.Read()
      Trace.WriteLine(dbReader2("TEST_NO").ToString)
    End While
    dbReader2.Close()
  End While
  dbReader1.Close()
  DbConn.Close()
End Sub

279:デフォルトの名無しさん
05/08/24 10:40:33
MSDNにしっかり

> OleDbDataReader の使用中は、関連付けられた OleDbConnection は、
> OleDbDataReader によって使用されるためビジー状態になります。
> この間、 OleDbConnection に対して、閉じる以外の操作は実行できません。
> OleDbDataReader の Close メソッドを呼び出すまでこの状態が続きます。
> たとえば、 Close を呼び出すまでは、出力パラメータは取得できません。

と書かれている。

280:>278
05/08/24 11:08:49
>>279
レスありがとうございます。
確かに解説の所に書いてありました・・・

皆様はDBからデータの取得中(OleDbDataReaderの使用中)に
他のデータを取得する場合どのように実現されているのでしょうか?

それともDataSetみたいに全データを取得してから次のデータを取得、
みたいな方法でやっているのでしょうか?
よろしくお願いします。

281:デフォルトの名無しさん
05/08/24 11:35:16
・順次、配列等に読み込む
・DataAdapter & DataSet を使う
・複数のコネクションを張る
・ストアドプロシージャを使う

282:デフォルトの名無しさん
05/08/24 11:47:56
>>281
ここの使用って改悪だよな。
バッチ的なテーブル処理に対して厳しいところがある。
ロックかけながらカーソル処理していくような処理で必ず詰まる。

283:デフォルトの名無しさん
05/08/24 11:51:23
ADO.NET 2.0では一つのConnectionから複数のDataReaderを同時に開くことができるようになるとどこかで聞いた。

284:デフォルトの名無しさん
05/08/24 14:30:05
接続ドライブのプロパティに表示されるようなドライブ固有の名前(例:Maxtor 6Y160P0)を取得する関数というのはあるのでしょうか?

285:デフォルトの名無しさん
05/08/24 14:35:07
WMI使えば?

286:284
05/08/24 14:43:56
>>285
ありがとうございます。ググってみます。

287:284
05/08/24 15:02:11
解決しました。ありがとうございました。

288:278
05/08/24 15:31:57
>>281-283
レスありがとうございます。
今のところ直接目的にかなう解決方法がないのですね。
それが分かっただけでも良かったです。

ADO.NET 2.0では可能になるみたいですね。
URLリンク(www.microsoft.com)
の「SqlClient における SQL Server 2005 固有の機能」に書かれていました。

「SQL Server 2005 固有の機能」と言っているだけに
SQL Server 2005だけのような気がしますが・・・

ありがとうございました。


289:284
05/08/24 18:54:36
すいません。再度質問させてください。
>>284にあるドライブ固有の名前の取得方法はわかったのですが
これとドライブレター名(例:C)とを関連付ける方法がわかりません。

Select * From Win32_DiskDrive
でドライブ固有の名前を

Select * From Win32_LogicalDisk
でドライブレター名を取得することはできたのですが・・・

290:デフォルトの名無しさん
05/08/24 19:47:54
まあ基本的に物理ドライブと論理ドライブはあんまり相関のないものだからねー。
Win32_LogicalDiskToPartition/Win32_DiskDriveToPartitionクラス辺りを使って頑張ればいけそうかな。

ん〜、Win32APIでやろうとしたらどうだろ。
DeviceIoControlを駆使することになるのかな。
URLリンク(66.102.7.104)
とてもお薦めできなさそうだ。

291:284
05/08/24 19:50:01
>>290
ありがとうございました。これからぐぐります。

292:デフォルトの名無しさん
05/08/25 00:38:17
VBとVB.netの違いって何?

293:デフォルトの名無しさん
05/08/25 04:40:59
.net

294:デフォルトの名無しさん
05/08/25 11:19:54
DBMS_SQL.NUMBER_TABLEをパラメータに持つ
ストアドファンクションに
VBから配列を渡したいのですが
myOracleCommand.Parameters.Add()だと
InvalidCastExceptionが出ます。
どうやればよいのでしょうか?
私が書いたのはこんな感じです

myOracleConnection.Open()
myOracleCommand = New OracleCommand("sf_test", myOracleConnection)
myOracleCommand.CommandType = CommandType.StoredProcedure
Dim id(500) As Int32
〜中略〜
'コマンドパラメータ設定
myOracleCommand.Parameters.Add(id)←ここでInvalidCastException

295:デフォルトの名無しさん
05/08/25 11:50:25
ODP.NETだよね?
どちらかといえばデータベース板のOracleスレ向きな気もするけど。

PL/SQL表をバインドする場合、
OracleParameter.CollectionTypeを
OracleCollectionType.PLSQLAssociativeArrayにしないと駄目。

詳しくはOTNのODP.NET開発者ガイドを参照してください。


296:デフォルトの名無しさん
05/08/25 13:02:05
かなり初歩的な質問だと思うのですが・・・
ある処理中に処理中であることを示すウインドウを表示させたいのですが
どうにもうまくいきません。どのような方法が考えられるでしょうか?

297:デフォルトの名無しさん
05/08/25 13:05:19
抽象的すぎる質問だな。
どうやってみてどううまくいかないんだ?

298:295
05/08/25 13:19:55
今調べてみたらODP.Net入れてなくて
DBアクセスしてたんだけどこれは
ODBCなのかな?



299:デフォルトの名無しさん
05/08/25 13:22:21
>>296
まずWindowsFormsなのかASP.NETなのか書いてくれ。

300:294
05/08/25 13:28:56
>>295
調べたらOLE DB .NETでした・・・(しかも自分は294だしorz)
これでもやり方は変わらないのかしら?


301:デフォルトの名無しさん
05/08/25 13:38:15
>298
ちょいまて、295は俺だ。

てか、どのDataProvider使ってるかくらいは把握しといたほうが・・・。
ODP.NETじゃなく、.NET Framework Data Provider for Oracleだったとしたら
MSDNにPL/SQL表は使えないと書いてある。
使いたければMSDAORAと共に.NET Framework Data Provider for OLE DB使えってさ。


302:デフォルトの名無しさん
05/08/25 13:40:58
>>300
いや、Oracleが出してるやつじゃないと無理だと思う。

303:294
05/08/25 16:58:17
>>295、302
返事遅れましたが、とりあえず何とかなりそうです。
感謝感謝。

304:デフォルトの名無しさん
05/08/25 17:05:18
vb.netでoracleのあるテーブルからデータを取得し、
そのデータを新規で作成したmdbに登録したいのですが。
そのようなことは可能でしょうか?
よろしくお願いいたします。

305:デフォルトの名無しさん
05/08/25 17:20:04
そのようなことは可能です。
よろしくお願いいたします。


306:デフォルトの名無しさん
05/08/25 17:30:36
超初心者です。

PUBLIC:COMPONENT

で始まるのってなんですか?



307:デフォルトの名無しさん
05/08/25 17:42:45
vb.netでプロセス間通信の質問です。
現在WIN XP上でvb.net(単品)の環境。
プロセス間通信を行いたいのですが、ファイルマッピング、パイプ、メールスロットなどなどことごとく失敗します。
今は名前付きパイプに絞っているのですが、パイプをクリエイトしてもハンドルが返ってこないのです。
下記のように単純化したプログラムでもNGです。

宣言部に
Public Structure SECURITY_ATTRIBUTES
Public nLength As Integer
Public lpSecurityDescriptor As Integer
Public bInheritHandle As Integer
End Structure

Declare Auto Function CreateNamedPipe Lib "kernel32.dll" Alias "CreateNamedPipeA" ( _
ByVal lpName As String, _
ByVal dwOpenMode As Integer, _
ByVal dwPipeMode As Integer, _
ByVal nMaxInstances As Integer, _
ByVal nOutBufferSize As Integer, _
ByVal nInBufferSize As Integer, _
ByVal nDefaultTimeOut As Integer, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES _
) As Integer

ボタンクリックで
hpipe = CreateNamedPipe("\\.\pipe\test", &H3, &H80000000, 255, 1024, 1024, 5000, Nothing)

これでhpipeに「-1」しか返ってきません。正常に行うにはどうすればいいのでしょうか?
よろしくお願いします。



308:デフォルトの名無しさん
05/08/25 18:37:02
>>307
Declare構文のAutoが解釈間違ってるよ。
Autoを指定する場合、プラットフォームに従ってStringをAnsiかUnicodeにマーシャリングする。
つまりNT系ならUnicodeで関数に渡される。
ところが実際に呼ぶ関数をAliasでCreateNamedPipeAとAnsi版を呼んじゃっている。
Ansi版は与えられたバイト列を当然Ansiとして解釈するから、&h00がすぐに見つかってしまって使用不能の文字列になってしまう。
解決法は
・Autoの代わりにAnsiを使う
・AliasをCreateNamedPipeにする(プラットフォームによって呼ばれる関数が実行時に切り替わる)
・Aliasを指定しない(プラットフォームによって呼ばれる関数が実行時に切り替わる)

それから、最後のパラメータSECURITY_ATTRIBUTEも。
ByRefは参照渡しなのは分かるよね。
Nothingは、構造体(Structure)の場合全てのフィールドが0のインスタンスを表す。
だからNothingと言いつつ実際にはnullではなく、結果として関数に新しく作られた構造体インスタンスのアドレスが渡ってしまってるわけ。
こういう場合、パラメータを
ByVal securityAttribute As System.IntPtr
と宣言して、IntPtr.Zeroを渡すのが良い。これはC/C++においてNULLポインタを渡すことと同義の行為。

あと、ハンドルの類はInteger(System.Int32)よりもSystem.IntPtrで宣言した方が良いよー。

309:デフォルトの名無しさん
05/08/26 00:21:18
>>308
レスサンクス
いやぁ、いろいろ見直すべきところが多くてお恥ずかしい。
破れかぶれでいろいろ変えてみて、元に戻し忘れてたところとかもあるし。
明日、早速試してみます。
ありがとうございます。


310:デフォルトの名無しさん
05/08/26 03:18:22
ソートツールを作りたいので可逆ソートがしたいです。
自分としてはBlockSortingがしたいです。
アルゴリズムは分かるのですが、実装方法がいまいちわかりません。

311:デフォルトの名無しさん
05/08/26 03:39:47
アルゴリズムが分かるならあとはそのまま実装するだけじゃないか

312:310
05/08/26 03:49:31
実装がC++ではできますがVB.NETではなぜか出来ません。

313:デフォルトの名無しさん
05/08/26 06:35:30
VisualStudio.NET2003 を手に入れて、
VB.NET でちょっとした GUI ソフトを作りますた
それを別の PC で起動しようとしたら、何やらが見つからないといって動きません

要するに .NET Framework をインスコしないと動かないということだと思っておりまつ
おいらの PC ではないので、できればインスコしないで動けばありがたいのでつが、
何か方法はありまつか?
そもそも、VB.NET の GUI ソフトで .NET Framework を入れなくても動くものは作れまつか?

314:デフォルトの名無しさん
05/08/26 07:32:07
無理 入れろ

315:デフォルトの名無しさん
05/08/26 11:19:29
最近VBを使うようになって、クリック連打するソフトを作りたいと思ったのですが
マウスクリックをする命令が見つかりません。
どうやったらできますか?

316:デフォルトの名無しさん
05/08/26 11:30:07
画面上の好きなところをクリックしたいというのならWin32API。
SendInput関数かmouse_event関数。

317:デフォルトの名無しさん
05/08/26 12:06:38 BE:113897873-##
>>315
MouseDownとか

318:デフォルトの名無しさん
05/08/26 14:45:19
ありがとうございます。
思ったより大変そうだけどがんばってみます。

319:デフォルトの名無しさん
05/08/27 17:11:57
かなり、初歩的な質問だと思うのですが、
変数を宣言した時にクラス名の後ろの()
を記入しても消えてしまうのですが、なせなんでしょうか?
たとえば、、、
dim A as new frmLogon()

dim A as new frmLogon
になってしまうのですが。
何が原因なのでしょうか?


320:デフォルトの名無しさん
05/08/27 17:45:29
配列宣言したいのか?

321:デフォルトの名無しさん
05/08/27 17:51:53
>>320
いや別に配列宣言とは関係ないだろ。
引数無しのコンストラクタメソッド呼出を明示してるだけで。
C#とかだと必須だからなー。
//メソッドの括弧と配列の括弧が同じなのはややこしい……。

>>319
まあVBからのクセなのであまり気にしない。

322:デフォルトの名無しさん
05/08/27 18:18:40
>>321
ありがとうございます。
括弧はあってもなくても動きは変わらないと考えてよろしいのでしょうか?


323:デフォルトの名無しさん
05/08/27 21:30:11
Formデザイナに関する質問なんですが、TabPageコントロールを使っていると、
最初のタブページ以外のタブページ内のコントロールをデザインしていると
マウスポインタが各タブページのクライアント領域から外に出られなくなったり、
Formデザイナのコンテクストメニューが「コードの表示」以外の項目が
全部無効になったりする症状が出て困っています。

これって何か解決法ご存知ないでしょうか?
# どうもこの症状は環境依存というか、どの環境でも再現するわけではないみたいですね。

324:デフォルトの名無しさん
05/08/28 01:39:08 BE:54237825-##
RAM少ないんじゃない?

325:さとみん。
05/08/28 14:16:48
VB6.0のツールバーのプロパティーにはHotTracking(?)があったのですが、VB.NETではなくなってし
まいま
したよね?ボタンの外観を変更できるプロパティーです。

ツリーノードのプロパティーには、HotTrackingが設けられています。
ツールバー上のアイコンにマウスポインタが配置された時、ボタンの外観を変更する方法はありませ
んか?

分かりにくい説明で申し訳ありませんが、お願いいたします。

326:デフォルトの名無しさん
05/08/28 20:55:09
test

327:デフォルトの名無しさん
05/08/28 21:05:04
>>325
いまいち質問が明示的じゃない気がする。
On Mouseでボタンの画像を変えたいってこと?
それはそういうコードを書くしかないよ。
ToolBar自体の機能としてはビルトインされてないから。

328:デフォルトの名無しさん
05/08/28 21:14:21
>>327
流せ。転載だから。
他でそれなりに詳しい解答貰ってるからして本人でもなかろうし。

329:デフォルトの名無しさん
05/08/29 10:12:57
vb.netの質問というよりvs.netの質問なのですが、
現在VS.NET2003のVB.NETを使っています。
.NET Frameworkのバージョンが1.0だったのですが、1.1の機能を使いたかったので
1.1のもろもろをダウンロードしてインストールしました。
しかし、VB.NETのヘルプにあるMicrosoft Development Environmentのバージョン情報にある
.NET Frameworkのバージョンが1.0のままで当然1.1の機能も使えません。
1.0があるせいかとも思い1.0をアンインストールしてみましたが、バージョンは変わらず
プログラムすることすらできなくなりました。
ただインストールするだけじゃだめなんでしょうか?
それとも何か根本的な勘違いをしているのでしょうか?

330:デフォルトの名無しさん
05/08/29 10:18:19
うん。
2003じゃ.NET 1.1の開発しかできない。2003を入れたときに自動的に.NET 1.1がインストールされる。
逆に2002では.NET 1.0の開発しかできない。2002を入れたときに自動的に.NET 1.0がインストールされる。

あなたの環境は矛盾している=何らかの勘違いが存在している。

331:デフォルトの名無しさん
05/08/29 10:23:29
>>330
今パッケージをよく調べたら2002と書いてましたorz
何を勘違いしていたのかずっと2003だとばかり思ってました。
ということは.NET 1.1は使えないのですね。
ありがとうございます。

332:デフォルトの名無しさん
05/08/30 00:45:34
すみません、VBで作ったGUI上からコマンドシェルの結果って取得できますか?
単純に
"ping 10.10.10.10"
ってStringを与えて、結果を取得する方法があればご教授ください。

333:デフォルトの名無しさん
05/08/30 00:55:11
System.Diagnostics.Processクラス

334:デフォルトの名無しさん
05/08/30 11:36:00

「管理ツール」の「データソース(ODBC)」のシステムデータソースに登録したデータソースに、ADO.NETを使って、システムデータソースの名前でアクセスしたいのですが、どうしたらいいのでしょうか?
ユーザーによってデータベースも異なります。
よって、データソースに名前でアクセスできるような方法をご存じないでしょうか?
よろしくご教授願います。


335:デフォルトの名無しさん
05/08/30 16:28:53
VB6のコード画面で [CTRL] + [↑] で一つ上のプロシージャに移動できた
はずなんですが、VB.NETで同様のことができるキー操作はないでしょうか?

336:デフォルトの名無しさん
05/08/30 18:21:28
すいません。学生でVisual Studio.net the Spokeのサイト
URLリンク(jp.thespoke.net)が落ちてるのですが
なぜでしょうか?

337:デフォルトの名無しさん
05/08/31 12:54:22
質問です。
OS:win xp
バージョン:VB.net
です。よろしくお願いします。

ピクチャーボックスを一つ用意して、もう一つをコントロール配列でその上にかぶせます。
そしてコントロール配列のほうのピクチャーをシャッターとし、タイマーで管理して開閉させます。
手動で用意したほうのピクチャーにはイメージリストから当たりとはずれの2種類をランダムで
選んできます。そしてキーダウンを有効にさせて、シャッターがあいていて、かつ、ピクチャーが当たり
の場合、tensuuを1足しこむ処理をしたいのですが、連打するとtensuuが何度も足しこまれてしまいます。
その・・・理由はわかっているのですが、どうすれば回避できるかがわかりません。
一回目に打鍵した直後にDo eventsで空ループを入れてみてもだめでした。
かといってスリープにすると他の処理まで止まってしまうと考えられるので試していません。

もう一つ考えたのは、打鍵した直後にフラグを立ててキーダウンを無効にし、そしてDo eventsで空ループを
適当にまわし、ループ終わった後にフラグを戻してキーダウンを有効に戻す。という方法ですが、
ちょっと今エラーが出てしまっています・・・。デバック中です。

でもなんかこう、ピンときません。よい解決方法をご教授いただけないでしょうか。
お願いします。

338:デフォルトの名無しさん
05/08/31 13:04:05
キーダウン>フラグ立てる>加点もろもろの処理>画像を変更するときにフラグおろす
で何か問題でも?
なんでDoEventsだのが出てくる?

339:デフォルトの名無しさん
05/08/31 14:49:26
質問です。
DirectPlayを使用したソフトを通信ソフト作ったのですが、DirectX 9.0c Runtimeだけをインストールしているユーザーだと、使用することが出来ません。
調べてみると、9.0a以降のバージョンでは、必要なファイルがインストールされない仕様に変更になっているようで、、、
ユーザー側で、別途「Managed DirectX」をインストールするか、SDKの方をインストールしてもらわないと使えないみたいな感じです。

セットアッププロジェクトでインストーラーを作成すれば、不足しているファイルもユーザー側の方にもインストールされるでしょうか?

340:デフォルトの名無しさん
05/08/31 23:33:17
基本的な質問ですまんです。
プロパティって、オーバーロードできないんでしょうか?

Dim _number as Integer

Property Number() As Interger
 (Get略)
 Set(ByVal Value As Integer)
  _number = Value
 End Set
 Set(ByVal Value As String)
  _number = Integer.Parse(Value)
 End Set
End Property

みたいなことをやりたいわけなんですが。
オーバーロードしたけりゃ、SetNumber()みたいなメソッドを作らないとダメ?

341:デフォルトの名無しさん
05/08/31 23:35:14
Overridable

342:デフォルトの名無しさん
05/08/31 23:43:50
ってオーバーロードか。
Integer型のNumberプロパティにStringを代入できちゃ拙いだろう。
引数付きプロパティの引数違いのオーバーロードならできるけど。

343:デフォルトの名無しさん
05/08/31 23:51:59
thanx.
まあたしかに、class.Number = "774" なんてできたらマズそうですな。
素直にclass.SetNumber("774") みたいなメソッドにしときます。
(実際は単純な型変換だけじゃなくて、すこしロジックが入ります)

344:デフォルトの名無しさん
05/09/01 19:09:06
ASP.NETのResponse.FilesからHttpPostedFileを
For Each文を使って取り出したいんですが
キャストが有効でないといわれてしまいます

解決方法ってありますか?

345:デフォルトの名無しさん
05/09/01 19:09:44
VBコード内に記述するSQLについては。。。。

やっぱ、ここではなくてSQLスレだよね?

346:デフォルトの名無しさん
05/09/02 00:15:30
XP端末でVB.NETのアプリを起動したところ、例外が発生し悩んでいます。
ShowDialogで下記のようにフォームを表示しています。
フォームA→フォームB→フォームC
フォームC表示時にEnterキーを押下すると
System.InvalidOperationExceptionが発生します。
例外の内容としては、フォームC表示時にも関わらず、
フォームA内のフォームB起動ボタンがクリックされたイベントが発生し、
フォームBは表示済みなのに再度表示しようとしたために例外が発生した、というものでした。
しかし、ShowDialogで他の画面を表示しているのに
フォームAでイベントを拾うっていうのは本来ありえないはず、ですよね?

それが起きちゃうってことは、コーディングが間違ってるんですよね・・・
コーディング以外の要因でありがちな問題ってあるでしょうか。
あまりにもわからないので
「まさかFramework自体がバグッテルのでは?」なんてあるわけないことを疑うようにまでなってます・・・

347:デフォルトの名無しさん
05/09/02 00:44:54
>>346
もうすこし他人が読んで意味わかるような文章書かないと
誰も助言のしようがないよ。

とりあえず意味が読み取れる範囲で応答すると、
フォームBのボタンクリックのイベントハンドラでモーダルなフォームCを表示しているのなら、
フォームCでキャッチされてない例外が発生すれば、例外はフォームBのボタンクリックの
イベントハンドラまで遡ってくるんじゃないの?

348:最凶VB厨房
05/09/02 01:04:52
>>344
For Each文を使わない。
1個1個取り出せ。
>>345
対象DBサーバ。データベース名、テーブル名、カラム名、型、制約
OS、.net frameworkのバージョンなどの中で必要最小限のものを
全部書くならこのスレで質問しても問題はない。
返答があるかはわからんが。
>>346
コードさらせ。例外メッセージ全部さらせ。

349:最凶VB厨房
05/09/02 02:25:21
>>344
Request?AllKeysがあるぞ。

350:質問房 ◆v.TAYcWkbs
05/09/02 11:54:21
質問させてくだされ。

strSQL = "select " & _
" 伝票年月 as 入出庫年月," & _
" 得意先名称," & _
" 得意先コード," & _
" 部品番号," & _
" 部品色," & _
" 部品名" & _
" from " & _
" dbo.E_入出庫" & _
" where " & _
" 事業所 =" & data_factoryCD & " and " & _
" 伝票年月 =" & data_yymm & " and " & _
" 得意先コード = '" & costormerCode & "' and " & _
" 部品番号 = '" & data_partsnumber & "'" _
'" 部品色 = '" & data_partsColor & "'"
If data_partsColor <> "" Then
strSQL &= " and 部品色 = '" & data_partsColor & "'"
End If (ここでブレーク)

今、TESTサーバーでテーブル作成して、そのテーブルからデータを読んでいます。
検索先テーブルにはselectの対象になる部品が存在しています。
EndIfにブレークポイントを設定。デバッグ開始〜ウオッチにて確認〜SQLに
条件式をコピー。

(次に続く)

351:質問房 ◆v.TAYcWkbs
05/09/02 11:56:31
SELECT 伝票年月 AS 入出庫年月, 得意先名称, 得意先コード, 部品番号, 部品色,
部品名
FROM E_入出庫
WHERE (事業所 = 8) AND (伝票年月 = 200504) AND (得意先コード = 'xxxxxx') AND
(部品番号 = 'xxxxxxxxx')

と、SQL(エンタープライズマネージャー)では指定した部品内容が表示される。
しかし、VBの実行結果では表示されない。
この検索項目内容に部品の色があります。
SQL文で示す様に検索時、部品の色は絶対条件にしてません。色在り部品と無し部品在るからです。
色無部品を検索するとテーブル内にあるにもかかわらず検索されない。
色付の部品で実行するとVBの処理結果はOK。
これは何が原因と思われるでしょうか???

実行環境
OS:W2K-sp4
VS.NET2003//VB.NET 69516-006-0172567-18781
Framework 1.1(1.0も一緒に入っています)

352:デフォルトの名無しさん
05/09/02 16:02:25
関連のある複数のテーブルのいっぺんに消す方法ないでしょうか?
やりたいイメージはこんな感じです。

delete from (select * from a, b where a.id = b.id and a.last_date < '20050902')

もちろんこんなSQLは実行できませんが・・・



353:デフォルトの名無しさん
05/09/02 16:16:02 BE:32542823-##
>>348
トンクスコ
ググって見てもFor Eachでまわしてるサンプル見かけないので
出来ないようですね・・・
バグなのかなぁ・・・

354:デフォルトの名無しさん
05/09/02 16:17:49
>>352
CREATE TABLEの時にきちんとON DELETE CASCADEを設定してれば幸せになれるかも

355:デフォルトの名無しさん
05/09/02 16:24:04
>>353
サンクスコ

>>354
うほ!
ちょっと調べてみます。

356:デフォルトの名無しさん
05/09/02 23:36:50
>355
354さんの助言は、ALTER TABLEの時にも有効。
# M$ SQL Serverだよね?

357:最凶VB厨房
05/09/02 23:54:21
>344

  Private Sub Submit1_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit1.ServerClick
    Dim hpf As HttpPostedFile
    Dim s As String
    For Each s In Page.Request.Files.AllKeys
      hpf = Page.Request.Files.Item(s)
      Console.WriteLine(s)
    Next
  End Sub
Submitボタン配置サーバコントロール化
File Field配置サーバーコントロール化


358:最凶VB厨房
05/09/03 00:14:56
>>350-351
よくわからんぞ。ウォッチで何を確認したんだ?
部品色がないときは空文字列なんだよな?nullじゃねぇよな?
data_なんとかは型はなんだ?String型か?
カラムの型はなんだ?さっぱりわからんぞ。
VBの実行結果では表示されない。ってどういうこった?
何に表示させてんだ?さーーーーーーっぱりわからんぞ。
とりあえずSQL文削って試せ。
>>352
ストアドトリガっちゅう手もあんぞ。ゴルァ!!!!!!!!!!!

359:最凶VB厨房
05/09/03 00:18:05
>>350-351
ってかプライマリキーはってんのか?
@はどうした?わけわからんぞ。

360:デフォルトの名無しさん
05/09/03 23:44:10
複数行のインデントはどうやるのでしょうか?
<編集>の行インデントがグレーアウトになって選べないのですが?

361:最凶VB厨房
05/09/03 23:56:52
ツール→オプション→Basic→タブ
インデント→スマート以外

362:最凶VB厨房
05/09/03 23:59:39
×ツール→オプション→Basic→タブ
○ツール→オプション→テキストエディタ→Basic→タブ

363:デフォルトの名無しさん
05/09/04 00:17:15
>>362
できました。。
ありがとうございます。

364:デフォルトの名無しさん
05/09/05 02:12:51
質問です。
内容は、既に起動しているエクセルに対して,vb.netで作成したアプリケーションから
セルに数値を記入するにはどうすればいいか、です。
やりたいことは、エクセルマクロ(VBA)からvb.netで作成したアプリケーションを呼び出し、
その処理結果を呼び出し元のエクセルのセルに書き込みたいのです。

今現在は、参照の追加でExcelObjectLibraryを追加し、
Dim xlApp As New Excel.Application
・・・
な感じで指定しています。
問題は、エクセルファイルを指定するときに
Dim xlBook As Excel.Workbook = xlBooks.Open(ファイル名)
とやると、元々そのファイルが起動しているため、2重に起動してしまいます。
新たにopenせずに、既に起動しているファイルを指定してやるにはどう
すればよいでしょうか?
(元々そのエクセルのVBAから呼び出しているため、そのエクセルが起動していることは
保証されている)


ちなみに起動していないエクセルのセルへのアクセスは成功しています。



365:デフォルトの名無しさん
05/09/05 02:18:41
こんなの?
URLリンク(www.google.co.jp)

366:デフォルトの名無しさん
05/09/06 14:33:26
タブコントロールを使ってプログラムを作っています。
選択されているタブによって処理内容を変えるようなプログラムです。
そのために、現在選択されているタブを取得するようなプロパティやメソッドがあれば知りたいのですが、どなたか、ご存じないですか?
よろしくご教授願います。


367:デフォルトの名無しさん
05/09/06 14:34:39
ちょっとはTabControlのプロパティ&メソッドに目を通してみたのか?

368:デフォルトの名無しさん
05/09/06 16:29:41
RTFM

369:デフォルトの名無しさん
05/09/06 17:47:56
>>366
ええええええええ?????????

370:デフォルトの名無しさん
05/09/06 18:25:42
ΩΩ Ω

371:デフォルトの名無しさん
05/09/06 18:41:43
釣りだよな?
ご存知もなにも、普通にやってれば気づくと思うんだが・・・。


372:デフォルトの名無しさん
05/09/07 14:03:42
タブコントロールを使ってプログラムを作っています。
選択されているタブによって処理内容を変えるようなプログラムです。
そのために、現在選択されているタブを取得するようなプロパティやメソッドがあれば知りたいのですが、どなたか、ご存じないですか?
よろしくご教授願います。

373:デフォルトの名無しさん
05/09/07 16:24:25
URLリンク(www.grapecity.com)
コレみたいに、複数列表示できるツリービューを.netで実現したいんですけど・・・
どーすればいいんでしょうか。

374:デフォルトの名無しさん
05/09/07 16:54:00
取りあえず見つけてみた
URLリンク(www.codeproject.com)

375:デフォルトの名無しさん
05/09/07 19:47:21
初歩的な質問ですみません
dir()で「ディレクトリ以外」って指定はどうするんでしょ?
vbnormal+vbreadonlyとかやったら「readonlyなディレクトリ」も引っかかるんですけど…

376:デフォルトの名無しさん
05/09/07 20:05:21
System.IO名前空間、DirectoryクラスのGetFilesメソッド使ったら?

377:デフォルトの名無しさん
05/09/07 21:39:17
>>372

>>367->>371


378:デフォルトの名無しさん
05/09/07 21:59:11
>>376
むう、やはりそれしかありませんか…
どもでした

379:デフォルトの名無しさん
05/09/07 23:50:08
デザイン時にマウスクリックでコントロールを移動できるように、
実行時でも、コントロールをマウスクリックで移動
ということは出来るのでしょうか。

実行時、iniファイル等から各画像の x,y を読み込み描画、
マウスで編集して、配置を保存、というようなことを目的としています。

380:デフォルトの名無しさん
05/09/08 00:13:03
>>379
URLリンク(dobon.net)

381:デフォルトの名無しさん
05/09/08 19:43:52
超初心者です。質問です。XP HomeでVB.NET2003を使っています。

COMからMicrosoft Web Browserを追加し、
 AxWebBrowser1.Navigate("URLリンク(www.yahoo.co.jp)")
のようにしてForm起動時にWeb表示させています。
VB.NETの「開始」(F5)だとうまくいくのですが、
Releaseとしてビルドし、
\obj\Releaseにあるexeを起動させようとするとうまくいきません。

例外 'System.IO.FileNotFoundException' が WindowsApplication4.exe で発生しました。

とのエラーメッセージが出て、これをデバックしようとすると

'System.IO.FileNotFoundException' のハンドルされていない例外が WindowsApplication4.exe で発生しました。
追加情報 : ファイルまたはアセンブリ名 AxInterop.SHDocVw、またはその依存関係の 1 つが見つかりませんでした。

とのメッセージが出ます。

なにをどうすれば解決するのでしょうか。。。
よろしくお願いします<m(__)m>

382:デフォルトの名無しさん
05/09/08 20:05:47
\objじゃなくて\bin。
\objは中間ファイル用のディレクトリ。

383:長谷川友よ
05/09/10 11:04:04
ド・ラ・ルーブルの方法の3×3のプログラムが書けないんですが教えてもらえます?
vb.net2003です

384:デフォルトの名無しさん
05/09/10 11:06:47
宿題は自分でやらにゃいかんよ。

385:デフォルトの名無しさん
05/09/10 15:58:53
初心者ですみません。
c++ でAVIファイルを開きたいのですが、さっぱりわかりません。
DirectShowあるいはVideo for Windowsを使うのでしょうか?

386:デフォルトの名無しさん
05/09/10 16:23:56
>>385
VBとC++の区別もできない馬鹿に何を言うことがあろうか

387:名無しさん@そうだ選挙に行こう
05/09/11 02:54:26
Windowsのソフトでフォルダーを選択するダイアログが出てくるやつありますよね。
あれはなんていう名前のコントールなんですか?
それともVB.NETだと使えないの?


388:名無しさん@そうだ選挙に行こう
05/09/11 02:55:37
#include <stdio.h>
#include <stdlib.h>
main(){
int a[15][15],i,j,k,n;
printf("奇数の魔方陣\nn = ");
scanf("%d",&n);printf("\n");
if(n<0 || n>15 || n%2==0) {
printf("1〜15の奇数やでぇ〜.\n");
exit(1);
}
i=0;
j=n/2;
a[i][j]=1; //手順1第1行中央列に1
for(k=2;k<=n*n;k++){
if(k%n==1) { i++; } //手順3真下に書く
else if(i==0) { i=n-1; j++; } //手順41つ右の列の最下段
else if(j==n-1){ i--; j=0; } //手順51つ上の行の最左端
else { i--; j++; } //手順2次の数字を右斜め上
a[i][j]=k;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("\n要素の和=%d\n",n*(n*n+1)/2);
}




389:名無しさん@そうだ選挙に行こう
05/09/11 02:56:08
URLリンク(home.hamamatsu-u.ac.jp)

390:名無しさん@そうだ選挙に行こう
05/09/11 03:00:37
>>387
.NET 1.1から追加された、System.Windows.Forms.FolderBrowserクラス。
.NET 1.0/VS.NET2002(VB.NET2002)ならちと手間がかかるが
URLリンク(support.microsoft.com)

391:名無しさん@そうだ選挙に行こう
05/09/11 11:17:14
>>390
ありがとうございました。
メッセージが英語なのと初期フォルダーが一部しか選べないのがちょっと残念。

392:名無しさん@そうだ選挙に行こう
05/09/11 11:37:10
TreeViewの再表示で質問なのですが
.Nodes.Clear()で全てのノードをクリアし、再度ノードを追加して再表示させている画面があります。
その時にクリアのアニメーション効果をなくす事はできないでしょうか?

Windowsの画面のプロパティでアニメーションの効果をOFFにすればいいのですが、
インストールする全パソコンの設定を変更するわけにもいかず困っています。

表示する内容がDBのモニタ情報なので、再表示する前と後で情報が大きく変わってしまうこともあり、
部分的な再表示は難しいと考えています。

何か良い方法は無いでしょうか?
よろしくお願いいたします。

393:名無しさん@そうだ選挙に行こう
05/09/11 19:05:12
質問です。
作ったDLLをEXEファイルと別の場所に置きたいんですけど、
コンパイルするときにその場所が決まってません。

実行したときにユーザーにパスを指定させる形にしたいんですけど、
そのDLLをEXEに関連づけるにはどうすればいいですか?

パスを通そうと思ってProccess.Start("set path=c:\aaaa")とかやってみたら、
実行ファイルじゃないのでだめだと言われました。

いい方法があったら教えてください。



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4701日前に更新/282 KB
担当:undef