VB.NET質問スレ (Part6)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
http://pc2.2ch.net/test/read.cgi/tech/1056281084/
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
http://pc2.2ch.net/tech/kako/1025/10258/1025848458.html
2デフォルトの名無しさん:04/07/03 08:49
どぼん!のVB道のトップページとTipsページ
http://dobon.net/vb/
http://dobon.net/vb/dotnet/index.html
Microsoftクイック スタート チュートリアル
http://ja.gotdotnet.com/quickstart/default.aspx
リソースセンター> .NET関連リンク
http://www.atmarkit.co.jp/fwin2k/rescenter/indexpage/net.html
Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
@IT: 連載 VB.NETプログラミング
http://www.atmarkit.co.jp/fdotnet/vb6tonet/index/index.html
@IT:連載 改訂版 C#入門
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
C#プログラミングTips
http://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
VB.NETとC#でデザインパターン
http://hccweb1.bai.ne.jp/tsune-1/
ConvertCSharp2VB
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
WisdomSoft 〜Developers Network〜
http://black.sakura.ne.jp/~third/
CodeProject
http://www.codeproject.com/vb/net/
the GotDotNet Home Page
http://www.gotdotnet.com/
KEN's .NET
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/index.html
ソース置き場.NET
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049
Cetus Links: 19,498 Links on Objects and Components / .NET
http://www.cetus-links.org/oo_dotnet.html
関連スレ
VisualStudio.NET(MSDN Deluxe) Part12
http://pc2.2ch.net/test/read.cgi/tech/1071070472/
ふらっとC♯(Part5)
http://pc2.2ch.net/test/read.cgi/tech/1065196964/
C♯相談室 Part14
http://pc2.2ch.net/test/read.cgi/tech/1076933504/
managed C++ やろうぜ!!
http://pc2.2ch.net/test/read.cgi/tech/1014486422/
フリーの.NET統合開発環境「SharpDevelop」
http://pc2.2ch.net/test/read.cgi/tech/1023727377/
消しゴムじゃない方のMONOを使ってみるスレ
http://pc2.2ch.net/test/read.cgi/tech/1020215602/
♯♯♯Shared Source CLI ♯♯♯
http://pc2.2ch.net/test/read.cgi/tech/1024222901/
VBプログラマ質問スレ(6.0以前) Part32
http://pc2.2ch.net/test/read.cgi/tech/1077216109/
.NET Framework のランタイム テクノロジに関するパフォーマンス上の注意事項
http://www.microsoft.com/japan/msdn/net/general/dotnetperftechs.asp

Microsoft .NET Framework の Windows フォームを使用したペインティング テクニック
http://www.gotdotnet.com/japan/team/windowsforms/windowsformspainting.aspx

ガベージコレクション入門: Microsoft .NET Framework の自動メモリ管理 Part I
http://www.microsoft.com/japan/msdn/net/mag00/GCI.asp

C# プログラミング言語の将来の機能
http://www.microsoft.com/japan/msdn/vs/vcsharp/vbconCProgrammingLanguageFutureFeatures.asp

適当に選んだ資料。
8デフォルトの名無しさん:04/07/03 08:53
ドットネット2.0ベータはどこ?
9デフォルトの名無しさん:04/07/03 14:08
モツ>1
JScript .NETはこちらで:
ECMAScript デス 2
http://pc5.2ch.net/test/read.cgi/tech/1088298991/l50
ArrayListに登録されている要素のメンバを書き換えるにはどうすればよいでしょう?
dim data as T_HOGE
dim list as ArrayList
list = new ArrayList

data = new T_HOGE
data.code=1
data.name="いち"
list.Add(data)

data = new T_HOGE
data.code=2
data.name="に"
list.Add(data)

この状態で
data = CType(list(1), T_HOGE)
data.name = ""
としてもlist内の登録内容は書き換わっていません。itemメソッドや
foreachで要素をとってきても同様です。
Remove/Insertは参照が変わってしまうので使いたくありません。
うまい方法はありませんか?
T_HOGEがstructureなら
data = CType(list(1), T_HOGE)
でArrayListの中身がコピーされているからそっちを書き換えても値は変わらない。

必要なら中身を書き換えて後
list(1)=data
として置き換えれば?
13デフォルトの名無しさん:04/07/03 22:30
DBに非接続のDataSetに作成したDataTableを使って
CristalReportで帳票を作りたいのですがどういったやり方があるでしょうか?
>>11
>>12の言ってることの可能性が高いな。
Structにしてるのはなぜだ?
ArrayListに入れるんならクラスの方がまずまず無難だと思うが…
>>13
VisualStudio.NETのCrystalReportならサンプルくらいあるんじゃないの?
1613:04/07/04 09:54
>>15

これだというサンプルは無かったけど
なんとか自力でできた
17デフォルトの名無しさん:04/07/04 11:16
やりたいことは、フォルダーのコピーです。

とりあえず、FileSystemObjectでそれはできたのですが、
もう一度コピーを実行するとエラーがでるので、
コピー先のフォルダがある場合は削除しました。
ところが、含まれるファイルが読みとり専用だとエラーがでます。
どうしたら良いでしょうか?

If System.IO.Directory.Exists("C:\TEST") Then
System.IO.Directory.Delete("C:\TEST", True)
End If
FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder("D:\TEST", "C:\TEST", True)
>>17
フォルダの削除もFSOを使ってみるとか・・・
19デフォルトの名無しさん:04/07/04 20:30
サンクスです。

FSO folderでググって見たら、一発で回答を見つけました。
20デフォルトの名無しさん:04/07/05 01:20
既存項目の追加で追加したwavファイルを再生するにはどうしたら良いでしょうか?
>>12
> list(1)=data
これですか!目から鱗が…
助かりました。どうもありがとうございます。

>>14
先に構造体ありきで進めちゃっているもので、今からクラスには
できないのです。
22デフォルトの名無しさん:04/07/05 15:33
ある画像の上(?)に線を引き、その線の一部分をペイントの消しゴムのように
消したいのですが、いい方法ないでしょうか?

線を引くまでのロジックはこんな感じです。
Private grpTest As Graphics
Private bmpTest As Bitmap
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fs As IO.FileStream
Dim bmpImage As Bitmap
Dim blackPen As Pen
blackPen = New Pen(Color.Black, 1.0)

fs = New IO.FileStream("C:\TEST.JPG", IO.FileMode.Open, IO.FileAccess.Read)
bmpImage = New Bitmap(fs)
fs.Close()
'空のbitmap領域の作成
bmpTest = New Bitmap(bmpImage.Width, bmpImage.Height)
grpTest = Graphics.FromImage(bmpTest)
grpTest.DrawImage(bmpTest, 0, 0, bmpImage.Width, bmpImage.Height)
PictureBox1.Image = bmpImage
    '線引き
grpTest.DrawLine(blackPen, 0, 0, bmpImage.Width, bmpImage.Height)
PictureBox1.Invalidate()
End Sub
2322:04/07/05 15:33
続きです

Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
If IsNothing(bmpTest) = True Then
Exit Sub
End If
e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
e.Graphics.DrawImage(bmpTest, 0, 0, sender.width, sender.height)
End Sub
>>21
まあ、変えられないんなら仕方ないわけだけど、はっきり言って
ちゃんと理解して使ってないと、落とし穴が多いので注意が要るよ。
未熟者から、ちょっとつまらない質問です。
DBからSELECTで持ってきたデータをDataGridに表示させるとき、コネクションや
データアダプタやデータセットを、サーバーエクスプローラからマウスでドラッグして
貼りつけたうえDataGridのソースをプロパティで設定するやり方と、それらをすべて
コードで表記するやり方がありますよね。

何というか、やり方としてどっちが「まとも」なんでしょうか。

体感的には貼りつけるやり方のほうが処理が早いような気がするんですけど、
ただ「上のほうに」(こんな表現しかできないレベルの素人です)、OleDb関係の異常な長さの
コードが自動生成されていて、何だか薄気味悪いです(貼り付けなしで、すべてをコードで
記述しても、これの10分の1ぐらいで済みそう)
>>25
どっちが「まとも」かはわからんが、個人的にはコードを書く方がお好み
以前はADO.netに慣れていなかったので貼り付けでやってたけど、
今はDBアクセス処理のクラスを作成してそれで処理するようになった。

適材適所で使い分けるのが吉じゃねえの
.NET Framework を自分が作成したプログラムと一緒に強制インストール
する事なんて、可能でしょうか?

インストーラ付きで配布されてるから、無理なのかな、、、

もし出来るならその辺解説してるHPとかあれば教えてください。
>28
ありがとうございました。うまくいきました。
やっぱりちゃんと用意されてるんですね、、、
ものっすごい初心者で恐縮なのですが、教えてください。

VB.NETの画面でVC.NETで作成した関数を利用したいのです。
VCの関数はDLL化してあり、Declare宣言もしております。

それを呼び出したところ以下のようなエラーが出てしまいます。
「DLL XXXCOM.dll の CMMsgBox というエントリ ポイントが見つかりません。」
・XXXCOM.dll = DLL名
・CMMsgBox = 呼び出したい関数名

マシン容量の都合上、MSDNをインストールできなかった為、
ヘルプが使えません。
どうぞよろしくお願いします。
MSDNはオンラインでも読めるよ
3230:04/07/06 19:14
>>31
すいません。
それは知っています。
最初はそれで調べていたのですが、
現在、長い時間繋ぐには不都合な環境でして。
隙を見て書き込んだ次第です。
元の関数定義とDeclareの内容くらい書かないと無理では?
ActiveXのDLLだったら(ほぼ)そのままVB.NETで使えるんだが
>>26
質問というより迷いを除くための相談みたいで、すみませんでした。
貼り付け型のほうが処理が速いといっても、明らかに違いが分かるほどのものでもないし
いろいろ比較すると、コード表記のほうが無駄が少ないんじゃないかな、と、ひとまずの結論。
何より貼りつけ型は、元データのカラムがテッキトーに並べ替えられちゃって、直すのがめんど。
(もしかしたらどこかに何か設定の仕方があるのかもしれないけど、もうどうでもいいや。
わけの分からないコード自動生成されて、あちこちに制御分散させるより、自分の書いたもの
だけで全責任負っちゃったほうが楽だ、という気がしてきました)
>貼り付け型のほうが処理が速い
そうなのか?
>>36
確かなところは分かりません。
2万件程度のテーブルからLike条件抽出を何度かやってみただけですんで。
貼りつけた方はザザッと出てきたけど、コード書きのほうは何となくパラパラっと。
本当に何となくで、測定したわけではありません。

と、ついでに勢いにまかせて、というか図に乗って、もういっこ質問。
dbへの接続やレコードセットオープンの書き方は、ネット上のいくつかのサイとを
参考にしながらやってみたんですけど、dbもレコードセットも、オープンして処理が
終わったあと、=nothing は、書かなくていいんでしょうか(どのサイトも言及なし)
Accessの時にやってた形、set 〜 = nothing って書くと、set が消されちゃうん
ですね。で、仕方なく、単に 〜 = nothing にすると、別にバグ扱いもされず、
実際の処理も問題なく終わるんですが。
書いた方がいいのか、書かなくてもいいのか、書かない方がいいのか、そのへんが
さっぱり分かりません。
書かないとメモリとったまま手放さないとか、そういう話ありませんでしたっけ。
おい、ちゃんとClose(かDispose)はしてるか?
何となく意識はしてないけど知らないうちに消されてるような
書き方になってる気はするが…
ええ、close は毎度ちゃんとやってます。

nothing に関しては、もともとが雑におぼえてしまったせいか、Access
使ってたときも書かずに済ませてしまったことがあったりしまして。
いつだったかweb上のどこかのサイトで、closeするだけじゃなくちゃんと
nothing書いておかないとメモリ無駄食いするぞ、みたいな文章読んだので、
ちょっと心配になって最近ようやく気をつけるようになったんです。
通常は関数内で宣言したものだったら、関数抜けた瞬間に開放されることになってるが
開放のタイミングはいつ起こるかわからない仕様だったと思います
仮にDisposeしても、どこかの外部変数が参照している間は残ったりするってのを読んだ記憶があります

.NETからSETというのは無くなってますね
扱える変数全部が旧VBでいうオブジェクト形なのでそういうことなんだと思います

貼り付けたほうってSELECT文を動的に発行するものでしょうか?
それとも事前にウィザードで発行された自動SQLでしょうか?

後者であればDB上にSQLが事前コンパイル(事前読み込み)されて
最適な結果が用意されてるかもしれません

