VB.NET質問スレ (Part6) at TECH
VB.NET質問スレ (Part6) - 暇つぶし2ch262:只今勉強中
04/07/26 16:36
Public Sub New(ByVal idcarF1 As Integer)

MyBase.New()
InitializeComponent()

idcarF2 = idcarF1

Dim filterIdcarF2 As integer
'Dim filterIdcarF3 As integer

filterIdcarF2 = idcarF2
'filterIdcarF3 = 5

UpdateDatabase()

'SQL文
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM excol_data " _
& "WHERE car_id LIKE '" & filterIdcarF2 & "'"

'データセットを初期化して、データーアダプターからデーターを読み込む
DsExcol1.Clear()
SqlDataAdapter1.Fill(DsExcol1)

End Sub

ウィンドウを開くと同時にfilterIdcarF2を使って、データーを絞り込むという作業を作りました。さらに
”filterIdcarF3 = 5"で"excol_cd"の値が"5"のものを絞り込みたいのですが、SQL文の所の書き方
をどなたか教えていただけないでしょうか?



263:デフォルトの名無しさん
04/07/26 17:34
excol_cd の型は?それがないと正確に答えられない。

たぶんSQLスレ行けって言われると思うけど。


264:デフォルトの名無しさん
04/07/26 17:57
>>262
F2で絞り込んだものをさらにF3で絞り込むのか
F2とF3を同時に発行して絞り込むのか

あとInteger型のものに対してLike(あいまい)で検索かけてるけど
これはこれでいいの?

265:デフォルトの名無しさん
04/07/26 18:24
>>264
car_id が Integer型ってどうして分かるの?


266:262
04/07/26 18:39
すいません、もう右も左もわかんなくて、本を引き引きやってる状態で・・・。

excol_cdもcar_idも整数型です。

あと、F2で絞り込んだものをさらにF3で絞り込みたいのです。自動車の種類別
のコードがF2で、外装の色がF3で、この二つで絞り込んで、内装の色を検索し
たいので・・・。

Likeがあいまい検索だというのは、いまスレを見て始めて知ったので外してみたら、
SqlDataAdapter1.Fill(DsExcol1)の行で止まってしまい、LIKEの代わりを今探して
SQLのサイトとニラメッコしています。

267:262
04/07/26 19:13
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM excol_data WHERE car_id = 18"
これだ18番のcar_idを持つものが表示されるのですが
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM excol_data WHERE car_id = filterIdcarF2"
だと動いてくれないようです・・・。なにか書きようがあるのでしょうか?

268:デフォルトの名無しさん
04/07/26 19:58
>>267
困ってるのはわかるが、落ち着いて VB の入門書と SQL の入門書を読んだ方が
結局は早いと思うよ。

269:デフォルトの名無しさん
04/07/26 21:50
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM excol_data WHERE car_id = " + filterIdcarF2 + " and car_id = " + filterIdcarF3 + " and excol_cd = 5"


270:デフォルトの名無しさん
04/07/26 22:52
VBAって次に VBA.NET になるんですかね。

271:デフォルトの名無しさん
04/07/27 00:42
String の配列に入っているテキストデータを TextBox で編集しようと思って,

Dim List(200 ) As String
で,

TextBox1.Text = ""
For a=0 To List.GetUpperBound(0)
TextBox1.text &= List(a) & vbCrLf
Next

のようにしましたが,編集後のテキストデータを再び Stringの配列に
戻すところでつまりました.

このような,何かのプログラム内での プチエディタ なんかは,
どういう風に実現するのが良いのでしょうか?

272:デフォルトの名無しさん
04/07/27 00:58
>>271
配列をそのままTextBox.Linesプロパティに入れて、編集後にTextBox.Linesをそのまま配列に戻すのは駄目なん?
的外れだったらスマソ。

273:デフォルトの名無しさん
04/07/27 01:22
>>272
おおっ. そんなものがあったのか.
ご教授ありがとうございました.

テキストデータの行数がいろいろ変わるので,
やっぱり For文 で回したほうがいいみたいでした.

とにかく解決.ありがとうございました.

274:デフォルトの名無しさん
04/07/27 13:35
>>272 さんのおかげで少し進んだのですが,,,
今度は,TextBoxのカーソル位置を表示してみようと思いまして,,で,

 Cur = TextBox1.SelectionStart
 If Cur <= 0 Then
  y = 1 : x = 1
 Else
  c = 0 : y = 0
  Do
   x = Cur - c
   c += TextBox1.Lines(y).Length + 2
   If Cur < c Then Exit Do
   y += 1
  Loop
  For xx = x - 1 To 0 Step -1
   If AscW(TextBox1.Lines(y).Substring(xx, 1)) >= 256 Then x += 1
  Next
  y += 1 : x += 1
 End If
 Label1.Text = y & "行 " & x & "桁"

こんなんになってしまったのですが,これだと 各行の文字数を先頭から
足して来たり,各文字が全角かどうか一文字ずつ調べたりしてて,
TextBox の文字数が多くなると遅そうですよね.
他にスマートな方法があれば教えていただきたいのです.

275:デフォルトの名無しさん
04/07/27 13:45
picture clip controlは.NETには入ってないのでしょうか?

276:216
04/07/27 16:42
>>217
ヒントありがとうございます
キーフック自体わからず調べながらやってみたのですがなかなかうまくいきません。

SetWindowsHookExtというAPIでキーボードのメッセージを捕捉できるところまで行ったのですが
次に自分でPostMessageで別のキー入力を起こそうと思っているのですがここがダメです。
今フォームにテキストボックスが1コはっつけてやってみています

Function KeyBoardProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
If nCode < 0 Or nCode = 3 Then
Return CallNextHookEx(m_hHook, nCode, wParam, lParam)
End If
Dim ret As Integer
Dim iMsg As Integer
If wParam = CInt(Keys.A) Then
If lParam And &H80000000 Then
iMsg = WM_KEYUP
Else
iMsg = WM_KEYDOWN
End If
wParam = Keys.E
PostMessage(TextBox1.Handle.ToInt32, iMsg, wParam, lParam)
CallNextHookEx(m_hHook, nCode, wParam, lParam)
Return 1
End If
End Function
TextBox1のIMEモードはひらがなにしてあります。

aのキーを打つとeがテキストに入るのですがほんとは「え」と入ってIMEで変換できる状態(えの下に点線の下線)になって欲しいのです。
的外れと思いつつImmGetContextの返値をPostMessageの第一引数にしてみましたがさっぱりでした。
何がいけないのか教えてください。

277:216
04/07/27 16:44
>>276

ヒントを頂いたのは
>>217ではなく
>>218でした
というか217は自分でした・・・

278:デフォルトの名無しさん
04/07/27 16:54
>>274
Win32API使ってもOKなら、user32.dllのGetCaretPosでいける。
URLリンク(do.sakura.ne.jp)
ここの>>32にC#版がある。

279:デフォルトの名無しさん
04/07/27 20:32
URLリンク(do.sakura.ne.jp)

280:デフォルトの名無しさん
04/07/27 21:28
>>278 >>279
C# がわからないのでいろいろ苦労しました.
いや,C# の問題じゃなくて,Win32API ってやつの方かな.
ヘルプとかいろいろ調べてやっとできました.
Win32API ってのは初めての経験なもので...

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

ってのを作っといて,

 y = SendMessage(TextBox1.Handle, &HC9, -1, 0)
 x = TextBox1.SelectionStart - SendMessage(TextBox1.Handle, &HBB, y, 0)
 For xx = x - 1 To 0 Step -1
  If AscW(TextBox1.Lines(y).Substring(xx, 1)) >= 256 Then x += 1
 Next
 y += 1 : x += 1
 Label1.Text = y & "行 " & x & "桁"

って感じでできたみたい.
全角文字のカウントは残りましたが,だいぶ速くなりました.
どうもありがとうございました.

281:デフォルトの名無しさん
04/07/27 23:34
ちと教えてください。

CrystalReport に Textオブジェクト を作って、そこにモジュールレベル変数
(String型)の内容を埋め込むには、どうしたら良いでしょう?

Accessのレポートなら作ったことあるんですが、
CrystalReport はちょっと勝手が違うん困ってます。

お願いします。

282:デフォルトの名無しさん
04/07/27 23:51
>>281
データソースはDB?
それとも実行時に任意に与える数値?

283:281
04/07/28 00:16
>>282

レポートそのものは、AccessDBからフィールドを引っ張ってますが、
表題の部分に、任意の文字列を入れたいのです。

別フォームでその文字列を変数に格納して、レポートに表示したい
という訳です。


284:デフォルトの名無しさん
04/07/28 00:42
標準入力・出力するコマンドラインで動くアプリケーションがあるんだけど、
それとVB.NETでやりとりすることできるかな?

(ひらたく言えばVB.NETってパイプ使える?)

285:デフォルトの名無しさん
04/07/28 00:49
標準入出力とのやりとりならできる。

286:デフォルトの名無しさん
04/07/28 01:10
>>285
そうですか。できれば方法も教えてもらえると助かるのですが。
「~~というクラスを使え」とか・・・

287:デフォルトの名無しさん
04/07/28 01:11
ヘルプで検索すれば出ると思うが…
ProcessクラスとかProcessStartInfoとか参照。

288:デフォルトの名無しさん
04/07/28 01:13
>>287
ありがとうございます。
そこまで教えてもらえればあとはググるなりMSDN使うなりしてなんとかしてきます。


289:デフォルトの名無しさん
04/07/28 01:59
>>287
解決しました。ありがとうございます

290:デフォルトの名無しさん
04/07/28 02:30
>>281
スマン
遅くなりマスタ

表題って言うことは1枚目のレポートヘッダと解釈していいのかね?
仮にSection1にText1というテキストボックスがあったとして

Dim cr As New CrystalReport1
Dim t As CrystalDecisions.CrystalReports.Engine.TextObject
t = CType(cr.Section1.ReportObjects.Item("Text1"), CrystalDecisions.CrystalReports.Engine.TextObject)
t.Text = "123"


cr.ExportToDisk(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat, "c:\123.pdf") '結果を出力

パラメータフィールドを使う方法とか色々やり方はあると思うので
自分はまるまるXMLから取得する方法でやってます




291:デフォルトの名無しさん
04/07/28 13:44
FlexGrid.Netを使ってるのですが
ある日を境に
デザイン時は最新バージョン
実行時は古いバージョン
をロードしてしまいます

VSの再インストールやFlexGridの最インスコなどいろいろやってみたんですが・・・

binフォルダ内と標準インストール先のフォルダには最新バージョンの 2.1.20032.135 が
実行時にはなぜか一つ前の 2.1.20032.124 が読み込まれています

292:デフォルトの名無しさん
04/07/28 14:21
Windowsアプリケーションから、
任意のsqlスクリプト(ファイル名.sql)を読み込んで
実行させることって出来ますか?

293:291
04/07/28 16:05
C:\WINNT\ASSEMBLY
の情報を書き換えたらうまくいきました

294:デフォルトの名無しさん
04/07/29 17:20
VB.NETで他フォームを参照するにはどうすればよいのでしょうか?
例えば、form1とform2があったとき、
form1からform2のコントロールを直接取得したいのです。

BorlandC++のときは、実行中のフォームのインスタンスを参照できた
のですが、VB.NETではそれが見あたりません・・・
よいアイディアがありましたら教えて頂けると
大変助かります。よろしくお願いいたします。

295:デフォルトの名無しさん
04/07/29 17:47
>>294
Form1の中に、
Form2 form2 = new Form2();
form2.hoge = "Hage";
って感じでどうですか?

296:デフォルトの名無しさん
04/07/29 17:49
上のほうでVB.NETでブラウザ作ってた人はどうなったんだろう?
なにげに気になってたんだがw

297:デフォルトの名無しさん
04/07/29 18:22
どこかにVB.NET(2003)を使って、シリアルポートからデータを受信して表示するプログラムの
ソースが公開されていませんでしょうか?