DB環境がわからないのでかなり適当な事いってます(w

4139:04/07/07 02:55
>>扱える変数全部が旧VBでいうオブジェクト形
む、ムズい・・・です

いま知ったんですけど。
〜 = nothing の、"nothing"のところにマウスの矢印あてると "oject" って
浮き出てきますね。
つまり、宣言されたものはここで何もなかったことにするぞ、つまり解放の証
と考えていいのかな。だったら書いといたほうがいいですね。

貼り付け型コード表記型ともに、SQL文は、フォーム上のテキストボックスをLike抽出条件に
べた書き、つまり条件は同じです

以下、想像ですけど
貼り付け型のほうは、接続先なんかはもう決定しているわけですから
OleDbConnection1.Open() この一行で接続は確立できますよね。
データアダプタやデータセットについても貼りつけた時点で決定済み、あらためて宣言する必要はない。

いっぽうオールコード表記型のほうは
Dim MyDB As New OleDbConnection
Dim MyCmd As New OleDbCommand
Dim MyDataSet As DataSet = New DataSet
Dim MyDataAdp As New OleDbDataAdapter
MyDB.ConnectionString = "Provider=・・・"
MyCmd.Connection = MyDB
これだけのことを決めてやって、ようやく
MyDB.Open()
が出来る。

これが速度の差になってるのかな、なんてことを、あまり出来の良くないオツムで考えたり
してみました

GCとFinalizeとDispose辺りをキーワードにして
ドキュメントをよく読んでみることをおすすめする。
4330:04/07/07 09:57
お騒がせしました。
上司が解決してしまいました。
ありがとうございました。
>>43
どう解決したのかも書けよ。
45デフォルトの名無しさん:04/07/07 13:21
初歩的なことで恐縮ですが、お尋ねします。
テキストボックスの内容を変数で指定したいのですが、
このように書くと100行以上書かなければなりません。

右側のTextBox1,2,3...の数字の部分を変数を使って指定するには
どうすればよいのでしょうか?


Dim tesText(100) As System.Windows.Forms.TextBox
tesText(1) = TextBox1
tesText(2) = TextBox2
tesText(3) = TextBox3
...
tesText(100) = TextBox100
4645:04/07/07 15:07
自己レスです

>>2 の DOBON.NETのページを見たら、
「フォームに配置されているコントロールを名前で探す」
ってのがあったので、これが使えるかもしれません。
調べてみます。

お騒がせしました。
4722:04/07/07 15:45
誰か
>>22わかる人いませんか?

>>45
こんな感じでどうだろう?
フォームに直接テキストボックスを貼り付けているのであれば
↓こういう関数をつくり、コントロールにあるID(?)を取得
Private Function fintTxtForm_TextPos(ByVal strName As String) As Integer
Dim intCnt As Integer
For intCnt = 0 To Me.Controls.Count - 1
If Me.Controls(intCnt).Name = strName Then
Return intCnt
End If
Next intCnt
End Function

んで、こう使えば少なくてすむ。
Dim intCnt As Integer
Dim intPos As Integer
Dim tesText(100) As TextBox
For intCnt = 1 To 100
      ’"TextBox" & intCnt という名前で検索
intPos = fintTxtForm_TextPos("TextBox" & intCnt)
      ’指定
tesText(intCnt) = Me.Controls(intPos)
Next
パネルならMeをPanel1に変えれば良い。如何?
4822:04/07/07 15:45
あちゃ。
コード書いている間に解決しちゃったか
49デフォルトの名無しさん:04/07/07 15:58
盛り上がってまいりました
webアプリケーションの作成ではMessageboxは使えないのでしょうか?
宣言されてない!と出てしまいます…
VBScriptかJavaScriptで代用しては?
どう考えたら使えると思えるんだ?
いまさらな質問ですいません
ビルド番号をビルドするたびに自動変更させるにはどうしたら良いですか
>>AssemblyInfo
>>54
Thx
56デフォルトの名無しさん:04/07/08 16:43
VC#と比べて、VB.NETの優れた点はどういう所ですかね?
基本的に言語の違いしかない。
58デフォルトの名無しさん:04/07/08 16:53
では、人にもよると思いますけど、プログラム組むのに言語使用的にどちらの方が使いやすいとかはありますかね?
59デフォルトの名無しさん:04/07/08 17:43
Windows Serverで立ち上げていたftpサイトに
\ . %d .aux0 4.21 \ . %d .nul 3.94 \. %d .lpt1 1.99 \ ;[[Scan By ...
みたいなフォルダを何千個も作られちゃいました。
ちゃんと書き込み制限をかけましょう、という話は当然として、既に作られてしまったこのフォルダ群を削除したいと考えています。
ただ、エクスプローラ上からでは不正なLongFileNameの[ . %d .nul 3.94 ]という名前のフォルダにアクセスできず、リネームも削除もできません。
一応、コマンドプロンプトのdir /xでShortFileNameを調べてそのフォルダごとに削除することは可能ですが、数が数なので、手作業で消して回るのは無理があります。
そこで、VB.netでフォルダを削除するツールを作りたいと考えています。
FSOを使って、
FS = FSO.GetFolder(sScanPath)
For Each F In FS.SubFolders
Console.Write(F.Path)
Next
って、やりたいのですが、不正な名前のフォルダはリストアップされてくれず、目的を達しません。
また、VBのDirコマンドでコマンドプロンプトの"/x"オプションの付け方がわかりません。
そこで、
1.FSOで不正なLongFileNameを持つフォルダオブジェクトのShortFileNameを列挙するやり方
2.VB.netのDirコマンドでShortFileNameをとるやり方
3.1.2以外で上記の目的を達するやり方
のいずれかをどなたかご指摘頂けないでしょうか?
消しちゃいけないファイルを別フォルダに移して
FTPのフォルダごと削除してしまえば?
6159:04/07/08 17:59
エクスプローラ上から指示を出すと削除しようとしている最中に、
[xxx フォルダを削除できません。指定されたファイルが見つかりません。]
[パスとファイル名を確認してください。]
と表示されて操作が失敗します(;。;)
>56
VS.NETを使っている場合、コンパイルしなくてもその場でにコーディングミスが表示される。
他はともかく、この点は優れていると思う。
エクスプローラで必要なファイルを移動させて
RMDIR /Sでディレクトリごとアボーン
>>62
デフォルトでOption Strict Onなら褒めてあげたいところだけどね。
既出だったらスマソです
配布パッケージ(ディストリビューション?)を作成する方法がよくわからないんですが
情報へのリンクでも結構ですのでどなたかお助けください
6659:04/07/08 21:36
>>63
ありがとうございました。あっさり消えてくれました^^;
手間もかからずお手軽でまさに完璧です、助かりました
(よく考えると>>60も同じ事を言ってる気がします。ありがとうございました)
>>56
画面周りは、VB.netのほうが作りやすいと個人的には思う。
6860=63:04/07/09 02:32
>>66お疲れサマでした<m(__)m>
69デフォルトの名無しさん:04/07/09 11:33
VB.net 2003でカスタムコントロール作成にチャレンジ中です。
タブコントロールをメインとしたコンテナコントロールを作成しようと思っていますが…

タブコントロールを基に作成したユーザーコントロールを任意のフォームに配置し
そのコントロール(コンテナ)上にテキストボックスなどを配置しようと考えたのですが
VB6時代とは勝手が違いなかなかうまくいきません。
(イメージとしては独自のタブコントロール、もしくはオプショングループのようなコンテナコントロールに
テキストボックスなどをドラッグして配置したい)

IContainerインタフェースについての理解が浅いためうまく説明できないのですが
VB.netで独自のコンテナコントロールを作成する場合、後々そのコンテナ上に配置するコントロールの
追加動作はコード上でaddしていかないといけないものなのでしょうか?
>>65
すごく簡単に書くと、
1.新規作成で「セットアップ/デプロイメントプロジェクト」を選んで
  ソリューションに追加する。
2.構成マネージャで、全てのプロジェクトをRelease、ビルドにチェックを入れる。
3.ソリューションのビルド
細かい設定はいっぱい端折ってるけど、これで逝けるんじゃないかな。

71デフォルトの名無しさん:04/07/09 17:37
d:testに、mdbファイルを作りたいのですが、

ファイル'd:\test'を開く事が出来ませんでした。
ほかのユーザーが排他的に開いているか、データを読み取る権限がありません

というエラーが出てしまいます。
File.SetAttributes("d:\test",FileAttributes.Normal)
とか、
Dim di As New System.IO.DirectoryInfo("D:\test")
di.Attributes = FileAttributes.Normal

とかやってみたのですが、同じエラーが出てしまいました。
これは読み取り専用属性が邪魔をしてるわけではないという事でしょうか?
でもこのPC使ってるのは自分だけなので、他の人が開いてるなんて無いだろうし・・・
解決方法ご存知の方ご教授いただけませんか?

>>70
なるほどこうなってんですねえ
とりあえずセットアップがビルドされるとこまで確認できました
でもセットアップを実行してみたら正常に終了するものの
どこにもインストーされた形跡が無い?どこへ消えたんだ?
私がなにか間違えてますねたぶん(笑)

とっかかかりがわかったのであとは何とかなると思います
ありがと〜

73デフォルトの名無しさん:04/07/10 03:14
もう、聞き飽きた質問かもしれないのですが、分からないので教えてください。

現在、カシオペア(WinCE 3.0)用のアプリを作成中なのですが、
シリアルポートを使っての通信の方法が分かりません。

色々見てはいるのですが、「通常のモデムと一緒」と言われているだけで
実際にどんな方法で接続したら良いのか教えて下さい。

よろしくお願いします。
74デフォルトの名無しさん:04/07/10 08:47

サービスから、ログインしているユーザー名を知りたいのですが
教えて頂けないでしょうか。

System.Environment.UserName

ですと'system'が返されるので解かりません。

よろしくお願いします。
サービスって何だ?
ログインてどういう方法をとってるんだ?
認証方法は何を使ってるんだ?

まっとうな方法をとってるんならHttpContext.Current.Userとかだろうが…
>>74
ログインしてるユーザーって、一人とは限らないよね?
7774:04/07/10 11:26
すみません。言葉が足りなくって

サービスとはWindowsのローカルサービスの事で
WindowsXpですと コントロールパネル - 管理ツール - サービス
に登録するものです。

ユーザーはサービスを実行しているマシンに直接ログインしている
ローカルユーザを知りたいのです。したがって一人です。

お願いいたします。
>したがって一人です。
おい複数がログインしてるときはどうなるんだ?
79デフォルトの名無しさん:04/07/11 00:05
>>78
ネットワーク経由ではなく直接マシンを使用しているユーザーです。
WinXPだとローカルでも複数ログインできなかったっけ?
Web関係の命令でPOSTした情報を取得したいのですが
リファラーの設定ができず別ページの情報が飛んできてしまいます
リファラーを付加してPOSTする方法ってありますか?
プログラム起動時、変数を宣言しているとVBは必ず0が入るじゃないですか。
それをChar型の値の中のランダムな数値を入れたいのですが、どうすればいいでしょうか?
83名無しさん@そうだ選挙に行こう:04/07/11 13:44
>>80
同時にはできないだろ
ログインしっぱなしみたいな状況だけどWindowsとしてどういう処理をしてるかはわからないね
ただ裏でプロセスが動きっぱなしみたいな感じなのかな?
そりゃまあ、アクティブ?になってるユーザは一人としてもさ
アプリケーションのアイコンはどこで変更するのでしょうか?
タイトルバーのアイコンは変更できるのですが、exeファイルのアイコンを変えられません。
プロジェクトのプロパティにある"ビルド"に設定がある。
xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
xlSheet = CType(xlBook.ActiveSheet, Excel.Worksheet)

これだと新しくエクセルが起動してしまいます。
今開いているエクセルシートに書き込むにはどのようにしたらいいのでしょう?
VB6では
Set xlApp = Excel.Application
Set xlBook = xlApp.ThisWorkbook
Set xlSheet = xlBook.ActiveSheet

で行けたのですが。
89デフォルトの名無しさん:04/07/12 21:52
すごく初歩的なことなのですが、質問させてください。
ListBox または Combobox でmdbのデータを表示させたいのですが、
今現在やった作業は、
サーバーエクスプローラーのデータの接続で、mdbに接続。
表示させたいテーブルをFormにD&Dして、OleDbConnection1とOleDbDataAdapter1
を作成。
「データ(A)」メニューの「データセットの生成」で、テーブルのデータセットを生成。
ListBoxまたはComboboxのプロパティ「DataSource」「DisplayMember」「SelectedItem」を選択項目から選択。
開始。
とやっても、リストとコンボには、何も表示されません。
DataGridの場合も同様で、プロパティだけ設定しただけでは、
何も表示されなかったのですが、FormのLoadイベント内に
 Dim dst As New DataSet
Me.OleDbDataAdapter1.Fill(dst)
Me.DataGrid1.DataSource = dst
としてやったところ、データが表示されました。
ListBoxまたはComboboxも同様の処理が必要なのでしょうか?

すみませんどなたかご教授ください。
>88
System.Runtime.InteropServices.Marshal.GetActiveObject

>89
最終的にデータを読み込ませるのはコーディングで指示する。
ちなみに、ヘルプのサンプルに書いてあると思うが。
91デフォルトの名無しさん:04/07/12 22:29
便乗質問ですが、>>88のCTypeって必要ないような気がするんですが。
ていうか、エクセルのApplicationオブジェクトにThisworkbookなんて
プロパティありましたっけ?

もしあるのなら、.NETからだろうとなんだろうと同じようにそれを
使えばいいだけのような気がしますが。
9286:04/07/12 23:10
>>87
ありがとうございましたー!
本当に助かりました。・゚・(ノД`)・゚・。 アリガトウ
93デフォルトの名無しさん:04/07/12 23:11
ファイルを保存するのはどうすればいいのですか?
94デフォルトの名無しさん:04/07/12 23:26
VC++.NETで作成したDLL(MFC)をVB.NETで使おうとしてるのですが
デバッグモードでDLLのソースにステップインできません。
ブレークポイントをしかけて実行しても止まらずにDLLの処理が実行されます。
DLLの処理は正常に動作していて問題ありません。
特に設定は弄っていません。
何か足りないことがあるのでしょうか?
95デフォルトの名無しさん:04/07/12 23:30
>>93
ファイル(F)→〜の保存
アセンブラ混合モードかな?
(VCだとそうなんだが)
.NETではなくて、6.0なんですけど、
エディタの、キーワードの色をそれぞれに指定して、
変更することってできませんか?

endif や public などを色分けしたいんです。
98デフォルトの名無しさん:04/07/13 00:00
>>97
できんでしょ。すくなくともVSのIDEのエディタでは。
正直、そういうクダラナイことに関心がいくのは心理的な逃避だとしか
思えない。

そんなことが生産性に寄与するように見えるとしたら、
それはヘッポコだからだと思う。
9997:04/07/13 00:11
今までCとC++しかやったことなかったんで、
エディタやIDEがたくさんあって恵まれていたのかもしれません。

VBは確かにVC++やその他IDEに比べると
すこぶる操作性が悪く生産性と技能スキルが鈍りますが、
修行だと思ってVBをマスターしようかと思います。
>>98おお、すげ〜発想の飛躍だな。
101デフォルトの名無しさん:04/07/13 00:53
>>97
C++やってるんだったら6.0じゃなく.NETやったほうがいいと思う
6.0ってサポート切れてるし

6.0と.NETは似て非なるもの
>>91
xlAppとかの型しだいでは>キャストの必要性

>>94
DLLがデバッグ用にビルドされてないとか。
で、問題なく動いてるんならDLLの中をデバッグできる必要はないと思うが…
困ってるわけじゃなく、どうして?ってこと?
10394:04/07/13 06:04
>>102
VC++.NETの実行ファイルからこのDLLを動かすと
ちゃんとデバッグできるのでデバッグ用にビルドされていない訳では
ないと思います。
今は困ってないのですが、これから開発を進めていく上で
デバックでDLLの中を追えないのは困りますよね。
VB.NETのEXEからVC.NETのDLLを呼ぶなんて特に
変わったことをやってる訳でもないのですぐに解決できると
思っていたのですが・・・かなりハマってます。
104102:04/07/13 09:32
いくつか気づいた点を書いてみる。
*VBのプロジェクトのプロパティ-構成プロパティ-デバッグにある
  有効にするデバッグ アンマネージコードデバッグ
にチェックが入っているか。
(DLLがマネージなコードだったら関係ないはず)
*デバッグ対象のソースが認識されてないのならソリューションのプロパティで
デバッグソースファイルにDLLのソースのパスを追加してみる。
*同じく、デバッグシンボルファイルについても。
*デバッグ時、出力に出てくるメッセージで該当DLLのシンボルが読み込まれているか?
10594:04/07/14 22:37
>>104
回答ありがとうございます。

DLLはマネージなコードです。
デバッグデータソースファイル、デバッグシンボルファイル
のパスに追加しても駄目でした。
デバッグ時の出力には該当のDLLについて何も出力されませんでした。
(何も出ないってことはデバッグ情報が取れてない?)

実行環境は実行ファイルを作成してるVB.NETのプロジェクトの
デバッグフォルダにVC++.NETで作成したデバッグモードのDLL(MFC)
を放り込んで動かしてます。

DLLのプロジェクトから実行ファイルを指定して動かしても駄目でした。

今回、旧システム(VC5.0)をVB.NETで作り変えることをしています。
旧システムの財産を再利用するためにDLLをVC++.NETで再コンパイルして
利用しようとしています。
なんせ素人集団なので壁にぶつかりまくってます^^;
>VC++.NETで作成したデバッグモードのDLL(MFC)
これマネージなコードってほんとなのか?
>>今回、旧システム(VC5.0)をVB.NETで作り変えることをしています。
>>旧システムの財産を再利用するためにDLLをVC++.NETで再コンパイルして

こういうのはアンマネージドじゃないの?
OpenFileDialogを使ってCSVのみを開こうとさせたのですが
ダイアログ自体は開きましたがCSVファイルを開くために
ダブルクリックしても何も開かず、ダイアログも閉じてしまいます。
そこでデバックポイントを張って原因を調べようとしたところ
デバックの部分で死んでしまいました。

OpenFileDialog.Filter = "csvファイル(*.csv)|;*.csv|全てのファイル(*.*)|*.*"
OpenFileDialog.FileName = ""
OpenFileDialog.InitialDirectory = WorkDir.Text
OpenFileDialog.Title = "ファイルを開く"
OpenFileDialog.RestoreDirectory = True
OpenFileDialog.ShowDialog()

これでは不味いのでしょうか?
109108:04/07/15 19:30
デバックポイントを張った場所は
OpenFileDialog.ShowDialog()
の直後です。
デバッグの部分で死んだってのは良く分からないんだが…

ひょっとして勝手に、選んだCSVファイルを開いて
よきに処理してくれるとでも思ってるのか?
111108:04/07/15 20:02
>>110
もしかしてエクセルを開く為の処理を行わないといけないのでしょうか?
勝手に関連付けとかで開かれたりしたらびっくりするだろ。
113108:04/07/15 21:18
>>112
右クリックから「開く」やエディタなどを指定して
開くと開けたので、ダブルクリックやダイアログの開くボタンを
クリックでも開くと思ったのですが・・・。

ShowDialog()の後にCreateObjectを使って
エクセルを呼び出せばいいということですね?

まあいいいや。

単純にプロセスで開けばいいんじゃね?
その後にExcelの操作したいんだったら別だけど。
>>113
メニューには開くだけじゃなくて選択とかがないか?

つうか、勝手に開かれたら使いもんにならないだろうに。
夏だから?Spoke効果?
11794:04/07/15 22:54
>>106 107
ごめんなさい。しったかしてました。
.NETで作ったものは全部マネージドコードだと思っていました。

>*VBのプロジェクトのプロパティ-構成プロパティ-デバッグにある
>  有効にするデバッグ アンマネージコードデバッグ
これでうまくいきました。
お騒がせしてすみません。
ありがとうございました。
118デフォルトの名無しさん:04/07/15 23:56
教えてください

ウインドウが2つ(ウインドウA、ウインドウB)あります。
ウインドウAで入力エラーが発生した際にウインドウBを呼び出します。
このときウインドウBが前に来ている状態です。

そしてウインドウBを閉じたときに(右上の×をクリック)、
ウインドウAのエラーが発生した箇所(テキストボックス)に
フォーカスが当たっている状態にしたいのですが、
そんな方法はあるのでしょうか?
119すぺる間違っていたらゴメソ:04/07/16 00:04
ウインドウBをShowDialogで開き、戻ってきたときに
フォーカスを移動すればよいのでは。
120デフォルトの名無しさん:04/07/16 02:52
ストアドプロシージャにステップインを選んでストアドのデバッグを行いたいのですが
ブレークせずに素通りしてしまいます
クエリアナライザではブレークできているのですがどこが悪いのでしょうか?
*VBのプロジェクトのプロパティ-構成プロパティ-デバッグにある
  有効にするデバッグ SQL Sever デバッグ
にチェックが入っているか。
とか。
122120:04/07/16 04:34
>>121
チェックボックスはONにしてあります
ヘルプに記述してあるDLL等はすべて所定の位置にインストールしてあり
インストールCDからデバッグコンポーネントのインストールもしてあります

出力ウインドウには
スレッド 'マシン名(53)' (0x800005f0) はコード 0 (0x0) で終了しました。
プログラム 'SQL デバッガ: T-SQL' はコード 0 (0x0) で終了しました。
と出力されるだけで、ストアドの結果は出力されませんでした
VBのブラウザコントロールで、<input type="file">の値を操作したいのですが、スクリプトでは操作できない等の情報ばかりです。
何かいい方法はないでしょうか?よろしくおねがいします。
ブラウザコントロールってIEコンポーネントの?
System.WebやSystem.Netは?
125123:04/07/16 18:16
>>124
返信ありがとうございます。

VS the spokeを購入したばかりでよくわからないのですが、現在はIEコンポーネントというものを使用しているのだと思います。

System.Web、System.Netについて調べてみます。
図々しくて申し訳ありませんが、どうしてもわからないことがあったら
またよろしくお願いします。
126デフォルトの名無しさん :04/07/16 18:22
CPU温度ってどうやって測るんですか?
コードがわかりません
何かコンポーネント必要ですか?
温度計が必要です。
>>123>>125
COM相互運用でやることになります。

参照の追加で、MSHTML.DLL (IDL) とかを追加して、
GetDocument で取ってきたものを as IHTMLDocument3 で IHTMLDocument3 にして、
getElementByID とかで input 等を取ってきて(IDが無ければdocumentElement以下をのエレメント階層を
トラバースして探すこと)、input 要素の IHTMLElement を as IHTMLInputFileElement で IHTMLInputFileElement にして、
->put_value() でファイル名を設定できるはず。

その後 submit 要素を探して、->click() で送信。

C++ (MFC) でのサンプルなら、
http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_21043473.html
にある。
参照の追加で COM タイプを取り込むこと、as I**** で所望のインタフェイスが得られること、
が理解できれば、C# でも別段難しい点はないと思う。
129デフォルトの名無しさん:04/07/16 22:15
教えてください><
ORACLE9i の外部プロシージャ(DLL)をVB.netで作りたいです。
今まで何も考えず、Windowsアプリケーションしか作ったことがなかったので、
DLLなんてさっぱりわかりません。。。
CのDLL(アンマネージド)ではWindowsが読めるヘッダが付いていて、
VBのDLLではフレームワーク用のが付いているんですよね?
今回サーバー機がWin2000でフレームワーク入ってるんで、
PL/SQLからキックするさえが出来れば・・・と思ってるんですが。。。
ORACLEのマニュアルではCとJAVA用のコードしか無く、
しかも、Cだと、ライブラリ名・外部公開名のみに対して、
VBはライブラリ名・クラス名・実行メソッド名を指定しないといけない(と思うので)
ですよね。
C++のDLLでラップするというのも考えたんですが、(それも質問中です(;つД`) )
VBだけで出来れば一番いいです。
何もわかってなくて申し訳ないですが、何か分かる人教えてください。

130128:04/07/16 23:26
>>128
>が理解できれば、C# でも別段難しい点はないと思う。

VB.NET スレだった・・・死んできまつ(嘘)
131123:04/07/17 02:03
>>128
ありがとうございます。

わからない用語調べながら試行錯誤してみたんですがどうもうまくいきません。
笑われてしまうかもしれませんが作成したコードかきます。
ヒントをください。

HTML側
<form>
<input type="file" name="files" id="ID"><br>
<input type="submit">
</form>

Dim Data1 As mshtml.IHTMLDocument3
Dim Data2 As mshtml.IHTMLElement
Dim Data3 As mshtml.IHTMLInputFileElement

Data1 = AxWebBrowser1.Document
Data2 = Data1.getElementById("ID")
Data3 = ????
Data3.value = "C:\aaa\aaa"
132デフォルトの名無しさん:04/07/17 11:58
インターネットのプロパティ、接続タブの画面で、設定ずみの
ダイヤルアップ設定を選択、通常の接続でダイヤルするを既定に
設定してあるのですが、ブラウザやメーラーでインターネットへの
アクセスを開始すると自動的にダイヤルアップが開始され、繋がり
ますが、VB.NETで作ったツールでSystem.Web.Mail.SmtpMail.Send
やらSystem.Net.Sockets.TcpClientやらを実行したときには
インターネットに繋がっていなければ、同じように自動的に
ダイヤルアップが行われるというものでは無いのでしょうか・・・

VB.NET ダイヤルアップでググっても、ズバリこれ!というサンプルも
見つけられず・・・

ADSL常時接続やらルータによる接続が当たり前な昨今、ダイヤルアップ
なんてことをすることも少ないのかもしれませんが・・・
VB.NETスレの皆様、ちょっと聞いて下さい。

少し前まで、このスレでお世話になりながらVB.NETプログラミングに精進していたのですが、
今回、Webアプリケーションに初TRYしてみることにしました。言語はVB.NETです。
そこで、以下の現象が。

Visual Studio.NET2003で、ASP.NETアプリケーションを新規作成し、
フォームにいろいろ配置して「デバッグ」!
すると、「デバッグができません」という旨のエラーが出てしまいます。
「デバッグなしで実行」すると正常に実行できます。

環境:

LANを利用して開発してます。
・サーバーPC
 OS:Windows Server 2003 ファミリ
 IIS:あり
 Visual Studio.NET 2003:なし
・クライアントPC
 OS:Windows XP Home Edition
 IIS:なし
 Visual Studio.NET 2003:あり

サーバーPCにIISが入っていて、クライアントPCにVisual Studio.NET 2003が
入っている状態です。
サーバーPCにつないで、ASP.NETアプリケーションを作っているのだけれど、
この場合、サーバーPCにもVisual Studio.NET2003が入っていないとデバッグ
できないのでしょうか? サーバーPC1台で開発する形?

つたない日本語で申し訳ないのですが、どうかヒントを下さらないでしょうか;
134120:04/07/18 01:19
VSを再インスコしたらデバッグできるようになりました
お騒がせしました<m(__)m>
135デフォルトの名無しさん:04/07/18 13:22
VisualBasic.net 2002 pro をインストールしたんですけど、
ソリューションの作成、Windowsアプリなどを新規に作成しようとした場合に
「"C:\Document〜1\ \LOCALS〜1\TEMP\RAD214DC.tmp"が見つかりません」とおこられて
Windowsアプリなど作成ができません。

すでに作ったソリューションなどを読み込んだ場合は普通に編集、デバッグはできます。
3回インストールしなおしましたのでインストールの失敗とは考えにくいです。
インストール時には常駐ソフトは終了させました。
MSに問い合わせましたが症状がわからないなどを理由に回答を得られませんでした。
どなたか同じ症状でお困りの方はいらっしゃいませんか?

136デフォルトの名無しさん:04/07/18 13:37
>VisualBasic.net 2002 pro
こんな製品存在したっけ。。?
>>135
Windowsのバージョンは?
138デフォルトの名無しさん :04/07/18 17:45
WindowsXP Professional SP1です。
とくにレジストリをいじっているわけでもなく、WindowsUpdateはすべて完了しております。

>>138
OSから再インストロールぐらいしか思いつかん。
140デフォルトの名無しさん:04/07/18 18:18
ていうかやっぱり、
>VisualBasic.net 2002 pro
こんなこと書いてる時点で、ある「疑惑」が払拭できないんだが。。
この疑惑が正しいとしたら、>>135はいい度胸してるよな。
というより、こういうことする人がMSの一質問ウン万円って技術サポート料金
を本当に払うとは....
141デフォルトの名無しさん :04/07/18 18:25
>>140
VisualStudio.netの間違いです。
訂正するまでもない間違いだと思い流してました。
142VB開発者:04/07/18 21:51
現在、Visual Basic .NETで開発をしている者です。

昨日までは何の問題も無く開発が出来たんですが、
昨日ごろから、VB .NETのアプリケーションを作ろうと、プロジェクトの新規作成をクリックすると、
「オートメーションサーバーはオブジェクトを作成できません」と表示され、新規作成出来ません…

設定をいじくった覚えは無いのですが、どうやったら解決できるのでしょうか?
ご指南賜りたく存じます。
143デフォルトの名無しさん:04/07/18 21:52
正規品を使え。
ここに来るのはプログラマや開発者のはずなのに、なぜこんなに問題の絞込みの出来ない人が多いんだろう?
145VB開発者:04/07/18 22:15
正規品を使っていますよ。

その証拠に昨日まではちゃんと作成できていましたし。
146デフォルトの名無しさん:04/07/18 22:25
「オートメーションサーバーはオブジェクトを作成できません」を
www.google.co.jp で検索してください。
147VB開発者:04/07/18 22:30
>>146さん
検索してみたところ、Nortonをインストールしている場合のエラーが出てきましたが、
つい先週ほどNorton System Workをアンインストールしたところです…

148デフォルトの名無しさん:04/07/18 22:32
149VB開発者:04/07/18 22:38
>>148

ありがとうございました。おかげさまで修復できました。
教えてクンで申し訳ございませんでした。これからは検索をきちんとしてみようと思います。

皆様、ご迷惑お掛けいたしました。
150初心者:04/07/18 23:07
textboxに入力した値を計算してmsgboxで表示させたいんだが(´・ω・`)
1.入力した値を計算式にするにはどうすれば・・
2.msgbox中で、メッセージ結果メッセージ みたいなのにするには・・

厨っぽい質問でスマソOTZ
151デフォルトの名無しさん:04/07/18 23:24
>>150
どういう値を入力させるの?
1つのtextboxに、1920/726+829*7427-784みたいな式を入れる?
2つのtextboxにそれぞれ数値を入れて、+,-,*,/ボタンを押して計算?
>>135
関係あるかどうかわからんけど、
OSのログオンに日本語のアカウント名使ってる?
半角英数字のアカウント作ってやるとどう?
比較的簡単な顧客管理DBを作るときって
クライアントPC数が5台ぐらいあったら、ストアドつかったほうがいいですか?
それともADO.NETでガリガリ書いたほうがいいですか?
154dame:04/07/19 17:16
かなり基本的な質問なんですが、よろしくお願いします。

作成したプロジェクトの入ったフォルダを移動したり、
名前を変更すると、開く事ができなくなりますよね。
この解決方法ってないのでしょうか。
あるプロジェクトで作ったフォームを別のプロジェクトにコピーしたり、
バックアップで保存しておいたりとかがとても不便で
こまっております。どうかよろしくお願いします。
プロジェクトのフォルダにある色々なファイルをメモ帳とかで開いてみ。
大体わかる。
156デフォルトの名無しさん:04/07/19 17:25
>>154
>作成したプロジェクトの入ったフォルダを移動したり、
>名前を変更すると、開く事ができなくなりますよね。
普通にやってる限りそんなことは全くないので、もう少し詳しく書いたほうがいいと思う。
157デフォルトの名無しさん:04/07/19 17:29
全てのVBプログラマは蜂起せよ!!

構造体のないVBは【糞】
http://news17.2ch.net/test/read.cgi/news7/1088807486/
158デフォルトの名無しさん:04/07/19 17:35
↑プ、また騙されたのね、の予感。。。
んなつまらんことで楽しいと思える君は幸せだね。
俺はそんな幸福な馬鹿になるぐらいなら不幸でいいけど。
VBに構造体はある罠
.NET Framework クラス ライブラリにダイアルアップ関係は
無いのでしょうか。

http://www.microsoft.com/japan/msdn/library/ja/cpref/html/cpref_start.asp
で検索してみたものの、それらしきものは見当たらず・・・・

VB.NETでダイアルアップはどう実現できるか、どなたかご助言くださいませ
161128:04/07/20 10:54
>>131
(
今探したんですが、この記事参考になると思います。
http://www.eggheadcafe.com/articles/20031027.ASP
)

VB.NET は良く知らないのですが、たぶんこんな感じでしょう。

Dim Data1 As mshtml.IHTMLDocument3
Dim Data2 As mshtml.IHTMLElement
Dim Data3 As mshtml.IHTMLInputFileElement

Data1 = AxWebBrowser1.Document
Data3 = Data1.getElementById("ID")
Data3.value = "C:\aaa\aaa"

IHTMLElement から IHTMLInputFileElement への型変換は自動的にやってくれるはずです。
で、あとは type="submit" の input 要素を探して、click してあげるわけですが、
ID が付いていれば同様に getElementByID で出来るのですが、ID が無い場合には、
無い場合には、document の all プロパティに階層関係を無視した全ての要素の集合があるので、

Dim element As mshtml.IHTMLElement
For element in Data1.all
 If element.tagName = "input" Then
  If element.getAttribute("type") = "submit" Then
   element.Click
  End If
 End If
Next element

のようにして sumbit してあげると良いでしょう。(input type="submit" の要素に onclick 等による
妙な仕掛けが無い場合には、form 要素を探して element.submit しても良いです).
162デフォルトの名無しさん:04/07/20 19:48
今更なんですが、VB.NETで.NET Frameworkを使わないアプリケーションの
開発ってできますか?
できません
164デフォルトの名無しさん:04/07/20 21:14
>>163何も知らないんだな馬鹿が
165デフォルトの名無しさん:04/07/20 21:52
構造体の配列に初期値を入れたいのですが下のようにやっても
だめなのはなぜですか。
Public structure s
public a as integer
public b as integer
End structure
Dim c() as s = New s(){New s(0,1),New s(2,3)}
コンストラクタ書け
167デフォルトの名無しさん:04/07/20 23:02
>>165
ていうかs(0,1)って何?
私は人間だからあなたの意図はなんとなく伝わるけど、
コンパイラは人間の願望をくみ取るようにはプログラムされてないでしょ?
まあ昔の構造体感覚だと別にありえない発想ではない。
dim as integer
170デフォルトの名無しさん:04/07/20 23:18
みなさん!
夏ですね!!
そうですね。
コンストラクタを書けばこれでいいのか?
c() = New s(0,1,2,3)


なわけないよな
初心者です。ファイルダウンロード支援ツールなどにあるリストビューの中に
プログレスバーがあって、ファイルのダウンロードの進行具合を把握できるやつ
ありますよね。あれってどうやってるのかな?ぐぐってみたんだけどいい例は見
つからなかったです。VB.NETでどうやって実現するのでしょう。
>>166-173
皆さんのレスのおかげで理解できました。
Public Structure s
Public a As Integer
Public b As Integer
Public Sub New(x As Integer,y As Integer)
a=x
b=y
End Sub
End Structure
176133:04/07/21 08:57
あれ、133ですが、どなたも答えて下さらないのですね;

ASP.NETがデバッグできないのは仕様なんでしょうか?

もいちど質問してみます・・・

>>133
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
>あれ、133ですが、どなたも答えて下さらないのですね;
178デフォルトの名無しさん:04/07/21 13:38
>>176
> ASP.NETがデバッグできないのは仕様なんでしょうか?

仕様ではない。やり方がまずいだけ。

つーか、スレ違い。帰れ。
179デフォルトの名無しさん:04/07/21 14:01
初めてバイナリを扱うんだけど、もともと10バイトのファイルに
バイナリで6バイト書き込んだ場合後ろ4バイトは元のデータが残った
ままですよね?これを消して6バイトのファイルにしたい時は
どうすればいいんですか?

超初歩的なことなんだろうけど良い検索ワードが思い付かなかったので
ここで質問させてもらいます
180133:04/07/21 14:23
すまんかった。
そんなに煽らないでおくれ。
どのスレいったらよいのでしょう。
さすらってきま
181デフォルトの名無しさん:04/07/21 15:34
>>133
http://www.atmarkit.co.jp/fdotnet/index/bbs/dir74.html
回答だけじゃなく、質問も参考にすべし。
182デフォルトの名無しさん:04/07/21 15:46
>>179
まず、ヘルプで FileOpen 調べれ。
Output で Append じゃなければ上書きだ。
183133:04/07/21 18:19
>>兄貴 (>>181)
ありがとうございます!!
質問を参考に1から頑張ってきます!

ああ、暖かい・・・
184デフォルトの名無しさん:04/07/21 19:37
おまえら、どうか教えてください。
コンソールアプリケーションで、マウスカーソルを画面右下に飛ばしたいんだけど、
以下のコードを実行するとなぜか、画面右上に飛んでしまうんだよね・・・。

------------------------------------------------------------------------------------------
Module Module1
Public Declare Function SetCursorPos Lib "USER32" (ByVal x As Long, ByVal y As Long) As Long
Sub main()
Call SetCursorPos(1024, 768)
End Sub
End Module
------------------------------------------------------------------------------------------

768のところは、どんな数値にしても同じ結果・・・。
なぜ??
185デフォルトの名無しさん:04/07/21 20:01
>>184
Long×、Integer○
教えてください。
データベースにVariable、Dataというフィールドを作成しました。
例えばPHPの場合ですと、以下のような感じでVariableを変数名、
Dataをその値に設定できます。

while ($db->next_record()) {
  ${$db->f("Variable")} = $db->f("Data");
}

これをVB.netで行うことは出来ないでしょうか?
ちなみに以下のような感じで処理しており、変数をデータベースに追加するごとに
Caseを追加しなければならない状態です。

While OleRs.Read()
  Select Case OleRs.Item("Variable")
    Case "A"
      A = "" & OleRs.Item("Data")
    Case "B"
      B = "" & OleRs.Item("Data")
    ・
    ・
  End Select
End While
187184:04/07/21 20:45
>>185
すげー、解決した。
ありがd
>186
俺はPerl使いだが少なくともPerlではそういう使い方は推奨されないな。
PHPはそんなのを普通に使う奴が多いのか?
Perlでならハッシュ使えって言われるのが普通だな。
PHPは知らん。
VB.NETならHashTable使え。
189186:04/07/21 21:14
>>188
自分で考えたもので、こんな感じのソースは本やネット上では見たことがありません。
具体的ににはSQL文でIDフィールドをWHEREして、必要な情報のみ取り出しています。
変数を簡単に管理できるし楽だなぁと思ったもので・・・

とりあえず、HashTableを勉強してみます。
ありがとうございました。
190デフォルトの名無しさん:04/07/22 00:40
>>162-164
どっちでしょうか?
できるの? できないの?
>>190
いわゆる、Windowsネイティブなアプリの事なら、
VB.NETではできません。VC#も然り。
VC++なら可能
192デフォルトの名無しさん:04/07/22 00:42
.NETではVB6.0まであったコンボのメソッドAddItemは使えないのでしょうか?
それともどこかのクラスライブラリにありましたか?
コンボ名.Items.Addで処理そのものはできましたが。
>>191
ありがとう。
>>192
名称の統一で変更になったと思う
メソッド名が変わることによる不利益は???
195インスタント:04/07/22 16:31
今、画像ソフトの製作をしているのですが、
拡大処理がうまくいきません。
画像処理といっても、ドット絵なんで、
ドット毎の色を認識させ、表示させるのでしょうが、
やりかたがよくわかりません。
素人みたいな質問ですいませんが、できるかた教えていただけませんか?
>>195
StrechBltでぐぐれ
197デフォルトの名無しさん:04/07/22 18:24
Excelのワークブックからユーザ定義プロパティの値を取得しようと試みているのですが、
VBAと同じように取れずに困っています。

Excel-VBAだと
Dim prop as DocumentProperties
set prop = ActiveWorkbook.CustomDocumentProperties

でプロパティリストを得ることができるのですが、
VB.NETで同じように
Dim prop as Excel.DocumentProperties
prop = appExcel.ActiveWorkbook.CustomDocumentProperties

とすると、実行時にキャストが誤っているというエラーが出てきます。

オブジェクトブラウザで確認すると、CustomDocumentPropertiesの戻り値型がObject型に
なっていて、明らかにVBAの方と違っているのですが、これはこういう仕様で、
VB.NETでExcelワークブックのユーザ定義プロパティは取得できないのでしょうか?

方法をご存知の方、ぜひ教えてください。
実験してないので正確じゃないかもしれないが
Object型で戻ってるものをDocumentProperties型に直接代入することは出来ないので
Ctype(戻り値,DocumentProperties)でキャストしなおしてみる
199デフォルトの名無しさん:04/07/22 18:37
TextBox から派生したコントロールのクラスを作ってるんですが、そのクラスにプロパティを
追加しました。

で、いざその作成したコントロールを使おうとした場合、VisualStudio の画面でプロパティを
設定する場合、0とか1とかの設定値そのものを設定したのですが、これを標準のプロパティ
である ImeMode のようにコンボボックスによる選択式にすることってできますでしょうか?

ご存知の方がいらっしゃいましたらご教授願えませんでしょうか?
>>197
CType で明示的にキャストする必要があったんでないかな。
これでだめならソース出して見れ。こっちで確認すっから。
201197:04/07/22 18:40
>>198

レスどうもです。

prop = CType(appExcel.ActiveWorkbook.CustomDocumentProperties, Excel.DocumentProperties)

で試してみましたが、やはり同じ実行時のキャストエラーが出てきます。
オブジェクトの生成型がDocumentProperties型じゃない感じです。

もし、VB.NETから、Excelのマクロのfunctrionを呼び出せればExcel-VBA側で取得したデータを
戻すようにできるのですが、呼び出すはできましたっけ?
202197:04/07/22 18:46
>>200

レスどうもです。

やろうとしていることは、ユーザ定義プロパティの値をすべて取得することで、
コードは次のような形です。
実行の前提条件としてExcelは起動済みで、そのアプリの参照変数がappExcelです。

Dim WB As Excel.Workbook = appExcel.ActiveWorkbook 'appExcelはExcelアプリの参照変数です
Dim DPS As DocumentProperties
Dim DP As DocumentProperty

DPS = WB.CustomDocumentProperties ←ここで実行時にキャストエラーが出る

For Each DP IN DPS
プロパティ値を取得するコード
Next
>>202

http://support.microsoft.com/?kbid=303294

PIA を使わんとだめかも。
204174:04/07/22 19:00
174だけどわかる人いない?
VB6だとカスタムドローでやるみたいなんだけど・・・
.NETではどうやってやるの?
205デフォルトの名無しさん:04/07/22 19:05
ていうかオーナードローが理解できてるんなら
VB6でもNETでも同じ事だと思うんだけど。。。
206174:04/07/22 19:23
同じ用にやればいいの?
WindowsProcでカスタムドロー・・・っていう感じ?
タブコントロールだと標準でオーナードローがあるんだよね?
でもListViewだと見当たらないんだよな〜

見当外れの事いってたらスマソ
フローティングツールバーは売られているみたいですが、
MFCみたいに(Visual C++6.0でウィザードが作ってくれるみたいに)
標準で提供されてないですか?
>>198>>200
実行時にキャストのエラーガ出るんだからキャスト自体は実行しようとしてる。
# Option Strict Off の場合はこれでいける。

問題は実際に返されるオブジェクトの実行時型が違ってしまってるってことだな。
メソッドの戻り値の実行時型を確認したければ、
とりあえずObject型に代入しといてウォッチとかで見れると思う。
まあ、代入せんでもウォッチ式にそのまま書いてもいいが。
209デフォルトの名無しさん:04/07/23 04:50
BitBlt関数を使いたいのですが、VB.NETではPictureBoxのハンドルを
直接取得できないんでしょうか?
>>209
そのまんま、Handleってプロパティあるじゃん。
>>210
それ違うだろ
212197:04/07/23 08:14
>>203 >>208

CustomDocumentPropertiesが返してくるオブジェクトの型はSystem.__ComObjectという
型で、本来の型をラップしているようで、結局どの型をラップしているのかはわからなかったのですが、
強引にSystem.__ComObject型のままプログラムを組みました。

 Dim WB As Excel.Workbook = appExcel.ActiveWorkbook
 Dim DPS As Object

 DPS = WB.CustomDocumentProperties

 Trace.WriteLine(DPS.Item(1).Name)

なんか納得できないけど、作業が終わったら、この変なラッパクラスをじっくり調べたいと思います。

レスくれた方達、どうもでした!
theSpokeを買って書類もマイクロソフトに郵送したのですが未だにシリアルキーがもらえませんが
どうしたらいいのでしょうか。
214デフォルトの名無しさん:04/07/23 11:53
MSに連絡するのが一番
>>213
エラースキャン、デフラグ、エロ動画の削除
この辺をやって待ちわびるよろし
216名無しさん@お腹いっぱい。:04/07/23 17:15
IMEがONのテキストボックス(Text1)にフォーカスがある状態でキーを押した場合
Text1_KeyDownのe.KeyCodeがKeys.ProcessKeyだということはすでにIMEが処理済
なのだと思うのですがIMEが処理する前にイベント補足して送られる仮想キーコードを変更することは可能でしょうか?
バカバカしい話なのですがキーボード左上の1,2,3・・・のキーをあ、い、う・・・に代えたいという要望に答えるためです。

そもそも考えが間違ってるとは思いますが方法があればご教授ください。
217216:04/07/23 18:03
我ながら根本的に無理な気がしてきました・・・
キーフック使え
鼻フックのがいいよ。
システムを起動時にネット(FTP,Webにアップしたファイル)に接続して、
常に最新版をチェックし、最新版なら自動でダウンロードし、
アップデートするような仕組みって難しいのでしょうか。

アップデートファイルをダウンロードしてシステムが起動していない時に
実行(システムファイル上書き)するようなものは一応出来たのですが。

システムファイルを使用中に上書きすることが出来ないので
自動アップデートの仕組みが不思議です。
>>220
.NET Application Updater Component
222220:04/07/23 22:09
>>221さん、ありがとうございました。
たまに自動アップデートすると再起動要求されて
そのまま二度と立ち上がらなくなることあるよね
225デフォルトの名無しさん:04/07/23 23:32
>>223
割れXPですか?
226デフォルトの名無しさん:04/07/24 15:11
WebBrowserで、ボタンを押すと前のページに戻るっていうのは
どのように作れば出来ますか?
あと、WebBrowserについて詳しく書かれているところありますか?
Visual Studio .NETにて、Officeアプリケーションのイベントを
拾って特定の処理を行うようなプログラムを作ろうとしています。
イベント監視を行うようなクラスってありますでしょうか??

Main関数にて、Application.Runでオブジェクトをnewしないとすぐに
プログラムが終わっちゃうし、Application.RUnを使う場合は、
Formクラスを継承したオブジェクトを作成しないとだめだし、
Formクラスを継承したオブジェクトを作ると、画面にフォームが
表示されてしまいます。。。
>>226
GoBackで戻れるのではないかと。

>>227
例えばどんなイベント?
フォームにオブジェクトとして追加ではなく、
そのアプリケーションでおきたイベントを取りたいのであれば
フックを作んなきゃ駄目でしょう。
229227:04/07/24 18:46
>>228
Visio2003でシェイプが図面に配置されたイベントや、シェイプが図面が
削除されたイベントです。
フックですか!初めて聞く単語です。
調べてみます。どうもです!
>>227
フォームを指定しないRunもあるんだが…
>>227
Runメソッドのオーバーロードリスト見れ。
232デフォルトの名無しさん:04/07/25 02:00
>>228
あ、GoBackですか。ありがとうございます!

というわけでやってみたのですが、これ以上進めないときに(戻れないときも)
進むボタンを押すとエラーが起こってしまいます。どう対処すればよいのでしょうか?

Private Sub Button2_Click (略) Handles Button2.Click

AxWebBrowser1.GoForward()

End Sub
Try
 AxWebBrowser1.GoForward()
Catch ex as Exception
Messagebox.show("すすめませんよ")
End Try
>>232
こんなんどうよ?C#だけど。
protected void AxWebBrowser_CommandStateChange(object sender, DWebBrowserEvents2_CommandStateChangeEvent e)
{
if(e.command.Equals(SHDocVw.CommandStateChangeConstants.CSC_NAVIGATEBACK))
{
MenuItem miView = MenuMain.MenuItems[2];
MenuItem miGoTo = miView.MenuItems[3];
miGoTo.MenuItems[0].Enabled = e.enable;
TbBack.Enabled = e.enable;
}
if(e.command.Equals(SHDocVw.CommandStateChangeConstants.CSC_NAVIGATEFORWARD))
{
MenuItem miView = MenuMain.MenuItems[2];
MenuItem miGoTo = miView.MenuItems[3];
miGoTo.MenuItems[1].Enabled = e.enable;
TbForward.Enabled = e.enable;
}
235デフォルトの名無しさん:04/07/25 02:31
>>234
凄いっ!!でもC#ですか…残念です。
それをVBに変換するソフトとかありませんでしたっけ?
こんなもんC#の文法知らなくても想像で直せるだろ。
237234:04/07/25 04:05
分からんようなんで、VB.NETに直してみた。

Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
If e.Button Is Me.GoBackButton Then
Me.AxWebBrowser1.GoBack()
ElseIf e.Button Is Me.GoForwardButton Then
Me.AxWebBrowser1.GoForward()
End If
End Sub

Private Sub AxWebBrowser1_CommandStateChange(ByVal sender As System.Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_CommandStateChangeEvent) Handles AxWebBrowser1.CommandStateChange
If e.command = SHDocVw.CommandStateChangeConstants.CSC_NAVIGATEBACK Then
Me.GoBackButton.Enabled = e.enable
ElseIf e.command = SHDocVw.CommandStateChangeConstants.CSC_NAVIGATEFORWARD Then
Me.GoForwardButton.Enabled = e.enable
End If
End Sub

初めてVB系書いたんで、変なとこがあったら無視してくれ。
GoBackButtonとGoForwardButtonは、コンストラクタでEnableをFalseにしとく。
238デフォルトの名無しさん:04/07/25 12:18
>>237
このとおりにやってみました。
そしたら戻れないようになりました!ありがとうございます!

ですが、戻るボタンを押しても戻りません。
Me.AxWebBrowser1.GoBack()

AxWebBrowser1.GoBack()
にしても駄目でした…
>>238
.NET 1.1だよね?
うちでは動作するんで、ソースさらすよ。
http://www.asahi-net.or.jp/~ec6k-mtmr/VBnet_BrowserTest.zip
240eko:04/07/25 12:43
質問です。

現在、スプレッドシートを自作をしているのですが
それをフォーム1に貼り付けて、右クリックしてコンテキトにデザイナと
言うメニューを追加して、選択するとフォーム2を立ち上げて
(ここまでは何とかできました・・。)

そのフォーム2からフォーム1のデザイン(プロパティ)を変更する方法が
判りません。

ちなみにスプレッドはpaintで描画してます。
拙い説明ですが、ご存知の方居ないでしょうか??
よろしくお願いします。
241デフォルトの名無しさん:04/07/25 16:38
242デフォルトの名無しさん:04/07/25 16:49
ヘ_ヘ
ミ・・ ミ ということにしたいのですね :)
( ° )〜
243233:04/07/25 16:50
スルーかよ・・・
>>243
なんだ?つっこんで欲しいのか?
245デフォルトの名無しさん:04/07/25 21:45
>>239
何でなんですかね。おかしいところは無かった様な気がするのですが。
でも、ほかの事をして何とかなりました。
いろいろありがとうございました!!!
246デフォルトの名無しさん:04/07/25 22:10
Textboxコントロールの、
Textプロパティにて、
その桁数をあらわすにはどうすればいいでしょう?

例えば、TextBox1というテキストボックスの値(MAX10桁)で、
5桁だけ入力されていたらなにか処理をする場合、

If TextBox1.Text=(5桁)Then
    【処理】
End If


教えてください。お願いします。
Lengthだっけかな。ってかマニュアル見ろ。
>>246
普通に、Len() で OK。
個人的にLenはお奨めしない。ま、別にいいんだけどね。
250デフォルトの名無しさん:04/07/25 23:58
またなんですが、
WebBrowserで読み込みを中止するにはどうしたらいいのでしょうか?
>>250
Me.AxWebBrowser1.Stop()
のことなのか?
252デフォルトの名無しさん:04/07/26 00:22
>>251
それです、それ!
ありがとうございました!!
分からん部分はまとめて書いてくれ。
なんか多そうだし。
254:04/07/26 00:45
嫌味とか冷やかしで言ってるワケじゃないので。
>>240
俺はデザイナフォームに一時ファイル名を渡してやってるよ。

デザイナ起動時に対象のコントロールの内容を一時ファイルに保存してデザイナ側
で読み込み、変更を反映する場合は、逆にデザイナのコントロールの内容を一時ファイル
に保存するってな感じで。
あと、変更の反映するかの確認が必要なければ、参照渡しのコントロールを、デザイナに
セットすれば完全な同期がとれると思う。

はずしてたらスマソ。
256デフォルトの名無しさん:04/07/26 10:24
>>254
じゃあ、お言葉に甘えて…
WebBrowserで新しいウィンドウが出てくるとそのページはIEで開かれちゃうじゃないですか。
そのページを自作ブラウザで開かせるのはどうしたらいいのですか?
>>256
こんな感じで。
Private Sub AxWebBrowser1_NewWindow(ByVal sender As System.Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) Handles AxWebBrowser1.NewWindow2
Dim form2 As New Form1
e.ppDisp = form2.AxWebBrowser1.Application
form2.Show()
End Sub
258デフォルトの名無しさん:04/07/26 12:54
質問です。
メモ帳を作成したのですが、
テキストファイルからプログラムを実行した際に、
テキストファイルを読み込む処理の仕方が分かりません。
プログラムをexeから実行したのかファイルから実行したのか判別する
方法は無いのでしょうか。

>>258
質問の意味がいまいち分からないが、
Command関数を調べると、いいかも知れんね。
260258:04/07/26 14:13
>>259
サンクス!
261デフォルトの名無しさん:04/07/26 15:44
>>257
本当に助かりました!
ありがとうございました!!!!!!!
262只今勉強中: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文の所の書き方
をどなたか教えていただけないでしょうか?

excol_cd の型は?それがないと正確に答えられない。

たぶんSQLスレ行けって言われると思うけど。
>>262
F2で絞り込んだものをさらにF3で絞り込むのか
F2とF3を同時に発行して絞り込むのか

あとInteger型のものに対してLike(あいまい)で検索かけてるけど
これはこれでいいの?
>>264
car_id が Integer型ってどうして分かるの?
266262 :04/07/26 18:39
すいません、もう右も左もわかんなくて、本を引き引きやってる状態で・・・。

excol_cdもcar_idも整数型です。

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

Likeがあいまい検索だというのは、いまスレを見て始めて知ったので外してみたら、
SqlDataAdapter1.Fill(DsExcol1)の行で止まってしまい、LIKEの代わりを今探して
SQLのサイトとニラメッコしています。
267262: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"
だと動いてくれないようです・・・。なにか書きようがあるのでしょうか?
>>267
困ってるのはわかるが、落ち着いて VB の入門書と SQL の入門書を読んだ方が
結局は早いと思うよ。
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM excol_data WHERE car_id = " + filterIdcarF2 + " and car_id = " + filterIdcarF3 + " and excol_cd = 5"
VBAって次に VBA.NET になるんですかね。
String の配列に入っているテキストデータを TextBox で編集しようと思って,

Dim List(200 ) As String
で,

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

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

このような,何かのプログラム内での プチエディタ なんかは,
どういう風に実現するのが良いのでしょうか?
>>271
配列をそのままTextBox.Linesプロパティに入れて、編集後にTextBox.Linesをそのまま配列に戻すのは駄目なん?
的外れだったらスマソ。
>>272
おおっ. そんなものがあったのか.
ご教授ありがとうございました.

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

とにかく解決.ありがとうございました.
>>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には入ってないのでしょうか?
276216: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の第一引数にしてみましたがさっぱりでした。
何がいけないのか教えてください。
277216:04/07/27 16:44
>>276

ヒントを頂いたのは
>>217ではなく
>>218でした
というか217は自分でした・・・
>>274
Win32API使ってもOKなら、user32.dllのGetCaretPosでいける。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rm=10
ここの>>32にC#版がある。
>>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 はちょっと勝手が違うん困ってます。

お願いします。
>>281
データソースはDB?
それとも実行時に任意に与える数値?
283281:04/07/28 00:16
>>282

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

別フォームでその文字列を変数に格納して、レポートに表示したい
という訳です。
標準入力・出力するコマンドラインで動くアプリケーションがあるんだけど、
それとVB.NETでやりとりすることできるかな?

(ひらたく言えばVB.NETってパイプ使える?)
285デフォルトの名無しさん:04/07/28 00:49
標準入出力とのやりとりならできる。
>>285
そうですか。できれば方法も教えてもらえると助かるのですが。
「〜〜というクラスを使え」とか・・・
ヘルプで検索すれば出ると思うが…
ProcessクラスとかProcessStartInfoとか参照。
>>287
ありがとうございます。
そこまで教えてもらえればあとはググるなりMSDN使うなりしてなんとかしてきます。
>>287
解決しました。ありがとうございます
>>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から取得する方法でやってます


FlexGrid.Netを使ってるのですが
ある日を境に
デザイン時は最新バージョン
実行時は古いバージョン
をロードしてしまいます

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

binフォルダ内と標準インストール先のフォルダには最新バージョンの 2.1.20032.135 が
実行時にはなぜか一つ前の 2.1.20032.124 が読み込まれています
Windowsアプリケーションから、
任意のsqlスクリプト(ファイル名.sql)を読み込んで
実行させることって出来ますか?
293291: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";
って感じでどうですか?
上のほうで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を使いたいのです。

>>297
なぜVBにこだわる?
299デフォルトの名無しさん:04/07/29 18:31
>>298
つっか、APIたたくならC#でもVBでもC++でも答えは似たようなもんでしょ。
あと、VBが一番安いんだっけか?
300デフォルトの名無しさん:04/07/29 18:43
>>297
その程度のことでいちいち人に聞いてるレベルじゃ、
まず間違いなくファイルI/O系のAPI使いこなすなんて無理だと思う。

ほかのスレでこんなの見つけたけど、これなんか使えるのでは?
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=b06e30f9-1301-4cc6-ac14-dfe325097c69

>>294
久々に「別フォームの……」キター
As Any って As Object で代用できなかったっけ?
どこかにVB.netのゲームサンプルがある場所ってありますでしょうか?
303294:04/07/30 00:48
>>295
ありがとうございます。
でもそれだと実行中のフォームじゃなくなってしまうので
ダメなんですよね・・・
>>303
インスタンスの扱いが理解できてるなら、Form2のインスタンス作成時に
参照をとっておけばどうにでもなることくらい分かりそうなもんだが…
Form2ってどの段階で表示(生成)されるの?
もしかして別EXE?
>>302
難しいなぁ。どんなゲームがいいんだ?
フォームロードイヴェントのときにそのアプリのプロセスIDを取得するのはどうやるのでしょうか?
Velocityのようなテンプレートエンジンってないの?
フリーの。
>>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
>>310
小数点以下3桁くらいで四捨五入しろ
>>310
π = 3.1415
としているのが原因
>>311-312
返答ありがとうございます。

311の通りにしたら数値が0になったので、桁数が多すぎると表示がおかしくなる・・・でいいのかな。
>>313
違う違う、有効数字の考え方を勉強して来なさい。
いや、むしろ10万桁ぐらいまで
もしかして
4.63267948799578E-05
の意味分かってないとか?
>>316
いや、それを変数に入れて計算したら、
4.63267948799578が数値として考えられたのか、ただの回転がとんでもないことにナターヨorz
つまり
π = 3.1415
のときに
0.0000463267948799578
ってことだから、
π = 3.141592653589793
くらいまで取ればもっと0に近づく
いや、浮動小数点数だから「変な数値」になることにはかわりないか?
Perlユーザーには基本を知らない人間が多いのは知ってるし
自分も最初はそうだったから人の事は言えないが、
実際にそういう場面に出くわすと疲れるな。

今、基本情報処理の試験受付してるぞ。
基礎を身につける意味で、受験&勉強してみたらどうだ?
すまん、スレ誤爆した。orz
>>308
ない
3234.63267948799578E-05:04/07/31 22:05
スマソ、やっぱ根本的なプログラムミスですたorz

とりあえず立体モデルの回転をさせようと思っています。
http://member.nifty.ne.jp/Mukai/3d.htm
ここの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)
それはプログラミングって言うより線型代数の問題じゃないのか
>>323
ちゃんと読んでないのでちょっと良くわからないけど,
3番の M は 2番で言う A のことではないかな?
M が機体の 前上右ベクトルなんだと思う.
なので,M の初期値は,2番での Aの初期値とかでいいでしょう.

M = A × M は,普通の3行3列の行列演算.
行列演算がわからないなら,自分で調べるか,
もう一度ここで泣くかしなさい.
3264.63267948799578E-05:04/07/31 23:43
>>325
前者了解しますた。
一番肝心なのは後者のほうですね・・・検索しても分かりませんでした、分かる方助言をお願いしますorz
M[0][0]はA[0][0]とM[0][0]からM[2][2]をかけて足したもの?
もうさっぱりです(´-ω-`;)
3次元関連の入門書読め。
ゆとり教育って…行列の掛け算も載ってないの?
まあ、なんでも教科書に載ってると思う方が間違ってるともいえるが。
>>327
僕も指数表現とか行列演算は,プログラム作るために勉強したので,
326のいいきっかけになれば良いじゃん.
このホームページには冒頭に3D関係の本に載ってないと書いてあるが,
それでも,3DCGの基礎は知っとかんとこの先詰まるので,
>3次元関連の入門書読め。
には賛成.

>>326
これじゃだめ?
ttp://shigihara.hp.infoseek.co.jp/mx13.htm
ttp://www.matsusaka-u.ac.jp/~aihara/pukiwiki2/index.php?%A5%D9%A5%AF%A5%C8%A5%EB%A4%C8%B9%D4%CE%F3

ただし,プログラムでやるときは,
T = A × M
M = T
みたいにやらないとだめだよ.
3294.63267948799578E-05:04/08/01 00:17
>>327
DirectXの本が何冊かあるけど、どれも行列を使ったサンプルはなくSetRotation・・・。
DirectXはスレ違いだけどVBで作っているからcppのサンプルは使えないしでもうダメポ(つД`;)
それと2*2の行列の計算すら載ってませんでした。。
VBでエクセルをいろいろいじりたいんですが
参考になるサイトってありますか?
3314.63267948799578E-05:04/08/01 02:50
3324.63267948799578E-05:04/08/01 03:28
Microsoft® Visual Basic® アプリケーションでは、Direct3DX ユーティリティ ライブラリによって提供される D3DXMatrixRotationX 関数、D3DXMatrixRotationY 関数、および D3DXMatrixRotationZ 関数を使って回転行列を作成する。
ここまで分かったけど、そこの見えない谷に阻まれてまs orz
Rは登録商標だが、TMは何?
>>332
Direct3D で回転させるの? 自分で行列演算して回転させるの?
とくに実現方法にこだわらないなら,いろいろ調べてできそうなやつで
やれば良いんだけどね.
そもそも 3D→2D を Direct3D でやるか 自分で写像するか..
Direct3D のほうが速いと思うけど.

>>333
トレードマークでしょ.って,これは誤爆なのかな?
トレードマークって?
TM - Trade Mark 商標?
R - Registered (Trade Mark) 登録商標?
どっちがえらいの?
たぶん 登録商標 のほうがえろいと思うけど.
ここじゃなくて,法律関係の掲示板に行ったほうがいいと思うよ.
3394.63267948799578E-05:04/08/01 14:04
結局使い方が分からない罠orz

>>334
方位・角度・ロールを正確に表示しつつ回転させると、やはり回転行列を使わないと・・・。
少しロールさせた状態で機首を上げると、角度と方位が変わるとともにロールもする。
この表現にもう一ヶ月近く悩まされてますorz
>>339
じゃ >>323 のホームページにある3番のJavaプログラムみたいなものが
VB でできればいいの?
それくらいなら協力できるかも.
3414.63267948799578E-05:04/08/01 22:36
>>340
まったくもってその通りです、できる範囲でいいので協力お願いしますorz
数学板ではなぜか叩かれるし、ここでは反応が薄いし・・・回転行列は以前何かあったのかな・・・。
はっきり言って無理だと思われ。
他人に甘えてる態度が見え見え。
とても自分で努力しているようには見えない。
きっと数学板で叩かれてきたってのもそういう部分なんじゃないの?
基本を疎かにして上辺だけ習得しようって考えているなら、ずっと習得はできないよ。
3434.63267948799578E-05:04/08/01 23:16
>>342
去年同じようなことをFlash板で言われますた。。
努力しろ!って言われても検索するところはしたし、
自分でこれかな?って思ったのは作って砕けてるしでどうしろと(;´Д`)
行列は学校で習っているものと思われているけど、最近は習わないところが多々あるので基本とか言わないでくださいorz
>343
その辺が根本から間違ってるんだって。
「どうしろと」じゃねーよ、自分で考えるんだよ。
学校でなんでもかんでも教えてもらえると思うな、自分で調べるんだよ。
なんでも誰かに教えてもらうと考えるな。
だから叩かれるんだよ。
3454.63267948799578E-05:04/08/01 23:27
>>343
> 「どうしろと」じゃねーよ、自分で考えるんだよ。
> 学校でなんでもかんでも教えてもらえると思うな、自分で調べるんだよ。

> 努力しろ!って言われても検索するところはしたし、
> 自分でこれかな?って思ったのは作って砕けてるしでどうしろと(;´Д`)
頼むから飛ばして読まないでorz
てか釣りだったらスマソ
3464.63267948799578E-05:04/08/01 23:28
こっちでも矛先間違えたorz
347340: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
つづく
348340: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
3494.63267948799578E-05:04/08/01 23:33
本当にありがとうございますorz
後ほど結果を書きますね(知らないのがいっぱい(;´Д`))
>345
ちゃんと読んでるよ。
じゃあ聞くが、検索以外には何をした?
書籍を調べたか?
図書館に行ったか?
検索をしたのは1ヶ月で何回だ?

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

基本を学べ。
人生の基本を。
調べ方の基本を。
351340:04/08/01 23:37
>>341
>数学板ではなぜか叩かれるし、

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

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

キーボードの f で前進, r で右向く, u で上向く.
左向く,下向く,ロール は自分でトライして.
3524.63267948799578E-05:04/08/01 23:41
>>350
本は3冊買いますた、プログラムをやってる先生にも聞きました(でも昔やったが忘れた、とorz)。
検索はほぼ毎日してます、ダメな部分を変えていったら地獄の一丁目にたどり着きますた。。
一度書いてやってから組んでいるからノートの半分以上は埋まったし・・・基本と言われることはしてます。
受験勉強せずになにしてんだか(;´Д`)
353340: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}}
3544.63267948799578E-05:04/08/01 23:51
>>340
改めてありがとうございました。
これこそ基本だと言われることなのですが、
指定されたキー以外を押すと止まってしまう(そのあと何を押しても動かない)のはなぜなんでしょうか。
自分はselect case 〜でやっているので他のキーを押しても何も起こらないだけなのですが。
3554.63267948799578E-05:04/08/01 23:52
>>353
って先に直してくれてましたね、度々ありがとうございます。
VB.NETでaspxを書くときは

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

<script runat=server>
</script>

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

<html>
</html>
357340:04/08/02 00:01
>>355
実は右翼端と左翼端の座標も逆みたい.
想定座標系の裏返しに表示されてる.
ちゅーことは,右回転しているようで実は左回転してた.
よく検証せずに出してすまんね.
3584.63267948799578E-05:04/08/02 00:07
円周率はMath.PIでokだったのか・・・>>312のはこのことを言ってたのかorz
>>352
…お前は多分基本の意味を勘違いしてるだろ。
分からない事を基礎となってる部分から一つ一つ解決していけ。
まず行列の計算が分からない、理解できないんなら、
行列について勉強しろ。
それが出来たら3D関連の基礎的な本やサイトを見れば、
行列と言う物が3Dでどのように利用されるのか分かる。
プログラミングはその上で行う物だ。

お前はダメなところを変えていったというが、適当に式を変えてみたとか、
そんなんだろ?
なぜおかしいかを論理的に考えて間違ってる場所を探したか?
なんとなく適当に買えながら動かしてちゃんと動くのを待つ
ではいつまでたってもちゃんと動かないぞ。
360340: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 にそのまま表示してる.
>そんなんだろ?
ああっと、勝手に決め付けてるようで悪いが、
お前の言動を見てるとそういう匂いがしたんだ。
362359=361:04/08/02 00:13
あ、進めてるところに水をさす気はないので続けてくれ。
363340: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

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

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

あと、他人の意見を素直に受け入れられないなら、人に聞いても何も得られないよ。
すいません。質問させていただきますー

Console.WriteLine(result) をつかって、resultの中身を確認したいんですが、
どうやって確認したらいいんでしょうか。Msgbox()のようにダイアログが出る
わけでもないようなんですが。。。よろしくお願いします。
出力 ウインドウを確認
369367:04/08/02 18:34
>>368
お答えありがとうございます! なにやら超基本的なことを聞いてしまった
みたいですいません。助かりました。
何となく、ConsoleとDebugとかTraceを混同しているような気がしないでもない。
3714.63267948799578E-05:04/08/02 22:27
>>365
ありがとうございます。
野暮用(宿題)が増えたのでこっちに集中することはできませんが、
>>340さんのおかげで突破口ができたのでこれや調べたのを参照しつつ早く理解できるようにがんばります。

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

大変申し訳ないのですが、レスのたびにどっかの文で人の努力を簡単に踏みにじってる印象を受けたので反論しています。
質問側で甘えてしまっている立場でほんと申し訳ないのですが、
> あと、他人の意見を素直に受け入れられないなら、人に聞いても何も得られないよ。
を返すとしたら
・他人を理解していなければ、その人が意見を素直に受け入れることは無理
全部を理解しろと言うわけではないけど、この大変さだけでも理解して欲しかったですorz
大変な中で叩かれると相当きつい。。
立場を弁えてないレス失礼しました。
>371
>>359,>>361に同意
何が基本かもわからないのは物事の本質を論理的に考えられないから
×「分からない部分が論理的に考えることができたら」
○「自分が何を分かっていないかを論理的に考える」
この時点で間違いだらけ。
>・他人を理解していなければ、その人が意見を素直に受け入れることは無理
ここは2chだ。
理解するべきことは「誰の発言か」ではなく「どんな内容か」それだけだ。
他人を理解できないと意見を受け入れられないなら2chで聞く事自体が間違い。
匿名掲示板で名も素性も知らぬ他人を理解できると思っているならお前は大馬鹿。
目を覚ませ。
今から考えを改めれば5年後にはまともな人間になれるかもしれないぞ。
偉そうな事を言ったのは謝る。
どうもお前みたいな甘えた奴見てるとイライラするんだ。
社会に出る前に論理的思考を身につけとけ。
俺はお前を不幸にしたいわけじゃない。
お前の周囲の人間が不幸になってしまうのを憂いているだけだ。
論理的思考を身に付けろ。
そうすればほんの少しでもみんな幸せになれる。
社会に出て本当に必要なのは
論理的思考力なんかではなく、他人に優しくできる心である


と、言ってみる。
社会は大部分の論理的思考の足りない奴らで構成されている。
論理的に問題解決しようとする俺らのほうが ちょっとおかしい人間 なんだよ。

ところで Boolean型 って何のためにあるんだ?
いや、まじめなはなし。
イエス・ノーをはっきりさせたいアメリカ人のため
>>377
コンピーターの基本動作は何かを考える
>>379
コンピュータの基本動作は理解しているつもりだが。
いや、そう言う意味じゃなくて、昔の BASIC には
なかってでしょ。
CPUが特別に持っている型でもないし、
技術的に何の意味があるのかという ちょっとした疑問。

>>378 みたいな答えはまぁ、納得するしかないね。
>>380
CPUにはフラグレジスタがある。
昔のBASICでBoolean型がなかったのは、ON/OFFだけで
変数1個分のメモリ使うのはもったいなかったからじゃないかな。
数値のままならbit数分だけ使えるし。
まあ、文中で論理式という形ではあったと言えるかも。
X=X+(K$="4")-(K$="6")

この話題は、こっちのスレのほうがよかったか。
MicrosoftBASIC総合談話室
http://pc5.2ch.net/test/read.cgi/tech/1089798174/
例えばaという通信の受信オブジェクトとF1、F2、F3の3つのフォームがあります。

受信したデータの処理で、3つのフォームそれぞれにaを置けば全く問題は無いのですが、
aを1つだけにして、受信イベント時に受信データを見て、
それぞれのフォームに振り分けたいとしたら、
どんな方法が一般的なのでしょうか?
>>382
普通にイベントを起こせばいいんじゃない?
前々から気になってたことなんですが
新規にフォームモジュールを作成するときに
Option Explicit On などを自動的に付加することって出来ますか?
プロジェクトのプロパティではOnになってるんですが
反映されないんです・・・
>>384
Option Explicit On って変数宣言の必要になるやつだよね。
ぼくは、普通に常に On になってるけど。
ツールのオプションのプロジェクトのとこだよね? ふしぎー。
>>381
>CPUにはフラグレジスタがある。
まぁ、確かに。 レジスタの退避命令使えば一応メモリ上にも置けるしね。

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

>この話題は、こっちのスレのほうがよかったか。
>MicrosoftBASIC総合談話室
あっ、ごめんごめん。
みんな暇そうだったから、疑問に思ってたことを言ってみただけ。
(えっ? 暇じゃないって? もっと ごめんごめん。)
>377
規格統一じゃない?
プログラマによって、TRUEを1とするか-1とするか分かれたりするし。
>>386
>んと、それは論理演算子のことで、
間違えた。「比較演算子」だった。

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

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

昔は論理式の「真が-1」を利用して、テンキー移動の処理を
K$=INKEY$
X=X-(K$="4")*(X>0)+(K$="6")*(X<39)
みたいに1行で書いたりしたな。久しぶりに書いてみたから上のは
合ってるかどうか知らないけど。
ただ単にあいまい性をなくして厳密にするためのものでしょ。
コンピュータではなく人間にとって分かりやすくするためのもの。
バグを出しにくくするためというのも含んでる。
>>385
多分>>384は設定の意味を勘違いしてるだけと思われ。
プロジェクトの設定は、ソースに明示してないときのデフォルトを設定するもので、
ソースに自動出力させるものではない。
392384:04/08/04 01:26
>>385>>391
ありがとうございます
VB6やOfficeのVBAのように行頭に追加されるものだと思ってました<m(__)m>
>>389
>ステータスバーのところに「バックグラウンド処理が終わりました」
>みたいなのを吹き出しで表示したいので、

バルーンチップって使ったことがないから、今ヘルプとか
見たけど良くわからん。
ぼくなら、メッセージを表示して [OK] ボタンを押すか
時間がくると自分で .Close するフォームを作っちゃうけど、
そう言うのじゃだめかな?
>>389
バルーンのようなフォームを作ってみましたが、
コードはともかくデザインもあるし、どうやって渡せばいいものか。
395デフォルトの名無しさん:04/08/04 18:26
VB.NET2003 + ADO.NETで初歩的質問です。

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

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

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

なんかよい省力化方法ってありますか?
>>395
接続文字列だけ書き換えればいいじゃん
397395:04/08/04 21:04
>>396
Connectionオブジェクト以下につながる下層オブジェクト(AdaptorとかDatasetとかDatagridとか)は
フォームの初期化イベント内で”つながり”が設定されているらしく
LoadイベントでConnectionの接続文字列を書き換えると、その後エラーで止まってしまいます。
うまいことやる方法はあるんでしょうか・・・
”つながり”の初期化(Refresh?)の仕方とかあったら教えて下さいませm(_ _)m
それって「フォーム デザイナで生成されたコード」を書き換えにいってないか?
399395: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('')
のままでは、ただ文字列を表示するだけなんです。
これをテキストボックスにするやり方が、もうずっと考えているんですけど、
どうしても分かりません。
周りに聞ける人間が全然いなくて、メソッドの使い方もまだ全然です。
どうか、どなたか救っていただけませんでしょうか?
>>399
その後のエラーとやらの内容をちゃんと書け。
でも簡単にやる場合は普通はダイナミックプロパティを使うと思うが。
学校でVB6.0を使っているのですが
課題を家でやるためにspoke premiumを買っても問題ないでしょうか?
>>402
だめ
VB6スレにいけ
404デフォルトの名無しさん:04/08/05 10:11
>>400
周りに聞けるものがいない会社ってどんな会社だよw
405395: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キーを押していくとその列だけとばされるようなイメージで。

今、VB.net 2002を使用していますが
2003にアップするとどのような魅力がありますか?

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

けど2005もベータ版が発表されましたしもう少し様子見た方が良いですかね?
409デフォルトの名無しさん:04/08/05 22:52
Visual Studio .NET theSpoke Premium Version 2003
って、ラーニングエディションみたいなもんですか?
410409:04/08/05 22:55
すいません、スレ違いでした
逝ってきます・・・
>>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)
412407:04/08/06 08:59
>>411
早速教えていただきありがとうございます。
これ最後の列だったりするときは勝手に次の行に行きますかね?
ってとりあえず試してみます。
助かりました。
413407:04/08/06 09:53
うまく行きそうです。

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

Ary(1)="一"
Ary(2)="二"
Ary(3)="三"
のように自作で数字漢字変換するしかないのでしょうか
415デフォルトの名無しさん:04/08/06 14:37
>>414
そんな関数がライブラリで用意されてると期待すること自体が不思議。
>>414

ChangeNumericToJapaneseNumericChar()
>>414
漢字コードは順番に並んでるんだから、変換テーブルは必要ないと思うけど。
418414:04/08/06 15:47
みなさま了解です。
VB6で「アイコンなし、×ボタンだけなんだけどサイズ変更可能なダイアログ」
というのを実現するのに、BorderStyle=固定ダイアログ、Icon=なしにして、Form_Loadで
SetWindowLong WS_THICKFRAME して実現してますた。
これをVB.NETでもやりたいんですが、APIなしでできますか?それとも同じ方法が
ベストですか?
あとついでに、フォームの右下にサイズ変更ツマミ(斜線をドラッグできるやつ)って
任意に出せないですか?
>>419
書いてあること、フォームのプロパティウィンドウでいろいろ試すだけで
一分で全部できた。

正直、こういう人ってどういう根性してるのかねえ?不思議。
精神分析の対象だわホント。
421デフォルトの名無しさん:04/08/06 21:20
>>420 うぜぇよ。消えな。
漢字を数字か。昔仕事でそんなコードを書いたな。
百五と百十五と百二十五とか腹立つんだよねぇ
>422
一、十、百、千、一万とかも嫌だね。
客が壱、弐、参も使いたいとかローマ数字T、U、Vとかも使いたいとか言ってきたら大変だな
425e:04/08/07 01:06
ADO.NETでデザイナを使わないで、プログラミングする方法の解説とか
ごぞんじないでしょうか。

webで検索してみても、こういう結構基本的なもので終わってるのが
多いもんで。。。
http://www.atmarkit.co.jp/fdotnet/basics/adonet_index/index.html
白黒2色のマスク画像みたいなやつの黒の部分から
Regionオブジェクトを作る方法ってないでしょうか?
427DARK:04/08/07 01:32
NoCD化パッチ作りたいのですが…教えて下さいm(_ _)m
>>425
黄色いADO.NETの本とかは?
でかくて高いヤツ
まぁあれも基本しか書いてないけど
やっぱ標準モジュールがあると便利だね。
C#が嫌になってきた。
c#が嫌なのは同意するが(VBに比べると、可読性が悪くてイライラしてくる)
標準モジュールなんてイラネ。

読みにくいキャメル形式の命名法もイラネ。
431ぷぷぷっ:04/08/07 17:11
.NET(2002 or 2003)で作成したアプリを動かしたときに、
そのアプリはどの.NET Frameworkのバージョン(1.0 or 1.1)で動いているか
把握することはできないんかいのぉ。。。
そのアプリのフッター部分に表示とかしたいのじゃが。
ちょっと違うが、VB.NETで作ったプログラムで、フォームに
そのプログラムをコンパイルした日時を埋め込みたいのですが
なんか方法ありますか?
標準モジュール…ってあんたw
434419:04/08/08 02:31
>>420
出来なかったんですが、やり方教えてもらえませんか?
435419:04/08/08 03:06
>>434
当たり前なので書き忘れましたが、SizableToolWindowはなしでお願いします。
あれはダイアログボックスではなくプロパティインスペクタを作るための
もので、タイトルバーの高さが異なるものなので。
436419:04/08/08 03:12
>>435
あ、でもSizableToolWindowでプロパティをいじるだけでタイトルバーの
高さを通常のウィンドウと揃える方法があればそれでオーケーです。
連続カキコですみません。
自分でコントロール作った方が早くない?
>>435
重症だわこの人。。「当たり前なので書き忘れましたが、」だと。
なんで最近こういう「自分以外はみんなエスパー」と思ってるとしか思えない
病的な奴が多いんだろう。

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

書いてあること、

書いてあること、

書いてあること、
>>438
自尊心を守るのに必死なんだよ。放っておいてやれ
変なヤツは放置しろよおまえら
>>432
.exe のタイムスタンプで代用じゃダメか?
442デフォルトの名無しさん:04/08/09 13:22
>>441
あ、そうか。コロンブスの卵ですね。さんく
みなさ〜ん。自分は今日からプログラミング始めようとしている高校生です。
なんかいろいろ調べるとVBやらVB.NETやらC++やらC#やらいろいろな言語があることを知りました。
難易度的にはVBが一番簡単らしくVB.NETはVBの進化で少し複雑になっているとか。
C++やC#は難しいとか。。
自分としてはVBを覚えその次にVB.NETんでもってC++やC#やろうかなって思っていたのですが
どうやらVBとC#はまったく関連性がないとか。。。
フランス語覚えたから中国語得意になるってわけでないのと同じですかね?
将来は本格的なプログラマになりたいので、やっぱりC言語からはじめてC#やC++を学んだ方が
よいのでしょうかね?
ここはVB.NETの技術的な質問回答をする場所なので
どの言語が自分に適してるかを答えることはできないと思う
プログラマー板の方に行った方が適切な回答が得られると思われ
>>444サンクス ペコ
446デフォルトの名無しさん:04/08/10 09:48
私だけ?何年もVBに触っているのに、
いまだにTreeViewの使い方が分からない・・・
>>446
いや・・俺もこないだ初めて知った人なのだが、それは質問なのか?
質問です。

フォームに、ボタン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())
をつけてやっとーみ。
レスどうもです。
ひょっとしてEnabled = Falseになっているコントロールは、
グループボックスと連動してEnabled = Trueに出来ないのでしょうか?
そうならちょっと不便(;´Д`)
451最凶VB厨房:04/08/10 21:18
ボタン2が有効か無効かは
この場合グループボックスとボタン2の論理積(And)となる。

つまりはグループボックスのEnabledを操作すればいいだけ。
>>450
もう解が得られたようだけど、
>ひょっとしてEnabled = Falseになっているコントロールは、
>グループボックスと連動してEnabled = Trueに出来ないのでしょうか?

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

弱い頭で考えますた。間違ってます?
454最凶VB厨房:04/08/10 22:14
知らんかったら論理積で検索して確かめな。
>>450
ええと、
・ウィンドウ(フォーム)が Enable = False の場合、中のコントロールは (Enableの値に関わらず) 全て無効
・グループボックスが Enable = False の場合、中のコントロールは (Enableの値に関わらず) 全て無効
ってことですよ。コンテナ側が無効だと、中身は無効。

喪前の学校が休みのときは、どのクラスも休み。
喪前のクラスが休みのときには、元気な奴も病気の奴も皆休み。
学校もクラスも休みじゃないときには、病気 (Enable = False) の奴だけが休み
456450:04/08/10 22:44
理解できました!
最凶VB厨房殿、デフォルトの名無しさん殿ありがとうでした(`・ω・´)
だれか突っ込んでやれよ。

>>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

だろ、普通。
>>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)では挙動が同じでも違いが良くわからなかったりする。

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

とにかく、自分の主観だけで他人のコードを「あまりにひどい」などと
言うのは良くないよ。
459458:04/08/11 02:24
2バイト=16Bitだ。。。_| ̄|○
>>458
なんかフォーカスがずれたお人だね。そういうの「為にする議論」っていうんだよ。

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

一般論をしてるだけだって?
特殊なケースでの冗長なコードの効用を過剰に一般化してるだけじゃん。
そういうの「馬鹿の一つ覚え」とか「羹に懲りて膾を吹く」って言う。
461450:04/08/11 11:53
>>457
大変勉強になりました。ただ、あなたがプログラムに関して、
私以上に知識を有してる事は十分理解出来ますが、それを必要以上に
誇示したり、「あまりにひどい」「馬鹿の一つ覚え」「羹に懲りて膾を吹く」
と言う発言は、一社会人の会話として私には『冗長』に思えてなりません。
462457:04/08/11 12:16
>>461
私の 「あまりにひどい」 発言に批判があるようで、反省。。
なかったことにしてくれ。私がわるかった。

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

>>460 は 私じゃないので知りません。
463457: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は良い指摘だと思ったのは俺だけじゃないよな
if a = true then
b = false
else
b = true
end if

より

a = not b

のほうが断然いいよな。
値を反転してるって一目瞭然だし。
>458 の詭弁もあるが指摘自体はただしいだろ。
じっさい俺もひどいコードと思ったし。
>450 は教え方が悪いと言ってんじゃないの?
漏れなんかは VB (.Net) は、「動けば良し」的センスで使ってナンボ、みたいな先入観があるので、
457的突っ込みは思いつきもしなかった。まぁあれは確かに正論だし親切だと思うけど。
 ↑こう書くと荒れにくい。

 ↓こう書いてはいけない
>>457 どうせVBなんて厨坊言語なんだから、酷いコードでもちゃんと動きゃそれでいいんだよ。
マウスカーソルを乗せると浮き上がって、
押すと凹むツールバーのようなものってVBでは出来ないのでしょうか?
例えばLive2chのツールバーや、Winnyの「ノード情報」等で使われているものです。
C++やDelphiで作られているようですが・・

>>469
ToolBar.Appearance プロパティをFlatにすればできると思うけど・・・。
>>470
ありがとう、出来そうです。
>>468
このスレはそういうレベルなのか?
VBってバカにされがちだけど結構ちゃんとできてる。
醜いコードでもとりあえず動くものを作るのは重要だけど
それで終わらせるのも勿体無いと思う。
「こういう処理は こう書くときれい」とかも共有して行こうよ。
473デフォルトの名無しさん:04/08/12 18:15
テキストボックスに商品の値段を入力したときに、数値に3桁区切りの","を付けたいのですが
入力したとたんに桁区切りをする方法というのはあるのでしょうか?

別のフォームで入力して、表示する際に桁区切りにするのは出来たのですが、入力したそのフ
ォームの中で桁区切りにする方法というのがどうしても判りません。
>>473
人間はエスパーじゃないことを忘れないようにしよう。
「入力したとたんに」とは具体的にどういうこと?
ひょっとして人に質問している自分自身が何がやりたいのか分ってないとか?

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

一番最初のなら、そんな腐れUIは考え直すべきだと思う。
後の2つなら、単にそういうコード書くだけだと思うけど。
>>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
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)
>>478
そんなもんここにレスしている間に調べがつくだろ。
横着野郎に今日を生きる資格はない。
こういう奴の書くコードってどっかのサンプルのツギハギなんだろうなきっと。

まあ、ヒントだけだすと、そんなことにわざわざFSOなんぞ使うな、
VBネイティブの機能を調べろ、ってことだな。
480デフォルトの名無しさん:04/08/12 21:38
>>479
あんた、やさしいな。
481デフォルトの名無しさん:04/08/12 22:13
>>479
名前欄・・・
VBは確かに楽な言語だな。
VBで用意されているコンポーネントを使う分にはとても楽でいい。
ちょっと変な事を客から要求されるとかなり大変になるけど。

でも、VBに溺れたPGは最悪だな。
もうVB以外全然できない。
入門としてVBをやるのはいいが、そこからステップアップする気概が欲しいね。
>>473
電卓みたいに、入力できるのを最下桁に固定すると
簡単になるじょ。
>>482
.NET使ったこと無いだろ(w
>484
残念、逆。
.NETでVBに触れた。
486デフォルトの名無しさん:04/08/12 23:08
>>482
>入門としてVBをやるのはいいが、そこからステップアップする気概が欲しいね。

C言語のほうが使いやすい奴がVBはじめるのはステップダウンですか?
>>485
そっか・・・
貴殿はVB6を見ると卒倒するんだろうな・・・
>486
そうは言わないよ。
VBだって優れた言語だ。
ただ、VBしかやっていないでいると、計算機の本質を考えずにプログラミングできてしまう。
それは>482で言った「ちょっと変な事」を実現するための想像力の欠如に繋がる。
結果として作られたレールの上しか走れないPGになる。
それはクリエイターとしては大きすぎる痛手だ。

>487
色んな言語やってるから大丈夫だと思う。
自分で設計するならオブジェクト指向なしに戻りたくはないが。
>>488
計算機の本質じゃなくて、Windowsプログラミングの本質でしょ。
何が本質かは主観の問題だろうけど、
SDKプログラミングだって「作られたレールの上」を走っていることに違いはない。
結局自慢話か( ´,_ゝ`)
「VBでアプリを作るのは非常に簡単。VBで『マトモな』アプリを組むのは非常に難しい」

VB4の頃からウチの会社に伝わっている格調高き名言でつ。
ドトネトになってからは更に加速したヨカン。
>>488
まあ、言ってる事は分かるんだけど、VB.NETに関しちゃ、
JavaでもC#でも似たようなもんじゃないかな。Cとかなら別だけど。
計算機の本質と言うか、単にプログラミングということ自体の理解が足りないかな。

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

若干手抜きかも知れないのでみんなで直してくれい。
TextChangedだったかのイベントの方が良いと思うのだよ。
495483:04/08/13 00:12
>>494
そうなの?
理由教えて。
あ、ちょっと勘違いしてたかも…
言いたかったのは、メニューからペーストした場合とか、
要はキー入力以外でも書き換えられる可能性はあるという意味だったんだが…
497483: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

まだちょっとおかしい。
498483: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

こんなもんでいいのかな?
だからそもそもそんな糞みたいなUI採用するのが間違っとる。

まあそれは置くとしても入力制限するんだからそもそもペーストに反応しちゃまずい。
そして入力制限さえ出来れば、後の処理はParseしてToStringするだけ。
TextBox1.Text = Integer.Parse(TextBox1.Text).ToString("###,###,###,###,###,###")
500483: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
まあおまえは何も出来ない無能なわけだが。
OSの作り方教えてください。
TabControlなのですが、ふと気付くとタブの順序が入れ替わって
しまっていることがありるのですが、戻す方法は無いでしょうか・・・
Tabつながりでふと思い出したこと

TABキーを押したときの順番をGUIで変更することってきる?(ACCESSみたいに)
.NET発表の際にその辺が強化されたって話を聞いてたんだけど
>>502
まぁほっといてやれ。
もともとの質問出した >>473 が好きなほうを選ぶよ。
>>505
デザイン時? 実行時?

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

実行時なら、もう少し詳しく現象を報告してちょ。
>>506
旧VBって、できなかったの?
>>508 デザイン時なら、TabPageコレクションエディタの [↑] [↓] ボタンで
できました。ありがとうございます。

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

VB.NET(2002)
511506:04/08/14 03:07
自己解決

表示のタブオーダーでできました
512506: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にして、コードで変更した値は、実行時には正常に反映されます。
コントロール自体をデザイン上で変更出来る様にするにはどのようにすればよいのでしょうか?

なにがしたいのかさっぱり分からん。
デザイナ上でコントロール自身を変更するってどういうこと?
っていうかコントロール自身を入れ替えてどうするの?
515デフォルトの名無しさん:04/08/14 19:42
>281さん、結果報告キボンヌ。

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

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

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

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

>281 さん、上手くいったなら、報告をながいます。
質問なのですが、下のリンク先にある、Visual Basic .NET 2003というものは、Visual Studioを使った時のようなエディタがついているのでしょうか?


ttp://www.microsoft.com/japan/msdn/vbasic/productinfo/default.asp

兄が、仕事で使っているというVB.NETでは、関数の名前を入力した後、ピリオドをうつと各プロパティとか命令が表示されて、かつそれぞれのヘルプまで表示されると聞いたのですが、その機能がほしいのです。
>>514
それは君が無知で無恥だから。ユーザーコントロールって概念が理解できてないんだろ。
知らないなら黙ってろよ。
何をやりたいかは>>513の文章で理解可能。俺は解決法は知らないけど。

ま、でもデザインモードでの変更がコードに反映されてないだけだろうから
そんなに難しい問題じゃない気がするけど。
.NETではVB6みたいにウィザードがコード書いてくれないのか?
>>517
うーむ、俺が無知なら正直すまんかったんだが…
見たところユーザコントロールに既に貼り付けてあるボタンのインスタンスを
プロパティで入れ替えようとしてるんだよね?

ってかいてて今やりたいことが多分分かった…
普通その場合は、プロパティを読込専用にするだろ?
入れ替えできるようなプロパティを書いてるから勘違いしてたよ。
あと、VB.NETで貼り付けたコントロールの実体はプロパティなので、
普通はメンバをPublicにするだけでOK。
まあ、新たに追加してもいいことはいいんだけど…
って何度もすまん、これじゃデザイナでできないって言ってるのか…
まえに同じような事して単純に出来たような気がするんだけど…未確認。

生成されたコード上でのプロパティの設定順かな…?
>>516
「VB.NET単体でVS.NETと同じようなテキストエディタが用意されているのか?」
と言う質問ですか?
それなら答えはYesです
>>517
俺には>>513の意味はぱっと見て分からなかった。
誤解を招く表現がいくつかあるから、意味を取れなくても無知かどうかは分からんのじゃないの?
逆にやりたいことと>>513の書き込みを見て違和感も感じないなら、その方が無知の可能性あり。
523513: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
524516:04/08/15 12:51
>>521
ありがとうございます。
>>523
デザイナで生成されたコード内に、プロパティの変更コードは出てる?
エクスプローラの詳細表示のような、横に複数項目表示できるリストボックスって
VB.NET標準コントロールには無いの?
527526:04/08/15 15:46
悪い。自己解決した。ListViewだったね
528デフォルトの名無しさん :04/08/15 22:31
test
>513
どっかで見た質問だなぁ。
どこで見たんだろ……まぁいいや。

そんときは
>#Region " Windows フォーム デザイナで生成されたコード "
この中で初期化してた、ってオチだったよ。
>>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 という風に追加すればいいのでは?
531MSサンプルにバグ?:04/08/16 09:48
http://ja.gotdotnet.com/quickstart/howto/doc/Remoting/mainfeatures.aspx
リモート処理の概要 参照によってオブジェクトを渡すのサンプルを実行すると、
セキュリティ制限のため、型 System.Runtime.Remoting.ObjRef にアクセスできません。
というエラーがでます。
クライアント、リモート オブジェクト、およびリモート ホスト アセンブリを異なるディレクトリに置いてサンプル実行しています。
対策ご存知の方、教えてください。
532自己解決:04/08/16 18:43
533513:04/08/16 23:08
>>529
確かに
#Region " Windows フォーム デザイナで生成されたコード "
の中は、デフォルトのままです。具体的には、どのように修正すれば宜しいのでしょうか?

>>530
確かに、通常は必要と思われるプロパティのみ公開するのですが、
ボタンコントロールなどは、予めどれが必要と言われると、ほぼ全部使う可能性があると思われます。
その場合、数十にもなるプロパティを記述していくのは・・・という事と、
勉強も兼ねて、コントロール自体のプロパティを全て公開するにはどうするのだろうと、疑問に思い
質問した次第です。
534473: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からは削除できるのに・・・なぜ・・・
>537-538
DBは何を使ってるんだよ。
DBから主キーを取得できてないって事。
>>536
ガッ
541535: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で調べたりしましたがいまいちわかりません。
分かる人がいましたら解決方法を教えてください。
よろしくお願いします。
そのAPIって参照設定で読み込めたりしないのかと横着を考える
543541: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

でいいんでしょうか?教えてください。お願いします。
>>543
だめ。構造体の宣言で、マーシャリングをきっちり指定する必要あり。
結構面倒だよ。
.netであるクラスのプロパティを動的に参照するため

wk1 = ClassA.PropA
wk2 = ClassA.PropB



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

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

VB6時代だとProperties("PropA")のようなことができた気が…
VB よくわかんないけど、例えばクラス ClassA の静的プロパティの場合
val = typeof(ClassA).GetProperty("PropA").GetValue(Nothing, Nothing)

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

とかかなあ・・・ Object が帰ってくるから、型変換は必要。
あとプロパティの一覧を得たいなら、System.Type.GetProperties メソッドが使えます。
547546:04/08/20 18:50
>>546
スマソ。typeof は C# か。
>>546-547
>GetType(a).GetProperty("PropA").GetValue(a, Nothing)

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

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

激さんくすです!!
データーグリッドを使って、データーを表示させた際に、グリッド右端をクリックすると
幅が自動で広がりますが、あれをプログラムでやらせることは出来るでしょうか?
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"

とやれば、小さい順にソートされるかな・・・とやってみたのですが、うまく動きません。何が間違っているのでしょうか?
どうでもいいけど昇順と降順間違ってないか?
いろいろ
まだVB.NET初めて間もないのですが
以下のようなコードで「オブジェクト参照のインスタンスがありません」
とエラーが出てしまいます。

dim wrk_item() as string

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

エラーの原因がわかりません。配列の要素数はあらかじめ決めておかないと
だめなのでしょうか・・・
dim wrk_item() as string = { "","" }

「配列を参照する事のできる」変数を定義しただけで、
「配列自体を作成」していない。変数の初期もしていない。
よって「配列を参照する事のできる」変数はNothingのままだから以下省略
>>554
ありがとうございます
やはり配列要素を決めておかないとだめみたいですね
>>555
なるほど、そういうことでしたか・・・
>553
ArrayListとかReDimとか使えば?
ボクのPCはDELLのディメンションですがVB.NETをうごかしてもこわれないでしょうか?
残念ながらどこのPCでも壊れるときは壊れます。
まあ、基本的にはArrayListあたり使うのが常套かな。
562デフォルトの名無しさん :04/08/22 18:56
>>559
VisualStudio.net入れると壊れる可能性が高いですね。
563デフォルトの名無しさん:04/08/23 09:19
>>550
ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww
かといって高度な問題には解答が出来なかったりする
変数のタイプっの取得なんですが・・・

dim val
dim s as String = ""

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


dim val
dim s as String

val = s.GetTypeCode

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

初期化されてない変数タイプ取得ってどう記述しますか?
566565: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。

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

569546:04/08/23 16:44
>>565-566
無理。そもそも String が帰る時だって、値の型を取得しているだけで
"変数" のタイプを取っているわけじゃないし。
>>569
よくわからんが無理ってことはないんじゃないか?
むしろインスタンスからしか型に関する情報を取れないなんてライブラリの方が
不条理な気がする。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vaoprgettype.asp

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemtypeclassgettypecodetopic.asp
の組み合わせでいけるんじゃないだろうか。
571546:04/08/23 23:56
>>570
 レスされたので答えるけど、その手のメソッドでは無理。
IL にコンパイルされた後はそもそもローカル変数なんて
タイプ情報にも存在しなくなっちゃうんで、
「ローカル変数が何型で宣言されたか」ってな情報を得るには、
ライブラリではなく言語自体によるサポートが必要。

値型 (value types - 単純型や structure) のものなら、
変数宣言と同時にインスタンスが作成されるので大丈夫だけど(と思う)
>>565
ちなみになんでそんなことがしたいわけ?
>>571も言ってるけど、ライブラリじゃなくて言語仕様で
そういう機能があるかどうかの問題になるね。
573565-566:04/08/24 00:55
>>569

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

Dim s As String

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

?type.GetTypeCode(s) 

と実行した際、

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

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

のようにしてForm2を表示して、そのForm2からForm1のTextbox1の内容を操作するにはどうしたらいいんですか?
Form1からForm2の操作はできるんですが・・・その逆を行おうとするとエラーがでます。
またVB6から進化できてない人間が迷い込んだな。。
576デフォルトの名無しさん:04/08/24 12:39
だから旧VBスレも合わせて、スレの>>1のテンプレに愚問集作ってそこに

 『別フォームの……』

を入れとくべきだろう。
577デフォルトの名無しさん:04/08/24 12:39
ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww
そして、煽りも要りませんので・・・

とりあえず過去ログ読みまっしょ
579デフォルトの名無しさん:04/08/24 13:23
>>577
すいません
初心者はどこへ行けばよいですか?
>>579
ここは2ちゃん。「うるせー馬鹿」が返しの挨拶。
あの〜
いつぞやに、.NETの板が出来たと思っていたのですが、
あれは夢だったのでしょうか?
>>581
( ゚Д゚)氏ね
>>581
>>224のことか?
>>577
初心者の来る掲示板だと思います。ぼくはね。

で、>>574 みたいなのは、ハンドル渡すとか、
Form1 のほうで面倒見てあげるとかして実現は可能だと思う。

いまだによくわからないのだけど、答えはどっちなん?
「コードを工夫して実現する」 or
 「かっこ悪いからやってはいけない」
>>574
解1. Form2 のプロパティにForm1 のインスタンスをセットしておいてForm2 の方からはそれを介して使う。
解2. アプリケーション実行中にForm1 のインスタンスが高々1個しか無いことが確かなら、Form1 クラスに
     静的プロパティとして Form1 のインスタンスを保持して、Form1.ActiveForm のようにしていろんな所から使う。
586513:04/08/24 22:32
誰か解を求む・・・_| ̄|○
>>586
問題のソース圧縮してどっかにうpすれば?
>>585
例外的な場合を除けば、どっちも不正解だと思う。
そんなことをすればデータ隠蔽の効用が全部失われてしまう。

実際にデータを持つオブジェクトからハリボテ君(Form1)に
イベントで通知するのが正解だろう。
>そんなことをすればデータ隠蔽の効用が全部失われてしまう。
その判断の根拠を教えてくれ。
って>>584の言ってる事の方が普通じゃないと思うが…
590デフォルトの名無しさん:04/08/24 23:40
591駆け出し:04/08/24 23:49
ちょっと気持ちの悪いエラーが出ているので質問です。

Button1 と TextBox1を配したForm1のButton1のクリックイベントで

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim parameter As Integer
  Do While ( 処理続行条件 = True )
  Application.DoEvents()
  parameter = CInt(TextBox1.Text)
          ・・・                    'parameter を使った処理
Loop
End Sub

というように、TextBox1からパラメータを入力してループ処理に反映させるコードを書き、
デバッグモードでビルドエラーも出ずに一見正常に動作する所まできました。
ところがDo While ループが回っている最中にForm1の右上の「X」ボタンをクリックして強制終了させると、
parameter = CInt(TextBox1.Text) の行のところで

'System.InvalidCastException' のハンドルされていない例外が microsoft.visualbasic.dll で発生しました。
追加情報 : 文字列 "" から型 'Integer' へのキャストが有効ではありません。

とエラーが出てしまいます。
なにぶんど素人なもので、どうしてエラーが出てるか良く分からないし、分からないと気持ち悪くて使えないし・・・
どなたか、エラーが出ている原因をご教授願えないでしょうか
TextBox1.Textが""なんじゃないの?
593駆け出し:04/08/25 00:06
>>592
TextBox1の中身は(目で見る限り)整数が入っています。
実際、ループ中の強制終了さえしなければ妥当な結果が得られています。

アプリケーションの終了でTextBox1の中身がクリアされてしまう、と言われれば
なんとなくそうかなあとは思うのですが、
素人考えでは、「X」ボタンのクリックが処理されるのは ”Application.DoEvents()”
のところであって、だとするとわざわざその次の行まで処理が進んでエラーが出るのも
おかしいんじゃないかと思ったり、悶々と悩んでいる次第です。

うーん、細かい内部動作までは知らないんだけどさ…
Application.DoEvents()でフォームが閉じるわな。
閉じ終わったら処理が戻ってくるわな。
Windowの破棄とかが具体的にどのタイミングなのかは知らないけど、
この時点でTextBoxが空になってるというのはありえそうな話だ。
まあ、ObjectDisposedExceptionになりそうな気もするけどそこはそれ。

勘違いしてそうだが、×ボタンクリック=アプリケーションその場で強制終了じゃないぞ。
ちゃんと最後まで処理は続く。
DoeventsだからこそForm Unloadとその他のプログラムの動作がマルチタスクで動く。
ところでDoevents中に×ボタンを押したときにちゃんと終了するプログラムを書けるかどうか見守ってやる
596592:04/08/25 00:37
書こうと思ったら>>594氏が書いてくれたか
Application.DoEvents()で閉じる処理を拾った後(フォームが破棄されてる)に
parameter = CInt(TextBox1.Text)を実行してるから空っぽ
DoEventsはどの順序でイベントが発生したか追跡が難しいから
あまり使うことはおすすめできない
>>589
>>584が正しいなんて全く言ってないけど。。

「データ隠蔽の効用が失われる」は正しい言い回しじゃないが、
要するに>>585のようにしたのでは、たとえばフォームならフォーム上のコントロールの
制御の責任者とそのタイミングの明確さが失われるってことだ。

テレビに例えれば、ケーブルで繋がってるのなら映像がどっから流れてきているかは
ケーブルを追っていけば自明だが、「パブリックな」電波だったら映像がどっから来ているか
追跡するのは大変だよ。

よく知ったかクン(俺もその一人だが。。)が「UIとロジックを分離する」
なんて知った風なこといってるでしょ?要するにそれだよ。
ちゃんとフラグ管理やらEnable False やら工夫すればDoevents使いまくりでとても軽くて快適なアプリができるぞ
スレッド使えるようになったのにわざわざDoEventsなんていう
面倒で危ない橋を渡る理由が浮かばない。

マルチスレッドがよほど難しいならともかく、
直接UIいじらない単純なバックグラウンド処理なら屁みたいなもんなのに。
600駆け出し:04/08/25 00:54
レスくれたみなさん、ありがとうございます。
どうも Application DoEvents() の処理のタイミングについて誤解があったようですね。
ちょっくら関連ドキュメントなぞ当たって勉強してみます。

VBは奥が深いと言うか何と言うか、やればやるほど
過去に書いた見掛けだけ正常に動くコードのインチキさ加減が露になってくる・・・
まあ、EnabledをFalseにするとかでもはや別スレッドでやるのと
同じくらい流れが明確なのであれば、そんなに危険があるわけではないが、
>>599の言ってるとおり、それがスレッドでやるより特別に簡単てわけじゃない。
単発処理自体が重かったり、常にDoEventsを行う事を考えるくらいなら、
むしろ別スレッドの方が簡単確実だ。
どんな.NETアプリでもあちこちにDoevents挿入しとかないと他のアプリが重くなっちゃうというのが.NETアプリを使ってるときの体験法則

VB.NETアプリが動作中にタスクバーにある他のアプリをクリックしてアクティブにするときに重さを感じる
>>602
DoEventsの意味がわかってない予感。。
ついでにプリエンプティブって意味もわかってない予感。。

しかし、これをプログラマの世界もオーディオみたいにプラシーボに
騙される人が出るほどレベルが低下していると見るべきか、それだけ
層があつくなったと見るべきか。
>586
VB6の時はPropertyBagオブジェクト使ってたが、.NETだと違うみたいだ。
MSDNでPropertyBag調べて見れ。
.NETではどうすればいいかわかる。
605774.sln:04/08/25 10:14
質問です。
Windows2000で組んだアプリケーションが、Windows2000では起動するんですが
WindowsMeで起動しないんです。
デバッガで調べたら
「アセンブリファイル Microsoft.VisualBasic.Compatibility が見つかりません」
と出ているんですが、これはどういうことなんでしょうか?

環境は
Windows2000 / Microsoft .net Framework v1.1
WindowsMe / Microsoft .net Framework v1.1

です。よろしくお願いします。
606774.sln:04/08/25 11:03
すみません解決しました。
WindowsMeには「Microsoft.VisualBasic.Compatibility」がインストールされないらしく
「参照設定」で「ローカルコピー」をTrueにしたら起動しました。

スレ汚しすみませんでした。
>>602
( ゚Д゚)ポカーン
すいません。わたしマイクロソフトの社員ですが実は602の言うとおりです・・・
プロパティウインドウでGUI入力できるプロパティはどのように作成したらよいのでしょう?
たとえばBackColorのプロパティ等のような
プロパティ値の▼押下でプロパティ設定用の画面から入力できるようなものを作成したいのですが・・・
610デフォルトの名無しさん:04/08/25 17:50
VB.NETでCORBAって使えますか?
611デフォルトの名無しさん:04/08/25 17:50
とりあえず練習用にVisualBasic.netを買ってみたんですが、DB400に接続しようとしてODBC接続
接続しようとすると、このバージョンのVSでは無理だよヴォケ!ってウィザードの最中にいわれてしま
います。

普通のVisualStudio.netなら大丈夫なのでしょうか?それとも、エンタープライズ版を買わないとダメな
のでしょうか?

>>608
そこらにDoeventsを入れないといけないプログラム記述は
マイクロソフトで推奨されてるのですか?
.NETの実行速度を上げるために
1行のステートメントが終ったらすぐに次の行のステートメントを実行する仕様になってます。
そのためたとえループでなくてもマルチタスクさせたい場合(たとえネットするぐらいでも)は制御のあそび(すきま)を作ってほしいです。
Doeventsを使ってないプログラムのマルチスレッドは余計負荷になります。
公では言ってませんが感のいい方は気づいていたみたいです。
>>612
 このスレで書かれてる Doevents 推奨はほぼデタラメですが、
RPC や Out of Process COM オブジェクトの呼び出し (一部のSHホゲホゲ系 API も含む) などで
内部的に「隠れたウィンドウ」が生成されるようなスレッドは、非UIスレッドだからといって長時間ブロック
して処理を行うと DDE ブロードキャストを阻害し、シェル( Explorer) の動作を重くします。
推奨とは言いたいが言えない企業の悩み
>>614
追加。例えば Win32 の Sleep API の注意
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_sleep.asp
なんかは、.Net でスレッドを作成する場合にも同じく適用されます。
(.Net の場合には AppDomain 間をまたがるメソッドの呼び出しでも隠しウィンドウが生成されると思います)
実行速度が早いとみせかけるためにはしょうがないのだよ
618デフォルトの名無しさん:04/08/25 20:34
誰か611に答えてやれよワラ
だってわかんないんだもん
620591:04/08/26 00:26
どうも、>>591です。
今日は同僚の目を盗んでVSのヘルプやらWeb上の文書をあさってみましたが、結局DoEvents()関連についてはうやむやのまま
せっかく.NETに移行したことだし(2ヶ月前までExcelのVBAマクロしか書いたことなかった)
スレッドとやらを使ってみようかとトライしてみました。

で、試行錯誤した末、以下のような感じのコードになりました。

Imports System
Imports System.Threading

Public Class Form1
      
      ・・・

Private Sub DoLoopThread()
'元Button1のクリックイベントにあった処理から、Application.DoEvents()を取っ払ったもの
End Sub

Private MyThread As New Thread(AddressOf DoLoopThread)

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

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
MyThread.Abort()
End Sub

End Class

これで何とか”ループ処理中に「X」をクリックするとエラーが出る”問題は回避できるようになりました。
621591:04/08/26 00:38
しかし、>>620のコードでもまた新たな問題が発生してしまいました。
一度ループの処理が終わった後、再度Button1をクリックすると

"スレッドが実行中か、または終了しています。再起動できません。"

とエラーが出てしまいます。
このツールでは、Button1で始まる処理を、何回でも呼べるようにしたかったのでいろいろいじくって
結局、Button1のクリックイベントの中身を以下のように書き換えて、何とか目論見どおりの
動作をさせることができるようになりました。

Select Case MyThread.ThreadState
Case ThreadState.Unstarted
MyThread.Start()
Case ThreadState.Running
MsgBox("処理実行中です。やり直す時は一度終了してください")
Case ThreadState.Stopped
MyThread.Abort()
Dim t As New Thread(AddressOf DoLoopThread)
MyThread = t
MyThread.Start()
End Select

これにて一件落着!と行きたい所ですが、どうもこのコードは直感的に美しくないような気がします。
一般的にスレッドの再利用(に近い機能)を実現するときのリーズナブルな方法とはどんなものなんでしょうか?
ボクにはネタにしかみえません。
タイマーで10ms
624デフォルトの名無しさん:04/08/26 01:52
厨な質問で申し訳ないが、VB6のProjectをVB.netで読み込んで、
加筆修正してVB6のデータとして保存できるんでしょうか?

要はVB.netでVB6形式の保存ができるのかどうなのかを知りたいのです。
どうあがいてもむり。
>>624
ばっっっかじゃねーの
627デフォルトの名無しさん:04/08/26 10:08
申しわけありませんが、質問させてください。

VB.NETで、配列を使わずに最終レコードから逆読みしていくにはどのようにすればいいのでしょうか。

1〜100までのデータがあり、100、99、98…とグリッドに表示したいのです。

628デフォルトの名無しさん:04/08/26 10:40
うるせーバカ
>>628
クズハ、ハヤクシネヨ
ソノホウガヨノタメ
フォームのデザイン時にロジックからコントロールを生成するようなことは可能でしょうか?
実効時、動的コントロール生成のやりかたはわかるのですが

AccessフォームのTextBoxのようにフォームデザイナにTextBoxを配置した時点で連動するCaption(Label)コントロールも同時に生成し
以降、デザイナ上でレイアウト操作を連動させる・・・
といったようなことをやりたいのですが
デザイン時にParentのInitializeComponent()へコントロール追記できるようなクラスやメソッドがあるのでしょうか?
ざっとググってみても関連する情報が見当たらないもので・・・
631デフォルトの名無しさん:04/08/26 12:02
うるせーバカ
.NETになってからは変数名にいちいち
i.NETとかmyString.NETとか書かなければならなくなってめんどうになったから
VB6.0に戻ろうかな
>>628>>631
クズハ、ハヤクシネヨ
ソノホウガヨノタメ
ダイタイ、オマエガイテモダレモカンシャシナイ

634デフォルトの名無しさん:04/08/26 13:53
>>632
うちの.netは付けなくても動くよ
>>634
社内(or参加プロジェクト内)での命名規約の話だろ。

>>632
VB6もリリースが終わったから、否応無しにVB.netを使わなきゃならん。。
>>635
難儀な会社だな・・・
うちじゃコンパイラがエラー出す
637デフォルトの名無しさん:04/08/26 14:17
>>629>>633
テメーコソヤクタタズダローガ
クズハ、ハヤクシネヨ
ソノホウガヨッポドヨノタメw
638デフォルトの名無しさん:04/08/26 14:40
>>637
ノロイヲカケタヨ
エキノホームカラテンラクシシナイヨウニナ
ケケケケ...
639デフォルトの名無しさん:04/08/26 14:52
>>638
アイニクデンシャニハノラネエンダワ
ゴクロウサマ
プププ...
>>611
安いやつ買ったね? ウィザードを使わずコードで書けばOKだよ

>>627
そのデータはどこに格納してあるの?

>>630
DTE からオブジェクトをとって、ごにょごにょやるしかないんじゃないかな。
つまり、コントロールの機能としては無理かと。
641627:04/08/26 16:12
640様

返答いただきありがとうございます。

SQLサーバ7.0内のRDBとなります。接続はODBC接続しています。

>>641
データセットに入れてあるのなら、ループで逆に読めば OK。

レコードセットに入れてあるのなら、MoveLast して、MovePrevious しながら
とっていけば OK。
643627:04/08/26 17:38
642様

ありがとうございます。

早速、試してみたいと思います。

本当に感謝致します。
掲示板を自動巡回するソフトを作りたいのですが、
どういった知識が必要なのでしょうか。
いくつかの掲示板を自動巡回できるようにし、
また各掲示板用の書き込みを巡回前に用意しておけば
巡回中に、自動で投稿されるようにしたいです。

掲示板によっては投稿に必要な手順が異なったりするのも
ソフトの方で登録できるようにしたいです。

どなたか、よきアドバイス・実現方法等ご教授下さらないでしょうか。
645デフォルトの名無しさん:04/08/26 19:08
>>644
まずは、IEコンポーネントとかを使わずにブラウザを作るところからスタートだな。
TCP/IPとHTTPとHTMLぐらい。
コントロールA(アンカー左)とコントロールB(アンカー右)を配置した後、
フォームをリサイズしたら、BがAの下に潜り込んでしまいました。逆に
AがBの下に潜り込むようにしたいんですが、どうすればいいんでしょうか。
各コントロールの重なり方を指定するやり方を教えてください!m(_ _)m
>>646
まずはデザインモードでコントロールを右クリック。
話はそれから。
というか、普通それで解決法がわかると思う。
>>644
ついこないだそんなもん作ったなぁ・・・お前は俺か?(ぉ
http://www.gotdotnet.com/japan/student/column/firststep/
ここのダウンローダーあたりを見ればwebから取得する方法は分かるだろ。
これで巡回はいいとして・・・

あとはその掲示板への投稿方法を見なければならないからなぁ
HTMLフォームの知識も必要になるだろう。
(簡単なHTTPの知識もあったほうがいいと思われ。RFCでも見るんだ)

巡回先が2chじゃないだろうな?一応
http://www.monazilla.org/document/index.html

自動投稿スクリプトでAA連投プログラムとか作っちゃダメだぞ
Windows Script HostのMapNetworkDrive メソッド、RemoveNetworkDrive メソッド
と同じような事をwsh使用せずにVB.NETだけでしたいのですが
System.IO,System.netクラスにはなさそうだったのですができないのかな?
ネットワークドライブの割り当てせずにUNC形式でパスかかってるファイル、フォルダに
アクセスできればいいのですがどなたかご存知ないでしょうか?
プログラムを常駐させといて、ユーザーのクリックに反応してある関数を動かす
そんなプログラムを作りたいのですが、.NET Frameworkで実現できますか?
651646:04/08/27 19:09
>>647
レス遅れてしまってすいません! ありがとうございました!
とても簡単に解決できたんですね・・・申し訳ないです。助かりました。
多謝です m(_ _)m
652デフォルトの名無しさん:04/08/27 22:25
SQLからNullを含んだ列をDataSetに読み込んできたんですが、その列が
Nullであるかどうかを判別するのってどのようにすればいいんでしょうか?
SqlDataAdapter1.Fill(DataSet11.TestTable)
For Each dr As DataSet1.TestTableRow In DataSet11.TestTable
If Not dr.X Is Nothing Then
....
Else If
Next

という感じで書いてみたんですがだめでした
XMLスキーマエディタでNullValueを設定しようとしたら
このコンテキストでは無効です
というエラーが出てしまい、保存できません
どなたがご教授お願いします
>>652
IsDBNull関数でできると思うけど?
>>653
出来ません。
自作プロパティ、メソッドに説明文をつけたいのですが方法がわかりません。
プロパティウインドウの下の部分や、入力候補に表示させるにはどうしたらいいのでしょうか?
656652:04/08/28 12:28
>>653 >654の言うとおりで出来ませんでした。
datasetの項目はpropertyみたいなのでgetメソッドの中で
例外が発生しているみたいです。
657デフォルトの名無しさん:04/08/28 12:40
ちょっと質問です。

VB6.0では、スクリプトコントロール
(http://www.microsoft.com/japan/msdn/scripting/default.asp)
があって、VBアプリからVBスクリプトを簡単に利用できましたが
VB.NETで同じようなことはできるでしょうか?

658デフォルトの名無しさん:04/08/28 13:22
DataSet11ってオリジナルのクラス?
659652:04/08/28 13:36
>>658
そうです。データアダプタでデータセットの生成をやったときに
新しいデータセットを作るときのデフォルトの名前がDataSet1
で、それをフォームに追加したときに出来るのがDataSet11です。
その方法でDataSetを使ったことがないんだけど

XMLスキーマ経由で返されるNULLってゼロストリング""じゃなかったっけ?
CrystalReportsのXMLデータセットで使ったときはNULL=""で対処してた

661652:04/08/28 15:16
>>660
XMLスキーマエディタでNullValueをemptyに設定するとゼロストリング""
になるらしいんですけど、その設定が出来ませんでした。(保存するとき
にエラー「このコンテキストでは無効です」が出る)
>NULL=""で対処してた
それで対処できるのはわかるんですけど、たとえばSQLdatareaderとかを
使う場合とかならISDBNUllとかで対処できるからdatasetでもできるんじゃ
ないかと思ったんです
試しに
ID Int
STR CHAR
DT DATETIME
っていうSQL結果(テーブル)からDataSet1.xsd
作ってみたんだけど

STRのNullValueプロパティを(Empty)にしたら問題なくコンパイルが通った

DT(DateTime)のNullValueプロパティを(Empty)にしたら
「カスタム ツール エラー : コードを生成できませんでした。システム エラーです。」
と言うのが発生したけど、これはまた別物かな

一度XMLスキーマに通してるみたいだけど
直接Data.DataSetにFillすることは出来ないのかね?
Data.DataTable内のDataColumnならNull値(Nothing)が取れるんだけど

何かあんまり力になれそうにないです
スマソ
datasetじゃなくてdatatableじゃダメなん?
664652:04/08/28 16:19

>STRのNullValueプロパティを(Empty)にしたら問題なくコンパイルが通った
>DT(DateTime)のNullValueプロパティを(Empty)にしたら
>「カスタム ツール エラー : コードを生成できませんでした。システム エラーです。」
>と言うのが発生したけど、これはまた別物かな
同じエラーです。こっちではそれでコンパイルが通らなくなっちゃうんですよね。
何がちがうんですかね?

>一度XMLスキーマに通してるみたいだけど
>直接Data.DataSetにFillすることは出来ないのかね?
えーっと私の理解ではdatasetを生成すると自動でXMLスキーマが生成されて
さらに編集したい場合にはエディタを使うってことだと思ってたんですが
違いますか?

>Data.DataTable内のDataColumnならNull値(Nothing)が取れるんだけど
DataTableは使ったことがないんで試してみます。

>何かあんまり力になれそうにないです
>スマソ
いえいえありがとうございました。参考になりました。

>>663
とりあえずやってみます
>>664
XMLのDataSetとSystem.Data.DataSetは名前は同じなんですけど中身が別物です

Dim dt As New Data.DataTable '新しいDataTable作成
SqlDataAdapter1.Fill(dt)      'でDataTable内にデータを取得できるので

For Each dr As Data.DataRow In dt.Rows

dr.Item(カラム名か番号) '<-これでレコードごとのカラムにアクセスできます

Next

な感じでデータを取得できます
666652:04/08/28 18:08
>>665
>dr.Item(カラム名か番号) '<-これでレコードごとのカラムにアクセスできます
ここでItem(カラム名か番号)がNULLだと例外が出てしまうんです。
If dr.Item(カラム名か番号) Is Nothing then ...
If ISDBNull(dr.Item(カラム名か番号)) then ...
などとやってもうまくいかないんですよ(TT)

If IsDBNull(dr.Item(カラム名か番号)) then てやらんと。
DataRowに入ってるSystem.DBNull.Value とNothingは別物だぞ
668667:04/08/28 20:32
If dr.Item(カラム名か番号) Is DBNull.Value then ... でもok
669665:04/08/28 20:57
失礼
NothingじゃなくてDBNullでした
dr.Item(カラム名か番号) で例外が出るんだったらそれでは無理と思うが…
って勘違いしてたかな?スマン
ON_WM_KEYUP( )メッセージハンドラで他のアプリのキーUPメッセージって拾えますか?
673デフォルトの名無しさん:04/08/29 05:29
SqlDataAdapter1.Fill(DataSet1,"DataTable")で作成したDataTableの中身を
Excelファイル(.xls)に吐き出して、Excel起動→WorkSheet表示→印刷
→Excel終了をVBのプログラムから実行したいのですが方法が分かりません。
どなたかご教示頂きたく宜しくお願いいたします。
ちなみに、VBは2003、Excelは2002、DBはMSDE-RelAです。
>>673
http://www.atmarkit.co.jp/fdotnet/index/bbs/dir91.html
ヒントが見つかるんでないかな
675523:04/08/29 12:35
>>655
入力候補ってのはどんな奴を指してるかイマイチ解りませんが、
Modifiersプロパティみたいな奴だったら
Public Enum testEnum
t0 = 0
t1
End Enum
<System.ComponentModel.Description("説明です")> _
Public Property test() As testEnum
で、OKと思われる

追伸
誰か、523の回答もお願いします
>>675
>>523のやつまだやってたのかよ。

ってか>>518で書いてるようにプロパティをReadOnlyにしたらいけたぞ?
ReadOnlyじゃないと、DesignerSerializationVisibility.Contentの指定が生きてない感じ。
というより、コントロールのオブジェクト自体入れ替えられるんだから指定が意味なしってことかな・
677523:04/08/29 21:20
>>676
すみません。完全に見落としてました・・・_| ̄|○
ReadOnlyにしたら出来ました。
VisualStudio.NET2003と.NET Framework1.1の組み合わせで
使用しています。

TreeviewやListviewを使った標準的な3ペインのアプリケーションを
作っているんですが、起動時に、Treeviewに水平スクロールバーが
表示されます。必要もないのに、です(つまりノードはすべて表示し
切れています)。Treeviewの大きさを変えたりすると、消えてしまいます。
これはバグでしょうか? scrollableプロパティをfalseにすれば表示され
ないんですが、これだと、ノードが表示しきれなくなったときにバーが
出なくなってしまいます。この水平スクロールバーの表示をなくすには
どうしたらよいでしょうか。よろしくお願いします。
679655:04/08/30 09:36
>>675
レス感謝です。
プロパティは確かに実現できました。

>入力候補ってのはどんな奴を指してるかイマイチ解りませんが、
ソースを入力している時にピリオドを打つと出てくる奴のことです。
たとえばShowメソッドだと、
Me.
と打った時に入力候補が出て、Showの説明には、
コントロールをユーザーに対して表示します。
と表示されます。この説明を設定したんです。
>>679
XML ドキュメント
>>680
もっとわかりやすく伝わるように努力してくれませんか?
681 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/31 02:28
>>680
もっとわかりやすく伝わるように努力してくれませんか?


他人に努力を求めるってのもすごいな
>>681
ぎゃはははは、じゃとっととあきらめろ。
やならドキュメントコメントについて調べろ。
684デフォルトの名無しさん:04/08/31 09:56
ここは中途半端な知識の香具師が、エラを張るイソターネッツでつね。
インターネッツ?
2ちゃんねるだよ ボケ!
>>683
そんな一言じゃアドバイスになりません。
煽るつもりならレスしないでください。
687デフォルトの名無しさん:04/08/31 18:54
夏の終わりに変なのが出てきたな・・・
課題が終わらない大学生か?


688デフォルトの名無しさん:04/08/31 19:15
idCode1で絞込みをして、外装コンボボックスに値を出力、次にidCode1とidCode2で
絞込みをして内装コンボボックスに値を出力しようと思っています。

下のように書いて、外装コンボボックスに"excol_name"値は出力できました。次に
この"excol_data"テーブルに存在している"excol_id"の値を"idCode2"に代入したい
のですが、コンボボックスの"excol_name"をフォームから選んだ時に、その行にある
"excol_id"を"idCode2"として得る方法を教えてください。

Private Sub frmMakedata_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cmd As SqlClient.SqlCommand = SqlConnection1.CreateCommand()
Dim dr As SqlClient.SqlDataReader
Dim idExcol1 As Integer
cmd.Connection = SqlConnection1
SqlConnection1.Open()

'外装コンボボックスの設定

cmd.CommandText = "SELECT * FROM excol_data WHERE car_id =" & idCode1 & ""
dr = cmd.ExecuteReader()
Do While dr.Read = True
cmbExcol.Items.Add(dr("excol_name"))
Loop
dr.Close()

End Sub
外装とか内装って何よ

好意的に解釈すると
ComboBoxが2個ある
一方に値を設定すると、他方にそれに該当する候補値を入れたいって事か

だったらSelectedIndexChangedかSelectedValueChangedでその変化をひらって
みるとか

できたらもう少し状況がわかるように書いてくれよ
つうか人間にうまく伝えられなかったら、コンピュータにもうまく伝えられないんじゃねぇ
690688:04/09/01 00:56
えーとですね、車の見積を作ってるんです。

んで、外装の色のコンボボックスは、車種でもって、ふるいに掛けられて
内装の色のコンボボックスは、車種と外装の色でもって、ふるいに掛けた
いんです。

で、外装の色コンボボックスは、excol_dataのテーブルに含まれてる車種
のidであるcar_idでふるいに掛けることに成功したんですが、内装の色の
コンボボックスの値を決めようとすると、車種をあらわすidCode1=car_idと、
外装の色を表す、idCode2=excol_idが必要になるんです。

で、外装の色のコンボボックスで、色を選択したときに、このテーブルに含
まれているexcol_idを取得したい・・・というわけなんです。

判りにくくてすいません。
車のデータベースか・・・
以前どこかで見かけたような・・・
いや、デジャヴだろうな・・・
>>691
意味ないレスしてんじゃねーよ
おまえはチラシの裏にでもレスしてろ
693デフォルトの名無しさん:04/09/01 07:53
オマエモナー
694デフォルトの名無しさん:04/09/01 07:54
ここは、役に立たないイソターネッツですね。
695689:04/09/01 11:02
>>688 >>690
Accessとかでやった方がすこぶる簡単だと思われ
696デフォルトの名無しさん:04/09/01 20:53
ACCESS以下だと言う事が露呈しました。
Accessって何?
TreeViewコントロールのツリー構造をどこかに保存しておき、
アプリケーションを起動したときに、そのツリー構造を正確に
再現するようにしたいんですが、どうしたらいいのか見当つかず
困っています・・・。このツリー構造は、ユーザーがノードを
追加・削除できるもので、プログラマ側が、具体的にどのような
ツリー構造となるかは予想できません。TreeViewコントロールは
いろんなアプリに利用されていて、保存・再現はほとんど必須の
テクニックだと思うのですが・・・。どのように処理するとよいんで
しょうか。
>>698
検索しろ。過去ログ嫁。
Webサービスで
<WebMethod()> _
Public Function FX(ByVal X As Integer, ByVal Y As Integer, ByVal Z As Integer) As Integer
Z = X + Y
End Function
というサービスを起動し

クライアントアプリケーション(VB.NET)でZの値を取得しようとしたのですが
値が返ってきません

Webサービスでは引数に戻り地を渡すことは出来ないのでしょうか?
ByVal Z As Integer じゃなくて
ByRef Z As Integer じゃないのかな
>>697
Office製品の一部?
>>700
何がしたい
>>698
キーワード: シリアライズ
シリアライズする元ですら作れないと思われ。
っていうか、TreeViewの情報って何を保存しときたいの?
ツリーの構造と状態?名前?その他のデータ?
その情報は誰が(何が)操作、作成するわけ?
706デフォルトの名無しさん:04/09/02 22:46
役に立たないから落とせよ、このスレ。
プ
(σ´∀`)σ)・ω・) >>706
みんな基本コントロールを継承して軽くカスタマイズして使ってるだろけど、
ネットで公開してるのは少ないな。
TreeViewの構造を読み書きできる継承クラスぐらい落ちてそうなもんなのに。
709700:04/09/03 00:25
おそくなりました

>>701
ByRefにしてみてもダメでした

>>703
サーバ上のとあるユーティリティ(COMコンポーネントで実装)を実行して
検索結果を返すというサービスです
複数の結果を同時に返す必要があるので
引数で返す方法をとりたかったのですが
>700
Returnしなくていいのか?
>700
709読んでなかった、710は見逃してくれ。

構造体で返したらだめ?
712デフォルトの名無しさん:04/09/03 11:18
めちゃめちゃ基本的な質問ですが。
ポップアップして処理状況を表示したりするときって、どういう処理してます?
MessageBoxと違って、自動で閉じたりしたい場合。

CreateObject("WScript.Shell").Popupだと秒数指定で閉じられるけど、
これだと外部からクローズできるのかな?
でもこんなので遅延バインディングするのもなんか嫌なかんじ。

わざわざ個別にフォーム作るのもめんどくさいんで、
Timeoutプロパティとか表示メッセージのプロパティとかを
くっつけたクラスをさくっと作ろうかと思ったけど、
普通みんなどうしてるんでしょう。
時間が来たら自律的に死ぬクラスがそんなに悩むようなこととも思えないが。。
作るのに悩んでるんじゃなくて、
定石を知りたいんじゃないのかな?
自律死はともかく、ポップアップ窓はなんか標準であってもよさそうだし。
(´-`).。oO( 自演Z
716700:04/09/03 15:26
>>711
本来はクライアントアプリケーションで使うOCXを
Webサービスで使おうとしているので

    r = FX.HOGE(X,Y,Z) <= Zに計算結果、rは成功か失敗か

このようなOCXの場合

    r = FXweb.HOGE(X,Y,Z) <=Web経由で同じ作業をさせたい

のように FXオブジェクト をWeb参照にするだけで、現状のソースを書き換えたかったのです
もともと「IIS(ASP)でも使えます」というOCXだったので
上記のような使い方が出来るものかと思いまして・・・

ただWebサービスの内部はXMLのPOSTのようなので、引数はInputのみなのかもしれません
別の方法が無いか試して見ます

717デフォルトの名無しさん:04/09/03 17:04
vb.netで「ペイント」のようなソフトを作りたいんですけど、
良いサンプルありませんか?
無い
719デフォルトの名無しさん:04/09/03 19:08
Dim X As string = (SqlDataAdapter1.SelectCommand.CommandText
= "SELECT name FROM member WHERE member_id = 25")

ってやったら、Xにid25番の人のnameじゃなくて、TrueかFalseが帰ってきちゃうんで
すが、nameを返すにはどうしたらよいでしょうか?
>>719
Dataset の使い方を一から勉強しなおす。
DBやったこと無いけど>>719は絶対に真偽値を返す事だけはわかる。
722まんこ ◆yCMANKO3dM :04/09/03 20:11
質問内容からして素人なんだから、だれか説明してやれよwwww。
723デフォルトの名無しさん:04/09/03 21:01
ばか、ここは生まれながらにして、VBが使える神の集うスレナンダよ!

だから、どんな質問でも完璧に答えられる。

自分で調べろ!

な?完璧だろ?
タスクトレイに表示したアイコンから
http://www.geocities.jp/mootdata/unno.jpg
みたいにメッセージを表示したいのですが
どう殺ったらよいのでしょうか?
>>713
簡単なようだが、まともに動作する、かつ問題のない
こういうクラスを作るのは、それ程簡単でもないぞ。
726デフォルトの名無しさん:04/09/04 00:54
>>724
VBの神が答えてやろう。

自分で調べろ。
727デフォルトの名無しさん:04/09/04 01:11
>>724
一番簡単なのは新しいハードウエアを抜き差しすることだな
Objectのキャストについてどなたかご存じでしたら教えてください。

・フォームに複数のコントロールがある
・各コントロールのTagプロパティに、文字列
 またはオブジェクトがセットされている

この状態で、フォーム内の全コントロールを参照して
Tagプロパティに文字列"hogehoge"がセットされているもの
だけに処理を施したいと思い、Tagプロパティをcstrでキャストして
"hogehoge"と比較したいのですが
オブジェクトが入っている場合、エラーになってしまいます。

こういう場合、cstrでキャストできるかどうかの判断をする方法
というのはあるのでしょうか?
それとも、TryCatchで例外を拾うしかないのでしょうか?
If TypeOf hoge.Tag Is String AndAlso CStr(hoge.Tag) = "hogehoge" Then
 ほにゃらら
730デフォルトの名無しさん:04/09/04 08:01
↑ちがうだろ。

正解は、自分で調べろ。だろw
なにこの良スレ
732デフォルトの名無しさん:04/09/04 09:03
初心者に”自分で調べろ”と言って、日ごろの憂さを晴らすデジタル・ドカタ
のスッドレはココですか?
初心者じゃなくて、何か(例えば「初心者」)を口実っていうか免罪符にして
他人を利用しようとするズウズウしい横着者を叩いて日ごろのウサを晴らす
デジドカのスレがここですが文句ありますか。

ついでに自分のあつかましさを批判されると逆切れする>>732みたいな
あつかましい奴ももれなく叩いておりますが。
734デフォルトの名無しさん:04/09/04 10:20
↑デジタルドカタキター。
休日の朝から、カルシウム不足の>>733が湧いたな、牛乳でも飲んでろ。

>>719もまいは、明日から俺のメイドさんになること。もしくは口からクソを垂れる前と後
にSirをつけること。あと、入門書に乗ってないことでも、冷静に色々やってみろ。


'変数の定義
Dim X As String
'SqlConnection1を使って、データコマンド作成
Dim cmd As SqlClient.SqlCommand = SqlConnection1.CreateCommand
'データーリーダーの設定
Dim dr As SqlClient.SqlDataReader
'コマンドのコネクション設定
cmd.Connection = SqlConnection1
'検索条件の設定(A)
cmd.CommandText = "SELECT name FROM member WHERE incol_id = 25 "
'コネクションを開く()
SqlConnection1.Open()
'データリーダーから、データーを読み出す
dr = cmd.ExecuteReader()
'読めたら、Xに代入・・・(A)のSQLでnameのところを*にしてXをYだのZだのに変えて、
'好きなだけ変数を引っ張れw
Do While dr.Read = True
X = dr("name")
Loop
'データリーダーを閉じる()
dr.Close()
'コネクションを閉じる()
SqlConnection1.Close()

デジタルドカタは、人に者を教えるときはそいつのレベルまで下がって教えてやれよw。
お前らだって誰かに習っただろうにwww。
>>724
これは漏れも知りたい

>>727
ワロタ
>>724
Baloon Tooltip を使え。
738デフォルトの名無しさん:04/09/04 16:07
DateTimePickerコントロールをデータセットに連結してます。
ユーザー操作無しにコントロールのValue値をデータセットに反映させるには
どうすればいいのでしょうか?
例えば、新規レコード追加Formでコントロールに年月日が表示されますが、
その日付でいいやと言うことでコントロールを操作しないと、新規レコードの
日付はNullになってしまいます。
これを何とかしたいです。言葉足らずがあったらすみませんm(_ _)m
739デフォルトの名無しさん:04/09/04 17:43
変更がない時は、Nowを突っ込む。

Null入れてんじゃねえよ!と言うエラー捕まえて、Nowを突っ込む。

てのは?
意味がわかりません
741738:04/09/04 18:07
>>739
レスありがとうです。
現状は、
Dim dvHogeHoge As DataView
Dim cm As CurrencyManager
DateTimePickre.DataBindings.Add("Text",dvHogeHoge,"HIDUKE")
みたいな感じになってるので、
If DateTimePickre.Text = "" Then
dvHogeHoge(cm.Position)("HIDUKE") = Now()
End If
ってな感じで試してみようと思います。
742デフォルトの名無しさん:04/09/04 18:09
だから、直接連結させずに、一端変数に入れて、変数に入れた内容をupdateするときに
その変数をDBに突っ込めば?んで、変数の初期値をnowにでもしとけば、底がNullに
なるって事はないでそ?
って、>>740>>741とは違う人だったかw。
自フォームのListViewから(エクスプローラのように)他のアプリ
ケーションに対し、Drag&Dropでファイル名を与えたいのですが、
方法がよくわかりません。

Private Sub ListView1_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag
Dim filename as String
filename = (略)
ListView1.DoDragDrop(filename, DragDropEffects.All)
End Sub

としてみたのですが、Dragしてもマウスカーソルは(/)のままで、
エクスプローラからのDrag&Dropなら受け取ってくれるアプリも
Dropに無反応です。

例外としてMS Wordは文字列(filename)を受け取ってくれました。

何かやるべきことが抜け落ちているのでしょうか、教えてください。
たしかオライリーだっけ?それ使えばいいのかな
746デフォルトの名無しさん:04/09/05 07:14
質問させてもらいます。

Textbox1〜3にA,B,Cと入力した文字を、WriteLine関数
を使って、テキストファイルの1行目に
"A","B","C"
というような内容で保存したのですが。

ListViewに見出し行を3つ設定したもの
(例えば 番号,氏名,フリガナ )
を、それぞれ見出し行別に、保存したファイルの内容を
表示するように読み込むにはどうしたらいいでしょうか。
少しは考えろ
オマイもその生産性のない行為と人生について考えたらどうかね
クレタ人は嘘つきだとクレタ人はいった。

生産性のない行為と人生について考えろ、といった者は、
「生産性のない行為と人生について考えろ」という行為の生産性と
彼の人生にいおける意味について考えた...?
面白い!
>>749
考えたらこんな感じになった
ってかVBじゃなくなってしまった すまそ

public Menbs = new Menbs(748);

while(にちゃんねら.人類なんてどうしようもないんだよとオモタカウンタ < 1000000)
{
 foreach(2CHスレッド スレ in 2CH)
 {
  for(int i=1; i<1001;++i)
  {
   if(にちゃんねら.watch(スレ,i)==Menbs.ゴミクズ || にちゃんねら.watch(スレ,i)==Menbs.糞レス)
    ++ にちゃんねら.人類なんてどうしようもないんだよとオモタカウンタ;

   ++にちゃんねら.ストレス;
  }
 }
}
print("そうか、人類皆殺しにすればいいだよ\n");
Exit(人生);
ちゃんとVB.NETで書かんかい。
753デフォルトの名無しさん:04/09/05 19:13
質問させてください。

タイマーの割り込みは1ms単位で設定できるようなのですが、実際に動かすと、10ms単位になっているようです。
1ms単位で割り込みをかけられないのでしょうか?
何のタイマーってかどういうタイマーってか、Timerは何使ってんだ?
ちなみにまじめに書くと多分やろうとしてることは無理だからあきらめろ。
>>753
知ってるけど教えてやらない
756デフォルトの名無しさん:04/09/05 20:39
そんなこと言わないで教えてよ。
>>756
System.Timers.Timerは精度が高い

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemtimerstimerclasselapsedtopic.asp
> イベントを時間どおりに発生させるという点で、Windows のタイマより正確です。
758デフォルトの名無しさん:04/09/06 00:04
>>757

ありがとうございました。
明日、会社で試してみます。
正直結局同じような問題に引っかかると思うぞ…
Winのプロセスのタイムスライスってmsecのオーダーだったような気がするんだけど。。
OSのタイムスライスより短い間隔のイベントって無理じゃないだろうか?
少なくともマイコンのタイマ割り込みみたいに厳密にはいかないはず。

>>753って組み込み系の人か?
Winのプログラミングってのはハード(CPU)をプログラミングしてるんじゃなくて
ハード上に仮構された仮想機械をプログラミングしてるんだってことを忘れてないか?
761なんかの壁:04/09/06 10:47
不思議な現象に悩んでいます。
DatagridのdataSourceにDatatableを設定して表示しています。
プログラムでDatatableをカラムから作成しています。
1回目の実行ではうまく表示されます。
2回目でDatatable作り直すとカラムだけ表示されて、データ部分が
表示されません。
1回目も2回目も動くプログラム部分は同じです。対象となるデータが異なるだけです。
(ちなみに、プログラムを再起動して先ほど2回目に行ったデータで実行してみると正しくデータも表示
されています)
なにか初期設定すべきことでもれていることがあるようですが、
いくら調べてもわかりません。


不思議ですね。
763デフォルトの名無しさん:04/09/06 15:25
ソースを張れよ
764なんかの壁:04/09/06 16:23
失礼いたしました。
ソースはかなり大きいので・・・。
問題箇所が判明しました。
datatableを作り直すとき、resetメソッドを使っていたのが問題だったようです。
テーブル自体は作り直せるのですが、何かの情報が失われるようです。

    (Public tbl as Datatable)
(Form_Loadで tbl = New DataTable("table1"))

元:
tbl.reset()

修正後:
tbl = Nothing
tbl = New DataTable("table1")

本当の理由がわからないのが弱点ですが。
┐(´ー`)┌
766デフォルトの名無しさん:04/09/06 17:27
ちょっと急ぎなんで過去ログとか読んでなくてすみません。

textboxをラベルみたいに表示させたいんですが、
どうしたらよいでしょうか?

文字色は黒でフォーカスが行かないよう(クリックも不可)にしたいです。
>>766
知ってるが急いでるんで教えられない。
768デフォルトの名無しさん:04/09/06 17:39
enable = false
769デフォルトの名無しさん:04/09/06 17:43
enable = false でやると、
文字色が灰色になっちゃいますよね?
文字色黒のまま使いたいのですが・・・
readonly = true
771デフォルトの名無しさん:04/09/06 18:11
readonly = true でやると
クリックした時にフォーカスが行きますよね?
文字色黒、クリック不可の状態を作りたいのですが、
どうしたらよいでしょうか?
772デフォルトの名無しさん:04/09/06 18:13
すいません。
クリック不可ではなく、選択不可です。
文字色黒、中の文字を選択不可の状態を作りたいです。
773デフォルトの名無しさん:04/09/06 18:34
上からラベルをかぶせる
774デフォルトの名無しさん:04/09/06 18:37
やっぱラベルかぶせるしかありませんかね?
テキストボックスのみでどうにかできるのが、
理想なんですが。
775デフォルトの名無しさん:04/09/06 18:38
つ〜か、なんでラベルが使えないの?
ていうか、なんでラベルじゃだめなのか。
オホホかぶった。
778デフォルトの名無しさん:04/09/06 18:42
パラメータによって、
そのフィールドが入力出来たり出来なかったりします。
で、入力不可の時はラベルみたいにして欲しいと言われてるんで。
Windows標準から外れたことをやろうとしてるわけだから
エレガントに解決しようとせず、実際にラベルを使うのが
ベストだと思う。
実行時にラベルを生成して、TextBoxと同じBoundsに
置いて、TextBoxを消せばいいんだろ。
780デフォルトの名無しさん:04/09/06 19:04
わかりました。
そのやり方で上司と相談してみます。
回答ありがとうございました。
sage忘れた。すみません。
782779:04/09/06 20:02
>>780
その要求の出所がお客じゃなくて上司だったら、
「そんな間抜けなUIじゃ笑われますよ」って言ってやるが。
注文が多いな
784デフォルトの名無しさん:04/09/06 20:46
笑うのはプログラマの都合。見た目重視を求めるなら
十分有りうる想定。

笑われますよ、とか、出来ませんとかは只の言い訳だし。
いや、見た目重視ならむしろWinの標準のUIの方が統一感があり直観的だと思うが。。
それ以上に必要以上に見た目が変化するUIなんてダサイしイライラするだろう。

まあ、マーキーで文字が流れまくりのウェブサイトをかっこいいと思う人も
いるわけだから蓼食う虫も好き好きといえばそれまでだけど。
Textboxを継承してLabelを内在するコントロールクラス作っとけ。
で、プロパティで表示を切り替え。
787779:04/09/06 21:39
>>784
「すいません、できません」は言い訳っていわないと思うが。

「なんでそんなバカな仕様で受けてきたんだ」はよく使う言い訳。
というか遠吠え。
>>784
言われたこと全部やろうとするのかお前は。
メール送信のプログラムを作成していたのですが、CDO.messageにアクセスできません。
という例外がでて送信することができません。
調べたところ私の使ってるメールサーバのSMTPがPOP before SMTPになっていたので
1〜4行目を追加したところ、自分から自分には送信できたのですが
他のメールアドレスに送信すると同じ例外が帰ってきました。
本についてるメール送受信のサンプルソースなども試したのですが
わたしのメールサーバの設定では、例外こそ出ないものの他のメアドに送信すると
何故かメールが消えてしまい、相手にも届かなければこちらに送信エラーで
帰ってもきませんでした。
どなたか良い解決方法はないでしょうか?

1 Dim tcp As New System.Net.Sockets.TcpClient()
2 tcp.Connect("pop.hogenet.ne.jp", 110)
3 Dim sw As New StreamWriter(tcp.GetStream())
4 sw.Write("USER hoge" + vbCrLf + "PASS ******" + vbCrLf + "STAT" + vbCrLf + "QUIT" + vbCrLf)
5 Dim mm As New System.Web.Mail.MailMessage()
6 mm.From = "[email protected]"
7 mm.To = "[email protected]"
8 mm.Subject = "てすと"
9 mm.Body = "てすとです"
10 mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)
11 System.Web.Mail.SmtpMail.SmtpServer = "smtp.hogenet.ne.jp"
12 System.Web.Mail.SmtpMail.Send(mm)
追記

なお、自分自身にメールを送信すると
必ず差出人のところ『のみ』が文字化けしてしまいます。
ただ、差出人を本当のメールアドレスの"[email protected]"から
"[email protected]"や"[email protected]"
などと出鱈目なものにすると何故か文字化けせずに受信できました。

使用環境は
WindowsXP Professional Version2002 Service Pack 1
Microsoft Visual Basic .NET
Microsoft.NET Framework 1.0.

使用しているメールソフトはNetscap 7.1です
関係あるかわからんけど

mm.Headers("Content-Transfer-Encoding") = "7bit"

これしたらどうだろうか。これしないとQuoted-Printableになっちゃって
受け付けないor化ける相手がいたことならある。
792デフォルトの名無しさん:04/09/07 10:56
>>789
プロバイダ経由しないで送信できないの?
たとえばIISからとか
>>791
ご指摘ありがとうございます。
mm.Headers("Content-Transfer-Encoding") = "7bit"
の一文だけでは文字化けは直らなかったのですが

以下のヘッダー情報を追加したところ、
mm.Headers("Content-Transfer-Encoding") = "7bit"
mm.Headers.Add("Reply-To", "[email protected]")
mm.Headers.Add("sender", "[email protected]")

差出人の文字化けは直りました。
何故か"sender"を抜くと文字化けしたままなのが
よくわかりませんけど・・・。

あと、エラーメッセージももう少し掘り下げてみました。
サーバーによって 1 つまたは複数の受信者アドレスが拒否されました。サーバーからの応答は次のとおりです。
550 5.7.1 <[email protected]>... Relaying denied. Proper authentication required.

'CDO.Message' オブジェクトにアクセスできませんでした。
System.Web
at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
at System.Web.Mail.CdoSysHelper.Send(MailMessage message)
at System.Web.Mail.SmtpMail.Send(MailMessage message)
at mail.Form1.sendMail() in C:\temp\mail\Form1.vb:line 98

>>792
IISやSMTPなどの設定もあまりよくわからないのですが
開発環境でIISを使用して作ったとして、Home Editionなどを使っている
他の端末でも実行できるのでしょうか?
>>793
IISさえ起動していればHomeでもいけると思う(試したことが無い
やり方はSmtpServerプロパティを設定しないだけ
>>794
説明の仕方がまずかったかもしれません。
Aという端末(HomeEdition)がある処理をしたら
その結果をB端末(HomeEdition)、C端末(HomeEdition)・・・
にメールの形で報告するというものなので
IISが起動しているサーバというものはないのです。
普通のメールソフトで送受信できているので
できればわざわざA端末にProを入れてIISを起動させる。
という事はしたくないのですが、IISを使わないと
簡単にメール送受信を実現させる事は難しいのでしょうか?
>>795
550 5.7.1 <[email protected]>... Relaying denied. Proper authentication required.
リレー拒否されてますけど、
>6 mm.From = "[email protected]"
これちゃんとそのサーバにアカウントのあるアドレスですか?
>>796
それはもちろんあります。
SMTP、POP、FROMのメールアドレスは
メーラーで使われているものをそのまま
コピペでもってきたものです。
TOの方のメールアドレスも当然実在するもので
メーラーで送る分には何の問題もなく使えるものです。
>>789
(OutlookExpress等で) 一旦POPで読んでから動かすとどうなりますか?
なんとなく POP before SMTP がうまく行っていないだけのような気もします。

あと System.Web.Mail.Message って ISO-2022-JP が使えない(ですよね)ので、
日本語は送らない方がいいと思いますよ。
受信するのも自分ならいいのかもしれませんが。
>>789
BASP21を検討汁
>>789
>(OutlookExpress等で) 一旦POPで読んでから動かす

というのは、メーラーを立ち上げる→プログラムを実行する。
ということでしょうか?
とりあえずそれを実行してもダメでした。
あと、POP before SMTP が上手くいっていないという事だったので
4行目のソースのUSERとPASSを出鱈目なものして自分自身に送ってみたところ
それでも普通に送れてしまいました。
なのでPOP before SMTPが上手くいってなくて同じドメインの
自分のメールアドレスにだけメールを送る事が出来ているのかもしれません。

それと、ISO-2022-JPに関しては参考にしたサンプルソースで
日本語を送れる版ということでISO-2022-JPの設定があったので
10行目のISO-2022-JPの指定は問題ないと思います。

>>799
どうしようもなければそういった方法も検討しないといけないのかもしれませんが
まだ時間があるので出来れば自力で実現できる方法を考えたいと思います。
>>800
例えば [email protected] に送るとして、nslookup -type=MX bar.com で得られる
mail exchanger を SmtpServer にセットして、直接先方へ送れば多くのケースで動くと思います。
nslookup は System.Diagnostics.Process.Startで起動して、標準出力を貰えばよいでしょう。
>>801
その方法であっさり送る事が出来ました。
POP before SMTP で自分の所属するSMTPから
他所のドメインに送信する方法でかなり悩んでいたのですが
こんな方法があるとは思いも尽きませんでした。
本当にありがとうございます!

アドバイスして下さった皆さんにもとても感謝しています。
おかげさまでメール送受信の仕組みも全然勉強不足なのを痛感できました。
今回は801さんの方法で送ることができましたが
他の実現方法もないか勉強がてらいろいろ試してみようと思います。
803デフォルトの名無しさん:04/09/07 16:32
>>801
神認定
>>802
ウィルス/ワームの類でPCを乗っ取って spam をガンガン送る奴とかへの対策でLAN 内部から外部への
smtp での直接アクセスをはじくネットワーク管理者も多いと思いますので、その辺を考慮する必要がある
なら自分の側のサーバ経由での SMTP の方も使えるようにしたほうがよいでしょう。

そういったネットワークの内部からなら、内部の smtp サーバには認証無しで送れそうな気もするし。
このスレ、俺がいなければ良スレだな
>>805
俺がいなければ良スレだよ
ソリューション内に、AとBのプロジェクトがあります。
Aにフォームを継承したクラス1と、それを継承したクラス1'があります。

このクラス1と1'をBプロジェクトでも使用したいので、
リンクファイルとして追加しました。

ですが、実行しBプロジェクトでクラス1'をNewしようとすると、

指定されたカルチャ (またはニュートラル カルチャ) に必要なリソースがアセンブリに見つかりません。
"クラス1'.resources" が、アセンブリ "Bプロジェクト" に正しく埋め込まれているか、
またはリンクされているかを確認してください。

というエラーが発生してしまいます。

ビルドは通ります。
それぞれのプロジェクトをソリューションから切り離した場合もうまく動きました。
フォームを継承していない自作クラス2と2'は動作しています。

サブクラスはリンクファイルとして使用できないのでしょうか?
はい、その通りです。
なんでリンクファイルにしたいわけ?
現在、.Net Remotingの勉強をしようと
MSDNのサンプルを試してみています。
System.Runtime.Remoting.Channels.Tcp名前空間を
インポートするように書いてあるのですが、自分の環境では
名前空間が見つからないというエラーになってしまいます。
確かにSystem.Runtime.Remoting.Channelsの
メンバ一覧にも出てきません。
普通にインポートできるものじゃないんでしょうか?
811810:04/09/09 03:07
System.Runtime.Remotingを参照設定したら解決しました。
すみませんおさわがせしました。
812デフォルトの名無しさん:04/09/09 17:09
Windowsアプリケーションを作成しています。
プログラムの中で予期せぬエラーが発生した場合に、共通のエラーメッセージを表示したいのですが、
すべてのイベントにTry〜Catchを書かずに実現する方法はありませんか?
ASP.NETではGlobal.asaxでApplication_OnErrorにエラーメッセージ表示を記述すれば実現できたのですが、Windowsアプリケーションでは無理なんでしょうか。。。
813デフォルトの名無しさん:04/09/09 17:50
>>812
試してないけど
Application.ThreadException イベント
はダメだった?
質問です。
実行時にフォームに labelコントロールを作ろうとしています。
C = New Label
Me.Controls.Add(C)
ってやると作れるのはわかりました。
既にある Label1 のコピーみたいなのはできませんか?
C = Label1 ってやると実態は増えてないし、
New Label を Label1 で初期化できるといいのですよ。
なにかやり方ありますか?
あるわけねーだろ馬鹿
816814:04/09/10 11:40
>>815
そっか。じゃ しかたない。
817デフォルトの名無しさん:04/09/10 11:46
現在の Object の簡易コピーを作成します。

[Visual Basic]
Protected Function MemberwiseClone() As Object

[C#]
protected object MemberwiseClone();
818デフォルトの名無しさん:04/09/10 12:13
For Nextでクルクル回しながら得た値を

TextBox1.Text
TextBox2.Text

と順番に突っ込んで生きたいのですが

For i = 1 TO 10

として

TextBox"i".Textと言う格好で、末尾を変数にしての
名前の指定の仕方がわからず困っています。

どなたかボスケテいただけませんか?
どうしてもそういうヘンなことがしたいのなら、>>545あたりを一読した上で、
Type.GetField と FieldInfo.SetValue あたりを使えばいいと思うけど、絶対お勧めしない。
事前にコントロールへの参照を配列に入れておいたほうがいいと思う。
820デフォルトの名無しさん:04/09/10 13:12
特別な事情がないなら>>819の方法がいいと思う。
>>819
今回はSetValueじゃなくて、FieldInfo.GetValue で TextBox をとってきてから普通に Textプロパティにセットだね。
でも漏れも絶対にお勧めしない。
822デフォルトの名無しさん:04/09/10 15:49:41
>>818
Public Function FindControl2(ByVal ctl As Control, ByVal name As String) As Control


Dim myPropertyInfo As System.Reflection.PropertyInfo

Dim myObject As Object


myPropertyInfo = ctl.GetType().GetProperty(name _

, Reflection.BindingFlags.Instance _

Or Reflection.BindingFlags.NonPublic)


If Not myPropertyInfo Is Nothing Then


myObject = myPropertyInfo.GetValue(ctl, Nothing)

Return CType(myObject, Control)

End If

Return Nothing

End Function
for i as int32 = 0 to 10
findcontrol2(me,"textBox" & cstr( i) ).text="aheahe"
next
823デフォルトの名無しさん:04/09/10 16:10:09
絶対できない無理
とか言われると、意地でもなんか探してくる性
824814:04/09/10 21:19:50
>>817
なんだ、本当はあるのか。
でも使い方がよくわからないよ。
Label1.MemberwiseClone なんて出来ないみたいだし。
新しいクラスを作るのかな?
もう少し教えて。
825デフォルトの名無しさん:04/09/10 23:06:21
できるわけね〜だろ
826デフォルトの名無しさん:04/09/10 23:07:24
>>817
変な事教えるなよ…
827最凶VB厨房:04/09/10 23:14:34
828sage:04/09/11 03:02:39
>>818
こういうことでええどすの?

Const s As String = ",うほ,いい男"
Dim i As Integer
For i = 1 To 2
Form1.Controls("Text" & i).Text = Split(s, ",")(i)
Next


ところでVBでのバイナリデータの暗号化方法を誰か教えて。
capicomではバイナリの暗号化は無理ですの?
お金かけずに作りたいのでCryptLightは無しの方向でお願いしまっす。
829デフォルトの名無しさん:04/09/11 05:05:47
他のアプリで押された特殊キーの状態とかをトリガにして処理開始したいのですが
vbで他のアプリで押されたキーの状態とか取得できますか?
よくわかってないんですが自分のプロセスならwinprocとかでメッセージ拾って
なんかできそうなんですが。。。
830デフォルトの名無しさん:04/09/11 11:55:20
特殊キーを押すアプリがあるとは知らなかった。。

【こんなアプリはイヤだ】

モニタから手が出てきて特殊キーを勝手に押すアプリ
831デフォルトの名無しさん:04/09/11 13:06:57
>>828
それ本当にやってみた?
controlsはインデックスだから名前入れらんねーんだけど
ここはvb.netでvbaのスレじゃねーですぜ
(vbaじゃそれ重宝してたんだけどね)
832デフォルトの名無しさん:04/09/11 14:05:36
Handlesキーワードで指定されたイベント(Button1.Click, Form1.Load)を取得する方法ってありますか?
833デフォルトの名無しさん:04/09/11 14:47:06
なんかイベントハンドラのコレクションを取得するメソッドだったかがあったような気がする。
834832:04/09/11 15:13:50
>>833
ありがとうございます。
一度調べてみます。
835デフォルトの名無しさん:04/09/11 16:03:51
TCPでの送受信を勉強してるんだけど、チャットを作るとしたら
送信用と受信用を別Threadにして役割分担させるのが妥当なのかな?
普通にNetworkStreamを使うと、受信しようとしたとたん他のことができなくなっちゃうよね?


VB.NETで簡単なチャットを作ることを教えてるサイトないかな?勉強用に見たい。
836814:04/09/11 20:44:06
>>825 >>826 >>827
ん〜 結局できるのかできないのかさえわからん。
できないって言う人の方が多いな。
837デフォルトの名無しさん:04/09/11 20:58:25
少なくとも、MemberwiseCloneなどを利用してとか単純な方法では出来ない。
>>822とかみたいに強引に実装したらできるかもしれない。
838デフォルトの名無しさん:04/09/11 21:36:58
すみません。
コマンドでipconfig /releaseと/renewがあると思うのですが、VBで実行するには
どうしたらいいのでしょうか?結果まで出力出来れば嬉しいのですが。

ネット等で探したのですがコマンドの実行すら探しだせませんでした。
839814:04/09/11 21:55:41
>>837
ふむふむ。わかりました。
ありがとうございました。
840デフォルトの名無しさん:04/09/11 22:27:28
>>838おまいが分からないのは、
・そもそもプロセスの起動方法
・起動するプロセスへのコマンドラインオプションの渡し方
・結果の取得の仕方
・ipconfigがなんかおまいに取って特殊で、ipconfigに関して分からない
どれだ?
841838:04/09/12 00:06:40
>>840
多分、コマンドラインオプションの渡し方と結果の取得が
分からないです。あとは大体分かるので。
842デフォルトの名無しさん:04/09/12 01:15:52
>>841
こちょこちょと書かないで今どんな風にやってるのかとか書いて欲しいなあ。
※何が分からんのか分からないんだよね。
Processクラスで起動してるって事でいい?

コマンドラインオプションはメソッドでもろに指定できるやつがあるけど、
指定の仕方がわからない?

結果の取得(こっちは標準出力の取得とみなして…)等の細かい制御をするには、
ProcessStartInfoクラスを使う必要があったはずだと思う。

っていうか、ProcessStartInfoのヘルプ見たらほとんど分かるんじゃない?
843デフォルトの名無しさん:04/09/12 01:17:43
>>841
っていうか、多分てなんだよ多分て…
844最凶VB厨房:04/09/12 03:47:10
845デフォルトの名無しさん:04/09/12 03:52:03
textboxやrichtextbox内の文字の中から、特定の文字列だけの色を変える方法はどうやれば良いのでしょうか?
例えば、htmlソースのタグや、cソース内の予約語の色を変えたりです。

TextChanged内に記述する形で
タグや予約語を認識すると、その部分のみ色を変更という形をイメージしているのですが
具体的にどうやれば良いのかわからないので、どうかご教授お願いします。
846デフォルトの名無しさん:04/09/12 05:55:21
他のアプリケーションがOSにスタンバイ要求を出したり、スタート
メニューから[終了オプション]-[スタンバイ]を選んだりした時に
それを検出して、本当にスタンバイしたいのかどうかを確認する
ダイアログを表示、スタンバイしたくなければそれを中止するモノ
を作りたいと思っているのですが、

AddHandler SystemEvents.PowerModeChanged, _
AddressOf SystemEvents_PowerModeChanged

すれば、スタンバイに入ろうとしていることを検出するところまでは
わかりました。この後、スタンバイを中止する方法がわかりません。
(ダイアログを表示したところでスタンバイに移行してしまいます)
どなたか教えていただけないでしょうか。
847デフォルトの名無しさん:04/09/12 06:20:27
>>844
サンクス。がんがってくる
848デフォルトの名無しさん:04/09/12 12:45:35
ピクチャーボックスを複数使ってビューアのようなものを作っているのですが、
PictureBox1.Image = New Bitmap(strPicture_File_Path)

PictureBox1.Image = Image.FromFile(strPicture_File_Path)
のように
画像ファイルを読み込むときに画像ファイルのサイズが大きい場合、かなり時間がかかるんです。一枚ならまだいいんですが、複数の画像を各々Imageに読み込みたいため、かなり遅く感じます。これを早くする方法はありますか?
回答をお待ちしております。お願いいたします。
849812:04/09/14 16:41:22
>>813
できました!
ありがとうございます。
起動したフォームだけじゃなくそこから開いた別のフォームでも
エラー処理をトラップすることができました。
850デフォルトの名無しさん:04/09/14 17:33:33
>>848
メモリを増設
851デフォルトの名無しさん:04/09/14 18:08:08
質問です。
フォームの中にテキストボックス等のコントロールが複数あるのですが、
実行時にフォームのサイズが変更された場合、コントロール間の距離を保ったまま
コントロールの大きさを変更させたいのですが、どうしたらよいですか?
Anchorの対象をフォームではなく他のコントロールにするみたいな感じです。
852デフォルトの名無しさん:04/09/14 20:54:23
>>851
質問です。
試行錯誤してますか?そうは思えませんが。。
そんな質問をする自分を恥には思いませんか?
853デフォルトの名無しさん:04/09/14 21:08:24
あ〜明日VBの試験だあ〜
854デフォルトの名無しさん:04/09/14 21:31:19
まあそう言わず。
>>851
パネルかなんかにぶっこむのが楽でねぇ?
855デフォルトの名無しさん :04/09/14 22:04:10
>>850
違うと思います。

何か違うやり方とか
856デフォルトの名無しさん:04/09/14 22:10:24
>>855
俺も >>850 が正解かと思ったけど。
どれくらいのサイズの画像を何枚くらい読み込もうとしてるの?>>848
そもそもディスクが遅いっていうオチじゃ嫌よ。
857デフォルトの名無しさん:04/09/14 22:56:02
>>856
読み込む画像は基本的に1MBくらいのJPGを5枚です。
マシンもPentium M(1GHz)、メモリも756MBだし。そこそこ最近のですよ。
普通にあるのフリーのビューアーだってストレスのない早さなのに
自作のプログラムが遅いのは不満です。
何かいい方法はありませんか?
例えば、ファイルを並行に読み込むとか??
858最凶VB厨房:04/09/14 23:11:42
859デフォルトの名無しさん:04/09/15 00:28:53
>>858
ありがとうございます。
でも、このやり方でやっています。

そもそも
Dim image = New Bitmap("Texture.jpg")
の処理に時間がかかっているのです。
860デフォルトの名無しさん:04/09/15 00:50:28
そこそこ精度の高いFAXTIFをImage.FromFileで読み込んだけど
そんなに遅くなかった気がする
512MB 1.1GHz

そのイメージをファックスドライバに送ってファックス送信した
861デフォルトの名無しさん:04/09/15 00:50:37
すみません,>>845解る方いらっしゃらないでしょうか(´Д`)
862最凶VB厨房:04/09/15 01:56:26
863デフォルトの名無しさん:04/09/15 01:58:27
>>857
1MBのJPGを読み込めば、メモリ上では50〜100MBとかになる。
850のレスに対してはスワップの発生状況について言及すべき。
864845:04/09/15 03:52:07
>>862
助言ありがとうございます
RichTextBox.SelectionColorプロパティをどのように応用すれば>>845を実現できるかはまだわかりません(´・ω・`)
もうちょっと頑張ってみます。

>textboxは部分文字列は色変更できないはず。

なるほど、そうでしたか。失礼しました。
865851:04/09/15 10:24:07
なるほど、panelというものを使えば簡単にできるのですね。
ちょっと触ってみた感じ、いまいちどう使うのかわかりませんでしたがやってみます。
コントロール間の距離を測っておいてフォームのサイズを変えたときに各コントロールの位置と大きさを
再設定すればできるだろうか?とかそんなことばかり考えていました。(できなかったわけですが)
どうやら簡単にできることのようなので、こんな質問をしてしまって恥ずかしく思います。
まだまだ試行錯誤が足りなかったようです。
答えていただきありがとうございました。
866デフォルトの名無しさん:04/09/15 23:06:43
本でわからないところがあります。

引用
---------------------------------
If x > 10 AndAlso y < 10 Then
z = x + y
MessageBox.Show(z.ToString)
End If

 上記の例では、最初に、前者の条件式「x > 10」を判定します。
条件式「x > 10」が不成立であるならば条件式全体に「False」を返し、
命令文「z = x + y」を実行します。条件式「x > 10」が不成立である
ならば、後者の条件式「y < 10」の判定を行ないます。
---------------------------------

文章後半、「命令文〜判定を行います。」
のあたりがよくわかりません。
最初の条件がFalseの時は命令文もつぎの条件判定も飛ばすんですよね?
867デフォルトの名無しさん:04/09/15 23:13:16
>>866
明らかに誤植。
文章もひどい。「不成立であるならば」なんて直訳。
868デフォルトの名無しさん:04/09/15 23:20:36
>>866
そんな命令があるの初めて知ったよ。
見てるだけでも勉強になるな。

参考に
ttp://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet06/vb6tonet06_01.html
869866:04/09/15 23:25:19
>>867
レスありがとうございます。

やっぱり誤植なのですか・・。 。・゚・(ノД`)・゚・。
誤植にしてはアレすぎるので何かひどい勘違いをしているものと
思っていました。

一応日本人の書いた本なのですが、
用語(?)自体が直訳風ということでしょうか?
870デフォルトの名無しさん:04/09/15 23:34:37
>>868
おもしろいリンク先の紹介、ありがとうございます。
ver.6では変わった演算子があったんですね。
871デフォルトの名無しさん:04/09/16 06:59:50
>>866
Basicの困った仕様を.NETで吸収するのに開発者は
苦労しただろうね。
ここまでして、「VB」にこだわる必要があるのか疑問に
なってしまう。
ただいまでも、ほとんど一緒でもBasicと名の付く方を
選択する人はかなりいるんだろうね。
872デフォルトの名無しさん:04/09/16 12:38:48
>>869
こういうのは、だいたい英語のネタがあって、それのパクリかも。
誤植というか、2〜3行抜けてる感じ。
手書きならともかく、最初からパソコンで原稿書いてれば起きないはずなんだけど。
できるだけ原文に即して直すとしたら、こういう感じかな。(悪文だけど。)

 上記の例では、最初に、前者の条件式「x > 10」を判定します。
条件式「x > 10」が不成立であるならば条件式全体に「False」を返し、
条件式「x > 10」が成立であるならば、後者の条件式「y < 10」の判定を行ないます。
後者で、条件式「y < 10」が成立であるならば、命令文「z = x + y」と
「MessageBox.Show(z.ToString)」を実行します。
873デフォルトの名無しさん:04/09/16 12:42:56
AndAlso と OrElse か。
VB6でも最適化コンパイル時にそういう処理をしてると思ってたんだけど。

.NET Frameworkで動くのに、わざわざ命令を追加するほどの意味があるのかな。
874デフォルトの名無しさん:04/09/16 13:07:25
>>873
.NET Frameworkで動かすために追加せざるを得なかったんでしょ。
875デフォルトの名無しさん:04/09/16 14:31:54
>>874
なるほど、C#にそろえるためか。
876デフォルトの名無しさん:04/09/16 16:19:38
>>873
A, B が関数だとして、 A And B と A AndAlso B ではだいぶ意味が違ってくると思う。
AndAlso の使いどころは、例えば Not IsNothing(form1) AndAlso form1.Visible とか。
877VB.NET始めて2日目:04/09/16 17:19:22
研修の身分でVB.NETの課題を昨日から始めた初心者ですが、
早速テンパってしまったのでお聞きしたいです。

課題内容:エンターキーが押された際に順番通りにフォーカスを移動させる
フォーム内容:TextBoxが6個並んでいる

以上の内容となるのですが、どの様にすれば課題内容を網羅出来るものが出来るのでしょうか
出来れば、極力簡単な言葉でお教え頂けないでしょうか
878デフォルトの名無しさん:04/09/16 17:21:40
自分でやらなければ研修の意味がない。
給料を払う価値もない。


以上
879デフォルトの名無しさん:04/09/16 17:29:32
ワラタ
880デフォルトの名無しさん:04/09/16 17:50:42
EnterKeyをTabKeyに入れ換える

内緒 Function 内緒(内緒) As 内緒
If 内緒 = 内緒 Then
内緒(内緒)
内緒(内緒)
内緒 = 内緒
End If
内緒 = 内緒
End Function

簡単だな
俺はEnterKeyでフォーカスを移動するのは嫌いだな
881デフォルトの名無しさん:04/09/16 17:54:16
漏れは単純な数字を沢山入れるタイプのAPなら、
Enterでフォーカスが移動するのは悪くないと思う。
Excel もそうだけど気にならないし。

でもそーいう業務アプリ設計してると、他に「実行」キーが欲しくなるという罠
882デフォルトの名無しさん:04/09/16 17:56:23
キーフ○○ヒ゛ュー
883VB.NET始めて2日目:04/09/16 19:17:06
解決致しました。
皆さんどうもありがとう御座いました。
884デフォルトの名無しさん:04/09/16 21:08:27
179 名前: VB.NET始めて2日目 投稿日: 04/09/16 17:47:47
研修の身分でVB.NETの課題を昨日から始めた初心者ですが、
早速テンパってしまったのでお聞きしたいです。

課題内容:エンターキーが押された際に順番通りにフォーカスを移動させる
フォーム内容:TextBoxが6個並んでいる

以上の内容となるのですが、どの様にすれば課題内容を網羅出来るものが出来るのでしょうか
出来れば、極力簡単な言葉でお教え頂けないでしょうか

180 名前: VB.NET始めて2日目 投稿日: 04/09/16 19:16:11
自己解決しました。
お騒がせ致しました。
885デフォルトの名無しさん:04/09/16 21:27:23
.NETでも所詮はブビ廚
886デフォルトの名無しさん:04/09/17 11:04:50
VS2005Beta1を検証PCにインストールしたけどめちゃ重くて使えません。
CPUは2ギガです。とりあえず環境はMDIにしてプロパティのドッキング解除して・・・重っ!!
ほんとにみんなこんな開発環境で仕事してるんでしょうか?

WindowsXPでLUNAをやめてクラシックデザインにした時の様に
VS.NET自体の動作を軽くする環境設定ってありますか?
どなたかご存知でしたらレスをお願いします。

VS2005Standardって早く試してみたい・・・
887デフォルトの名無しさん:04/09/17 14:57:06
PublicSub frmPrint(略)
TextBox1.text=Module.AAA
TextBox2.text=Module.BBB
TextBox3.text=Module.CCC
End sub

で呼び出す変数をまとめてモジュールを↓のようなModule.vbにしまってあるのですが、

Module DataModule
Public AAA As Integer
Public BBB As String
Public CCC As Decimal
End Module

これを、のAAA,BBB,CCCの内容を利用した後、ボタンを押す事で AAA = 0 BBB = ""
CCC = 0にしたいのですが、ボタンを押したときに全部の変数の初期値を書き込んでやると
方法しかないのでしょうか?

Module自体を初期化という命令を探しているのですが、なかなか見つからずに困っていま
す。
888デフォルトの名無しさん:04/09/17 15:22:35
>Module自体を初期化という命令
そんなもんはねえ。
初期化用のメソッドを自分で作る。
※せめて使う側からそれぞれを初期化するのはやめれ

まあそれ以前にこんなグローバル変数の使い方はどうかと思うが。
せめてクラスにしてインスタンスをグローバルで持たせるか…
それならインスタンス作り直して変数を上書きすれば初期化もできるし。
889887:04/09/17 15:44:22
>>888
ありがとうございます。なにせ初めてプログラムを組んでいるので、かなり手探りで
作っています。Moduleに変数を入れるのをグローバル変数と呼び、あんまり推奨
されないというのも、いまGoogleで知りました。

大昔の行数ラベルの付いたHu−BASICしか触った事がないので、判らないことだ
らけで難渋しております。

890デフォルトの名無しさん:04/09/17 18:25:35
はどそんべーしっく
891デフォルトの名無しさん:04/09/17 23:34:06
ワロタw
892デフォルトの名無しさん:04/09/18 00:30:25
.NETで開発している人に質問なんですが、
InputManってよく使いますか?
もしくは他の入力制御系のコントロール使ったりします?
893デフォルトの名無しさん:04/09/18 11:43:03
Inheritsってなんて読むんですか?
894デフォルトの名無しさん:04/09/18 12:22:11
.netのグラフィックではXOR描画がサポートされていないようだけど、
マウスドラッグで線を引く時に、一時的な線をマウスの動きに合わせて
表示消去を繰り返すような処理をどうすればできる?
ビットマップの切り替えとかで出来るのかなぁ。
895デフォルトの名無しさん:04/09/18 12:44:14
愚レイプ指定は駄目駄目。
896デフォルトの名無しさん:04/09/18 14:34:42
頭虫邸みたいだな
897デフォルトの名無しさん:04/09/18 17:55:40
今日、VB.NETを購入してインストールしたんですけど
起動してみたところ、悪質なスクリプトを検出したと、ノートンが働いてしまいます
devenv.exeというプログラムなんですけど、許可してもいいんでしょうか?
898デフォルトの名無しさん:04/09/18 18:16:36
学生じゃないけどアマゾンでアカデミックパック購入しようかな、と思ってます。
(店頭だと学生証表示しる、とか言われそうなので)

インストールとか登録時に変な確認ないよね・・??誰か教えて。
899デフォルトの名無しさん:04/09/18 19:54:57
>>898
少し前までそういうスレがあったんだけどね。ソフト板に。
900デフォルトの名無しさん:04/09/18 20:16:52
>>899
ありがとう。発見しますた。
901デフォルトの名無しさん:04/09/18 20:23:39
Visual Stdio買わずにOutlookのCOMアドインを作りたいんだが、
.NET Framework SDKだけで作れますか?
902デフォルトの名無しさん:04/09/18 20:56:04
コマンドラインでコンパイルすればOK
フリーの.NETツールもある
903デフォルトの名無しさん:04/09/18 21:33:16
>>892
TextBox継承して作れば、必要なし。
つか、よくあんなもの金出して買うな。
904デフォルトの名無しさん:04/09/18 22:24:12
>>902
ありがとうございます。

いろいろいじってみたんだが、必要なコマンドラインオプションがわかりません。
雛形とかを教えてもらえるとありがたいのですが。
-----
Option Explicit

Implements IDTExtensibility2
-----
C:\>vbc /t:library /r:addindesignerobjects.dll hoge.vb
では名前空間のステートメントが無効です、と言われるんですが。
905デフォルトの名無しさん:04/09/18 22:29:15
>>904
http://sharpdevelop-jp.sourceforge.jp/index?FrontPage
これフリーで使える開発ツールだからこれ使ってみては?
906デフォルトの名無しさん:04/09/18 23:50:28
>>905
なんとなくわかってきた。ありがとうございます。
動かないけどコンパイルは通るようになったみたい。
もうちっと探ってみまず。
907デフォルトの名無しさん:04/09/19 00:39:38
コンパイルが通るけど動かないとは、これ如何に?
908デフォルトの名無しさん:04/09/19 01:59:21
>>907
動くけどコンパイラが通らない

 っていうのよりはマシだと思う
909デフォルトの名無しさん:04/09/19 02:07:30
>>908
あ り え な い
910デフォルトの名無しさん:04/09/19 02:16:45
>>907
レジストリの登録が必要だったりするらしいので。

つうか、
Implements IDTExtensibility2
って書いたらコンパイルできなくなった。
BC30149: 'Class1' は、インターフェイス 'Extensibility.IDTExtensibility2' に対して 'Overridable Sub OnAddInsUpdate(ByRef custom As System.Array)' を実装しなければなりません。
どこのサンプルコードみてもOverridableなんて書いてないのに。。。


ろくにVBを知らないのにアドインつくろうなんて無謀なんだろうけど、
まだまだ先は長いな。
911デフォルトの名無しさん:04/09/19 12:25:18
はじめまして。
VB.net (2002) でコンソールアプリを組んでいるのですが、
Ctrl+C のトラップ方法がわかりません。
コンソールプログラム実行中に Ctrl+C を押すと
Try Catch Finally で囲んでいても終了コードを実行
する間もなく強制終了してしまいます。
どなたかトラップの方法をご存知でしたら教えて
いただけないでしょうか。
宜しくお願いします。
912デフォルトの名無しさん:04/09/19 13:50:09
>>909
いやいや、「ありえない」にもかかわらず「そうなった」と言うのだから
ひどい、「それよりはましだ」と言いたいのであろう。
913デフォルトの名無しさん:04/09/19 19:58:42
質問です。
VB.NETからWindows SharePoint Services のリストの機能を使って、
リストの内容を取得しようとしているのですが、サンプル通りに記述しても動きません。
HTTP401エラーが発生しているようです。
IISの認証はクリア出来てそうなのですが、
(イベントログのセキュリティはログインしたことになっているようです)
IIS⇒ASP.NETの認証でエラーになっているのではないかと思います。

環境は以下です。
SharePointが乗っているサーバー
OS Windows 2003
IIS/ASP.NET

開発しているPC
OS Windows 2000

リモートからの取得自体が無理なんでしょうか。
それとも、どこかの設定で認証をクリアー出来るのか、ご教授下さい。

よろしくお願いします。
914デフォルトの名無しさん:04/09/19 22:22:23
先生、質問です。

VB.NETから、VBScriptとかJScriptとか何でもいいんで、スクリプトって使えますか?
例えば、
Private Sub Hoge() As Long
 Hoge = 1
End Sub
って、テキストファイルに書いたのを、プログラム実行中に読み込んで、
実行することは可能ですか?
915デフォルトの名無しさん:04/09/19 22:23:30
質問ばっか
916デフォルトの名無しさん:04/09/19 22:59:35
>>915
質問スレだからな
917デフォルトの名無しさん:04/09/19 23:00:39
>>914
VB.NET とは関係ないし、
簡単には無理
918デフォルトの名無しさん:04/09/19 23:04:59
署名付きクラスライブラリ(VBで作成)を、任意の(C:\common_dll\下)に
配置しようと思っています。
web等を参考にしながら以下の方法で試して見たのですが、上手くいきません。
対応策を教えていただけないでしょうか?

1.keypairの作成
 dos>sn -k key.snk
2.クラスライブラリのAssemblyInfoに追加
assembly: System.Reflection.AssemblyKeyFile("./key.snk")
assembly: System.Reflection.AssemblyVersion("1.0.0.0")
assembly: System.Reflection.AssemblyCulture("neutral")

#ここまでで署名付きのクラスライブラリの作成には成功しています。
#GACへ登録しての起動も確認できました。

919つづきです:04/09/19 23:05:44
3.キートークンの抽出
dos>sn -t key.snk
4.AP.exe.configの作成し、AP.exeとおなじフォルダに配置

<?xml〜>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="testdll"
publicKeyToken="32ab4ba45e0a69a1"←3.で抽出したトークン
culture="neutral" />
<codeBase version="1.0.0.0"
href="C:\common_dll\testdll.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

どなたかお願いします。
920デフォルトの名無しさん:04/09/19 23:13:58
hrefだからfile://とかのurlにしないといけないとかって落ちはない?
921918:04/09/19 23:18:01
ありがとうございます。
一応file://〜も確認してみたのですが駄目でした。
相対パスでもです。
922デフォルトの名無しさん:04/09/19 23:42:07
サブクラス化について
SetWindowLongで
GWL_WNDPROC ウィンドウプロシージャのアドレスを書き換えます。
Windows NT/2000:この属性は、ウィンドウが関数を呼び出したスレッドと同じプロセスに属していないと変更できません。

とSDKに書いてあるんだけど、WndProcの書き換えはc++じゃないと出来ないのかな?
VB.NETでは他の方法でも無理でしょうか??
923デフォルトの名無しさん:04/09/20 00:05:12
>>922
君みたいな人不思議でしょうがないんだけど、
なんで人に聞く前にMSDN当たらないわけ?頭不自由なの?寂しがりやなの?
ヤフオクでMSDNなしの「ボリュームライセンス」品を手に入れたの?
それにしたってwebのがあるよねえ。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformscontrolclasswndproctopic.asp
924デフォルトの名無しさん:04/09/20 00:18:08
というかそもそも、
>とSDKに書いてあるんだけど、WndProcの書き換えはc++じゃないと出来ないのかな?
>VB.NETでは他の方法でも無理でしょうか??
という判断を下した理屈が知りたい。
925デフォルトの名無しさん:04/09/20 00:27:47
>>921
どううまくいかないのか詳細を書いてくれないか?
926デフォルトの名無しさん:04/09/20 00:35:13
ありがとうございます。
DLLが見つからないということでexeが起動できません。
927デフォルトの名無しさん:04/09/20 00:37:26
DLLが見つからなくて云々てのは初めから分かっとる。
エラー(例外)メッセージの詳細をかけって言ってるのが分からんかい?
アセンブリをロードするときのログが例外のメッセージに含まれてないか?
928デフォルトの名無しさん:04/09/20 00:43:45
今その環境がなくて詳しいことはかけません。
ただconfigファイルを使わずにGACに登録していれば正常に起動はできていましたので、
configファイルの記述ミスではないだろうかと思っています。
929デフォルトの名無しさん:04/09/20 00:50:17
アセンブリをロードしようとしてるときのログを見れば、
どんなパスからロードしようとして失敗したかがわかるはず。
確かロード関連で例外が出たときにはメッセージに含まれてたと思うが、
もし出てない場合はfusionlogってな名前のログを見ればいいんだったかな、たしか。
930デフォルトの名無しさん:04/09/20 01:05:43
おおー参考になります
まずはどのパスを確認しにいってるのか、そのログで確認してみます。
931デフォルトの名無しさん:04/09/20 01:33:02
>>923
スンマソ
一番大事な事書き忘れてました
”別スレット”゙のWndProc書き換えです

グローバルフックはVB.NETでは出来ないみたいですね

932デフォルトの名無しさん:04/09/20 03:24:47
出来るから
933デフォルトの名無しさん:04/09/20 09:24:13
ヘルプには出来ないって書いてるしなぁ
うーん
934デフォルトの名無しさん:04/09/20 11:16:26
ていうか
>”別スレット”゙のWndProc書き換えです

コレ、何言いたいのかサッパリわかんないんだが俺だけか?
935デフォルトの名無しさん:04/09/20 12:56:54
>>934
自前のアプリから、メモ帳とかに入力されたキーボード入力やマウスの動きを横取りしたいって事デス
936デフォルトの名無しさん:04/09/20 13:00:04
スレッドとプロセスの区別がついとらん。
937デフォルトの名無しさん:04/09/20 14:27:24
だめか。
938デフォルトの名無しさん:04/09/20 15:14:43
>>935
helpにも書いてある通り.NETでは無理。VC++でDLL作成するなら可能

ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm
939913:04/09/20 17:00:22
何でもいい、憶測でもいいから。
誰か答えてください。
940デフォルトの名無しさん:04/09/20 19:01:48
よし、俺が答えてやろう

 まずは、色々と勉強してこい
 話はそれからだ
941デフォルトの名無しさん:04/09/20 19:34:50
ListViewコントロールってユーザが編集できるのはTextだけ?
SubItemsの中身も編集できるようにしたいんだけど、無理ぽ?
942901:04/09/21 13:47:08
901です。教えてください。

MSDN Onlineのサンプルとか見ながらExtensibility2インターフェースの
OnAddInsUpdate、OnStartupComplete、OnBeginShutdown、OnConnection、OnDisconnection
の各メソッドを実装して、できたdllをCOM登録するところまではやったんだけど、
いざOutlookでCOMアドインを追加しようとすると
hogehoge.dllは有効なOfficeアドインではありません。
ってエラーになるんだけど、なんでかな。

ほかに何が必要ですか?
943デフォルトの名無しさん:04/09/21 21:33:53
委託先企業・・・どこだろ
944デフォルトの名無しさん:04/09/21 21:35:11
はげしく誤爆。スマソ
945デフォルトの名無しさん:04/09/22 00:11:22
たとえばwavファイルをバイナリで開いて編集するのって、
いったいどうやるんですか??><
946デフォルトの名無しさん:04/09/22 01:42:45
>>945
jpgをバイナリで開いて編集するよりむずかしい。
947デフォルトの名無しさん:04/09/22 02:09:57
>>946
たとえが悪かったみたいです^^;
軽いファイルを、16進数でダンプ表示させたいんですけど、調べても調べても・・・
助言くださるととてもありがたいです><
948デフォルトの名無しさん:04/09/22 10:51:27
>>947
簡単に見つかるはず。もっと探せ。
949デフォルトの名無しさん:04/09/22 10:52:10
>>947
0から15を16進表示、というのは出来るのか?
950899:04/09/22 12:35:14
>>947
>調べても調べても・・・
絶対ウソだと思うこれ。そうでなければよほど…(自主規制

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconstandardnumericformatstrings.asp
951デフォルトの名無しさん:04/09/22 14:17:19
952デフォルトの名無しさん:04/09/23 00:59:14
textboxの入力チェックにvalidatingイベントを使用しています
tabやボタンのクリック時にはちゃんとチェックできるのですが

formのkeypreview=trueでformのkeydownイベントで
If e.KeyCode = Keys.F1 Then
MessageBox.Show("f1")
End If

とすると、textboxのvalidatingイベントは素通りしてしまってチェックできません
何かいい知恵ないでしょうか?
別にチェックするルーチン作ってやるしかないのでしょうか?
953デフォルトの名無しさん:04/09/23 01:40:54
素通りってあんたどのタイミングでチェックされるかわかっていってるか?
954デフォルトの名無しさん:04/09/23 02:06:21
>>953
textboxのleaveイベントの直後にvalidating

素通りするのは仕様だから仕方ないですけど
上のコードのようにformでキー拾って更新ってありがちな処理ですけど
皆さんはどうやってデータチェックしてるのかなと

チェックする関数作ってvalidatingと更新前と呼び出ししたりしてるのかな?
955デフォルトの名無しさん:04/09/24 12:52:45
ちょっと質問

http://www.microsoft.com/japan/msdn/scripting/default.asp
のScriptControlってVB.NETでも使えますか?
VB6.0の頃は使えてたんだけど、VB.NETでどうなのか知りたいです
956デフォルトの名無しさん:04/09/24 23:09:30
NOTIFYICONDATAの構造体にhIconがあるんですが
あれは何で宣言すればいいのでしょうか?
As Iconで宣言すると
型 NOTIFYICONDATA のフィールド hIcon を集成できません : このフィールドの型の定義にレイアウト情報がありません。
というエラーが出るし、Icon以外で宣言しようとすると型が違うって
言われます。

分かる方よろしくお願いいたします。
957デフォルトの名無しさん:04/09/25 00:25:31
>>956
IntPtr。Icon の Handle プロパティにある奴ね。
958デフォルトの名無しさん:04/09/25 04:22:57
>>957

どうにかコンパイルは通りましたが、
実行中にエラーが出てしまいます。

Dim udtNotifyIconData As New NOTIFYICONDATA
Dim lngResult As Long

With udtNotifyIconData
.cbSize = Len(udtNotifyIconData)
.hwnd = Me.Handle
.uID = 0
.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon.Handle
.szTip = "Title" & vbNullChar
Me.Visible = False
End With
lngResult = Shell_NotifyIcon(NIM_ADD, udtNotifyIconData)

こういった感じでタスクトレイに表示させる命令を書いているんですけど、
hIconの命令がうまくいきません。

書き方が間違っていると思うんですけどもうお手上げ状態です。

よろしければご教授よろしくお願いいたします。

では、
959デフォルトの名無しさん:04/09/25 11:56:33
タスクトレイのアイコンならNotfiyIconコントロールを使えば簡単に表示できるのに・・・
960デフォルトの名無しさん:04/09/25 15:09:33
958です。

>>959
うお、.Netってこんな便利なコントロールがあったんですか!
thxです。早速使ってみます。
961デフォルトの名無しさん:04/09/25 20:59:34
.NETcompactFrameworkでシステムフォルダを取得するには?
System.EnvironmentもSystem.Windows.Forms.Applicationも役にたたんかった・・orz
962デフォルトの名無しさん:04/09/25 22:26:42
part3-5の過去ログ持ってる方いたらどっかupしていただけないでしょうか?
963デフォルトの名無しさん:04/09/25 23:51:40
VBでサービスが作れると聞き、早速、本を買い込んで試してみました。
本によれば、「Windowsサービス」プロジェクトを選択するはずなのですが、
うちにあるVisual Studio .NET2003では作れません。
なぜ?VBだけのを買ったから?
それとも、なにか別途インストールが必要なのか?
どなたかご教授下さい。
よろしくお願いします。

964最凶VB厨房:04/09/26 00:02:27
おそらくVBだけのを買ったからだろう。
が、まぁここでも
http://ja.gotdotnet.com/quickstart/howto/doc/SimpleService.aspx
965デフォルトの名無しさん:04/09/26 18:30:05
Treeviewコントロールのノード部分にマウスカーソルをホバー
させたときに、マウスカーソルを手の形に変えたいと考えて
います。しかし、Treeviewコントロールの上にホバーしたとき、
というのはできるんですが、ノード部分のみ、という処理の
仕方が分かりません。ご教授のほど、よろしくお願いします。
966デフォルトの名無しさん:04/09/26 21:41:12
odbcデータアダプタの新しい接続でoracleを選ぶとこのバージョンではアクセスと
SQLサーバが選べますみたいなメッセージ出るのだけど、これはVB.netスタンダード版
だからでしょうか(結局オラクルは選べないってことですか?)
オラクルは8iです
967デフォルトの名無しさん:04/09/28 03:24:01
Visual Basic を手に入れたんですが、どうやったらゲームを作れるのでしょうか?
初心者というか何も知らない状態です。
いろんなスレやサイトを見たのですがさっぱりわかりません。

本などを見てみたのですがライブラリというのがなければつくれないんですか?
また、ライブラリを手に入れる方法、使い方を教えてください。

968デフォルトの名無しさん:04/09/28 03:42:26
くぎと金槌を手に入れたんですが、どうやったら家が建てられるでしょうか
初心者(ry
969デフォルトの名無しさん:04/09/28 09:53:16
ファイル読み込みのときに指定したレコードのデータを読みたいのですが
どうやって指定すればよいのでしょうか。
それとも、順番に読み込んでいく方法でしかできないのでしょうか?
970デフォルトの名無しさん:04/09/28 13:06:52
どうしてもプリンタの用紙サイズとそのIDが必要なので、
(標準のサイズではcustomになるため不可)

<DllImport("winspool.drv", EntryPoint:="DeviceCapabilitiesA", _
CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function DeviceCapabilities(ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Integer, ByVal lpOutput As Integer, ByVal lpDevMode As Integer) As Integer
End Function
Private Const DC_PAPERS As Integer = 2
Private Function GetPaperInfo() as Integer
Dim ptr As New IntPtr()
Dim rc as Integer
rc = DeviceCapabilities(vstrDevName, vstrPortName, DC_PAPERS, ptr, 0)

とまではいくのですが、ここからコピーできません(涙)
WORDの配列が帰ってくるはずで、戻り値も悪くないのですが・・・
971デフォルトの名無しさん:04/09/28 18:22:39
すみませんが、VB.NETで使用するSpreadに関する質問はここでよろしいでしょうか。
972971:04/09/29 10:56:36
駄目なようですね、すみませんでした。
973デフォルトの名無しさん:04/09/29 11:26:37
ずいぶんと我慢の出来ない奴だな
974971:04/09/29 11:50:36
>>973
人が多そうな夜を挟んでも返答がなかったので、てっきり駄目かと……
975デフォルトの名無しさん
>>974
ム板は平日昼間のほうが多い。