CreateFile とか ReadFile とかのAPIを使うっていうのはわかっているのですが、
公開されているのを見ると
Public Declare Function WriteFile Lib "kernel32" Alias "WriteFile" _
(ByVal hFile As Integer, lpBuffer As Any, _
とか書いてあって(As AnyはVB.NETでは使えない)
そのままだと使えないんです。

VB6のMSCommを使えばいいのかもしれませんが、APIを使いたいのです。



298:デフォルトの名無しさん
04/07/29 18:27
>>297
なぜVBにこだわる?


299:デフォルトの名無しさん
04/07/29 18:31
>>298
つっか、APIたたくならC#でもVBでもC++でも答えは似たようなもんでしょ。
あと、VBが一番安いんだっけか?


300:デフォルトの名無しさん
04/07/29 18:43
>>297
その程度のことでいちいち人に聞いてるレベルじゃ、
まず間違いなくファイルI/O系のAPI使いこなすなんて無理だと思う。

ほかのスレでこんなの見つけたけど、これなんか使えるのでは?
URLリンク(www.gotdotnet.com)

>>294
久々に「別フォームの……」キター

301:デフォルトの名無しさん
04/07/29 18:45
As Any って As Object で代用できなかったっけ?

302:デフォルトの名無しさん
04/07/29 19:54
どこかにVB.netのゲームサンプルがある場所ってありますでしょうか?

303:294
04/07/30 00:48
>>295
ありがとうございます。
でもそれだと実行中のフォームじゃなくなってしまうので
ダメなんですよね・・・


304:デフォルトの名無しさん
04/07/30 01:34
>>303
インスタンスの扱いが理解できてるなら、Form2のインスタンス作成時に
参照をとっておけばどうにでもなることくらい分かりそうなもんだが…

305:デフォルトの名無しさん
04/07/30 02:07
Form2ってどの段階で表示(生成)されるの?
もしかして別EXE?

306:デフォルトの名無しさん
04/07/31 00:04
>>302
難しいなぁ。どんなゲームがいいんだ?

307:デフォルトの名無しさん
04/07/31 03:51
フォームロードイヴェントのときにそのアプリのプロセスIDを取得するのはどうやるのでしょうか?

308:デフォルトの名無しさん
04/07/31 04:59
Velocityのようなテンプレートエンジンってないの?
フリーの。

309:デフォルトの名無しさん
04/07/31 08:47
>>307
フォームロードのときというのに深い意味があるのか?
ただ単にプロセスIDのとり方が分からんだけとか?

310:デフォルトの名無しさん
04/07/31 13:27
Math.Cos(90 / 180 * 3.1415) を実行すると
4.63267948799578E-05   という数値になります。
0または0に近い数値にしたいのですが、どうすればいいのでしょうか?
90の部分は0~360度の中で変動、0度=1、90度=0、180度=-1、270度=0という結果を出したいのですが・・。
同様にMath.Sinでも変な数値にorz

311:デフォルトの名無しさん
04/07/31 13:46
>>310
小数点以下3桁くらいで四捨五入しろ


312:デフォルトの名無しさん
04/07/31 13:48
>>310
π = 3.1415
としているのが原因

313:デフォルトの名無しさん
04/07/31 14:05
>>311-312
返答ありがとうございます。

311の通りにしたら数値が0になったので、桁数が多すぎると表示がおかしくなる・・・でいいのかな。

314:デフォルトの名無しさん
04/07/31 14:14
>>313
違う違う、有効数字の考え方を勉強して来なさい。

315:デフォルトの名無しさん
04/07/31 14:15
いや、むしろ10万桁ぐらいまで

316:デフォルトの名無しさん
04/07/31 14:20
もしかして
4.63267948799578E-05
の意味分かってないとか?

317:デフォルトの名無しさん
04/07/31 14:25
>>316
いや、それを変数に入れて計算したら、
4.63267948799578が数値として考えられたのか、ただの回転がとんでもないことにナターヨorz

318:デフォルトの名無しさん
04/07/31 14:25
つまり
π = 3.1415
のときに
0.0000463267948799578
ってことだから、
π = 3.141592653589793
くらいまで取ればもっと0に近づく


319:デフォルトの名無しさん
04/07/31 14:28
いや、浮動小数点数だから「変な数値」になることにはかわりないか?

320:デフォルトの名無しさん
04/07/31 15:19
Perlユーザーには基本を知らない人間が多いのは知ってるし
自分も最初はそうだったから人の事は言えないが、
実際にそういう場面に出くわすと疲れるな。

今、基本情報処理の試験受付してるぞ。
基礎を身につける意味で、受験&勉強してみたらどうだ?

321:デフォルトの名無しさん
04/07/31 15:29
すまん、スレ誤爆した。orz

322:デフォルトの名無しさん
04/07/31 19:35
>>308
ない

323:4.63267948799578E-05
04/07/31 22:05
スマソ、やっぱ根本的なプログラムミスですたorz

とりあえず立体モデルの回転をさせようと思っています。
URLリンク(member.nifty.ne.jp)
ここの3番までをしようと思っているんですが、2番目の『初期状態】は
Dim A()() as Double = {{1.0 .0.0, 0.0},{0.0, 1.0, 0.0},{0.0, 0.0, 1.0}}
でいいのでしょうか?
そのあとの『M = A×M』はVB.netで表すとどうなるのか、そもそも『M』の値が分かりません・・・。
分かる方がいれば教えてください。
(ちなみにゆとり教育云々で数学の教科書には回転行列のことなんてませぬorz)

324:デフォルトの名無しさん
04/07/31 22:41
それはプログラミングって言うより線型代数の問題じゃないのか

325:デフォルトの名無しさん
04/07/31 23:16
>>323
ちゃんと読んでないのでちょっと良くわからないけど,
3番の M は 2番で言う A のことではないかな?
M が機体の 前上右ベクトルなんだと思う.
なので,M の初期値は,2番での Aの初期値とかでいいでしょう.

M = A × M は,普通の3行3列の行列演算.
行列演算がわからないなら,自分で調べるか,
もう一度ここで泣くかしなさい.

326:4.63267948799578E-05
04/07/31 23:43
>>325
前者了解しますた。
一番肝心なのは後者のほうですね・・・検索しても分かりませんでした、分かる方助言をお願いしますorz
M[0][0]はA[0][0]とM[0][0]からM[2][2]をかけて足したもの?
もうさっぱりです(´-ω-`;)

327:デフォルトの名無しさん
04/07/31 23:52
3次元関連の入門書読め。
ゆとり教育って…行列の掛け算も載ってないの?
まあ、なんでも教科書に載ってると思う方が間違ってるともいえるが。

328:デフォルトの名無しさん
04/08/01 00:12
>>327
僕も指数表現とか行列演算は,プログラム作るために勉強したので,
326のいいきっかけになれば良いじゃん.
このホームページには冒頭に3D関係の本に載ってないと書いてあるが,
それでも,3DCGの基礎は知っとかんとこの先詰まるので,
>3次元関連の入門書読め。
には賛成.

>>326
これじゃだめ?
URLリンク(shigihara.hp.infoseek.co.jp)
URLリンク(www.matsusaka-u.ac.jp)

ただし,プログラムでやるときは,
T = A × M
M = T
みたいにやらないとだめだよ.

329:4.63267948799578E-05
04/08/01 00:17
>>327
DirectXの本が何冊かあるけど、どれも行列を使ったサンプルはなくSetRotation・・・。
DirectXはスレ違いだけどVBで作っているからcppのサンプルは使えないしでもうダメポ(つД`;)
それと2*2の行列の計算すら載ってませんでした。。

330:デフォルトの名無しさん
04/08/01 02:44
VBでエクセルをいろいろいじりたいんですが
参考になるサイトってありますか?

331:4.63267948799578E-05
04/08/01 02:50
>>330
URLリンク(www.bcap.co.jp)


・・・orz

332:4.63267948799578E-05
04/08/01 03:28
Microsoft® Visual Basic® アプリケーションでは、Direct3DX ユーティリティ ライブラリによって提供される D3DXMatrixRotationX 関数、D3DXMatrixRotationY 関数、および D3DXMatrixRotationZ 関数を使って回転行列を作成する。
ここまで分かったけど、そこの見えない谷に阻まれてまs orz

333:デフォルトの名無しさん
04/08/01 06:56
Rは登録商標だが、TMは何?

334:デフォルトの名無しさん
04/08/01 07:43
>>332
Direct3D で回転させるの? 自分で行列演算して回転させるの?
とくに実現方法にこだわらないなら,いろいろ調べてできそうなやつで
やれば良いんだけどね.
そもそも 3D→2D を Direct3D でやるか 自分で写像するか..
Direct3D のほうが速いと思うけど.

>>333
トレードマークでしょ.って,これは誤爆なのかな?

335:デフォルトの名無しさん
04/08/01 08:00
トレードマークって?

336:デフォルトの名無しさん
04/08/01 08:17
TM - Trade Mark 商標?
R - Registered (Trade Mark) 登録商標?


337:デフォルトの名無しさん
04/08/01 09:27
どっちがえらいの?

338:デフォルトの名無しさん
04/08/01 10:36
たぶん 登録商標 のほうがえろいと思うけど.
ここじゃなくて,法律関係の掲示板に行ったほうがいいと思うよ.

339:4.63267948799578E-05
04/08/01 14:04
結局使い方が分からない罠orz

>>334
方位・角度・ロールを正確に表示しつつ回転させると、やはり回転行列を使わないと・・・。
少しロールさせた状態で機首を上げると、角度と方位が変わるとともにロールもする。
この表現にもう一ヶ月近く悩まされてますorz

340:デフォルトの名無しさん
04/08/01 22:09
>>339
じゃ >>323 のホームページにある3番のJavaプログラムみたいなものが
VB でできればいいの?
それくらいなら協力できるかも.

341:4.63267948799578E-05
04/08/01 22:36
>>340
まったくもってその通りです、できる範囲でいいので協力お願いしますorz
数学板ではなぜか叩かれるし、ここでは反応が薄いし・・・回転行列は以前何かあったのかな・・・。


342:デフォルトの名無しさん
04/08/01 22:56
はっきり言って無理だと思われ。
他人に甘えてる態度が見え見え。
とても自分で努力しているようには見えない。
きっと数学板で叩かれてきたってのもそういう部分なんじゃないの?
基本を疎かにして上辺だけ習得しようって考えているなら、ずっと習得はできないよ。

343:4.63267948799578E-05
04/08/01 23:16
>>342
去年同じようなことをFlash板で言われますた。。
努力しろ!って言われても検索するところはしたし、
自分でこれかな?って思ったのは作って砕けてるしでどうしろと(;´Д`)
行列は学校で習っているものと思われているけど、最近は習わないところが多々あるので基本とか言わないでくださいorz

344:デフォルトの名無しさん
04/08/01 23:22
>343
その辺が根本から間違ってるんだって。
「どうしろと」じゃねーよ、自分で考えるんだよ。
学校でなんでもかんでも教えてもらえると思うな、自分で調べるんだよ。
なんでも誰かに教えてもらうと考えるな。
だから叩かれるんだよ。

345:4.63267948799578E-05
04/08/01 23:27
>>343
> 「どうしろと」じゃねーよ、自分で考えるんだよ。
> 学校でなんでもかんでも教えてもらえると思うな、自分で調べるんだよ。

> 努力しろ!って言われても検索するところはしたし、
> 自分でこれかな?って思ったのは作って砕けてるしでどうしろと(;´Д`)
頼むから飛ばして読まないでorz
てか釣りだったらスマソ

346:4.63267948799578E-05
04/08/01 23:28
こっちでも矛先間違えたorz

347:340
04/08/01 23:30
>>341
こんなのを作ってみた. 新しいプロジェクトにはっつけてみ.

Dim LocX As Double = 150
Dim LocY As Double = 0
Dim LocZ As Double = 100
Dim M(,) As Double = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
Dim Fx, Fy, Fz As Single ' 鼻先
Dim Bx, By, Bz As Single ' おしり
Dim Lx, Ly, Lz As Single ' 左翼端
Dim Rx, Ry, Rz As Single ' 右翼端
Dim Tx, Ty, Tz As Single ' 尾翼
Dim gr As Graphics = MyBase.CreateGraphics

If e.KeyChar = "f" Then ' 前進
LocX += 10 * M(2, 0) : LocY += 10 * M(2, 1) : LocZ += 10 * M(2, 2)
Else
Dim A(2, 2) As Double
Dim T(2, 2) As Double
If e.KeyChar = "r" Then ' 右を向く(ラダーというか自転)
Dim th As Double = 22.5 * Math.PI / 180
Dim R(,) As Double = {{Math.Cos(-th), 0, -Math.Sin(-th)}, {0, 1, 0}, {Math.Sin(-th), 0, Math.Cos(-th)}}
A = R
End If
If e.KeyChar = "u" Then ' 上を向く
Dim th As Double = 5 * Math.PI / 180
Dim R(,) As Double = {{1, 0, 0}, {0, Math.Cos(-th), Math.Sin(-th)}, {0, -Math.Sin(-th), Math.Cos(-th)}}
A = R
End If
つづく

348:340
04/08/01 23:30
T(0, 0) = A(0, 0) * M(0, 0) + A(0, 1) * M(1, 0) + A(0, 2) * M(2, 0)
T(0, 1) = A(0, 0) * M(0, 1) + A(0, 1) * M(1, 1) + A(0, 2) * M(2, 1)
T(0, 2) = A(0, 0) * M(0, 2) + A(0, 1) * M(1, 2) + A(0, 2) * M(2, 2)
T(1, 0) = A(1, 0) * M(0, 0) + A(1, 1) * M(1, 0) + A(1, 2) * M(2, 0)
T(1, 1) = A(1, 0) * M(0, 1) + A(1, 1) * M(1, 1) + A(1, 2) * M(2, 1)
T(1, 2) = A(1, 0) * M(0, 2) + A(1, 1) * M(1, 2) + A(1, 2) * M(2, 2)
T(2, 0) = A(2, 0) * M(0, 0) + A(2, 1) * M(1, 0) + A(2, 2) * M(2, 0)
T(2, 1) = A(2, 0) * M(0, 1) + A(2, 1) * M(1, 1) + A(2, 2) * M(2, 1)
T(2, 2) = A(2, 0) * M(0, 2) + A(2, 1) * M(1, 2) + A(2, 2) * M(2, 2)
M = T
End If

Fx = LocX + 30 * M(2, 0) : Fy = LocY + 30 * M(2, 1) : Fz = LocZ + 30 * M(2, 2)
Bx = -10 * M(2, 0) : By = -10 * M(2, 1) : Bz = -10 * M(2, 2)
Lx = LocX - 20 * M(0, 0) + Bx : Ly = LocY - 20 * M(0, 1) + By : Lz = LocZ - 20 * M(0, 2) + Bz
Rx = LocX + 20 * M(0, 0) + Bx : Ry = LocY + 20 * M(0, 1) + By : Rz = LocZ + 20 * M(0, 2) + Bz
Tx = LocX + 10 * M(1, 0) + Bx : Ty = LocY + 10 * M(1, 1) + By : Tz = LocZ + 10 * M(1, 2) + Bz
Bx += LocX : By += LocY : Bz += LocZ
gr.Clear(MyBase.BackColor)
gr.DrawLine(Pens.Black, Fx, Fz, Bx, Bz)
gr.DrawLine(Pens.Black, Fx, Fz, Rx, Rz)
gr.DrawLine(Pens.Black, Fx, Fz, Lx, Lz)
gr.DrawLine(Pens.Black, Rx, Rz, Lx, Lz)
gr.DrawLine(Pens.Blue, Tx, Tz, Bx, Bz)
gr.DrawLine(Pens.Blue, Tx, Tz, CSng(LocX), CSng(LocZ))
End Sub

349:4.63267948799578E-05
04/08/01 23:33
本当にありがとうございますorz
後ほど結果を書きますね(知らないのがいっぱい(;´Д`))

350:デフォルトの名無しさん
04/08/01 23:34
>345
ちゃんと読んでるよ。
じゃあ聞くが、検索以外には何をした?
書籍を調べたか?
図書館に行ったか?
検索をしたのは1ヶ月で何回だ?

これかな?と思って作ったものはどこがなぜダメなのか考えたのか?
それに対して色々と検証はしてみたのか?
検証をしたならその結果をまとめてあるか?

基本を学べ。
人生の基本を。
調べ方の基本を。

351:340
04/08/01 23:37
>>341
>数学板ではなぜか叩かれるし、

叩かれて当然なくらい簡単なことを聞いてるからだと思うよ.
まぁ,ここから勉強すればいいじゃん.

で,上のプログラムだが,行列の掛け算は展開して書いてある.
もう間違えようがないよな.なっ?

キーボードの f で前進, r で右向く, u で上向く.
左向く,下向く,ロール は自分でトライして.

352:4.63267948799578E-05
04/08/01 23:41
>>350
本は3冊買いますた、プログラムをやってる先生にも聞きました(でも昔やったが忘れた、とorz)。
検索はほぼ毎日してます、ダメな部分を変えていったら地獄の一丁目にたどり着きますた。。
一度書いてやってから組んでいるからノートの半分以上は埋まったし・・・基本と言われることはしてます。
受験勉強せずになにしてんだか(;´Д`)

353:340
04/08/01 23:46
>>349

ちょっとバグってた.
予定してないキーを押すと機体が消える.
とりあえず↓のようにしとけば回避できる.

× Dim A(2, 2) As Double
○ Dim A(,) As Double = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}


354:4.63267948799578E-05
04/08/01 23:51
>>340
改めてありがとうございました。
これこそ基本だと言われることなのですが、
指定されたキー以外を押すと止まってしまう(そのあと何を押しても動かない)のはなぜなんでしょうか。
自分はselect case ~でやっているので他のキーを押しても何も起こらないだけなのですが。


355:4.63267948799578E-05
04/08/01 23:52
>>353
って先に直してくれてましたね、度々ありがとうございます。

356:デフォルトの名無しさん
04/08/01 23:52
VB.NETでaspxを書くときは

サーバープログラムとHTML部分のどちらをうえに書くのがおすすめですか?

<script runat=server>
</script>

逆にしてもいいけどどちらがファイルをWindowsメモ帳で編集するときに楽か

<html>
</html>

357:340
04/08/02 00:01
>>355
実は右翼端と左翼端の座標も逆みたい.
想定座標系の裏返しに表示されてる.
ちゅーことは,右回転しているようで実は左回転してた.
よく検証せずに出してすまんね.

358:4.63267948799578E-05
04/08/02 00:07
円周率はMath.PIでokだったのか・・・>>312のはこのことを言ってたのかorz

359:デフォルトの名無しさん
04/08/02 00:08
>>352
…お前は多分基本の意味を勘違いしてるだろ。
分からない事を基礎となってる部分から一つ一つ解決していけ。
まず行列の計算が分からない、理解できないんなら、
行列について勉強しろ。
それが出来たら3D関連の基礎的な本やサイトを見れば、
行列と言う物が3Dでどのように利用されるのか分かる。
プログラミングはその上で行う物だ。

お前はダメなところを変えていったというが、適当に式を変えてみたとか、
そんなんだろ?
なぜおかしいかを論理的に考えて間違ってる場所を探したか?
なんとなく適当に買えながら動かしてちゃんと動くのを待つ
ではいつまでたってもちゃんと動かないぞ。

360:340
04/08/02 00:11
2度目の修正.

"r"押したときの R(,) の値
Dim R(,) As Double = {{Math.Cos(-th), 0, Math.Sin(-th)}, {0, 1, 0}, {-Math.Sin(-th), 0, Math.Cos(-th)}}

と,表示のとこ.
gr.DrawLine(Pens.Black, Fz, Fx, Bz, Bx)
gr.DrawLine(Pens.Brown, Fz, Fx, Rz, Rx)
gr.DrawLine(Pens.Black, Fz, Fx, Lz, Lx)
gr.DrawLine(Pens.Black, Rz, Rx, Lz, Lx)
gr.DrawLine(Pens.Blue, Tz, Tx, Bz, Bx)
gr.DrawLine(Pens.Blue, Tz, Tx, CSng(LocZ), CSng(LocX))
わかりやすいように右翼を茶色にしてみた.

内部では,x-z が水平でy軸が上になってる.
表示は,手抜きで,x-z 平面を グラフィクスの y-x にそのまま表示してる.

361:デフォルトの名無しさん
04/08/02 00:11
>そんなんだろ?
ああっと、勝手に決め付けてるようで悪いが、
お前の言動を見てるとそういう匂いがしたんだ。

362:359=361
04/08/02 00:13
あ、進めてるところに水をさす気はないので続けてくれ。

363:340
04/08/02 00:31
>>362
はい.
あなたの言うこともわかるのですが,この辺にしといてあげましょうよ.
これからいろいろ学んで立派になってくれることを祈りつつ.

で,ぼくはもう眠いので,ロールのところを書いて寝ます.

If e.KeyChar = "p" Then ' 右ロール
Dim th As Double = 10 * Math.PI / 180
Dim R(,) As Double = {{Math.Cos(-th), Math.Sin(-th), 0}, {-Math.Sin(-th), Math.Cos(-th), 0}, {0, 0, 1}}
A = R
End If

おやすみなさい.

364:4.63267948799578E-05
04/08/02 00:53
>>340
色々手直し・追加ありがとうございます。
明日(今日)早いので帰ってきたらじっくり勉強させてもらいます。

>>361
分かってから振り返れば『そんなんだろ?』というレベルかもしれませんが、
検索するべき単語もハッキリ分からず模索している段階からみればそんな一言で片付けれるものじゃないっすorz
回転はおかしいけど悩みながら進行方向に動かしたり、直線だけどミサイルを飛ばしたりはできたんだけど・・・。
ほんと回転だけは悩まされましたorz

365:デフォルトの名無しさん
04/08/02 01:38
2次元の回転行列A=
{ cosΘ , -sinΘ }
{ sinΘ , cosΘ }

これを3次元に展開すればX軸回転、Y軸回転、Z軸回転が作れる。
例えばX軸回転(YZ平面回転)の場合、B=
{ 1 , 0 , 0 }
{ 0 , cosΘ , -sinΘ }
{ 0 , sinΘ , cosΘ }
となる。

それぞれ式に直すと
x'=x
y'=y*cos(r)-z*sin(r)
z'=y*sin(r)+z*cos(r)
となる。

Y軸回転、Z軸回転は自分で考えてみそ。

366:デフォルトの名無しさん
04/08/02 06:11
>364
>検索するべき単語もハッキリ分からず模索している段階からみれば
そこだよ。
基本がわかってないからそうなる。

あと、他人の意見を素直に受け入れられないなら、人に聞いても何も得られないよ。

367:デフォルトの名無しさん
04/08/02 17:46
すいません。質問させていただきますー

Console.WriteLine(result) をつかって、resultの中身を確認したいんですが、
どうやって確認したらいいんでしょうか。Msgbox()のようにダイアログが出る
わけでもないようなんですが。。。よろしくお願いします。


368:デフォルトの名無しさん
04/08/02 18:12
出力 ウインドウを確認

369:367
04/08/02 18:34
>>368
お答えありがとうございます! なにやら超基本的なことを聞いてしまった
みたいですいません。助かりました。

370:デフォルトの名無しさん
04/08/02 22:19
何となく、ConsoleとDebugとかTraceを混同しているような気がしないでもない。

371:4.63267948799578E-05
04/08/02 22:27
>>365
ありがとうございます。
野暮用(宿題)が増えたのでこっちに集中することはできませんが、
>>340さんのおかげで突破口ができたのでこれや調べたのを参照しつつ早く理解できるようにがんばります。

>>366
全く知らない範囲を基本と言わないでとorz
言われたことは既にやってるし、調べて試すと言う基本的なことも想像されてる以上にやってます。
ただ論理的っていう部分だけは除きますが・・・
(・・・分からない部分が論理的に考えることができたら、そりゃ理解できてるじゃんとか突っ込みたくなる(;´Д`))

大変申し訳ないのですが、レスのたびにどっかの文で人の努力を簡単に踏みにじってる印象を受けたので反論しています。
質問側で甘えてしまっている立場でほんと申し訳ないのですが、
> あと、他人の意見を素直に受け入れられないなら、人に聞いても何も得られないよ。
を返すとしたら
・他人を理解していなければ、その人が意見を素直に受け入れることは無理
全部を理解しろと言うわけではないけど、この大変さだけでも理解して欲しかったですorz
大変な中で叩かれると相当きつい。。
立場を弁えてないレス失礼しました。

372:デフォルトの名無しさん
04/08/02 22:32
>371
>>359,>>361に同意
何が基本かもわからないのは物事の本質を論理的に考えられないから

373:デフォルトの名無しさん
04/08/02 22:34
×「分からない部分が論理的に考えることができたら」
○「自分が何を分かっていないかを論理的に考える」
この時点で間違いだらけ。

374:デフォルトの名無しさん
04/08/02 22:39
>・他人を理解していなければ、その人が意見を素直に受け入れることは無理
ここは2chだ。
理解するべきことは「誰の発言か」ではなく「どんな内容か」それだけだ。
他人を理解できないと意見を受け入れられないなら2chで聞く事自体が間違い。
匿名掲示板で名も素性も知らぬ他人を理解できると思っているならお前は大馬鹿。
目を覚ませ。
今から考えを改めれば5年後にはまともな人間になれるかもしれないぞ。

375:デフォルトの名無しさん
04/08/02 22:53
偉そうな事を言ったのは謝る。
どうもお前みたいな甘えた奴見てるとイライラするんだ。
社会に出る前に論理的思考を身につけとけ。
俺はお前を不幸にしたいわけじゃない。
お前の周囲の人間が不幸になってしまうのを憂いているだけだ。
論理的思考を身に付けろ。
そうすればほんの少しでもみんな幸せになれる。

376:デフォルトの名無しさん
04/08/03 08:42
社会に出て本当に必要なのは
論理的思考力なんかではなく、他人に優しくできる心である


と、言ってみる。

377:デフォルトの名無しさん
04/08/03 09:46
社会は大部分の論理的思考の足りない奴らで構成されている。
論理的に問題解決しようとする俺らのほうが ちょっとおかしい人間 なんだよ。

ところで Boolean型 って何のためにあるんだ?
いや、まじめなはなし。

378:デフォルトの名無しさん
04/08/03 09:55
イエス・ノーをはっきりさせたいアメリカ人のため

379:デフォルトの名無しさん
04/08/03 10:32
>>377
コンピーターの基本動作は何かを考える

380:デフォルトの名無しさん
04/08/03 10:45
>>379
コンピュータの基本動作は理解しているつもりだが。
いや、そう言う意味じゃなくて、昔の BASIC には
なかってでしょ。
CPUが特別に持っている型でもないし、
技術的に何の意味があるのかという ちょっとした疑問。

>>378 みたいな答えはまぁ、納得するしかないね。

381:デフォルトの名無しさん
04/08/03 11:00
>>380
CPUにはフラグレジスタがある。
昔のBASICでBoolean型がなかったのは、ON/OFFだけで
変数1個分のメモリ使うのはもったいなかったからじゃないかな。
数値のままならbit数分だけ使えるし。
まあ、文中で論理式という形ではあったと言えるかも。
X=X+(K$="4")-(K$="6")

この話題は、こっちのスレのほうがよかったか。
MicrosoftBASIC総合談話室
スレリンク(tech板)

382:デフォルトの名無しさん
04/08/03 15:13
例えばaという通信の受信オブジェクトとF1、F2、F3の3つのフォームがあります。

受信したデータの処理で、3つのフォームそれぞれにaを置けば全く問題は無いのですが、
aを1つだけにして、受信イベント時に受信データを見て、
それぞれのフォームに振り分けたいとしたら、
どんな方法が一般的なのでしょうか?

383:デフォルトの名無しさん
04/08/03 16:15
>>382
普通にイベントを起こせばいいんじゃない?

384:デフォルトの名無しさん
04/08/03 17:35
前々から気になってたことなんですが
新規にフォームモジュールを作成するときに
Option Explicit On などを自動的に付加することって出来ますか?
プロジェクトのプロパティではOnになってるんですが
反映されないんです・・・


385:デフォルトの名無しさん
04/08/03 19:03
>>384
Option Explicit On って変数宣言の必要になるやつだよね。
ぼくは、普通に常に On になってるけど。
ツールのオプションのプロジェクトのとこだよね? ふしぎー。

386:デフォルトの名無しさん
04/08/03 19:17
>>381
>CPUにはフラグレジスタがある。
まぁ、確かに。 レジスタの退避命令使えば一応メモリ上にも置けるしね。

>まあ、文中で論理式という形ではあったと言えるかも。
んと、それは論理演算子のことで、Boolean型ではないですね。
論理演算子の演算結果が、昔は 整数型 だったのが
VB では Boolean型 になってる。

>この話題は、こっちのスレのほうがよかったか。
>MicrosoftBASIC総合談話室
あっ、ごめんごめん。
みんな暇そうだったから、疑問に思ってたことを言ってみただけ。
(えっ? 暇じゃないって? もっと ごめんごめん。)

387:デフォルトの名無しさん
04/08/03 19:27
>377
規格統一じゃない?
プログラマによって、TRUEを1とするか-1とするか分かれたりするし。

388:デフォルトの名無しさん
04/08/03 22:56
>>386
>んと、それは論理演算子のことで、
間違えた。「比較演算子」だった。

>>387
BASICによって、比較演算の結果が 1 のやつと -1 のやつが
あったからね。 C言語だと 1 だね。

そろそろ 次の相談者登場の予感。

389:デフォルトの名無しさん
04/08/03 23:55
次の相談です。
ちょと過去ログにみつからなかったんですが、バルーンチップって
どうやって出したらいいんでしょうか。
ステータスバーのところに「バックグラウンド処理が終わりました」
みたいなのを吹き出しで表示したいので、だから
ツールチップみたいにオートで出る奴じゃなくて、任意のタイミングで
任意の場所に出せるツールチップが欲しいのです。
InputMan.netは「バルーンチップ付きコントロール」はあるけど
バルーンチップ単独のコントロールはなさそうだし。

昔は論理式の「真が-1」を利用して、テンキー移動の処理を
K$=INKEY$
X=X-(K$="4")*(X>0)+(K$="6")*(X<39)
みたいに1行で書いたりしたな。久しぶりに書いてみたから上のは
合ってるかどうか知らないけど。

390:デフォルトの名無しさん
04/08/03 23:55
ただ単にあいまい性をなくして厳密にするためのものでしょ。
コンピュータではなく人間にとって分かりやすくするためのもの。
バグを出しにくくするためというのも含んでる。

391:デフォルトの名無しさん
04/08/04 00:21
>>385
多分>>384は設定の意味を勘違いしてるだけと思われ。
プロジェクトの設定は、ソースに明示してないときのデフォルトを設定するもので、
ソースに自動出力させるものではない。

392:384
04/08/04 01:26
>>385>>391
ありがとうございます
VB6やOfficeのVBAのように行頭に追加されるものだと思ってました<m(__)m>

393:デフォルトの名無しさん
04/08/04 16:25
>>389
>ステータスバーのところに「バックグラウンド処理が終わりました」
>みたいなのを吹き出しで表示したいので、

バルーンチップって使ったことがないから、今ヘルプとか
見たけど良くわからん。
ぼくなら、メッセージを表示して [OK] ボタンを押すか
時間がくると自分で .Close するフォームを作っちゃうけど、
そう言うのじゃだめかな?

394:デフォルトの名無しさん
04/08/04 17:47
>>389
バルーンのようなフォームを作ってみましたが、
コードはともかくデザインもあるし、どうやって渡せばいいものか。

395:デフォルトの名無しさん
04/08/04 18:26
VB.NET2003 + ADO.NETで初歩的質問です。

実行時のパスにおいてあるMDB(Access2000)に接続したいんですけど
ウィザード系使うと接続文字列が固定になっちゃいますよね

サーバーで動いてるような大きなDBならまだいいけど
環境変わったりDBのパスが変わるような、要は接続先を実行時に決定するような仕組みをつくるには
もうクラスの宣言から全てコードで記述するしかないっつーか、それが基本なんでしょうか?
DB関係のGUIは一切放棄でつか?

ADOに比べてものすごい多くのコード書かなきゃいけないんですけど・・・
めんどくさい・・・

なんかよい省力化方法ってありますか?

396:デフォルトの名無しさん
04/08/04 20:48
>>395
接続文字列だけ書き換えればいいじゃん


397:395
04/08/04 21:04
>>396
Connectionオブジェクト以下につながる下層オブジェクト(AdaptorとかDatasetとかDatagridとか)は
フォームの初期化イベント内で”つながり”が設定されているらしく
LoadイベントでConnectionの接続文字列を書き換えると、その後エラーで止まってしまいます。
うまいことやる方法はあるんでしょうか・・・
”つながり”の初期化(Refresh?)の仕方とかあったら教えて下さいませm(_ _)m

398:デフォルトの名無しさん
04/08/04 21:16
それって「フォーム デザイナで生成されたコード」を書き換えにいってないか?


399:395
04/08/04 21:58
いやいやいやw
さすがにそこまでおまぬけさんじゃないです('A`)

フォームのLoadイベントで接続文字列を書き換えた後(初期値はウィザードで作った値になっています)、
しなきゃいけない処理とか、こうすれば下層オブジェクトまでの”つながり”に反映できるってのがあればご教示下さい~

400:新人
04/08/04 22:21
あの、すみません。
現在社会人一年目のペーペーで、研修を終えてOJTに入ったばかりです。
環境はVB.net + Javascriptというものらしいです。(まだよくわかってません)

そこで与えられた作業なのですが、現在、
ボタンを押すとテーブルに一行を追加する、という処理で詰まっています。

<script type="text/javascript">
<!--
function add_row() {
table = document.getElementById('tab1');
new_row = table.insertRow(table.rows.length);
new_row.insertCell(0).appendChild(document.createTextNode(''));
new_row.insertCell(1).appendChild(document.createTextNode('b'));
new_row.insertCell(2).appendChild(document.createTextNode('c'));
new_row.insertCell(3).appendChild(document.createTextNode('d'));
new_row.insertCell(4).appendChild(document.createTextNode('e'));
new_row.insertCell(5).appendChild(document.createTextNode('f'));
new_row.insertCell(6).appendChild(document.createTextNode('g'));
}
// -->
</script>

という感じで書いて、行を追加するのですが、
createTextNode('')
のままでは、ただ文字列を表示するだけなんです。
これをテキストボックスにするやり方が、もうずっと考えているんですけど、
どうしても分かりません。
周りに聞ける人間が全然いなくて、メソッドの使い方もまだ全然です。
どうか、どなたか救っていただけませんでしょうか?

401:デフォルトの名無しさん
04/08/04 22:28
>>399
その後のエラーとやらの内容をちゃんと書け。
でも簡単にやる場合は普通はダイナミックプロパティを使うと思うが。

402:デフォルトの名無しさん
04/08/05 03:51
学校でVB6.0を使っているのですが
課題を家でやるためにspoke premiumを買っても問題ないでしょうか?

403:デフォルトの名無しさん
04/08/05 08:52
>>402
だめ
VB6スレにいけ

404:デフォルトの名無しさん
04/08/05 10:11
>>400
周りに聞けるものがいない会社ってどんな会社だよw

405:395
04/08/05 10:45
解決しました・・・・orz
りっぱなおまぬけさんですた・・・・orz

というか、Loadイベントで接続文字列書き換えるだけで下層も勝手に追随してくれるんですねー
リフレッシュも何もいらないとは、便利というかブラックボックスというか・・・

結局昨日はなんでエラーになったかというと
ソースと同じパスにmdb置いてたせいだったんでした orz
VB.NETはexeがソース直下のbinフォルダにできるんでした・・・
VB6に慣れすぎてます(涙
お答えくださった方、ごめんなさいでした

>>401
ダイナミックプロパティは”実行時のパス”を設定できないのでこの場合使えませんでした。
でもoracleとかの固定DBには有効な手段ですね!サンクスです。

406:デフォルトの名無しさん
04/08/05 14:06
WebBrowserで新しいウィンドウを開かせても親ウィンドウを
閉じたら子ウィンドウも閉じてしまう現象を解決する方法は?
6.0なら何も指定しなくてもいけたんだが…。

With New Form1
.WebBrowser1.RegisterAsBrowser = True
e.ppDisp = .WebBrowser1.Application
.Visible = True
End With

407:デフォルトの名無しさん
04/08/05 14:45
DataGridで特定の列だけセルにフォーカスを受けないようにする方法はないでしょうか?
Tabキーを押していくとその列だけとばされるようなイメージで。



408:デフォルトの名無しさん
04/08/05 18:14
今、VB.net 2002を使用していますが
2003にアップするとどのような魅力がありますか?

どうせアップするならVIsual Studio.net 2003 Professionalの
ステップアップグレード買おうかと迷っとります。

けど2005もベータ版が発表されましたしもう少し様子見た方が良いですかね?


409:デフォルトの名無しさん
04/08/05 22:52
Visual Studio .NET theSpoke Premium Version 2003
って、ラーニングエディションみたいなもんですか?

410:409
04/08/05 22:55
すいません、スレ違いでした
逝ってきます・・・

411:デフォルトの名無しさん
04/08/06 07:02
>>407
Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
    ~
End Sub
で該当の列だったら
DataGrid1.CurrentCell = New DataGridCell(RowNumber, 次のColumnNumber)

412:407
04/08/06 08:59
>>411
早速教えていただきありがとうございます。
これ最後の列だったりするときは勝手に次の行に行きますかね?
ってとりあえず試してみます。
助かりました。

413:407
04/08/06 09:53
うまく行きそうです。

質問続きで申し訳ないのですがDataGridを継承させてコントロール(myDataGrid)を作っているのですが
myDataGrid.TableStyle.Addメソッドが呼ばれたことをmyDataGrid側で知る方法はないでしょうか?

414:デフォルトの名無しさん
04/08/06 14:28
数字を漢字にしてくれる関数はなんでしょうか?

Ary(1)="一"
Ary(2)="二"
Ary(3)="三"
のように自作で数字漢字変換するしかないのでしょうか


415:デフォルトの名無しさん
04/08/06 14:37
>>414
そんな関数がライブラリで用意されてると期待すること自体が不思議。

416:デフォルトの名無しさん
04/08/06 15:17
>>414

ChangeNumericToJapaneseNumericChar()

417:デフォルトの名無しさん
04/08/06 15:34
>>414
漢字コードは順番に並んでるんだから、変換テーブルは必要ないと思うけど。

418:414
04/08/06 15:47
みなさま了解です。

419:デフォルトの名無しさん
04/08/06 16:28
VB6で「アイコンなし、×ボタンだけなんだけどサイズ変更可能なダイアログ」
というのを実現するのに、BorderStyle=固定ダイアログ、Icon=なしにして、Form_Loadで
SetWindowLong WS_THICKFRAME して実現してますた。
これをVB.NETでもやりたいんですが、APIなしでできますか?それとも同じ方法が
ベストですか?
あとついでに、フォームの右下にサイズ変更ツマミ(斜線をドラッグできるやつ)って
任意に出せないですか?


420:デフォルトの名無しさん
04/08/06 21:06
>>419
書いてあること、フォームのプロパティウィンドウでいろいろ試すだけで
一分で全部できた。

正直、こういう人ってどういう根性してるのかねえ?不思議。
精神分析の対象だわホント。

421:デフォルトの名無しさん
04/08/06 21:20
>>420 うぜぇよ。消えな。

422:デフォルトの名無しさん
04/08/06 22:28
漢字を数字か。昔仕事でそんなコードを書いたな。
百五と百十五と百二十五とか腹立つんだよねぇ

423:デフォルトの名無しさん
04/08/06 23:48
>422
一、十、百、千、一万とかも嫌だね。

424:デフォルトの名無しさん
04/08/07 00:10
客が壱、弐、参も使いたいとかローマ数字Ⅰ、Ⅱ、Ⅲとかも使いたいとか言ってきたら大変だな

425:e
04/08/07 01:06
ADO.NETでデザイナを使わないで、プログラミングする方法の解説とか
ごぞんじないでしょうか。

webで検索してみても、こういう結構基本的なもので終わってるのが
多いもんで。。。
URLリンク(www.atmarkit.co.jp)


426:デフォルトの名無しさん
04/08/07 01:08
白黒2色のマスク画像みたいなやつの黒の部分から
Regionオブジェクトを作る方法ってないでしょうか?

427:DARK
04/08/07 01:32
NoCD化パッチ作りたいのですが…教えて下さいm(_ _)m


428:デフォルトの名無しさん
04/08/07 02:03
>>425
黄色いADO.NETの本とかは?
でかくて高いヤツ
まぁあれも基本しか書いてないけど


429:デフォルトの名無しさん
04/08/07 07:25
やっぱ標準モジュールがあると便利だね。
C#が嫌になってきた。

430:デフォルトの名無しさん
04/08/07 13:14
c#が嫌なのは同意するが(VBに比べると、可読性が悪くてイライラしてくる)
標準モジュールなんてイラネ。

読みにくいキャメル形式の命名法もイラネ。

431:ぷぷぷっ
04/08/07 17:11
.NET(2002 or 2003)で作成したアプリを動かしたときに、
そのアプリはどの.NET Frameworkのバージョン(1.0 or 1.1)で動いているか
把握することはできないんかいのぉ。。。
そのアプリのフッター部分に表示とかしたいのじゃが。

432:デフォルトの名無しさん
04/08/07 19:20
ちょっと違うが、VB.NETで作ったプログラムで、フォームに
そのプログラムをコンパイルした日時を埋め込みたいのですが
なんか方法ありますか?


433:デフォルトの名無しさん
04/08/07 22:58
標準モジュール…ってあんたw

434:419
04/08/08 02:31
>>420
出来なかったんですが、やり方教えてもらえませんか?


435:419
04/08/08 03:06
>>434
当たり前なので書き忘れましたが、SizableToolWindowはなしでお願いします。
あれはダイアログボックスではなくプロパティインスペクタを作るための
もので、タイトルバーの高さが異なるものなので。

436:419
04/08/08 03:12
>>435
あ、でもSizableToolWindowでプロパティをいじるだけでタイトルバーの
高さを通常のウィンドウと揃える方法があればそれでオーケーです。
連続カキコですみません。

437:デフォルトの名無しさん
04/08/08 14:16
自分でコントロール作った方が早くない?

438:デフォルトの名無しさん
04/08/08 21:52
>>435
重症だわこの人。。「当たり前なので書き忘れましたが、」だと。
なんで最近こういう「自分以外はみんなエスパー」と思ってるとしか思えない
病的な奴が多いんだろう。

420 :デフォルトの名無しさん :04/08/06 21:06
>>419
書いてあること、フォームのプロパティウィンドウでいろいろ試すだけで
一分で全部できた。

書いてあること、

書いてあること、

書いてあること、

439:デフォルトの名無しさん
04/08/08 21:54
>>438
自尊心を守るのに必死なんだよ。放っておいてやれ

440:デフォルトの名無しさん
04/08/08 23:52
変なヤツは放置しろよおまえら

441:デフォルトの名無しさん
04/08/09 02:19
>>432
.exe のタイムスタンプで代用じゃダメか?

442:デフォルトの名無しさん
04/08/09 13:22
>>441
あ、そうか。コロンブスの卵ですね。さんく


443:デフォルトの名無しさん
04/08/10 01:59
みなさ~ん。自分は今日からプログラミング始めようとしている高校生です。
なんかいろいろ調べるとVBやらVB.NETやらC++やらC#やらいろいろな言語があることを知りました。
難易度的にはVBが一番簡単らしくVB.NETはVBの進化で少し複雑になっているとか。
C++やC#は難しいとか。。
自分としてはVBを覚えその次にVB.NETんでもってC++やC#やろうかなって思っていたのですが
どうやらVBとC#はまったく関連性がないとか。。。
フランス語覚えたから中国語得意になるってわけでないのと同じですかね?
将来は本格的なプログラマになりたいので、やっぱりC言語からはじめてC#やC++を学んだ方が
よいのでしょうかね?

444:デフォルトの名無しさん
04/08/10 02:30
ここはVB.NETの技術的な質問回答をする場所なので
どの言語が自分に適してるかを答えることはできないと思う
プログラマー板の方に行った方が適切な回答が得られると思われ

445:デフォルトの名無しさん
04/08/10 04:39
>>444サンクス ペコ

446:デフォルトの名無しさん
04/08/10 09:48
私だけ?何年もVBに触っているのに、
いまだにTreeViewの使い方が分からない・・・


447:デフォルトの名無しさん
04/08/10 12:10
>>446
いや・・俺もこないだ初めて知った人なのだが、それは質問なのか?

448:デフォルトの名無しさん
04/08/10 19:34
質問です。

フォームに、ボタン2つと、グループボックスを配置します。ボタン2を
グループボックスに乗っけます。そして、

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If Me.GroupBox1.Enabled = True Then
Me.GroupBox1.Enabled = False
ElseIf Me.GroupBox1.Enabled = False Then
Me.GroupBox1.Enabled = True
End If

End Sub

とすると、グループボックスとボタン2をまとめて有効/無効を切り替え
出来るのですが、

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Button2.Enabled = False
End Sub

として、ボタン2をクリックしてボタン2を無効にすると、ボタン1をクリックしても
グループボックスとボタン2をまとめて有効/無効を切り替え出来なくなります。
何故でしょう(;´Д`)

449:最凶VB厨房
04/08/10 20:21
2箇所のEnd Subの前に
MessageBox.Show("Button2.Enabledは" & Button2.Enabled.ToString())
をつけてやっとーみ。

450:デフォルトの名無しさん
04/08/10 21:13
レスどうもです。
ひょっとしてEnabled = Falseになっているコントロールは、
グループボックスと連動してEnabled = Trueに出来ないのでしょうか?
そうならちょっと不便(;´Д`)

451:最凶VB厨房
04/08/10 21:18
ボタン2が有効か無効かは
この場合グループボックスとボタン2の論理積(And)となる。

つまりはグループボックスのEnabledを操作すればいいだけ。

452:デフォルトの名無しさん
04/08/10 21:42
>>450
もう解が得られたようだけど、
>ひょっとしてEnabled = Falseになっているコントロールは、
>グループボックスと連動してEnabled = Trueに出来ないのでしょうか?

もしそういう感じの仕様になっていると、そのうち
「グループボックスやフォームなどのコンテナに入っているコントロールは、
 必ずコンテナと連動してEnable = True になってしまうのでしょうか。
 そうならかなり不便」
ということになると思う。

453:450
04/08/10 22:10
グループボックス=ON  ボタン2=ON  ←真
グループボックス=OFF ボタン2=OFF ←真
グループボックス=ON  ボタン2=OFF ←偽
グループボックス=OFF ボタン2=ON  ←偽

弱い頭で考えますた。間違ってます?

454:最凶VB厨房
04/08/10 22:14
知らんかったら論理積で検索して確かめな。

455:デフォルトの名無しさん
04/08/10 22:20
>>450
ええと、
・ウィンドウ(フォーム)が Enable = False の場合、中のコントロールは (Enableの値に関わらず) 全て無効
・グループボックスが Enable = False の場合、中のコントロールは (Enableの値に関わらず) 全て無効
ってことですよ。コンテナ側が無効だと、中身は無効。

喪前の学校が休みのときは、どのクラスも休み。
喪前のクラスが休みのときには、元気な奴も病気の奴も皆休み。
学校もクラスも休みじゃないときには、病気 (Enable = False) の奴だけが休み

456:450
04/08/10 22:44
理解できました!
最凶VB厨房殿、デフォルトの名無しさん殿ありがとうでした(`・ω・´)

457:デフォルトの名無しさん
04/08/11 00:02
だれか突っ込んでやれよ。

>>450
>If Me.GroupBox1.Enabled = True Then
> Me.GroupBox1.Enabled = False
>ElseIf Me.GroupBox1.Enabled = False Then
> Me.GroupBox1.Enabled = True
>End If

このコードはあまりにひどいだろ。

Me.GroupBox1.Enabled = Not Me.GroupBox1.Enabled

か、せめて

If Me.GroupBox1.Enabled Then
Me.GroupBox1.Enabled = False
Else
Me.GroupBox1.Enabled = True
End If

だろ、普通。

458:デフォルトの名無しさん
04/08/11 02:23
>>457
スレ違いを承知で突っ込んでおくが、>>450の書き方が決して「良くない」
とは言えない場合もあるよ。

Boolean 型が何バイトか考えてごらん。VB.netでは2バイト(=8ビット)だ。
BOOL型が存在しないCなどでは
 #define BOOL char
 #define TRUE 0x01
 #define FALSE 0x00
とか書いてたりすることもある。こうなると
 BOOL HogeFlag=TRUE;
 if(HogeFlag==TRUE) wow(); // (1)
 if(HogeFlag) wow(); // (2)
と、(1)と(2)では挙動が同じでも違いが良くわからなかったりする。

大勢の人間が寄ってたかって複数の言語で開発するような現場の場合、
よほど速度チューニングが求められない限り、冗長でもいいから明示的に
誰でも解るように書くのが暗黙の了解だったりする。

とにかく、自分の主観だけで他人のコードを「あまりにひどい」などと
言うのは良くないよ。

459:458
04/08/11 02:24
2バイト=16Bitだ。。。_| ̄|○

460:デフォルトの名無しさん
04/08/11 11:02
>>458
なんかフォーカスがずれたお人だね。そういうの「為にする議論」っていうんだよ。

「冗長でもいいから明示的に誰でも解るように」という要件は、
<.NETでは>Booleanという型が存在しそれを利用することで必要十分に満たされている。
Booleanってそもそも何だと思ってるの?(ついでに、Boolean=ワード、ってのは旧VBの仕様)
違う道具(C)の作法をそのまま適用して何になる。

一般論をしてるだけだって?
特殊なケースでの冗長なコードの効用を過剰に一般化してるだけじゃん。
そういうの「馬鹿の一つ覚え」とか「羹に懲りて膾を吹く」って言う。

461:450
04/08/11 11:53
>>457
大変勉強になりました。ただ、あなたがプログラムに関して、
私以上に知識を有してる事は十分理解出来ますが、それを必要以上に
誇示したり、「あまりにひどい」「馬鹿の一つ覚え」「羹に懲りて膾を吹く」
と言う発言は、一社会人の会話として私には『冗長』に思えてなりません。

462:457
04/08/11 12:16
>>461
私の 「あまりにひどい」 発言に批判があるようで、反省。。
なかったことにしてくれ。私がわるかった。

私が一番気になったのは、ElseIf で 成立しかしない条件を
判定しているところなんですよ。
個人的には、2つ目の例のほうがわかりやすいと思ってる。
他の処理を足せるしね。

>>460 は 私じゃないので知りません。

463:457
04/08/11 12:37
>>458
>とにかく、自分の主観だけで他人のコードを「あまりにひどい」などと
>言うのは良くないよ。

そこは今反省中。
もちろん、(たぶん)意図通り正しく動くプログラムであることは
すばらしいことだと思ってます。
その範囲内での発言のつもりだったのですが、そんなことは
全然伝わるわけも無かったと反省中です。ごめんね。

じゃぁこうしよう。

If Me.GroupBox1.Enabled = True Then
Me.GroupBox1.Enabled = False
Else
Me.GroupBox1.Enabled = True
End If

これなら、私もそんなに気持ち悪くない。
って言うのも 主観 か、残念。

464:デフォルトの名無しさん
04/08/11 14:13
asp.netの質問ってここでもよいですか?

465:デフォルトの名無しさん
04/08/11 15:06
なぜか悪者にされているが>457は良い指摘だと思ったのは俺だけじゃないよな

466:デフォルトの名無しさん
04/08/11 15:16
if a = true then
b = false
else
b = true
end if

より

a = not b

のほうが断然いいよな。
値を反転してるって一目瞭然だし。

467:デフォルトの名無しさん
04/08/11 20:18
>458 の詭弁もあるが指摘自体はただしいだろ。
じっさい俺もひどいコードと思ったし。
>450 は教え方が悪いと言ってんじゃないの?

468:デフォルトの名無しさん
04/08/11 21:13
漏れなんかは VB (.Net) は、「動けば良し」的センスで使ってナンボ、みたいな先入観があるので、
457的突っ込みは思いつきもしなかった。まぁあれは確かに正論だし親切だと思うけど。
 ↑こう書くと荒れにくい。

 ↓こう書いてはいけない
>>457 どうせVBなんて厨坊言語なんだから、酷いコードでもちゃんと動きゃそれでいいんだよ。

469:デフォルトの名無しさん
04/08/11 23:21
マウスカーソルを乗せると浮き上がって、
押すと凹むツールバーのようなものってVBでは出来ないのでしょうか?
例えばLive2chのツールバーや、Winnyの「ノード情報」等で使われているものです。
C++やDelphiで作られているようですが・・



470:デフォルトの名無しさん
04/08/12 00:43
>>469
ToolBar.Appearance プロパティをFlatにすればできると思うけど・・・。

471:デフォルトの名無しさん
04/08/12 03:24
>>470
ありがとう、出来そうです。

472:デフォルトの名無しさん
04/08/12 16:21
>>468
このスレはそういうレベルなのか?
VBってバカにされがちだけど結構ちゃんとできてる。
醜いコードでもとりあえず動くものを作るのは重要だけど
それで終わらせるのも勿体無いと思う。
「こういう処理は こう書くときれい」とかも共有して行こうよ。

473:デフォルトの名無しさん
04/08/12 18:15
テキストボックスに商品の値段を入力したときに、数値に3桁区切りの","を付けたいのですが
入力したとたんに桁区切りをする方法というのはあるのでしょうか?

別のフォームで入力して、表示する際に桁区切りにするのは出来たのですが、入力したそのフ
ォームの中で桁区切りにする方法というのがどうしても判りません。

474:デフォルトの名無しさん
04/08/12 18:37
>>473
人間はエスパーじゃないことを忘れないようにしよう。
「入力したとたんに」とは具体的にどういうこと?
ひょっとして人に質問している自分自身が何がやりたいのか分ってないとか?

(3n+1)桁の数字のキーが押されたタイミングで、ということ?
あるいは、エンターキーが押されたタイミング?
それとも、他のコントロールにフォーカスが移ったとき?

一番最初のなら、そんな腐れUIは考え直すべきだと思う。
後の2つなら、単にそういうコード書くだけだと思うけど。

475:デフォルトの名無しさん
04/08/12 19:06
>>473
ひょっっっっとして、
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, \
       ByVal e As System.EventArgs) Handles TextBox1.TextChanged
というイベントメソッド名が解らん、とかそーいうハナシか?

476:デフォルトの名無しさん
04/08/12 19:14
>>466
b = not a


477:デフォルトの名無しさん
04/08/12 19:51
Vd:J/A>Dxqr-RJ"~{Ro*

478:コピペ
04/08/12 20:02
ファイル切り貼り処理を行うに当たって、既に同じ名前のファイルがあるとエラーになってしまいます。
その場合は上書きで処理したいのですが、どう書けばいいでしょうか?
現在以下のようなコードで切り貼り処理をしています。

'strOKU_FILE = 切取側ファイルパス
'strUKE_FILE = 貼付側ファイルパス
Set FsoFile = fso.GetFile(strOKU_FILE)
FsoFile.Move (strUKE_FILE)

479:デフォルトの名無しさん
04/08/12 21:05
>>478
そんなもんここにレスしている間に調べがつくだろ。
横着野郎に今日を生きる資格はない。
こういう奴の書くコードってどっかのサンプルのツギハギなんだろうなきっと。

まあ、ヒントだけだすと、そんなことにわざわざFSOなんぞ使うな、
VBネイティブの機能を調べろ、ってことだな。

480:デフォルトの名無しさん
04/08/12 21:38
>>479
あんた、やさしいな。

481:デフォルトの名無しさん
04/08/12 22:13
>>479
名前欄・・・

482:デフォルトの名無しさん
04/08/12 22:26
VBは確かに楽な言語だな。
VBで用意されているコンポーネントを使う分にはとても楽でいい。
ちょっと変な事を客から要求されるとかなり大変になるけど。

でも、VBに溺れたPGは最悪だな。
もうVB以外全然できない。
入門としてVBをやるのはいいが、そこからステップアップする気概が欲しいね。

483:デフォルトの名無しさん
04/08/12 23:02
>>473
電卓みたいに、入力できるのを最下桁に固定すると
簡単になるじょ。

484:デフォルトの名無しさん
04/08/12 23:03
>>482
.NET使ったこと無いだろ(w

485:デフォルトの名無しさん
04/08/12 23:07
>484
残念、逆。
.NETでVBに触れた。

486:デフォルトの名無しさん
04/08/12 23:08
>>482
>入門としてVBをやるのはいいが、そこからステップアップする気概が欲しいね。

C言語のほうが使いやすい奴がVBはじめるのはステップダウンですか?

487:デフォルトの名無しさん
04/08/12 23:13
>>485
そっか・・・
貴殿はVB6を見ると卒倒するんだろうな・・・


488:デフォルトの名無しさん
04/08/12 23:20
>486
そうは言わないよ。
VBだって優れた言語だ。
ただ、VBしかやっていないでいると、計算機の本質を考えずにプログラミングできてしまう。
それは>482で言った「ちょっと変な事」を実現するための想像力の欠如に繋がる。
結果として作られたレールの上しか走れないPGになる。
それはクリエイターとしては大きすぎる痛手だ。

>487
色んな言語やってるから大丈夫だと思う。
自分で設計するならオブジェクト指向なしに戻りたくはないが。

489:デフォルトの名無しさん
04/08/12 23:30
>>488
計算機の本質じゃなくて、Windowsプログラミングの本質でしょ。
何が本質かは主観の問題だろうけど、
SDKプログラミングだって「作られたレールの上」を走っていることに違いはない。

490:デフォルトの名無しさん
04/08/12 23:49
結局自慢話か( ´,_ゝ`)

491:デフォルトの名無しさん
04/08/12 23:51
「VBでアプリを作るのは非常に簡単。VBで『マトモな』アプリを組むのは非常に難しい」

VB4の頃からウチの会社に伝わっている格調高き名言でつ。
ドトネトになってからは更に加速したヨカン。

492:デフォルトの名無しさん
04/08/12 23:53
>>488
まあ、言ってる事は分かるんだけど、VB.NETに関しちゃ、
JavaでもC#でも似たようなもんじゃないかな。Cとかなら別だけど。
計算機の本質と言うか、単にプログラミングということ自体の理解が足りないかな。

ついでに…
最悪なのはVBしか出来ないプログラマではなくて、VBすらできないプログラマだ…
ってか、VB.NETが「ちゃんと」使えるなら大丈夫なんだけどね。

493:483
04/08/13 00:04
ひまだとVB議論のスレになるのだ。

>>473
こんな感じでいかがなものかな?
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim v As Decimal
If InStr("0123456789", e.KeyChar) > 0 Then
v = Val(TextBox1.Text.Replace(",", ""))
v = v * 10 + Val(e.KeyChar)
TextBox1.Text = Format(v, "#,##0")
TextBox1.SelectionStart = TextBox1.Text.Length
End If
e.Handled = True
End Sub

若干手抜きかも知れないのでみんなで直してくれい。

494:デフォルトの名無しさん
04/08/13 00:08
TextChangedだったかのイベントの方が良いと思うのだよ。

495:483
04/08/13 00:12
>>494
そうなの?
理由教えて。

496:デフォルトの名無しさん
04/08/13 00:25
あ、ちょっと勘違いしてたかも…
言いたかったのは、メニューからペーストした場合とか、
要はキー入力以外でも書き換えられる可能性はあるという意味だったんだが…

497:483
04/08/13 00:43
>>496
なるほどね。ペーストされちゃダメだわ。

でも言われて TextChanged バージョンも作ってみたけど結構めんどうそうだよ。

Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Dim c As Integer
Dim v As Decimal
c = TextBox2.SelectionStart
If c > 0 Then
If InStr("0123456789", TextBox2.Text.Substring(c - 1, 1)) = 0 Then
TextBox2.Text = TextBox2.Text.Replace(TextBox2.Text.Substring(c - 1, 1), "")
TextBox2.SelectionStart = c - 1
End If
End If
c = TextBox2.Text.Length - TextBox2.SelectionStart
v = Val(TextBox2.Text.Replace(",", ""))
TextBox2.Text = Format(v, "#,##0")
If TextBox2.Text.Length - c > 0 Then TextBox2.SelectionStart = TextBox2.Text.Length - c
End Sub

まだちょっとおかしい。

498:483
04/08/13 00:57
もっと簡単になったよ。

Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
Dim c As Integer
Dim a As Integer
Dim v As Decimal
c = TextBox3.Text.Length - TextBox3.SelectionStart
For a = 0 To TextBox3.Text.Length - 1
If InStr("0123456789", TextBox3.Text.Substring(a, 1)) > 0 Then
v = v * 10 + Val(TextBox3.Text.Substring(a, 1))
End If
Next
TextBox3.Text = Format(v, "#,##0")
If TextBox3.Text.Length - c > 0 Then TextBox3.SelectionStart = TextBox3.Text.Length - c
End Sub

こんなもんでいいのかな?

499:デフォルトの名無しさん
04/08/13 00:57
だからそもそもそんな糞みたいなUI採用するのが間違っとる。

まあそれは置くとしても入力制限するんだからそもそもペーストに反応しちゃまずい。
そして入力制限さえ出来れば、後の処理はParseしてToStringするだけ。
TextBox1.Text = Integer.Parse(TextBox1.Text).ToString("###,###,###,###,###,###")

500:483
04/08/13 01:19
>>499
1行で出来るよってこと?

そうだったのか、かっこ悪い漏れ orz
後は任せた。

501:デフォルトの名無しさん
04/08/13 08:42
>>486
自分もそのクチだけど、けっこう新しい発見があるので損はしないよ。

502:デフォルトの名無しさん
04/08/13 09:14
偉そうなこと言う奴に限ってxxx
499 < 498

503:デフォルトの名無しさん
04/08/13 17:12
>>502
まあおまえは何も出来ない無能なわけだが。

504:デフォルトの名無しさん
04/08/13 18:29
OSの作り方教えてください。

505:デフォルトの名無しさん
04/08/13 20:53
TabControlなのですが、ふと気付くとタブの順序が入れ替わって
しまっていることがありるのですが、戻す方法は無いでしょうか・・・

506:デフォルトの名無しさん
04/08/13 21:05
Tabつながりでふと思い出したこと

TABキーを押したときの順番をGUIで変更することってきる?(ACCESSみたいに)
.NET発表の際にその辺が強化されたって話を聞いてたんだけど


507:デフォルトの名無しさん
04/08/13 22:29
>>502
まぁほっといてやれ。
もともとの質問出した >>473 が好きなほうを選ぶよ。

508:デフォルトの名無しさん
04/08/13 22:45
>>505
デザイン時? 実行時?

デザイン時なら、TabPageコレクションエディタの [↑] [↓] ボタンで
順番は変えられるよ。

実行時なら、もう少し詳しく現象を報告してちょ。

509:デフォルトの名無しさん
04/08/13 22:46
>>506
旧VBって、できなかったの?

510:デフォルトの名無しさん
04/08/13 22:50
>>508 デザイン時なら、TabPageコレクションエディタの [↑] [↓] ボタンで
できました。ありがとうございます。

実行時に勝手に変わるということは無いと思うので、デザイン時だとは思うのですが
そのプロパティはいじってないし、ふと気付くと変わってることがある状態で気持ち
悪いです(しく

VB.NET(2002)

511:506
04/08/14 03:07
自己解決

表示のタブオーダーでできました

512:506
04/08/14 03:12
>>509
もしかしたら有るのかもしれないけど
一個一個オサルのごとく数値変えてました(w

513:デフォルトの名無しさん
04/08/14 16:15
VB.net 2003でWindowsコントロールライブラリの勉強をしています。
UserControl上にLabelとButtonを追加したユーザーコントロールに
新たなプロパティーを追加する場合について質問です。

<System.ComponentModel.Browsable(True)> _
Public Property tProp_Button() As Button
Get
Return Me.Button1
End Get
Set(ByVal Value As Button)
Me.Button1 = Value
End Set
End Property
Buttonをデザイン上で変更出来るようにする為に上記のコードを記述すると、
そのユーザーコントロールを貼り付けた別のプロジェクトのデザイン上では、変更した値が表示される(例えば.textに"hoge"とするとボタンに"hoge"と表示される)のですが、
そのプロジェクトを実行させた場合、デザイン上で変更した値が反映されません。

ただ、Buttion1の宣言をpublicにして、コードで変更した値は、実行時には正常に反映されます。
コントロール自体をデザイン上で変更出来る様にするにはどのようにすればよいのでしょうか?



514:デフォルトの名無しさん
04/08/14 16:23
なにがしたいのかさっぱり分からん。
デザイナ上でコントロール自身を変更するってどういうこと?
っていうかコントロール自身を入れ替えてどうするの?

515:デフォルトの名無しさん
04/08/14 19:42
>281さん、結果報告キボンヌ。

ぢつはおいらも、別フォームで入力したテキストの内容を、セクション1の
テキストオブジェクトに表示したくて、Googleで調べたらここに辿り着いた
っす。

で、そのテストに>290さんのをやってみました。

ビューワーを指定したFormを開くときに、>290さんのコードを実行している
んですが、ビルドエラーなどは出ないんですけど、Text1は空っぽのままっす。

表示したビューワーをリロードしても表示されませんです。

>281 さん、上手くいったなら、報告をながいます。

516:デフォルトの名無しさん
04/08/15 00:24
質問なのですが、下のリンク先にある、Visual Basic .NET 2003というものは、Visual Studioを使った時のようなエディタがついているのでしょうか?


URLリンク(www.microsoft.com)

兄が、仕事で使っているというVB.NETでは、関数の名前を入力した後、ピリオドをうつと各プロパティとか命令が表示されて、かつそれぞれのヘルプまで表示されると聞いたのですが、その機能がほしいのです。

517:デフォルトの名無しさん
04/08/15 00:37
>>514
それは君が無知で無恥だから。ユーザーコントロールって概念が理解できてないんだろ。
知らないなら黙ってろよ。
何をやりたいかは>>513の文章で理解可能。俺は解決法は知らないけど。

ま、でもデザインモードでの変更がコードに反映されてないだけだろうから
そんなに難しい問題じゃない気がするけど。
.NETではVB6みたいにウィザードがコード書いてくれないのか?

518:デフォルトの名無しさん
04/08/15 00:55
>>517
うーむ、俺が無知なら正直すまんかったんだが…
見たところユーザコントロールに既に貼り付けてあるボタンのインスタンスを
プロパティで入れ替えようとしてるんだよね?

ってかいてて今やりたいことが多分分かった…
普通その場合は、プロパティを読込専用にするだろ?
入れ替えできるようなプロパティを書いてるから勘違いしてたよ。

519:デフォルトの名無しさん
04/08/15 00:57
あと、VB.NETで貼り付けたコントロールの実体はプロパティなので、
普通はメンバをPublicにするだけでOK。
まあ、新たに追加してもいいことはいいんだけど…

520:デフォルトの名無しさん
04/08/15 01:00
って何度もすまん、これじゃデザイナでできないって言ってるのか…
まえに同じような事して単純に出来たような気がするんだけど…未確認。

生成されたコード上でのプロパティの設定順かな…?

521:デフォルトの名無しさん
04/08/15 01:15
>>516
「VB.NET単体でVS.NETと同じようなテキストエディタが用意されているのか?」
と言う質問ですか?
それなら答えはYesです


522:デフォルトの名無しさん
04/08/15 01:29
>>517
俺には>>513の意味はぱっと見て分からなかった。
誤解を招く表現がいくつかあるから、意味を取れなくても無知かどうかは分からんのじゃないの?
逆にやりたいことと>>513の書き込みを見て違和感も感じないなら、その方が無知の可能性あり。


523:513
04/08/15 10:12
すみません。難解な文章を書いてしまって・・・もう一度、書いてみますと
UserControl上にButton1を追加します。そして、Button1をデザイン上で設定出来るようにする為にプロパティを追加しました。(UserControlのコードを下記に記載)
そして、ビルドを行いUserControl1.dllを生成し、Windowsアプリケーションの別プロジェクトを立ち上げ、アイテムの追加と削除より、UserControl1.dllを追加します。
Form上にUserControl1を貼り付け、プロパティを見ると、tButtonが出来ています。
そのtButtonプロパティの値を変更(Textに"hoge"をセットする)とデザイン上では、Button1の表示が"hoge"となります。
この状態で、実行してみると、Textに"hoge"とセットしていたはずなのに、"hoge"と表示されず"Button1"と表示されます。
このように、プロパティで設定した値が、実行時には全く反映されません。
どのようにすれば良いのでしょうか?

>>519
Button1をPublicに変更して行って見ましたが、プロパティで設定した値は、デザイン上では
変わっているのですが、実行時には反映されませんでした。

Public Class UserControl1
Inherits System.Windows.Forms.UserControl

#Region " Windows フォーム デザイナで生成されたコード "

<System.ComponentModel.Browsable(True) _
, System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)> _
Public Property tButton() As Button
Get
Return Me.Button1
End Get
Set(ByVal Value As Button)
Me.Button1 = Value
End Set
End Property
End Class

524:516
04/08/15 12:51
>>521
ありがとうございます。

525:デフォルトの名無しさん
04/08/15 13:10
>>523
デザイナで生成されたコード内に、プロパティの変更コードは出てる?


526:デフォルトの名無しさん
04/08/15 15:33
エクスプローラの詳細表示のような、横に複数項目表示できるリストボックスって
VB.NET標準コントロールには無いの?

527:526
04/08/15 15:46
悪い。自己解決した。ListViewだったね

528:デフォルトの名無しさん
04/08/15 22:31
test

529:デフォルトの名無しさん
04/08/16 09:04
>513
どっかで見た質問だなぁ。
どこで見たんだろ……まぁいいや。

そんときは
>#Region " Windows フォーム デザイナで生成されたコード "
この中で初期化してた、ってオチだったよ。

530:デフォルトの名無しさん
04/08/16 09:35
>>513
そもそも、Button1のプロパティを全て公開する必要があるの?

ユーザーコントロールにカプセル化するんだから、
必要なプロパティのみを公開すべきじゃない?

Public Property ButtonText() As String
  Get
    Return Button1.Text
  End Get
  Set(ByVal Value As String)
    Button1.Text = Value
  End Set
End Property

他にも必要なら、
ButtonBackColor とか、
ButtonFont という風に追加すればいいのでは?

531:MSサンプルにバグ?
04/08/16 09:48
URLリンク(ja.gotdotnet.com)
リモート処理の概要 参照によってオブジェクトを渡すのサンプルを実行すると、
セキュリティ制限のため、型 System.Runtime.Remoting.ObjRef にアクセスできません。
というエラーがでます。
クライアント、リモート オブジェクト、およびリモート ホスト アセンブリを異なるディレクトリに置いてサンプル実行しています。
対策ご存知の方、教えてください。

532:自己解決
04/08/16 18:43
>>531自己解決。お騒がせ↓
URLリンク(www.microsoft.com)

533:513
04/08/16 23:08
>>529
確かに
#Region " Windows フォーム デザイナで生成されたコード "
の中は、デフォルトのままです。具体的には、どのように修正すれば宜しいのでしょうか?

>>530
確かに、通常は必要と思われるプロパティのみ公開するのですが、
ボタンコントロールなどは、予めどれが必要と言われると、ほぼ全部使う可能性があると思われます。
その場合、数十にもなるプロパティを記述していくのは・・・という事と、
勉強も兼ねて、コントロール自体のプロパティを全て公開するにはどうするのだろうと、疑問に思い
質問した次第です。


534:473
04/08/17 14:52
483さんの方法でやってみたらうまく行きました。ありがとうございます。

535:デフォルトの名無しさん
04/08/19 17:03
APIを使いたいんですが
関数の形は
void __stdcall fncSub(struct Info *p);
って形になっていて
Public Declare Sub fncSub Lib "HOGE.DLL" (ByRef p As Info)
という風に宣言して
fncSub(p)
というように呼び出したんですが、
「'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。」

て出るんです。
どのようにすれば正しく呼び出せるのでしょうか。
よろしくお願いします。

536:デフォルトの名無しさん
04/08/19 17:28
ぬるり

537:デフォルトの名無しさん
04/08/19 17:39
データアダプタで質問させてください。

まず前作業としてMDBでテーブル2つとビュー1つを作成します。

TABLE1
  ID,FIELD_1,FIELD_2 (キーはID)

TABLE2
  ID,FIELD_A,FIELD_B (キーはID)

VIEW1
  ID,FIELD_1,FIELD_2,FIELD_A,FIELD_B


さて、ここでVB.NETからVIEW1のデータアダプタを作りたいのですが、
構成ウィザードで警告が出てしまい、UPDATEとDELETEについてコマンドが作成されません。
アダプタ自体は作成できるのですが、削除が実行できないのです。
どうしたらいいんでしょうか・・・

TABLE1とTABLE2の2つアダプタを作って、それぞれに削除かけないとだめなのかしら・・・
VIEWで一発ですませたいんですが・・・

538:デフォルトの名無しさん
04/08/19 17:49
あ、警告はちなみに一意に識別する列を作成できませんでした、とかいうやつです。
キーがあるから一意のはずだし、Accessからは削除できるのに・・・なぜ・・・

539:デフォルトの名無しさん
04/08/19 20:23
>537-538
DBは何を使ってるんだよ。
DBから主キーを取得できてないって事。

540:デフォルトの名無しさん
04/08/19 22:10
>>536
ガッ

541:535
04/08/19 22:37
535です。
どうやらAPIのほうが悪かったようで
void __stdcall fncSub(struct Info *p); は
extern "C" HOGE_API void __stdcall fncSub(struct Info *p);
という風にするのを忘れていたようです。

それで、後者のほうにDLLを修正したところ、今度は
「'System.ExecutionEngineException' のハンドルされていない例外が
mscorlib.dll で発生しました。」
というエラーが発生しました。
これはどういうエラーなんでしょうか。
ググったりMSDNで調べたりしましたがいまいちわかりません。
分かる人がいましたら解決方法を教えてください。
よろしくお願いします。


542:デフォルトの名無しさん
04/08/19 23:32
そのAPIって参照設定で読み込めたりしないのかと横着を考える

543:541
04/08/20 00:50
>>541
参照設定をしようとしたら「有効なDLLじゃない」とエラーが出て
設定できませんでした。

ところで、使っている構造体の形は

struct Info{
char A[10][1024];
char B[10][512];
char C[10][512];
};

って形になっているんですけど、VBでこの構造体を宣言するには

Public Structure Info
Dim A() As String
Dim B() As String
Dim C() As String
End Structure

でいいんでしょうか?教えてください。お願いします。

544:デフォルトの名無しさん
04/08/20 08:15
>>543
だめ。構造体の宣言で、マーシャリングをきっちり指定する必要あり。
結構面倒だよ。

545:デフォルトの名無しさん
04/08/20 17:04
.netであるクラスのプロパティを動的に参照するため

wk1 = ClassA.PropA
wk2 = ClassA.PropB



wk1 = ClassA.xxxx("PropA")
wk1 = ClassA.xxxx("PropB")

のような感じにしたいのですが
どのようにコーディングすればよいでしょう???

VB6時代だとProperties("PropA")のようなことができた気が…

546:デフォルトの名無しさん
04/08/20 18:50
VB よくわかんないけど、例えばクラス ClassA の静的プロパティの場合
val = typeof(ClassA).GetProperty("PropA").GetValue(Nothing, Nothing)

インスタンス a のプロパティの場合
val = GetType(a).GetProperty("PropA").GetValue(a, Nothing)

とかかなあ・・・ Object が帰ってくるから、型変換は必要。
あとプロパティの一覧を得たいなら、System.Type.GetProperties メソッドが使えます。

547:546
04/08/20 18:50
>>546
スマソ。typeof は C# か。

548:デフォルトの名無しさん
04/08/21 00:55
>>546-547
>GetType(a).GetProperty("PropA").GetValue(a, Nothing)

書き込み後なんとかGetType(a).GetProperty("PropA")のプロパティ情報列挙までは自己解決していましたが
GetValue()の配列indexの使用法を間違ってました。

配列要素でないときはNothingなのかー!

激さんくすです!!

549:デフォルトの名無しさん
04/08/21 17:42
データーグリッドを使って、データーを表示させた際に、グリッド右端をクリックすると
幅が自動で広がりますが、あれをプログラムでやらせることは出来るでしょうか?

550:デフォルトの名無しさん
04/08/21 19:09
MSDEとVBの組み合わせで、"display_order"をintに設定して

SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM pc_data ORDER BY display_order "

とやると数値が大きなものが上にきてソートされます。

SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM pc_data ORDER BY display_order DESC"

とやれば、小さい順にソートされるかな・・・とやってみたのですが、うまく動きません。何が間違っているのでしょうか?

551:デフォルトの名無しさん
04/08/21 20:17
どうでもいいけど昇順と降順間違ってないか?


552:デフォルトの名無しさん
04/08/21 22:05
いろいろ

553:デフォルトの名無しさん
04/08/21 22:51
まだVB.NET初めて間もないのですが
以下のようなコードで「オブジェクト参照のインスタンスがありません」
とエラーが出てしまいます。

dim wrk_item() as string

wrk_item(0) = "テキスト"  ←ここでエラーが起こってます
wrk_item(1) = "テスト"

エラーの原因がわかりません。配列の要素数はあらかじめ決めておかないと
だめなのでしょうか・・・

554:デフォルトの名無しさん
04/08/21 23:17
dim wrk_item() as string = { "","" }



555:デフォルトの名無しさん
04/08/21 23:19
「配列を参照する事のできる」変数を定義しただけで、
「配列自体を作成」していない。変数の初期もしていない。
よって「配列を参照する事のできる」変数はNothingのままだから以下省略

556:デフォルトの名無しさん
04/08/21 23:20
>>554
ありがとうございます
やはり配列要素を決めておかないとだめみたいですね

557:デフォルトの名無しさん
04/08/21 23:22
>>555
なるほど、そういうことでしたか・・・


558:デフォルトの名無しさん
04/08/21 23:33
>553
ArrayListとかReDimとか使えば?

559:デフォルトの名無しさん
04/08/22 10:21
ボクのPCはDELLのディメンションですがVB.NETをうごかしてもこわれないでしょうか?

560:デフォルトの名無しさん
04/08/22 10:24
残念ながらどこのPCでも壊れるときは壊れます。

561:デフォルトの名無しさん
04/08/22 14:15
まあ、基本的にはArrayListあたり使うのが常套かな。


562:デフォルトの名無しさん
04/08/22 18:56
>>559
VisualStudio.net入れると壊れる可能性が高いですね。

563:デフォルトの名無しさん
04/08/23 09:19
>>550
ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww

564:デフォルトの名無しさん
04/08/23 12:35
かといって高度な問題には解答が出来なかったりする

565:デフォルトの名無しさん
04/08/23 13:57
変数のタイプっの取得なんですが・・・

dim val
dim s as String = ""

val = s.GetTypeCode
なら結果 String ですが


dim val
dim s as String

val = s.GetTypeCode

で初期化していないと当然 sは生成されていないので.GetTypeCodeが取れません。

初期化されてない変数タイプ取得ってどう記述しますか?

566:565
04/08/23 14:02
あ、ちなみに上記で

GetTypeCode(s)

で Object が返るのですが Dimで定義されている String を返したいのです・・・

567:デフォルトの名無しさん
04/08/23 16:17
>>550
どう動かないのかというのが良くわからないが、データーグリッドの表示順を変えたいだけなら

データセット名.Clear()
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM pc_data ORDER BY display_order"
SqlDataAdapter1.Fill(データセット名, "car_data")

としてやるだけでいけると桃割れ。

568:デフォルトの名無しさん
04/08/23 16:34
って"car_data"ってなんだよ"pc_data"ねw。

ところで、ここの上のほうにあるデータグリッドの幅をデーターの長さに自動であわせて表示するっていうの
を、どなたか出来る方いませんか?



569:546
04/08/23 16:44
>>565-566
無理。そもそも String が帰る時だって、値の型を取得しているだけで
"変数" のタイプを取っているわけじゃないし。

570:デフォルトの名無しさん
04/08/23 21:02
>>569
よくわからんが無理ってことはないんじゃないか?
むしろインスタンスからしか型に関する情報を取れないなんてライブラリの方が
不条理な気がする。

URLリンク(www.microsoft.com)

URLリンク(www.microsoft.com)
の組み合わせでいけるんじゃないだろうか。

571:546
04/08/23 23:56
>>570
 レスされたので答えるけど、その手のメソッドでは無理。
IL にコンパイルされた後はそもそもローカル変数なんて
タイプ情報にも存在しなくなっちゃうんで、
「ローカル変数が何型で宣言されたか」ってな情報を得るには、
ライブラリではなく言語自体によるサポートが必要。

値型 (value types - 単純型や structure) のものなら、
変数宣言と同時にインスタンスが作成されるので大丈夫だけど(と思う)

572:デフォルトの名無しさん
04/08/24 00:37
>>565
ちなみになんでそんなことがしたいわけ?
>>571も言ってるけど、ライブラリじゃなくて言語仕様で
そういう機能があるかどうかの問題になるね。

573:565-566
04/08/24 00:55
>>569

>値の型を取得しているだけで
>"変数" のタイプを取っているわけじゃないし。
私も同様の認識だったのですがデバッグ中に…

Dim s As String

直後のステップをブレーク、イミディエイトにて

?type.GetTypeCode(s) 

と実行した際、

「型 'String' の値を 'System.Type' に変換できません。」
といったメッセージが出たもので…

「あれ?エラーだけどここで'String'と認識するってことは…なにかしらの記述で変数のタイプも取得できるのか???」と…


574:デフォルトの名無しさん
04/08/24 11:51
Form1で
    Dim f2 As Form2
    f2.show()

のようにしてForm2を表示して、そのForm2からForm1のTextbox1の内容を操作するにはどうしたらいいんですか?
Form1からForm2の操作はできるんですが・・・その逆を行おうとするとエラーがでます。

575:デフォルトの名無しさん
04/08/24 12:31
またVB6から進化できてない人間が迷い込んだな。。

576:デフォルトの名無しさん
04/08/24 12:39
だから旧VBスレも合わせて、スレの>>1のテンプレに愚問集作ってそこに

 『別フォームの……』

を入れとくべきだろう。


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