>前スレの999と1000(
http://pc8.2ch.net/test/read.cgi/tech/1138670182/999-1000 >周波数成分に分解して各周波数成分ごとにレベルの和を取り、また合成しなおすんだよ
わかってないね。そんなことはする必要はない。
じゃあ聞くが、アナログのミキサーがそんなことしてるかい?
そんなことしたら位相が回っちゃうじゃないか。
まあ多分ちょうど位相が180度ずれた波形を足したら音量0になってしまうじゃないか、
とか思ってるんだろうけどそれでいいんだよ。
こんなの電気系の大学出てなくても、高校物理の「重ね合わせの原理」で
理解できるでしょ。
単純に足し算するだけでいいんだよ。
あと足して2で割るって言った人。 電圧次元で2で割ったらエネルギーレベルでは1/4に低下することになるわけだが、 そんなことに意味があるのかい? エネルギーレベルで1/2にする、ってのはなら意味はないとまではいえないかもしれないけど。 この場合は電圧次元で1/√2にしなきゃだめでしょ。 P = E^2/Rなんだから。
P=E^2/R の式でPは仕事、Rは抵抗、Eは電圧でいいの?
スレ違いだが仕事率、ね。 つーか知ってるくせにとぼけちゃってw
あっ単位時間当たりが抜けてたか。
知ってるくせにって俺に対してのことか?
とぼけてねー!w しらねーよw
いやまじであまり知らんのだが、
Waveファイルとかの音声データって振幅のことなんよね?
>>6-7 の言ってることは正しいような気がするが・・・
>>1000 の言ってることが間違っているとも思えない・・・。
さてさてどうなんでしょ?生暖かく見守ります。
普通基本はまず足すだけだろ… レベル調整はまた別の話。
VB2005Expressで、 文字列をURLエンコードしたくて、 System.Web.HttpUtilityクラス使おうとしたんだけど、 コードエディタでSystem.Web.まで入力しても、 インテリセンスの提示する候補の中に HttpUtilityがない、どころか、 AspNetHostingPermission AspNetHostingPermissionAttribute AspNetHostingPermissionLevel の三つしか存在しない どうすればいいの?
必要なDLLを参照に追加すれ 何が必要なのかオウム返しする前にMSDN調べろよ?
投稿した直後に気付きました。 プロジェクト→参照の追加から追加しました。 ありがとうございました。
15 :
デフォルトの名無しさん :2006/03/31(金) 07:36:20
2005ってデザイン時のフォームにグリッド表示 できないのでしょうかね?
16 :
デフォルトの名無しさん :2006/03/31(金) 09:24:09
>>15 できる。
オプションを全て開いてきちんと見る。
17 :
デフォルトの名無しさん :2006/03/31(金) 12:26:16
誰か解決方法知っている人いましたら、教えてください。 Ctrl + shift + F で出てくる『ファイル内の検索』ウインドウの 検索対象の入力欄には、通常、 すべての開かれているドキュメント ソリューション全体 現在のプロジェクト など候補がありますが、先日、間違えて、その入力欄に検索したい文字列そのものを 書き込んで検索ボタンを押してしまったら、 その後、その検索対象の入力欄に、私が間違えて入力した文字列が、候補として追加されて しまったようで、いつも出てきます。 これを消す方法を知りたいのですが。 よろしく
18 :
デフォルトの名無しさん :2006/03/31(金) 13:13:28
よっぽど恥ずかしいことを書いたのか・・・。w 仕事場で人格否定されるようなことを他のWindowのTextに書いたつもりで、VSの検索窓に。w
>>17 2005ならHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Find
のQueryなんちゃらを消せばOK
20 :
デフォルトの名無しさん :2006/03/31(金) 14:42:09
>19 ありがとうございました。 2週間くらい未解決だったのが、おかげさまで一発で解決しました。 これで、プログラム開発に専念できます。
21 :
デフォルトの名無しさん :2006/04/02(日) 00:19:39
2005で質問です メニューの項目にDELキーのショートカットを付け、 ListViewにラベルの編集を許可した場合、 ラベルの編集中にDELキーを押すと、 ラベルの文字を消さずにメニューのイベントが発生するんですが、 これってこういうモノなんですか?
22 :
21 :2006/04/02(日) 00:22:38
書き忘れましたが、メニューは、MenuStripです
そういうもんだな
24 :
21 :2006/04/02(日) 00:31:37
VB6のソフトを移植してるんですが、VB6ではそんなこと起こらないです。。。
WebBrowserコントロールで任意の文字列(テキストリンク等)を クリックさせるにはどうしたら良いでしょうか? getElementsByTagName("A").Item(0).Click() ではなく直接リンク文字列をクリックさせたいのですが vbのヴァージョンはvb2005です
意味が分からん。文字列のクリック? A 要素のクリックと何が違うんだ?
ええと WebBrowserコントロールに表示されたページ内で 任意の文字列を検索してクリックさせたいんです
文字列をクリックする、でどんな結果を期待してるんだ? 複数の要素にまたがってたらどうするんだ?
29 :
デフォルトの名無しさん :2006/04/02(日) 14:40:54
質問です。 データベースを使ったのプログラムを作ってるんですが(今回はAccess)、 ループをしているときにレコードが無くなったらループを抜ける方法がわかりません。 見苦しいコードですが、ご教授お願いします。(改行が多いと書き込めないので詰めてあります・・・) Dim oleCn As New OleDb.OleDbConnection Dim oleCmd As OleDb.OleDbCommand Dim oleReader As OleDb.OleDbDataReader Dim str1 As String '** 接続文字列を生成 oleCn.ConnectionString = _ "provider = Microsoft.Jet.OLEDB.4.0;" & _ "Data Source = Access.mdb;" & _ "Persist Security Info = false " '** 接続 oleCn.Open() '** SQLコマンド oleCmd = New OleDb.OleDbCommand("SELECT aaa , iii , From uuu ", oleCn) oleReader = oleCmd.ExecuteReader() '** ↓レコードが無くなったらループを抜ける条件が知りたい Do Until [条件] [処理] str1 = oleReader("aaa") '** str1とoleReader("aaa")が違ったら抜ける Do Until oleReader("aaa") <> str1 [処理] '** 次のレコードに移動 oleReader.Read() Loop [処理] Loop
OleDbDataReader のドキュメントにサンプルがある
31 :
デフォルトの名無しさん :2006/04/02(日) 15:35:38
>>30 早速調べて試します。
ありがとうございます。
こちらが本スレのようなのでもう1度質問させてもらいます。 DataGridでデータ入力をしています。 エラーのチェックをRowChangingイベントで行っていますが メッセージボックスを出そうとすると、「インデックスnに値がありません」 (nは不特定)というメッセージが出て、DataGridにでかい×印がつきます。 みなさんのところもそうですか?
新規行作成したときに発生した RowChanging 中に再描画が実行されると駄目。
waveファイルのミキシングについて質問した者です。 その後も色々と調べていたんですが、結果的には >6さんの考え方で ミキシング出来ました。 レス頂いた方々ありがとうございました。
XMLのシリアライズってインタフェースはできないですよね。 諦めてDMOを使ったほうがいいのでしょうか。
というかインターフェイスを永続化って発想が狂ってないか?
いや、継承したクラスですが。 メンバにあるインタフェースを持つようなクラスをシリアライズって変ですか? インタフェースとの間にMustInheritでクラスかませばできるようですが、 それも何か変な気がする。。。
それともインタフェースで振る舞いを持つようなものをシリアライズってのが間違い? XMLの設定ファイルに動作方法を定義して、 起動時に読み込んで初期化という物なのですが。 DMO > DOMでした
すいません、
>>29 さんのついでで教えてください。
レコードが無い場合は[処理]をするといった事をしたいのですが
レコードがない場合の条件式を教えてください。
----------------------------------
VB6では If rs.EOF then
[処理]
end if
----------------------------------
を.NETではどう記述すればよいのですか?
>>38 インターフェイスはあくまでインターフェイスで実体は分からないという前提な訳だから、
それとシリアライズとはかみ合わないと言うか。
インターフェイスをメンバに持つようなオブジェクトは抽象化されてて形にできない、と言うのかな。
XmlIgnore属性で無視するか、
IXmlSerializable を実装するか……こいつは大変だが。
>>39 どうやってそのレコードとやらを取得したんだ?
41 :
39 :2006/04/02(日) 20:18:55
>>40 さん
>>29 さんと同じです。
↓は
>>29 さんのコピーです。
Dim oleCn As New OleDb.OleDbConnection
Dim oleCmd As OleDb.OleDbCommand
Dim oleReader As OleDb.OleDbDataReader
Dim str1 As String
'** 接続文字列を生成
oleCn.ConnectionString = _
"provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = Access.mdb;" & _
"Persist Security Info = false "
'** 接続
oleCn.Open()
'** SQLコマンド
oleCmd = New OleDb.OleDbCommand("SELECT aaa , iii , From uuu ", oleCn)
oleReader = oleCmd.ExecuteReader()
よろしくお願いします。
HasRows か。.NET 1.0なら一番初めのReadみりゃいいだろ。
43 :
デフォルトの名無しさん :2006/04/03(月) 10:36:50
>>7 8ビットのWavファイルをミキシングするのには、基本的に単純な
足し算だけでは出来ない。
なぜなら演算がオーバーフローして波形がクリップしてしまうから。
これを避けるには、16ビットで計算して結果を2で割るか、初めから
2で割ったものを重ねあわせるかだ。
各原音は1/2になってしまうが、それはボリュームで考えることだ。
従って、ミキシングには必ずフェーダーというかボリュームの調整が
必要で、単なる重ね合わせでは上手くいかないのだよ。
ただ手を抜くなら、波形がクリップしてすざましい音になる前に、
8ビットなら拡張して16ビット演算をした後2で割っておけと言ってるの。
すざましい
デフォで2で割るなんて普通はやらない。
>>43 なんか頭悪いな。。
出力が飽和しないように入力各ソースのレベルを調整するのは
普通人間サマが自由に決めることであってソフトが勝手に一律で1/2にするような
類のものではない。
それとも何か、君の行きつけのカラオケ屋じゃマイクのスイッチ入れると
オケが電圧次元で1/2(音量次元で1/4)になるのかい?w
>>33 亀レスになりましたが、情報ありがとうございます。
RowStateがDetachedの行はRowChangingで再描画できないんですね。
ところでこれって仕様なんでしょうか?
ドキュメントには書いてないな。 まあサンプルコードとか読む限り、エラーの通知には DataRow.RowError を使えって言うことのようだが。 確かにデータ層が直接ユーザに通知するのは構造的におかしい。
49 :
デフォルトの名無しさん :2006/04/04(火) 08:24:16
>>46 素人とこれ以上議論しても仕方が無いが、君は質問の内容を理解してるのかい。
2つのWavファイルをMixするにはどうしたら良いのかと言う質問なんだよ。
単に2つのWavファイルを足し合わせたら、波形のピークが重なるところは
演算がオーバーフローして、完全にクリップしてしまうではないか。
ヘッドルームを十分に取ったアナログのカラオケの機械とは根本的に違うのだよ。
そもそもカラオケの機械はAGC(AUTO GAIN CONTROL)と言う入力がオーバーに
ならない為のハードが付いているのだが。
通常のミキサーは入力毎にフェーダーというゲインコントロールがついていて、
Mixしたときの音量の調節と、音源ごとのゲイン配分を決めるのだけれど、
今回のようにゲイン調整の出来ない素材の場合はMix時に波形がクリップ
しないように加工しておくか、Mixの演算時にオーバーフローしない対策が
必要では無いかい。
そもそも8ビットの場合、10進法で0〜255の値を取るのだけれど、8ビットの
任意の数字を足し合わせると、最大値は255 x 2の値を取るでしょ、従って任意の
波形を足し合わせた物が8ビットでオーバーフローしない為には、あらかじめ
2つのデーターを2で割っておくか、足されたものを2で割というのが、波形の
原型を維持するための、最良の方法であることは容易に想像がつくではないか。
それと君は電圧、パワー、音量の関係を完全に誤解している。
音量は通常デシベル(dB)という単位を使うのだけれど、これはlog(P2/P1)
という事で、人間の音量に対する感覚は、音のパワーが10倍になった時に
2倍の音の大きさになったと感じるのだよ。
しかしそれは実際の電気回路とは関係はなく、音のMixはもちろんのこと、音を
コントロールする電子・電気回路は全てが電圧でコントロールされていて、
Wavのデーターの元のA/Dコンバーターも、電圧をサンプリングしたものなんだな。
最後に君の2で割ると音量が小さくなってしまうのではないかと心配に関しては
ノーマライズと言う方法でデジタル信号の音量の最適化をするのが普通なんだが。
自分が凄い・正しいって思ってるよ・・・。
いい加減スレ違いということに気付け
実に すざましい
デフォで2で割っといてから後でノーマライズってアフォですか?
見ていたところオーバーフローが分かってないやつなどいない そんなことは分かってる上でとにかく2で割るってところに突っ込んでる。
>>49 あのさあ、高校レベルの数学ぐらいちゃんと習得しとけよ。
常用対数だろうが自然対数だろうがlog(x*10)は2*log(x)じゃないよ
2*log(x) = log(x^2)、なw
なんか自分の頭の悪さを棚に上げて恥ずかしいやっちゃなあ。。
それと、よく人間の感覚は対数カーブだといったり、電気の世界では
エネルギー(の時間微分)の値をdBで表現したりするが、それはあくまで
表現の便宜上そうしているだけであってdB値で二倍になったからって
リアルで人が2倍の強度を体感するわけじゃないよ。
だいいち人間の感覚なんて簡単に数値化できんでしょ。
まあ、すれ違いを気付かずに続けるのはどっちも屑だな。
VB2005です。初心者で恐縮ですが知恵をお貸し下さい。 フォームが2つあり、Form1にデータベースのデータを (DataGridではなく)Labelなどのコントロールを使って表示しているのですが、 データの編集、削除は、Form1で現在表示されている行をForm2に表示して行いたいです。 指定した行の値をデータベースから直接取得する方法はわかったのですが、 Form1で選択した行の値をForm2に表示する方法がわかりません。 Form1に表示されている値からデータベースの位置を取得→ データベースから値を取得してForm2に表示 というスマートではない方法しか思いつきません・・・。 素人質問かと思いますが、よろしくお願いします。
>>56 自己主張が激しい奴らがぶつかると周りは迷惑するのな
本人たちは俺の方が賢いぞって悦に入ってるんだろうけど、
ダラダラ長い文章読んでるのは自分たちだけなのに気付いてない
>>57 Form2側にプロパティを設定、その中でForm2の各TextBoxなどの値設定、取得を。
もっと簡単にやるなら、Form2に配置した各コントロールをPublicスコープにしてしまう。
または、Form1側での選択値を構造体なりにして、Form2に受け渡す。
Formといっても単なるクラスですよ。
DataGridの中の1行を選択したときに その行の値を取得したいのですが、どうすればよろしいですか? たとえば --------------------------------- | | 列名1 | 列名2 | 列名3 | 列名4 | | | aaaaa | iiiiii | uuuuu | eee | | | ooooo | kakak | kiki | kuk | --------------------------------- aaaaの行の "aaaa iiii uuuu eee" を取得したい よろしくおねがいします。
62 :
60 :2006/04/04(火) 18:48:19
>>61 ありがとうございます。
でも、うまくできません・・・
行数の取得じゃなくて、選択した行に入っているデータを取得したいんですけど
>>60 以外には何をすればいいですか?
リンク先は行数じゃなくて行を取得する方法だし行を取得すれば各列のデータも取得できるだろ で、まずそもそも ASP.NET なのか WinForms なのか、データソースに何つかってるのか。 うまくできないって何がどう巧くいかないのか。 ちゃんと説明せんと答えるのは難しい
>>58 そういうい自分のレスが自己主張してないと思ってるんだから
君という人間はオメデタイことですなw
っていうか、スレ違いじゃないと思いますけど。
アルゴリズムの内容について討議してるんだから。
別に何十レスのオーダーでスレ消費してるわけでもなく、客観的にいって
「迷惑」の範疇に入らんと思うが。
まあもちろん、『俺様がウザいと思えばそれが迷惑行為だ』という
幼児性が抜けない自己中心的な人間にとってはこの限りではないだろうけどねw
全くもってすざましい
>>64 ここでやるならVB.NETでどう実装するかって話しろやボケ
>>49 に質問。
>人間の音量に対する感覚は、音のパワーが10倍になった時に
>2倍の音の大きさになったと感じるのだよ。
の部分は間違いか?2倍ではなく、ルート10倍=約3.1倍じゃないか?
and この根拠はウェーバーの法則or感覚知覚の法則って奴か?
それともまったく別の何かか?
外野&素人の俺が議論を勝手に整理してみる。
足してオーバーフローするとMax値にする必要があって
これをクリップというらしい。
クリップというのは音が変わってしまうらしい。
これを見た。
http://flawtips.ami.amigasa.jp/blog/050916.html ノーマライズというのはこれを見た。
http://www.digion.com/dspark/effect/html/03norm/nom.htm 相違点は、
特に単に足したらオーバーフローする場合、
単にクリップ(Max値)すればよい派と
というのとノーマライズするんだ派がいるんだな?
クリップの
メリットは元の音の音量は変わらない。
デメリットは音が変わる可能性がある(オーバーフローするとき)
ノーマライズの方の
メリットは波形自体は変わらないので、音色が変わることが無い。
デメリットは元の音の音量は変わる。
両者はこのメリットデメリットについて納得か?
ここは間違ってるぜってのがあれば指摘よろしく。
もうちょっと追加。 クリップのメリットはミキシングしたい部分でだけの処理。 ノーマライズのデメリットはミキシングする部分以外も つまり全部処理しなければならない。 これも間違っていたらよろしく。
クリップ派に質問です。 0〜255(無音128)と0〜255の値を取るものを足せば 0〜510(無音256)の値をとるものができると思うのだが、 足してあと128引いてからクリップするというのはおかしいの?
>>64 お前らのタチの悪さは、
「自分が正しいということを相手が認めるまでやめない」
ってことだよ
それがいかに幼稚でくだらないことかそろそろ気付いたらどうよ?w
いや、単にクリップすればいい派、なんて人はいないと思うよ。 単純に足し算する場合、飽和したらどうしようもないから 飽和したままにしておくわけで。 ノーマライズってのは合成波形のピーク値がある値になるように係数を掛ける、 って意味だと思うけど、それは一つの考え方でこれを否定する人もいないと思う。 まずありえないとしか言いようがないのは勝手に一律1/2にする処理だね。 あと量子化ビットが8bitの場合、Winだと0x80のオフセットがついた 符合なし整数扱いだったはずだから、一旦符合付き整数に変換してから 処理する必要があるね。
おかしいんだ、10このWavファイルをミキシングしたら ほとんど聞こえなくなっっちゃったんだ。
勝手に一律1/2にする処理も一つの考え方じゃないか? 音量が変わるという以外のデメリットはあるのか? おっとそういえば、 周波数に直してから逆変換派もいたっけ?
>単純に足し算する場合、飽和したらどうしようもないから 飽和したままにしておくわけで。 これでいいのかどうかが議論の焦点じゃなかったのか? これでいいってのがクリップ派。 そらあかん!ってのが(手抜き)ノーマライズ派。 補足。手抜きノーマライズ=1/2処理。
どなたか解決方法知っている人いましたら、教えてください。 移動中のウィンドウ矩形のサイズを変更したいのですが、WM_MOVINGを 捕まえてlParamの中身を書き換える以外の方法はないでしょうか? WM_MOVINGを取る方法が使えなくなって困っております。 よろしくお願いします。
8ビットで2で割ったら無条件に精度が半分になるがな。
8ビットで、じゃなくて8ビットだと無条件にやるには 劣化がちょっと大きすぎるって事ね。
もともと音量の小さいソースだと、ただでさえ精度が悪いのに さらに悪化させてしまう、音質への影響が大きすぎる。
Wav厨うぜえ
>>75 なんで使えなくなったんだ?
// 使いにくくはなったが。
81 :
デフォルトの名無しさん :2006/04/04(火) 23:51:10
今日のミキシングスレはここですか?
>厨房
うーんと誰もクリップしちゃうことを積極的に容認した覚えはないと思うよ。
なんかFFT的な操作が必要だ、みたいなわけのわからんこと言う奴がいたから
それに対する反論として単純に足せばいいんだ、といったまで。
もちろんこの言い方は合成結果が量子化ビット数の範囲内で飽和しないような
(前処理された)音源を前提としている。
ただ、合成結果が飽和しないような音源を前提とする場合でも、
プログラム的には「万が一」飽和してしまった場合の処理を考えておく必要はあるでしょ。
いわば例外処理だよ。
飽和しても問題はないんだ、と言っているのではなくて、
飽和しないようなソースを前提としているが、飽和した場合は飽和したままに
しておくしかない、という消極的容認だよ。
すくなくとも1の補数になっちゃうよりは被害が小さいのだから。
一律1/2がありえないのは、別にそれが絶対にダメって意味じゃなくて
そんなことをする積極的意味は何もないからだよ。
もちろん
>>72 的な問題は明確にあるんだけどね。
8bitだったら7回ダビングを重ねると最初の音源は完全に消えちゃうわけだ。
はじめまして、現在VB.NET2003でWindowsアプリケーションを作成しているのですが、 ListViewクラスについて質問があります。 表示方法をDetailにして使用しているのですが文字色について選択されている行の文字が 黒色(選択行のバックカラーが灰色)になるのは仕様なのでしょうか? BackColorやForeColor、Item単位での色設定など全てが反映されていません (選択されていない行では問題なく色が設定されます) どうかご教授お願いいたします
84 :
デフォルトの名無しさん :2006/04/05(水) 07:57:51
>>55 通常スピーカーのインピーダンスは固定と考える。
オームの法則より、
電力は P1 = (I1)^2 x R
P2 = (I2)^1 x R
log(P1/P2) = log(I1^2/I2^2) = 2log(I1/I2)
ここで
I1 = V1/R I2 = V2/R
従って
log(P1/P2) = 2log(V1/V2)
となる。
>エネルギー(の時間微分)の値をdBで表現したりするが、それはあくまで
>表現の便宜上そうしているだけであってdB値で二倍になったからって
>リアルで人が2倍の強度を体感するわけじゃないよ。
宜上ではないグラハム・ベルによって証明されている。
>>56 すれ違いではない、Wavを扱う場合の根本的なアルゴリズムに関して議論してるのだ。
>>58 自己主張では無い、真実を求めようとする、技術者たちの議論である。
>>64 君の考えに100%同意します。
>>66 実装だけがプログラムだと思っている君は一生コーダーだろう。
85 :
デフォルトの名無しさん :2006/04/05(水) 07:59:14
一回で書き込めなかったので続き
>>67 波形がクリップすると、高調波が発生して、原音が破壊される。
特にデジタル音楽の場合は、クリップに注意する必要がある。
一般的に音をデジタル化した場合、最適なサンプリングの状態は
その音楽の音量の最大値がわずかにクリップするところに
設定することであるが、これをリアルタイムに調節することは
難しい。
そこでWavファイルを始めに一なめして、最大値を探し、それを
基準にすべての音の音量を決定する方法がノーマライズである。
>>68 Yes
>>69 スマン、意味がわからない。m(__)m
>>70 おまえのタチの悪さは、真実を追究しないことだ。
>>71 かってに1/2するのではない、クリップを防止するために最小限の
処理をするだけだ。
計算は2のコンプリ(ツーズコンプ)の計算になる。
86 :
デフォルトの名無しさん :2006/04/05(水) 07:59:52
ニ回で書き込めなかったので続き
>>72 何もしないで足していくと、波形は上限に張り付いてしまう。
>>73 ある、小さい音がマスクされて聞こえなくなる。
>>74 飽和は絶対に避けなければならない。
>>75 ウェーブファイルを単純に合成したい場合、それは仕方が無い、
その為に専用のミキサーがある。
>>82 最適化されたWavファイルを単純に足せば必ずクリップする。
7回もダビングするなら専用のミキサーを使いなさい。
単純なWavファイルの合成について議論してるのだから。
端的にうざ。
そんなに議論したきゃ専用スレ立ててやれやクズ
>>83 具体的な色はさておき、選択行の色は基本的に変更不可だね。
それがいやなら、.NET 1.x だとカスタムドローと言うことになるか。
>>84 悪いこと言わないからもう一度高校数学勉強しなおした方がいいよ。
一生懸命当たり前の数式展開してるけど、だから何?
>>49 に、パワーが10倍になると人間は二倍の強度を感じるという旨の記述があるけど
その式からそんなことが言えるわけ?w
何度も言うけどパワーが10倍になってもdB値は2倍になんかならないよ。
10dB増えるだけね。
>>89 ありがとうございました。
1.1を使用しているのでカスタムドローというものを調べて考え直してみます
93 :
デフォルトの名無しさん :2006/04/05(水) 21:01:57
パワー10倍は電圧換算で20dB。 ちなみに600Ωロード、0.775vを0dBmという。
電圧換算って。。。 20dBって値の方が「換算」した値なんだよw 分かって言ってるのかな
>>85 >おまえのタチの悪さは、真実を追究しないことだ。
俺が正しい
いや、俺のほうが正しい
こんなことやりあってて何が真実の追求なんだかw
お前らは永久に自分の間違いを認める日なんて来ないよw
もうほっとけよ。どうせそのうち飽きるから。
97 :
デフォルトの名無しさん :2006/04/06(木) 08:45:47
どうせ暇板なんだから、何か書き込んだ方がおもしろいのとちがう。。
>>97 だったら暇でいいんだよ。
屑の書き込みの中に質問がうもれちゃうし、スレの密度が下がって検索の手間が増えるし。
99 :
デフォルトの名無しさん :2006/04/06(木) 10:30:28
人の書き込みを屑扱いする、おまえの書き込みがいちばん屑。
100 :
デフォルトの名無しさん :2006/04/06(木) 10:59:03
初心者なのですが、Newキーワードがよく分かりません。 StringとかはNewしないでもいいのに、Newしないと使えないクラスがあります。 Newでオブジェクトを作るのではないのでしょうか? だとすれば、StringにもNewキーワードが必要なのではないでしょうか? よく分かりません。 よろしくご教授願います。
102 :
デフォルトの名無しさん :2006/04/06(木) 11:27:43
最初に、スレ違いなら申し訳ありません。 [AAA.hoge.co.jp] というドメインに存在するサーバとクライアント間で クライアントからWMIを使ってadmin権限で動かしているプログラムを、 WMIを使ってクライアントでプロセス監視する処理をしていました。 ところか、クライアントのドメインが [BBB.hoge.co.jp] に変更された結果 WMIでプロセスを監視する処理のところで System.Management.ManagementException「アクセスは拒否されました」 といわれるようになりました。 エラーの内容から、WMIの実行権限が元々のドメインにしかなくて 変更されたドメインでは出来ないんだと思ったのですが、異なるドメイン間で WMIを使ってプロセスを監視する処理は可能なのでしょうか? 方法としてはまずは[BBB.hoge.co.jp]ドメインのものをサーバのアカウントに追加すれば いいのかな?と思ったのですが、アカウントの追加で、「場所の指定」をしても、 新しく増えたドメインは見えるても、「選択するオブジェクト名」のところで adminとかuserって打って名前の確認しても何もでず、追加できませんでした。 また、runasコマンドを使えばアカウントが変更出来るので、これで何とかならないか? とも思ったのですが、そもそも[BBB.hoge.co.jp]ドメインのアカウントが存在しないので これも意味がないような気がして、手詰まりになってしまいmした。 何か良いお知恵を拝借できないでしょうか?
>>100 ,
>>101 俺もVB6から移行したとき、
すべてがオブジェクト型ってことは、
言い換えれば、すべてNewが必要じゃないかって思った
IntegerやLongは値型だからいいとしても、
Stringは参照型なんだから、Newを付けないと理が通らなくない?
Newがあなたの書くコードに直接書かれるかという事と、 実際にNewが使用されてるかという事は別問題です。 例えば、何らかのオブジェクトを返すメソッドを作成して、 そのメソッドはNewでオブジェクトを作成してるとする。 オブジェクトは確かにNewされてるけど、呼び出し側にからは見えない。 これが標準ライブラリ内でやってる事なら、 使う側にはNewしてる事は全く見えないけど、確かにNewは実行されてる。 そういうこどだよ。
=で返ってくるオブジェクトの話じゃなくて宣言のときの話だろ?
リテラルの文字列はパフォーマンスの都合上 New しない。特別扱いする。 と明記されていたんだがさてどこに書いてあったか。 ちなみにコンストラクタ使って New することもできるぞ。文字列を引数に取るコンストラクタはないけど。
プログラミングの便宜のために、"abc" で自動的にstring型のオブジェクトが生成される。 あえてnewを使うとこんな感じ(実際はこうじゃなけど) string s; s = "abc"; s = new string(new char[] {'a', 'b', 'c'}); 最初のstring sをnewしなくていいのは当然でnewされたものの参照を格納できればいいから宣言だけでいい。
>>103 参照とオブジェクトの区別がついてないんでしょ。
Newしなきゃ「使えない」のはオブジェクト(当然だ、そもそも存在しないのだから)
であって参照、つまり変数そのものじゃないよ。
参照型の変数には、型の一致する任意のオブジェクトへの参照を代入できる。
つまり「使える」。
当たり前だけど。
まあVBだとString型のNull参照( = Nothing)を自動的に空の文字列 ( = "")と
等価とみなす親切設計wになっていて、これがかえって誤解を生んでる可能性はあるね。
>>108 Dim s As String
Set s = Nothing
Text1.Text = s
VB6だとこれでエラーになるけどね。
Dim s As String で初期値が "" になるのを勘違いしてない?
全部オブジェクトなんて言いながら、 中途半端なことやってたら、初心者はこんがらがる罠
111 :
デフォルトの名無しさん :2006/04/06(木) 17:21:36
フォームを丸にしたりすることはきないの?
Region
113 :
デフォルトの名無しさん :2006/04/06(木) 17:33:58
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'フォームのサイズを適当に変更 Me.SetBounds(Me.Left, Me.Top, 201, 101, _ BoundsSpecified.Size) '多角形の頂点の位置を設定 Dim points() As Point = _ {New Point(0, 0), _ New Point(100, 100), _ New Point(200, 100), _ New Point(100, 0)} Dim types() As Byte = _ {Drawing.Drawing2D.PathPointType.Line, _ Drawing.Drawing2D.PathPointType.Line, _ Drawing.Drawing2D.PathPointType.Line, _ Drawing.Drawing2D.PathPointType.Line} 'GraphicsPathの作成 Dim path As New Drawing2D.GraphicsPath(points, types) '形を変更 Me.Region = New Region(path) End Sub ヒントにこれを見つけたけどどこを変えたら丸になるの?
>>109 分かってないw
あのねえ、Stringは(いや、参照型の変数はすべてそうだが)
変数を宣言するだけではNull参照なんだよ。
ヌルストリング( = "")ではないの。
だから言ってるでしょ?
VB.NETでは文字変数のNull参照は""と等価とみなすような仕様になってるだけだよ。
もちろん両者は本来、本質的に全然意味が違うんだけどね。
>>114 VB.NETの話をしてたのか、VB6かと思ったよ。かみ合ってなくてごめんね。
116 :
57 :2006/04/06(木) 19:13:17
>>59 遅レスすいません。
おかげさまでできました。
教えて頂いた中のプロパティを設定する方法を使いました。
ありがとうございました!
>>115 VB2005からはVB.NETの名称は使わなくなったので、
ただVBといった場合VB6以前とVB7以降の両方の可能性があるわけだ。
Microsoft(R) Visual Basic Compiler Version 8.0.50727.42
Microsoft(R) Visual Basic .NET Compiler version 7.10.6001.4
>114 おれもVB6のこと言ってんだと思ったよ。 だけどVB.NETてnull参照空文字とみなされたっけ?
>>117 いや俺108だけど、別にMS様の方針に唯々諾々と従わなきゃいかん理由はないでしょ。
>>108 で「VBだと」と書いたのはC#との比較を念頭においたものだったけど、
ちょっと誤解を誘う不適切な表現だったかもしれない。
= による比較では True 。
ややっこしい話でんな。
123 :
デフォルトの名無しさん :2006/04/06(木) 23:52:42
1,2年ほどJava等をやっていて、急遽VBでの作業が必要になった者です。
書籍・検索で半日ほど調べたのですが分からず、ここで質問させてもらいたいと思います。
指定したURLの画像を取得して、上下反転処理を加えた上で保存する
コマンドラインプログラムを作ろうと思っています。
GUIベースの似たようなサンプルを参考に書いてみたのですが、コンパイル時に
型'Image'が定義されていません
名前'Image'は宣言されていません
名前'RotateFlipType'は宣言されていません。
とエラーが出てしまいます。
コマンドラインプロジェクトでImageクラスを使うにはどうしたらよいのでしょうか。
よろしくお願いします。
環境:WinXP Pro/VS.NET 2003
ソース
Module Module1
Sub Main(ByVal CmdArgs() As String)
Dim url As String = "
http://www.hoge.com/hoge.jpg "
Dim wc As New System.Net.WebClient
Dim st As System.IO.Stream = wc.OpenRead(url)
Dim img As Image
img = Image.FromStream(st)
st.Close()
img.RotateFlip(RotateFlipType.RotateNoneFlipY)
img.Image.Save("C:\image.jpg")
End Sub
End Module
DLL の参照を追加する 必要な DLL はドキュメントに書いてる
125 :
123 :2006/04/07(金) 00:11:49
>>124 おお、解決しました。
本当にありがとうございました!
126 :
デフォルトの名無しさん :2006/04/07(金) 03:23:50
VB.NETで、制御構造のfor文で、C言語のcontinueに相当するもの ってありますか? for i=0 to 100 繰り返し処理1 continue 繰り返し処理2 next 繰り返し処理2をしないようにしたい すみませんがよろしくお願いします
2005 で追加された。 それまでは GoTo で対処する。
128 :
デフォルトの名無しさん :2006/04/07(金) 03:50:27
>127 ありがとうございました。 朝までに完成させたいコードがあったので、、、 たすかります。
VB.NET 2005のToolStripComboBoxで、 コンボ内でEnterキーを押したときの処理を書いてるんですが、 Enterキーを押すたびにビープ音が鳴ります これを鳴らないようにする方法ってないでしょうか? それらしいプロパティは見当たらないんです
>>129 KeyPressイベントハンドラで e.Handled = True にする
>>130 うわああ
うまくいきました。ありがとうございます。
ずっとKeyDownばかり見てました。
こんなの思いつきません(><)
132 :
デフォルトの名無しさん :2006/04/08(土) 17:50:59
多言語対応の単語帳みたいなソフトを作ってるんですがtextboxにfocusが入ったときにIMEを切りかえたいんです。 とりあえずハングルに対応させようと思ってIMEモードをいじってみたんですけど言語は切り替わらないんです。 誰かIMEの言語の切り替え方をご存知の方がいたら教えてください。
取りあえず Application.CurrentCulture や Application.CurrentUICulture でも変更してみたらどうだ。
134 :
デフォルトの名無しさん :2006/04/09(日) 03:51:35
WIN32APIをVB.NETようにマーシャリングしたいのですが、 良い書籍、サイトなどございましたらお知らせください。
MSDN
136 :
デフォルトの名無しさん :2006/04/09(日) 04:41:44
webサイトからhtmlを取得し、テキストをそのまま表示させるにはどうしたらいいのでしょうか?
WebClient と Encoding と TextBox でよかんべ
ありがとうございました。
素朴な疑問なんですけど Microsoft Visual Basic 2005 Express Edition って.netなの?
取りあえず「.NET で動くもの」を作れるな。
141 :
デフォルトの名無しさん :2006/04/09(日) 09:12:38
>>139 > 素朴な疑問なんですけど
> Microsoft Visual Basic 2005 Express Edition
> って.netなの?
Microsoft Visual Basic 2005 Express Edition は .NET ですよ。
142 :
デフォルトの名無しさん :2006/04/09(日) 09:42:31
おいおい思い込みの激しいトンデモさんが来たなw つーか、日本語読めないのかな
VB.NET 2005で、教えてください。 あるチェックボックスをクリックしたら、 関連するデータをListViewに一覧表示するという処理をやりたいんですが、 そのデータが1000個を超えるため、表示するのに30秒ほど時間が掛かります。 データを表示している間もメニューなどをクリックできるようにしたいので、 チェックボックスがクリックされたら、 別スレッドを作ってその中で表示(Invokeを使って、ListViewにAdd) させるようにしても、状況が変わりませんでした。 何か、根本的に考え方が間違ってるのでしょうか? 他に対処する方法ありますか?
もし ListViewItem 一個ずつ Add してるなら、BeginUpdate & EndUpdate
>>145 レスありがとうございます。
BeginUpdateとEndUpdateも入れてみましたが、同じでした。
というより、別スレッドでListViewを表示させているのに、
ListViewの表示どころか、メニューもクリックできない状態が
同じなんです。
まさか Add するたびに BeginUpdate と EndUpdate 呼び出したりしてないだろうな? あとは別スレッドってどう実装させてるかが分からんことには。 2005 なら BackgroundWorker マジお勧め。
>>147 全体でやっても1回Addしたときにやっても同じでした。
ソース付けます。
lvFileというのがListViewです。
' デリゲートの宣言
Private Delegate Sub delAddFile(ByRef pFile As CDataFile)
Private Delegate Sub delEndUpdate()
' チェックボックスのクリックイベント
Sub clbFilter_ItemCheck(長いのでパラメータは省略)
lvFile.Items.Clear()
lvFile.BeginUpdate()
Dim thList As Thread = New Thread(AddressOf ListAllFiles)
thList.Start()
End SUb
続き ' ListViewを表示させる別スレッド Sub ListAllFiles() Dim pData As CDataFile ' コレクションのデータを全部表示 For Each pFile As DictionaryEntry In mpLDB pData = DirectCast(pFile.Value, CDataFile) ' ここでInvoke(アイテム追加) lvFile.Invoke(New delAddFile(AddressOf AddFileToView), pData) Next If lvFile.InvokeRequired = True Then lvFile.Invoke(New delEndUpdate(AddressOf DoEndUpdate)) End If End Sub ' ListViewに1アイテムを追加する処理 Private Sub AddFileToView(ByRef pFile As CDataFile) Dim pItem As ListViewItem With lvFile pItem = lvFile.Items.Add(pFile.Info.Name) pItem.Name = pFile.Key ' その他SubItemsへの追加処理 End With End Sub
普通は一千件のアイテムの追加程度なら一秒未満で完了するんだが……。 まずどこで時間が掛かってるのか確かめる必要があるな。 各処理ごとに回数ループして時間を出力し、どの処理で時間が掛かっているか確認してみたら?
>>150 SubItemsに6つ追加してるので、それが掛かってるのかもしれません。。。
DataRowState.Modified は グリッドにしか使用できないのでしょうか?
どう使いたいのさ
154 :
152 :2006/04/09(日) 22:37:06
ヘッダー部(1件)と明細部(n件) の内容が変更されたかどうかをチェックしたいんです。 明細部はDataRowState.Modifiedで確認できますが、 テキストボックスのヘッダー部は有効じゃないみたいなんで。
>>148 追加中でも操作できるようにするってのが無茶だなあ…
別スレッドでInvokeしながら追加ってのが無茶。
ただ、別スレッドにしなくてもそんなに遅いんなら難しいかな…
追加処理そのものが重過ぎるんでね?
ちなみに、別スレッドにしないでBeginUpdateとEndUpdate使ったらどうなる?
>>155 >追加中でも操作できるようにするってのが無茶だなあ…
これって無茶なんでしょうか?
よく考えるとInvoke使ってるので、(使うしかないので)
どのみちListViewへの追加はメインフォームのスレッドで行われるんですよね?
だったら、別スレッドにしようが何しようが、やはり意味ないのでしょうか?
イメージとしては、ListViewが、ちらついてもかまわないので、
メニューや他のコントロールの操作は普通にやりながら、
ListViewに、次々とアイテムが追加されていく(ListView自身の操作も可能)
ような感じなんですが。。。
>ちなみに、別スレッドにしないでBeginUpdateとEndUpdate使ったらどうなる?
同じです。症状としては、まったく変わりません。
>>156 あんまり頭良くない(それは自覚してるでしょ?)んだから、
デリゲートだのなんだの欲張って一度にやろうとせずに
まずオーソドックスな方法で一度やってみたら?
それでどうにもパフォーマンスが悪いようなら、そこで初めてパフォーマンスの
改善を考えればいい。
今回のケースならオーソドックスにやれば何も問題ないはずだと思うけど。
それと、クラスのメソッドやプロパティの使い方は面倒臭がらずに
ちゃんと読んだほうがいいよ。
読んでないでしょ?BeginUpdate、EndUpdateの使い方も。
ListViewItemのコンストラクタにどんなのがあるかも。
オーソドックスというのが、シングルスレッドでの速度の改善なら、 それは既にマシになりましたし、今も色々試してます。 それでも数秒で終わらせられそうにないので、 別スレッドで出来ないかと考えたわけですが、 知りたかったのは、別スレッドでの表示の方法が理論的に正しいのか、 間違ってるのかってことで、僕の頭が良いか悪いかではありません。 ちなみに、パフォーマンスを上げるように改善したら、 メニューは少し反応するようになりましたが、それでも 数秒に一回程度で、スムーズに動いてくれません。。。
普通1000件ごときでパフォーマンスが問題にはならないわけ。 だから何がボトルネックになってるのかまず確認しろって話。
>>158 ずばり間違ってる。
コントロールのメソッド(一部例外を除く)はUIスレッド以外から触れない。
だからそもそもワーカースレッドでアイテム追加するなんてできない。
MSDNに書いてあるでしょ。
どうしてもレスポンス(スループットじゃないよ)を改善したいのなら、
タイマ等を使って処理を分割するしかないね。
まあ、そもそも1000程度のアイテムの追加にそんなに時間がかかるのは
他にどっかおかしいんだと思うけど。
ん、
>>158 に
>メニューは少し反応するようになりましたが、それでも
>数秒に一回程度で、スムーズに動いてくれません。。。
なんて書いてある。
ひょっとして158は組み込みとかメインでやってる人で、
コントロールの表示を定期的に更新するようなコード書いてるんじゃないのかな?
まあまさかとは思うけど
>>160 よ、さすがによく読めと言いたい。
ていうか、ひょっとしてInvokeの意味が分かってないのか?
>>162 分かってないのは君の方だと思うよ悪いけど。
164 :
162 :2006/04/10(月) 23:16:43
んーおれが読み違えた?
>>160 で書いてるのってどういう意味?
別スレッドにしても追加の時点でUIスレッドに同期するんだから
少なくとも1項目単位でそういうことするのは発想が間違ってる
って意味なら同意だ。
ってか
>>155 で書いたのはそういうニュアンスを含んでるんだが、
>>160 はぱっと呼んでそういうような意味には読めなかった。
単にUIスレッドからしかアクセスしちゃだめってことを
分かってないって書いてるだけに見えたんだ。
だから読み違えなら悪かったよ。
165 :
160 :2006/04/10(月) 23:23:48
要するに話の肝は、たとえどんな方法をとろうと、 ListViewにアイテム追加している間はUIスレッドで他の仕事はできないってことだね。 つまり158の最終的な目的はUIのレスポンスを改善したいと思っているわけだから、 「別スレッドでリストービューのアイテムを追加する」ってのは目的に合致してないわけだ。
166 :
158 :2006/04/10(月) 23:34:47
>>160 >どうしてもレスポンス(スループットじゃないよ)を改善したいのなら、
>タイマ等を使って処理を分割するしかないね。
これは何か、VB6っぽくて嫌なんですよね。。。
何ワガママ言ってんだって思われそうですがw
>まあ、そもそも1000程度のアイテムの追加にそんなに時間がかかるのは
>他にどっかおかしいんだと思うけど。
他の人にも前から指摘されてるので、色々いじってる最中です。
>>161 定期的に更新って訳ではないです。
>>165 >要するに話の肝は、たとえどんな方法をとろうと、
>ListViewにアイテム追加している間はUIスレッドで他の仕事はできないってことだね。
やっぱりそういうことなんですよね。。。
そこでどうしても疑問なのが、僕の場合はListViewにアイテムを追加する方法を
改善すれば、何とかなるとは思うんですが、
じゃあ、コントロールに対してすごく時間のかかる処理をするような
プログラムがあった場合、みんな、どうやって対処してるんでしょう?
そもそも、そんなプログラムは組まないのか、
それともあきらめて砂時計でも出すのか、
それともやっぱりVB6っぽくタイマーを使うのか。。。w
> じゃあ、コントロールに対してすごく時間のかかる処理をするような それはコントロールに対してじゃなくて、なにか他の計算なりをしてるんだろう? コントロールは入出力する部品に過ぎないんだから。
まず、 >これは何か、VB6っぽくて嫌なんですよね。。。 これが分からない。
169 :
166 :2006/04/11(火) 00:02:30
>>167 コントロールに対して大量のデータ書き込みや
表示をするような処理という意味です。
そういうこと自体少ないかもしれませんが。。。
>>168 VB6の頃はポーリングやコントロールに定期的な書き込みを
タイマーでやってて、それがあまり気に入らなかったのを思い出したもんで。。。
170 :
160 :2006/04/11(火) 00:02:41
実際試さずに断定はいかんかな、と思って簡単なサンプルを作ってみた。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Const NumRow As Integer = 1000 Dim lvItems As ListViewItem() = New ListViewItem(NumRow - 1) {} For row As Integer = 1 To NumRow Dim cells As String() = New String(8) {} For col As Integer = 1 To 9 cells(col - 1) = (row * col).ToString Next lvItems(row - 1) = New ListViewItem(cells) Next ListView1.Items.AddRange(lvItems) End Sub Pen4 2.8G、mem = 1G、VB2005 Expressの環境で 8列×1000行の追加にかかる時間がだいたい1.5秒ぐらいかな。
VB.net初心者なんですが。 2度スレ違いで書いてしまった質問をここで書き直しますすみません。 ほんっとーに申し訳ない! Function DecStr(ByVal str As String) As String '10進数のSUMの下位2桁 Dim DecStr1 As String Dim DecStr2 As String For i = 1 To 8 DecStr = DecStr + (Asc(Mid(str, i))) Next DecStr = Hex(DecStr) DecStr1 = Mid(DecStr, 2, 2) DecStr1 = Hex(DecStr1) DecStr2 = Mid(DecStr, 3, 3) DecStr2 = Hex(DecStr2) この様にFunctionの中で2つの変数を設定することはできますか? またできるとしたら外部から呼び出すときはどうすればいいんでしょうか。。。 ネットで調べてもVB.netについての情報は少なくて MSDN見ても詳しくは書いてありません。。。 教えていただけませんでしょうか。
ByRef しかしなんというか…
くらくらするコードだな そもそも何故文字列ベースなのか
てかVB.netの情報すくなくないw いっぱいあるやん。
175 :
171 :2006/04/11(火) 00:59:37
仕様なんです・・・VB初めて触るんで・・・
てゆーかプログラム自体ほとんどはじめてなんで(´;ω;`)
こんななんですけど・・・↓
16進数に変換する以前に任意の文字列
たとえば GETCOMとすると ASCII→((71 69 84 67 79 77)(10))
参照:
ttp://e-words.jp/p/r-ascii.html となりまして、それをすべて足すと447(10)になるんですが
この数字の下位2ビット 4 と 7 を抽出してさらに16進数に変換して
4 → 34(16) 7 → 37(16)
接尾辞以前に加えて出力
例えば→((71 69 84 67 79 77)(10))→((47 45 54 43 4F 4D)(16))
となりますので、接頭、接尾辞を加えまして
# 47 45 54 43 4F 4D H
これの接尾辞H 以前に 4 → 34(16) 7 → 37(16)を加えて
# 47 45 54 43 4F 4D 34 37 H
これの接尾辞H 以前に 4 → 34(16) 7 → 37(16)を加えて
の下りをひとつのファンクションじゃできないと思ったんで
ひとつのファンクションで二つの変数を得ようと思ったんですが。。。
ほかに何かいい方法ありますでしょうか
あーできれば日本語でお願い。
学校の宿題は自分でやらなきゃダメでしょ。 それ以前に、まあ一生懸命説明してるのは分かるけど イマイチ処理の内容がつかみきれない。 特にここは何言っているかさっぱりわからん >447(10)になるんですが >この数字の下位2ビット 4 と 7 を抽出してさらに16進数に変換して
178 :
171 :2006/04/11(火) 01:33:02
あははw; すみません; 447(10) は 71 69 84 67 79 77 をすべて足した値のつもりで・・・ 447の4(47)の部分を16進数に変換したいって意味のつもりだったんです。
179 :
171 :2006/04/11(火) 01:33:45
もう一度最初から自分で考えなおしてみます。 ありがとうございました。
Windowsサービスなのですが、開始時にパラメータを渡す方法を探しています。 管理ツールのサービス>対象のサービス>プロパティで指定できる 「開始パラメータ」はプロパティ画面での開始時のみっぽく、 自動起動などのWindows開始時には渡せませんでした。 直接レジストリを弄って「ImagePath」に「ファイルパス 引数」とすることはできるのですが、 これを他の方法でやることはできないのでしょうか。 InstallUtil.exeやsc.exe等を試して見たのですが。
ファイルに書いてそれを読み出すんじゃ駄目なの? // 構成ファイル使えるよね、サービスでも
182 :
180 :2006/04/11(火) 10:19:19
同じ物を設定を変えて同時に動かしたいんです。 今はモジュール名を変えて複数サービス登録して、 モジュール名で構成ファイル持ってきて中身替えてます。 自分でも頭痛いのですがもっとスマートなやり方ないですかね。。
183 :
デフォルトの名無しさん :2006/04/11(火) 10:50:16
詳しくないが、そもそも同じサービスを複数起動できるもんなのか?
185 :
デフォルトの名無しさん :2006/04/11(火) 17:44:49
こんにちは。javaから最近転向してきました。 プロパティのネーミングで困っています。 例えば Private PropName As String というようなメンバ変数があったとします。 そのとき、そのメンバ変数に対応するプロパティはどんな名前で定義するのが一般的なのでしょうか? Property PropName() Get Return PropName End Get Set(ByVal Value) Me.PropName = Value End Set End Property とやってしまうと、変数とプロパティの名前がかぶって怒られます。 VBのコミュニティーの中で一般的なネーミング規約などありましたら、教えていただけないでしょうか?
フィールドの方をアンダースコア付きにするとか。
>>168 まあ何が一般的かって言われればそれが一番一般的かな。
でも俺的には却下だけど。
プリベートフィールドの先頭にmを付けてみるとか。
プライベートフィールドね・・・。打ち間違えた覚えは無いのにorz
190 :
185 :2006/04/12(水) 09:15:11
みなさんありがとうございます。 特にこれといった暗黙的なルールというようなものはないのですね。 186さんと188さんの言うように、「フィールドの方の名称の先頭に なにか記号をつける」という方針で考えようと思います。 できれば187さんのやり方も教えていただきたいです。。。
191 :
デフォルトの名無しさん :2006/04/12(水) 21:26:43
VB.NETで、文字列の最後のコンマを削除したいのです。 trim(char配列)を使うと非破壊的に削除できましたが、 dim s1, s2 as String s1="AAAB" s2=s1.trim("B") →これでs1="AAAB"、s2が"AAA" 破壊的に出来るメソッドってありませんか? 上で言うと、s1.XXX("B")とすれば、s1="AAA"となるような。。。 もしくは無条件に文字列の最後尾の1文字を削除するメソッドでも よいのですが。 どうかよろしくお願いします。
String は変更不可オブジェクト。
s1=s1.Trim("B")でいいじゃん
194 :
デフォルトの名無しさん :2006/04/12(水) 22:09:15
192> なるほど。 193> あ、そうか。 変更はだめとしても代入ならできる、ということですね。 実際できることを確認しました。 ありがとうございました。
ピクチャーボックスに読み込んだイメージをバイナリ変換する方法がわかりません。 以下の方法では駄目でした。 お知恵拝借お願いします。 Dim ms As New MemoryStream hoge.Image.Save(ms, Imaging.ImageFormat.Png) Dim buf(ms.Length - 1) As Byte ms.Write(buf, 0, b.Length) ms.Close()
バイナリ変換ってどんなバイナリが欲しいのさ。 そのコードで何がどう駄目だったのさ。
VB.NETで下のような認証が必要なUNCパスにアクセスするにはどのようにすればよいでしょうか? \\アドレス\パス このアドレスのマシンにはユーザIDを作成することができません。 少し調べて見たところWNetAddConnection2などでネットワークドライブ割り当てをしアクセスすることも できるみたいなのですが、.NETでこれに相当するクラスなどはないのでしょうか? また、ドライブ割り当てを行わず直接参照することは可能ですか?もし、よろしければ、ヒントだけでも 教えていただけませんでしょうか。仕様環境はVB.NET2005です。よろしくお願いします。
>>196 簡単に言えば、これの逆をやりたいんですわ。
Dim f As New FileStream("c:\hoge.png", FileMode.Open, FileAccess.Read)
Dim bs(f.Length - 1) As Byte
f.Read(bs, 0, bs.Length)
f.Close()
Dim ms As New MemoryStream(bs)
hoge.Image = Image.FromStream(ms)
> そのコードで何がどう駄目だったのさ。
200 :
デフォルトの名無しさん :2006/04/13(木) 01:09:31
>>198 簡単に言えば、画像の保存がしたいということ?
hoge.Image.Save("C:\hoge.png", Imaging.ImageFormat.Png)
Function GetTextFromHtml(ByVal htmlText As String) As String Dim output As String = Regex.Replace(htmlText, "\<[^\>]+\>", "\n") Return output End Function これはヘルプの例を一部変えたものです。 htmlタグを改行コードに置換しようとしたのですが、そのまま\nと置換されてしまいました。 "\n"がどうして改行にならないか教えてください。
C# じゃないから。 改行は Environment.NewLine とか vbNewLine とか使いな、
203 :
201 :2006/04/13(木) 03:02:59
>>202 ご回答ありがとうございました。
visual studioのヘルプには\nは改行だと書いてあったのですが、visual basicでは使えないんですね。
結構涙ぐましく VB では〜 って書いてる印象だが、どこぞに漏れでもあったか。
>>199 pngだと、byteのデータがすべて0になってしまうっす。
bmpだとデータがあるんすけど。
>>200 元々は「.resx」のMSDN部分を読んでて、XMLに画像を保存するためにはどうすりゃいいんだろというのがきっかけで、いろいろ試してたんで
そのまま保存が目的でないっす。
> Dim ms As New MemoryStream > hoge.Image.Save(ms, Imaging.ImageFormat.Png) > Dim buf(ms.Length - 1) As Byte > ms.Write(buf, 0, b.Length) > ms.Close() これさ、Save した後さらに同じ長さだけ初期化したばかりのバイト配列を「ストリームに書き込んでる」んだけど。 バイト配列にしたいなら ms.ToArray() でいいよ。
VB2005使って、1週間目のプログラム超初心者ですが、 おすすめの参考書って、ありますか? 株式売買用のアプリを作ろうと思ってます 現在、データの呼び出し、抽出のところで、苦戦中 ちなみに、「VB2005 ビギナー編 BY 林晴比古」 をもってます
プログラミング VisualBasic.net Vol1,Vol2 初期バージョンのだけどマジお勧め
209 :
デフォルトの名無しさん :2006/04/13(木) 18:02:57
Visual Studio 2005で、デバッグビルドってどうやって指定するのでしょうか? 2003のころは、「メニュー」→「ビルド」で、指定できたはずだけど、2005ではできない。 だから、debugオブジェクトを配置しても、「出力」ウィンドウに結果が表示されないんですよね。 何故なのでしょうか? 調べてみたのですが、見つかりませんでした。 ご存知の方、よろしくご教授願います。
普通に F5 押せばデバッグビルドになるはずだが。
>>209 VBのデフォルト設定ではDebugはイミディエイトウィンドウに出力される。
出力ウィンドウにしたいのならオプションですべての設定を表示して
デバッグ-出力ウィンドウの文字をすべてイミディエイトウィンドウに…をOFFに。
ビルドのDebug/Releaseはプロジェクトのプロパティで切り替えられるが、
オプションのプロジェクトおよびソリューション-ビルド構成の詳細を表示をONにした後
ユーザー設定でコマンドのビルドにあるソリューション構成をツールバーに置くと
簡単に切り替えできるようになる。
>>206 いけました。
ども、ありがとうございました。
213 :
デフォルトの名無しさん :2006/04/14(金) 01:22:52
C言語で書かれているWIN32APIのヘッダの定数をVB.NET用に変換するには どうしたらいいですか? 具体的な方法を教えてくださいませんか?
自分の手でごりごり書いていくのさ。定数も構造体も。 ひょっとしたら PINVOKE.NET に既にあるかもしれんがね。
215 :
デフォルトの名無しさん :2006/04/14(金) 01:32:08
214さん たとえばC言語で定数が8だったらVB.NETでは&h0040みたいになるんですよね これの具体的な導きだし方はどうしたらいいんでしょうか?
8って?8って?
0xならそのまま&hにすりゃいいし、 普通に10進ならそのまま10進で定義すりゃいいやん。
8 が何故 &H40 に……? ていうかまず 16 進数の基本的な考え方から勉強した方が良くないか? そんなこと言ってるレベルで P/Invoke は早すぎると思うぞ。
219 :
デフォルトの名無しさん :2006/04/14(金) 01:45:29
だから例えばですって。 その16進数の変換の仕方がいまいちわからないです。 どこかいいサイトあります?
>>217 で書いてることが分からんか?
サイトだって16進数とかで検索したらいくらでも出てくるだろ、多分。
ついでに
>>218 も書いてるけどそれでPInvokeは無茶だぞ。
textのn行目を削除する方法を教えてください。 よろしくお願いします。
text なるものが何なのか分からない以上答えるのは困難だな。
223 :
221 :2006/04/14(金) 02:22:43
すみません、質問をちょっと変えます。 abcfagr ewarghww trhgwrfge wrgwaehtrw thwthgwth jthdefg hijkrgg reqgq wargqw rgqwag rghqrhlmn 上のようなtextで、1行目を正規表現を使って削除するにはどのようにしたらいいのでしょうか? それとも他の削除方法はありますか? ご回答お願いいたします。
n 行目じゃめんどくさそうだな。 StringReader と StringWriter 使った方が手っ取り早そうだ。
Regex.Replace、MatchEvaluator辺りを使ってごにょごにょとか。
>>223 すぐ正規表現使いたがる人多いけど
そういうことならデリミタでSplitしといてそいつを利用した方が
あらゆる意味で「使える」と思う。
227 :
デフォルトの名無しさん :2006/04/14(金) 09:24:25
>>210 >>211 イミディエイトウィンドウに出てきました。
オプションで「ビルド構成の詳細表示」をチェックすると、VS2003のようになりました。
ありがとうございました。
>>223 一行目を消すってーと
abcfagr ewarghww trhgwrfge wrgwaehtrw thwthgwth jthdefg
hijkrgg reqgq wargqw rgqwag rghqrhlmn
↓↓↓↓
hijkrgg reqgq wargqw rgqwag rghqrhlmn
こゆふうにしたいと?
229 :
デフォルトの名無しさん :2006/04/14(金) 17:03:07
初心者です。 Visual Studio 2005でデータベースプログラミングをしています。 DataGridViewを使っているのですが、検索機能を付けたいと考えています。 どのコントロールにどんな操作をさせたらいいのでしょうか? いくら調べても、よく分かりません。 どなたかご教授願います。 よろしくお願いします。
230 :
デフォルトの名無しさん :2006/04/14(金) 18:06:30
>>229 その検索機能はどんな操作を行った時に実行したいのか?
231 :
221 :2006/04/14(金) 20:17:46
>>224-226 ご回答ありがとうございます。いずれの方法も調べてみます。
>>228 そうです。改行コードも含めて削除したいんです。
何か他に手法があったら教えてください。
232 :
デフォルトの名無しさん :2006/04/14(金) 20:53:19
>>230 検索条件をテキストボックスに入れて、
ボタンを押したらDataGridViewの表示が変わるというようなやつです。
で、どの部分が分からないんだ? こっち的には表示が変わるというようなやつってのが分からんがね
234 :
デフォルトの名無しさん :2006/04/14(金) 21:10:53
>>232 何となく分かった
ボタンの押下イベント内にDataGridViewのデータソースの元となるSQLを変更するロジックを作りなさい
235 :
デフォルトの名無しさん :2006/04/14(金) 21:18:07
Visual Studio 2005の特にC++環境において, エディタの文字コードはShift-JIS固定なんでしょうか? EUCが使えるとうれしいのですが...
UTF ならまだしも EUC はないだろー。 ていうかここは VS スレではない。
VSスレと.netスレが別だったとはΣ( ̄□ ̄;) スマソ. EUCは無理ですか. UNIX環境だとEUCだったりするんですよねぇ... VSのエディタ使えたらいいかなぁーとか思ってたんですけど...残念.
239 :
デフォルトの名無しさん :2006/04/15(土) 13:40:13
Visual Basic 2005 Express Edision の質問は、このスレでいいの?
言語やフレームワークの問題ならここ。 IDE の問題なら Vistual Studio スレの方が良いかもね。
241 :
デフォルトの名無しさん :2006/04/15(土) 14:21:10
フォームだと frm とか、チェックボックスだと chk みたいなVBとかでよく使うプレフィックスの一覧表 とかって公開されていますかね?
244 :
239 :2006/04/15(土) 18:01:27
>>240 超初心者でその辺のところ区別がつかないけど、VB2005 Express Edision の第9章に
Webサービスの気象データを取得して、誰でも解る表示に加工しするサンプルソフト
作成が有るけど、Webからユーザネームとパスワード取得し入れても、旨く動作しないので
どなたか成功した人が居りましたら、やり方教えてください。
ちなみに、自己作成ソフトはもちろん、サンプル取得したソフトに取得ユーザネームとパスワードを入れても旨く行かない。
ユーザネームとパスワードの指定のやり方が間違えていると思い色々試すがダメでした。
たぶん、簡単なミスなのでしょうが、原因究明出来ないのです。
参照ページは、182ページです。
245 :
239 :2006/04/15(土) 18:15:49
182ページ
1行目そのまま
2行目
Username String ユーザー
[email protected] Password String ユーザー KXW8o2oVq234
CurrentZipCode String ユーザー 98052
でやってみましたがダメでした。
成功した人よろしくです。
ねー vbって大文字小文字の区別ないんだよね? アクセサの時、不便感じない?
ケースセンシティブじゃないのが問題点と思うか利点と思うかは趣味の問題だろうね。 俺はむしろ利点だと思うけど。 それより配列の括弧の問題の方が大きいと思う。
248 :
デフォルトの名無しさん :2006/04/17(月) 01:24:54
初心者です。 Visual Studio 2005 Standardエディションで、Windowsサービスを作成しました。 セットアップウィザードでセットアップぷロジェクトも作成したのですが、出来上がったインストーラを使ってインストールしても、「サービス」の一覧に作成したサービスが表示されません。 ServiceName属性もちゃんと設定したのに、何故なのでしょうか? いくら調べても、他の原因が見当たりません。 どなたか、ご存知の方、ご教授願います。 よろしくお願いします。
マルチ氏ね
初心者です・・・と書かれた時点で読み飛ばす。それは免罪符にはなりません。
251 :
239 :2006/04/17(月) 10:04:29
>>250 言いたいことは、新バージョン持ってないから対応出来ない。
降参と言う事ですよね。
実は初心者ほど最先端のVB機能活用にチャレンジしてるから、ベテランは、基本言語仕様にしか対応出来ないのよ。
初心者の皆さんご免ね。
252 :
デフォルトの名無しさん :2006/04/17(月) 10:44:09
>>248 セットアップとか作る前にちゃんと動く事を確認した?
とりあえず、ビルドしてそれをInstallUtilでインストールできるかどうかを確認しろ
いいよ、エスパーの相手は。別に2005で普通に開発中だけど。 初心者って言う奴は間違いなく言語の初心者じゃなく、日本語とか対人コミュニケーションの初心者。w
何でそうまでして初心者を嫌う? だいたい質問なんてほとんど初心者がやるもんだろw
255 :
239 :2006/04/17(月) 12:22:16
>>253 成る程そう言う意味?
僕は2月に初めてVisual Basic 2005 Express Edition 買って「以前のバージョンはやってない」
第1章から第8章まで一通りのソフト作りをクリアしてきましたが、言語仕様とかは、かじっただけでうっすら
としか解らないけど、相対的に、VBって凄くソフト作り効率が良い言語開発環境だと理解しました。
第8章の車両データの検索加工ソフト作りまでをクリアし、最終章の第9章のWebからデータ取得して加工する気象トラッカ
ソフト作りで躓いた感じです。第9章マスターすれば付属マニアルは一応卒業ですので、何とかクリアしたいです。
簡単なソフト作りを積み重ねて将来的には、自分の頭に描いた通りのソフトが自由に作れるようになりたいです。
その為には、開発環境のマスターと言語仕様のマスターを合わせて修得する必要を感じてます。
くだらないことに突っかかる奴がまともなレスなんかするわけないんだから ほっとけば良いんだよ。 少しは冷静に知恵を使え。大人になれ
>>254 技術的初心者と、そもそも説明能力の初心者は違うだろ?
どういうエラーが発生してとか、何処まで調べてとか、そういう基本が出来ない質問の書き出しはかなりの確率で、初心者なんですが。w
258 :
デフォルトの名無しさん :2006/04/18(火) 07:43:22
>>257 >
>>254 > 技術的初心者と、そもそも説明能力の初心者は違うだろ?
> どういうエラーが発生してとか、何処まで調べてとか、そういう基本が出来ない質問の書き出しはかなりの確率で、初心者なんですが。w
言えてる。
>>255 彼なんか初心者だ、しかしやってることは凄いことだ。
言語仕様の勉強では3ヶ月ではデータ加工ソフトなど絶対に出来ない。
統合開発環境が有るから出来るのだ。
VBの良いところは、統合開発環境であり、度素人がとんでも無いソフトを開発できると言う証明だ。
259 :
デフォルトの名無しさん :2006/04/18(火) 10:35:03
>>258 と言うかね、世の中の人すべてが自分と同じ程度の頭の中身と思わないほうが良いよ
コンピュータの基礎が数学的な概念でほぼ占められてるから頭の良い人は一瞬で理解するよ
260 :
デフォルトの名無しさん :2006/04/18(火) 13:15:17
WebBrowserコントロールの表示されている内容を、Bitmapとか、GetPixel可能な形式にするには キーストロークでPrintScreen→ClipBoardから取得ってやるしかないんでしょうか? CreateGraphics → GetHdc → GetPixel(WinAPI)だと、どうあがいても失敗してしまいます。
>>260 GetDC(IntPtr.Zero) とか使ってデスクトップのデバイスコンテキストからやれば行けると思う。
VB2005EX初心者ですが、 参考書にある、サンプルをデバッグすると Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' から型 'System.Windows.Forms.WindowsFormsApplicationBase' を読み込めませんでした。 という、エラーがでてデバッグ中止されてしまうんですが、この対処法ご存知ないですか?
なんか『ムー』の投書欄みたいだなw
エスパーばかりのスレはここですか?
>>262 参考書って世の中にどんだけあるだろう。
なにをするサンプルなのかとかも書かないと誰もわからんよ。
>>265 どういうわけか知らんがプロジェクト設定が間違ったまま配布されてるみたいだね。
とりあえずプロジェクトファイルをVSで開いて、ソリューションエクスプローラの「マイプロジェクト」をダブルクリック。
出てきたプロジェクト設定のスタートアップフォームを *.Form1 から Form1 に選択し直せばコンパイル通るよ。
というか言わせてもらいたい。Hello,world!って表示するプログラムくらい、自分で書けっつの。
267 :
デフォルトの名無しさん :2006/04/20(木) 04:59:40
>>262 > という、エラーがでてデバッグ中止されてしまうんですが、この対処法ご存知ないですか?
第7章 壊れたブロックの修復
と言う、デバックのテクニックを説明した章では無いですか?
それならば、サンプルは正常に稼働していて、停止したところの、バクを修正すれば良いと思うけどね。
何頁でのデバックでしょうか?
268 :
デフォルトの名無しさん :2006/04/20(木) 08:40:03
ドロップダウンリストに複数のテーブルのデータを 割り付けたいのですが、どのようにやればいいのでしょうか
>268 地道に DropDownList.Items.Add("aaa") 'テーブル1のデータ DropDownList.Items.Add("bbb") 'テーブル2のデータ って必要な分だけやる
ベジエ曲線と直線との交点座標を求めたいんですが、用意されてるものを使ってできるでしょうか? もう一つ、ベジエ曲線の内側を塗る事はできるでしょうか?
271 :
デフォルトの名無しさん :2006/04/20(木) 13:14:13
特定のファイルを使用しているプロセスを強制的に殺す手法を調べているのですが 見つかりません。どなたかいい方法をご存じないでしょうか? 教えて下さい。 よろしくおねがいします。
無理無理
273 :
デフォルトの名無しさん :2006/04/20(木) 13:47:29
>>268 その複数のテーブル間になんらかの関連(リレーションシップ)があるなら、
1つのDataSetにまとめて処理することも可能
>>266 アドバイスありがとう
無事、ビルドし直したらエラーでなくなりました
PS.自分でHello,Word
という、プログラム書いて,違いを見つけ
たぶんMy application.designe.vb
のところ書き直して、力技で動かしました
>>267 アドバイスサンクスです
全てのサンプルプログラムでエラーがでて、デバッグできませんでした
第7章は、ファイル操作と印刷になってますが、、、
第8章が、デバッグ関連になってます
”メンバ変数が定義されていません”
”フォームデザイナがビルドできません”
等の沢山のエラーです
まだ、全部は実行していませんが、
>>266 さんの
やり方で、無事デバッグできました
276 :
デフォルトの名無しさん :2006/04/20(木) 22:41:26
277 :
デフォルトの名無しさん :2006/04/21(金) 00:56:19
SoundFileName = """D:\abccccc.mp3""" で音が出たので、次に、abccccc という部分をクリップボードに入れておき、 SoundFileName = """D:\(Clipboard.GetText).mp3""" のようにしたいのですが、うまくいきません。 クリップボードの場合、どのようにしたらよいのかご教授ください
リテラルとそれ以外をごっちゃにしちゃったら駄目だろう。 """D:\" & Clipbaord.GetText() & ".mp3""" とかして分けろ。 て言うか何このマニアックなの。
279 :
デフォルトの名無しさん :2006/04/21(金) 01:03:07
"""D:\" & Clipboard.GetText & ".mp3"""
280 :
デフォルトの名無しさん :2006/04/21(金) 01:04:16
おお!! できたできた ありがとうございます! 昨日VB始めましたw
質問したいのですが リストボックスのコレクションを変更する方法(関数,2003)を教えて下さい。
>>281 とりあえず、質問の方法がそれで良いのか考えろってのはおいといて
AddとRemoveを使えばできるだろ
>>282 わかりました、ありがとうございました。
284 :
デフォルトの名無しさん :2006/04/23(日) 01:17:28
Microsoft Visual Basic 2005 Express Edition Betaを使っていますが、 INETコントロールを貼り付けようとしたところ、エラーメッセージ(このActiveXを使用するにはライセンスが必要です。)が でたんですけど、これはExpress Editionだからでしょうか。
VB6以前を入れてないからじゃね つかそんなもん使わないで.NETで実現しろよ
>>285 VB6以前は入ってない
.NETの体験版はあるのかな、みてくるか。期限あんのかな・・
今度、VB.NET2005を使用することになりました。(.NET開発は初めてです) 勉強のため、ExpressEditionを入れてますが、質問があります。 VB6などでは、関数にカーソル合わせて、Shift+F2でその関数に移動したり、 移動先で Ctrl+Shift+F2で移動元に戻ったり出来たと思うのですが、 VB.NET2005ではこの動作は無くなったのですか?
質問です。(.Net 1.1です) リッチテキストボックス内の文章に、読み込んだ画像データを挿入したいのですが、その方法がよくわかりません。 どなたか、ご教授お願いします。
289 :
デフォルトの名無しさん :2006/04/23(日) 17:09:58
>197 と同じ事でつまずいています。 別ドメインのサーバにあるファイルを操作したいのですが、 事前にアカウントの認証をする方法がわかりません。 エクスプローラーだと「(接続したいPC)に接続」というダイアログが出て ユーザー認証を行えているので、なんとなく可能だと思っているのですが・・・ PSDKにある「LogonUser」だとローカルのユーザーしか駄目みたい。 「WNetAddConnection3」でネットワークドライブの割り当てをするのもちょっと避けたい。 理想はダイアログも出さないで、設定してある情報を使って認証をすませたいです。 エクスプローラーと同じダイアログの出し方など、ご存じの方いらっしゃいませんか? よろしくお願いします。
>WNetAddConnection3 ...おしいなw
291 :
デフォルトの名無しさん :2006/04/23(日) 22:25:41
すんません、どなたかご存知だったらご教示ください。 MDB内テーブルへのDataGridViewがあります。 こいつに、他DLL内から新規行を追加し、かつ、OnUserAddedRowイベントを 起こさせたいのです。 OnUserAddedRow関数はProtectedなため、大難儀しております。 DataGridViewを派生させCustomDataGridViewを作成し、そこで上記関数を呼ぼうかとも 考えたのですが、.NETで派生先クラスへインスタンスをつっこむやりかたもイマイチわからず。 よろしくお願いします。
OnUserAddedRow はイベントじゃなくてメソッドだ、と。 なんかイベントの意味を勘違いしてるな。 イベントってのは利用者が起こすもんじゃない。 RowsAdded でも使え。
293 :
デフォルトの名無しさん :2006/04/23(日) 23:25:00
>>292 そのとおりで、OnUserAddedRowはUserAddedRowを発生させる関数でした。
問題なのは、MDBにBindingSourceとTableAdapterとDatSet経由でバインドしているDataGridViewの
Rows.Addは実行不可例外が送出され、コード側から行追加できないこと。
この場合の行追加はBindingSourceへAddNewしなくてはならない。
しかし、この方法ではUserAddedRowイベントが発生せず、開発者が記述するUserAddedRowにハンドルした
関数を呼び起こせないこと、です。
RowsAddedが何を意味しているのか不勉強でわかりませんが、
引き続き、ご教示ください。
だから、行が追加されたときに実行を期待されるメソッドを UserAddedRow イベントに追加するのが間違ってる。 UserAddedRow はあくまでユーザが DataGridView に直接行を追加したときに発生するイベントであって、 コードから行追加したときにまで発生しちゃいけない。 で、データソースに行が追加されたときに発生するのが RowsAdded イベントだ。
295 :
デフォルトの名無しさん :2006/04/24(月) 00:01:27
>>294 なるほど。
しかし、すでに多数の画面に記述されているUserAddedRowにハンドルされたコードを
呼び出すことが目的で、その記述自体が概念的に誤りだとしても、(政治的にも)改修できないのです。
.NETの考え方的にあやまりだとしても、なんとかこの関数を叩く方法はないでしょうか。
よくわからんけど、 Public Class CustomDataGridView Inherits DataGridView Private Sub DoSomething …… Mybase.OnUserAddedRow() …… End Sub End Class じゃいかんの?
297 :
デフォルトの名無しさん :2006/04/24(月) 00:33:47
>>296 その方法が>291後半の方法なのですが、
CustomDataGridViewクラスへのダウンキャストが成功せず‥。
Private Class CustomDataGridView
Inherits DataGridView
Public Sub CallOnUserAddedRow(ByVal e As DataGridViewRowEventArgs)
MyBase.OnUserAddedRow(e)
End Sub
End Class
public Sub Hoge(ByRef p as DataGridView)
Dim X As CustomDataGridView = CType(p, CustomDataGridView)
'↑ここでキャスト例外が発生
‥
‥
End Sub
リフレクション しかしまあアレだな こんなん納品されるところが可哀想だ
>>297 意味わからんなあ。いったい何がしたいのか。
ダウンキャストが成功しないのはpが参照してるオブジェクトが
キャストしようとしている型じゃないからでしょ?
>>299 多分、既存インスタンスは変更できないんだろう政治的に
派生先クラスへインスタンスを突っ込むとか言うぐらいだから技術的にもだろうけど
301 :
デフォルトの名無しさん :2006/04/24(月) 01:33:11
tableAdapterにクエリを追加しようとしてるんだけど、 LIKE 検索したいときワイルドカードをどう記述すればいいの? WHERE 変数名 LIKE '<パラメータ>%' としたいんだけど。 もしかしてパラメータに%入れなきゃ無理? あと、@Pram とかが使えないみたいだけど@パラメータ名は使えなくなってる?
>>298 ありがとう、なんとかなりそうです。
そりゃわたしもきっちりコード書きたいですが、時間やお金は無尽蔵にないですしね‥。
>>302 時間も金も無いからこそ事前に構造の設計を行う事と実装の実現性を確認する事が重要なんだな
まあ、一つ賢くなったと思って骨を埋めて来い
304 :
デフォルトの名無しさん :2006/04/24(月) 14:54:13
非アクティブ時、 キーを押したらタイプライターのような音を出す アプリをVBで作成することは可能ですか?
不可能ではない
306 :
デフォルトの名無しさん :2006/04/24(月) 15:12:14
反応が命だからDirectSoundが必要だな
307 :
304 :2006/04/24(月) 15:29:03
>>305 >不可能ではない
というと、非アクティブ動作だと一般的には無理という回答だけど、
技?を使えばokということでしょうか?
308 :
デフォルトの名無しさん :2006/04/24(月) 17:53:27
今、VBのソースをDelphiに移植しようとしているのですが、 Helpを読んでも意味が分からないことがあるので、教えてください。 For Each A in B hoge Next ってどういう意味なのでしょうか? ヘルプを見てもループ制御変数とか色々小難しいことが書いてて例が無いので分からないもんで、 すみませんが、どなたか教えてください。
B コレクションの内容を列挙して A に取り出しそれぞれ処理を行う ていうかいくらでも書いてるってのサンプル
>>287 「ツール」の「設定のインポートとエクスポート」はExpressにはないか?
SQL Serverのトランザクション管理は以下のコードでうまくいくのですが、 Using tx As New Transactions.TransactionScope() ta.Update(ds) tx.Complete() End Using これをMDBでやろうと思ったのですが、 MDBでTransactionScopeを使用することは出来ないのですか?
>>313 ということは、MDBを使用した場合には、
TableAdapterのUpdateCommandで指定した更新の際にトランザクション管理することは出来ないということですか?
System.TransactionsはMDBで使用できないというような記述がどこかにあった気がしますが。。。
と言うかトランザクション管理が必要なのに mdb 使うなよ。 いつファイルが壊れるか知れたもんじゃないぞ。 せっかく SQL Server 2005 Express Edition もあるんだし。
>>315 SQL Server 2005 Express Edition って商用利用できましたっけ?
実家の自営で使う軽いアプリを低コストで出来ないかと試しているんですが。
無理そうならMSDEにしようかと考えていますが、
EnterpriseManagerやクエリアナライザなどのツールがないといろいろと面倒かな?
>>317 ありがとうございます。
自分の中では余計ややこしくなってるんですけど。。。
とりあえずは、セットアップパッケージにExpress Editionのサイレントインストール(?)を含めるようにする方法を調べてみます。
質問です。 VB.NETからQuickTimeをCOMから操作できることを知ったので, やってみようとおもったのですが,具体的なコマンドとかがまったくわかりません。 私なりに検索してみましたが,さっぱりわからずこまっています。 どなたか詳しい方いらっしゃいませんか?
正直TableAdapterでTransactionが外から触れなくなってるのは 何とかしてほしいな。 触らしてくれてもいいだろって感じ。
>と言うかトランザクション管理が必要なのに mdb 使うなよ。 そりゃちょっと違うだろ。
インタフェースのメソッドをクラスでPrivate実装にすると、 インスタンスをインタフェースにキャストすることでPrivateメソッドが呼べるようですが、 C++やJavaのようにPrivateなインタフェースの実装を クラス外のスコープから呼べなくするにはどうすればよいでしょうか。
"Interface"って言葉の意味を辞書等で確認された方がよろしいのでは? 繋げないコネクタは既にコネクタじゃないでしょw
>>314 TableAdapterあきらめてOleDBConnectionのトランザクション使えば?
325 :
310 :2006/04/25(火) 08:59:44
ごめん
>>287 よ。夢の中で間違いに気がついた。
ツールのオプションのダイアログで「すべての設定を表示」にチェックをいれて
左のツリーの環境−キーボードを選んで
「次の追加キーボードマップスキームを適用」で「Visual Basic 6」を選んで「OK」すればよかと。
イベントハンドラのインターフェイスの、 無名クラスでの実装辺りのことを言ってる気がするな… 表現がおかしいけど。
327 :
デフォルトの名無しさん :2006/04/26(水) 09:11:36
イベントハンドラのインターフェイス? 初めて聞く概念だな・・・
クラスの継承とスコープ、イベントというか、Delegateとかその辺りと知識がごっちゃになってるんじゃないの?
無名クラスってんだから Java のことだろ。
イベントアダプタとかだっけ?なんかそんなのあるじゃん。 調べてないから表現は間違ってると思うが。 あ、これ自体はjavaの話だよ。 それの無名クラスでの実装みたいのが、 .NETではどうなるの?て話じゃないかと思ったてこと。
331 :
デフォルトの名無しさん :2006/04/26(水) 14:20:49
VB2005において、PrintPreviewControlとColumns、Rowsの 関係についての質問です。 今、PrintPreviewControlに5ページからなるPrintDocumentが 関連付けれらているとします。 この状態で、Columns、Rowsをそれぞれ2に設定すると 初期状態で1〜4ページまで同時にプレビューできますよね? ここからが困っているのですが、上記の状態で 「次」ボタンを作成して、5ページ目以降を表示させたいと思ったときに PrintPreviewControlのStartPageプロパティに5を設定しました。 そうすると、2〜5までの4ページが表示されてしまいます。 希望としては、 ・初期状態:1〜4ページが表示される ・「次」ボタン押下:5ページのみが表示される ※この時、Columns、Rowsは2のままで、2x2のマス目の左上に 5ページ目のみを表示させたい としたいのですが、上記に書いたStartPageの設定方法だと ・初期状態:1〜4ページが表示される ・「次」ボタン押下:2〜5ページのみが表示される 希望通りの動作をさせるにはどうしたらいいでしょうか?
そんなこと可能なのかな?無理な気もするけど。。 プレビューなんて自分で実装すればいいじゃん。 別にたいして難しくないよ。 PrintPreviewControlってモーダルだしモッサリしてるし プリンタがインストールされてないと使えないしで激しく使えん奴なんで 俺は使わないなあ。
Open File dialog boxから複数のファイルを選択して、 開き先頭から12バイト読込みたいのですができますか?
テキストボックスにはみ出るくらい長い文字列を入力するとTextAlignプロパティが効かなくなる(デザイン時にも)のですがこういうもんなんでしょうか? TextAlignプロパティを変える前にTextプロパティを空にしてもだめでした。
>>333 できる。
>>334 そういうもん。つかはみ出る文字列に対して TextAlign がどう働いて欲しいんだ?
Webブラウザを利用したHtmlエディタを作りたくて今製作中なのですが… Webブラウザのツールが無いです。 .NET Freamworkが1.1だからですかね?
表示させるだけなら IE を CreateObject して Navigate でも良いと思うけどね
全然関係無い話なんだが、ココ見てると↓みたいな会話が多くて面白いな ○<こーゆーことがしたいんだけど、手は無いかな? ●<そもそもそれを使うのが間違いでこーするべき ○<いや、こーゆーことがしたいんだけど ●<俺はそれは使わない 営業とSEの間でもよくこんな話してるわ
>>338 はてそんなパターンの展開は見たことないけどな。
まあ多分338はよく人から「俺はそんなこと言ってない」って突っ込まれるんだろうけど、
実際君の理解力はきっとどこかおかしいんだと思うよw
客がいうとおりはいはいできますいっちゃって 後でSEに無理って言われてふぁびょってる営業さんですか?
>>337 IEを使わない場合(ツールのWebブラウザ)はVerを更新しないと無理?
342 :
デフォルトの名無しさん :2006/04/27(木) 09:07:13
2.0ならIEコントロール付いてくるだろ
343 :
デフォルトの名無しさん :2006/04/27(木) 09:43:00
>>342 所持してるのは1.1です。
ちなみにPCはオフライン、ネットカフェでファイルをダウン可能と言う状況です。
出来ますかね、アップロード?
344 :
デフォルトの名無しさん :2006/04/27(木) 10:18:12
開発系の雑誌買ったら付いてこないか?SDK2.0
>>344 探してみます、ありがとうございました。
346 :
デフォルトの名無しさん :2006/04/27(木) 14:48:48
Wordファイル対象のgrepみたいなコマンドを作ろうとしてます。 Rangeで文字列を見つけるのは出来ましたが、その位置をページ番号と行番号で表示出来ません。どうすれば出来ますか?
347 :
デフォルトの名無しさん :2006/04/27(木) 15:40:46
それはWordのVBAの話じゃまいか?
348 :
346 :2006/04/27(木) 21:27:41
VBやC#からWordクラス(オブジェクト)やExcelクラス(オブジェクト) を操作できますが、 Wordクラスの使い方が判らなくて、試行錯誤状態です。 少しググって見ましたが、よくわかりません。 これらに詳しいサイトや本、あったら教えてください。
349 :
デフォルトの名無しさん :2006/04/28(金) 20:28:32
プロパティとフィールドって、どう違うんですか? スコープがPrivateかPublicかっていう以外は、違いが無いんじゃないんでしょうか? Privateな変数を外に公開したいときにプロパティを使うっていうことなのでしょうか?
プロパティなら値チェックとか色々できる 取得専用にもできる > Privateな変数を外に公開したいときにプロパティを使うっていうことなのでしょうか? そうすべき。
>>349 どう違うって全然違うでしょ。
っていうかそんなレベルの話を自分で調べもせずにいちいち人に質問する人は
悪いけど多分プログラマ向いてないと思うよ。
まあ@ITのオブジェクト指向入門、みたいな連載が結構初心者にもわかりやすく
解説していたような記憶があるから読んでみたら?
プロパティならすべてのフィールドを操作することができる
>スコープがPrivateかPublicか それはなんつーか初めて聞く発想だ。 大きく誤解しているようだが。
だが実践的には フィールド・・・private プロパティ・・・public で間違いないと思うぞ。 それ以外のスコープのつけかたは あまり一般的とは思えないな。。。漏れは使うときあるけど
そりゃ言ってることは分かるけど、 それが違いって言われちゃあ…
プロパティなんて言葉使ってるのはMS製品だけ。 JavaやC++ではただのメソッドにすぎない。
Delphi でも使われてるんだが……
>>354 いや悪いけど間違いだよ。
もちろん用語の正しい意味用法を無視して、あえて「実践的な話」とやらをしたとしても。
例えばクラスにプライベートなプロパティーを持たせるのは別に普通のことだ。
MS製品でもメソッドですが… 何が言いたいんだろ…
プロパティはOOPには不要ってことだろ。
>>358 > 例えばクラスにプライベートなプロパティーを持たせるのは別に普通のことだ。
全然普通のことじゃないよ。
他のクラスからはもちろん派生クラスからさえ呼べないようなプロパティは、
もはやプロパティとして実装する必要はない。設計を間違えている。
>>361 そりゃ君の経験または知恵が足りないだけだよ、悪いけど。
>>362 君よりは知恵も経験もあると思うよ(・∀・)
>>361 頻度としては高くはないが、別に有り得るだろ。
ていうか、それだけで設計が間違ってると言い切れる
お前の方がびっくりだ。
だから、実践的には
フィールド・・・private
プロパティ・・・public
で間違いないと言っている。
>>349 は
あくまでごく一般的な使い方をするかぎりにおいての
話をしているんだと思うぞ。
このスレはやたらと細かいことにツッコミを入れて
得意がる奴が多すぎるな。(´・ω・`)
プログラム初心者なんですが、 "1301""極洋""1000""東証""" "1305""ダイワ上場投信−トピックス""100""東証""" "1306""TOPIX連動型上場投資信託""100""東証""" "1308""上場インデックスファンドTOPIX""1000""東証""" "1310""ダイワ上場投信−トピックス・コア30""100""東証""" "1311""TOPIX Core 30 連動型上場投資信託""100""東証""" "1320""ダイワ上場投信−日経225""10""大証""" "1321""日経225連動型上場投資信託""10""大証""" "1329""iシェアーズ日経225""10""東証""" "1330""上場インデックスファンド225""10""東証""" "1331""ニチロ""1000""東証""" "1332""日本水産""100""東証""" "1334""マルハグループ本社""1000""東証""" 以降、延々と続く このような、CSVファイルから、テキストボックスに例えば 1331と入力したら ラベル1に、ニチロ ラベル2に、1000 ラベル3に、東証 と、自動的に呼び出したいのですが、どのようにすればよいのでしょうか? 一度、これらをデータベース化したほうが良いのか? 使うならDictionaryメソッド? よろしくお願いします かれこれ、1週間近く悩んでます
DataTable に突っ込んで、DataBindings 。
>>365 だから間違いだって。
別に2ch的なガキっぽいのりで突っかかってるわけじゃない。
まあ一応少しフォローすると、プロパティの効用は
値の設定あるいは取得の際に、同時に何らかの処理を強制できる点にある。
そしてこの「値の設定あるいは取得の際に、同時に何らかの処理を強制」
する必要があるかどうかは、必ずしもその値のアクセスレベルとは関係がない。
大抵そういう使い方になるってのはいいが、 違いはprivateかpublicかしかないんじゃ?とか思ってんだから、 それは間違いとしか言いようがないだろ。
「メソッドでも別に問題ないけど、あったほうが便利かな」的な機能ってことで、おk?>プロパティ ついでに、C#のプロパティは、 xxx hoge { get{} set{} } だから、メッサコンパクトでわかりやすいね・・・。 readonly,writeonlyも必要ないし。
おk。 それを熱く語るのは定義厨だけ。
vb.net 2005 で質問です。 TabControlにTabPageを動的に割り当て、 さらに、コンテキストメニューに"閉じる"という項目を作って、 "閉じる"をクリックしたら、そのページを選択してる、していないに関わらず、 マウスの位置にあるページを動的に閉じるという処理をしたいんですが、 各ページのLeftやWidthは、親コンテナのTabControlの値しか入ってないようです。 現在のマウスの位置から、どのページが選択されているかを判別する方法って ないでしょうか?
TabPage の管轄にタブそのものは含まれてないからな。TabControl の管轄だ。 マネージドでやるなら TabControl の GetTabRect を回して合致するタブインデックスを調べる。
374 :
372 :2006/04/29(土) 19:59:26
>>373 わーい
判定できました。
ありがとうございます。ヽ(´ー`)ノ
このようなユーザー定義型で、createTimeの項目でソートをする方法を教えてください。 Private Structure searchFile Dim filePath As String Dim createTime As DateTime End Structure
IComparable 実装させろ
最近のプログラマは言語側でソート関数用意しないといけないのか? 少なくても10年前とかは、アルゴリズムの勉強やらで、交換法やら選択法やらクイックソートやら ヒープソートってもんを勉強したもんだが・・・
>>375 ICompareインターフェイスの比較関数を自分で書いて、Array.Sort(Array, IComparer) でソート。
>>377 今、大学生だけど、普通にやるよ>アルゴリズム
というか、せっかく2005にジェネリックがあるんだから、
汎用ソート関数でも書いてみたらどうでせう。
>>377 .NET では用意するのは比較関数。
それを使ってのクイックソートはフレームワークがやってくれる。
Array とか List<T> とか使うぶんにはな。
みなさんどうもです。 ICompareインターフェイスがよくわからないので、強引にソート関数作ってみます。
プログラムの世界も、かなり『ゆとり教育』なんですね。
>ICompareインターフェイスがよくわからないので 「よくわからない」じゃなくて、 MSDNライブラリを読めよ。 インタフェースがわからないんだったら、勉強汁
VB.net初めてまだ2日なんでご勘弁をww
ジェネリックでソート処理を共有しようとしたら、 タイプパラメータの制約を定義したり色々とめんどくなりそうだなw 最低限、ICompareを実装してるものに制約しなきゃならないな。
ICompare なんて無いってば
388 :
デフォルトの名無しさん :2006/04/30(日) 12:18:19
EXEファイルのアイコンにエクスプローラからDNDしてプログラムを起動したとき 何のイベントが発生しますか?デバックできなくて困ってます。 OnLoadが発生して起動時のコマンドライン引数にDNDのデータが来ると思ったのですが デバッガの起動時のコマンドライン引数に全角文字を入れても問題がないのですが、 アイコンにDNDするときに全角文字が入っていると例外が発生します。 よろしくお願いします。
意味がよく分からんが、取りあえず Main メソッドを自前で定義したらどうだ。
キーバッファの取得とクリアってどうすればよいですか?
dosの時代でもあるまいし、そもそもキーバッファなんてものは 存在しないんですが。。
Microsoft Visual Basic 2005 Express で、アプリケーションの発行をFTPでWeb鯖上へ行ったとき、 HTMLが作られて、その中に .application という拡張子のファイルへのリンクがあり、インストール となっていますが、IEでこれをクリックしてもXMLの内容が表示されるだけでインストールできません・・。 アプリを起動したときにバージョンチェックとかもできるようで、Webへの発行は便利そうなんですが、 なんかうまく動かないです。 この機能って具体的にどうやって使うのでしょうか? やはり、IISとかが必要になるのかしら?
392です。 ClickOnceってなまえの機能みたいですね。 これ、証明書とか書いてあるけど、なんか登録しないとだめなのかな?
VSで発行したなら、勝手に作られてる
395 :
デフォルトの名無しさん :2006/04/30(日) 18:35:03
VB.NET 2005の質問です MDIフォームから 子フォームを呼び出したときに親の方にはスクロールバーが出ますが なぜかホウスのホイールが効きません。 ホイールでスクロールさせるにはどのプロパティをいじったらいいでしょう 馬鹿っぽい質問でごめんなさい
アプリケーションのインストールされたディレクトリのパスを得るには? なんか、関数ないかしら?
>>396 少しは調べろ。
.NETFramework関数だろうがMyだろうが調べりゃ出てくる。
>>396 Path.GetDirectoryName
と
System.Reflection.Assembly.GetExecutingAssembly().Location
を組み合わせるとか?
ふと、VB6だと、App.Pathとかで取得できたなぁとか、懐かしくなる。
やってみます。 なんか、いっぱいあってどれが目的の動作をしてくれるのかよくわからんね。
初めて取り組むもんはなんでもそうさ
質問です。 問題1 文字列→数値の変換は標準関数を使用していたが、変換関数を自分で作成せよ。 問題2 100個要素を持つ配列整数変数を宣言し、その中に1,2,3、・・・100の値を入れる
質問じゃなくて宿題だろ
フォント名に対応するフォントファイルのファイル名を取得する方法はありますか? フォントフォルダの場所はSHGetSpecialFolderPath関数で取得できたので、 あとはファイル名だけがわかればいいのですが。
>>401 ヒントだけやろう。
> 問題1
Convert.ToInt32
> 問題2
int hairetu = new int[100];
for(int i=0; i<100; i++)
{
// この中の処理くらいは考えろ。
}
>>405 C# で、大体は書いた。あとは VB.NET で書き直せ。
407 :
デフォルトの名無しさん :2006/05/02(火) 18:56:00
現在ASP.NETでメールの受信を作っていますが、Quoted Printable形式 のデータをデコードしたいのですが、うまくいきません。 bace64はなんとかクリアしたのですが、Quoted Printable形式だと、C++ だとデコードするプロパティがあるようですが、言語がVBだと無いのでしょうか?
なんかつっこみどころ満載だぞ
質問させてください。 VB2005を使用しています WebBrowserからサイトを表示、フォームにID,パスワードを入力、 ログインボタンを押下という手順にしたいのですが、 どのプロパティを使用したらいいのでしょうか? どうやってもフォームに文字が入力できないのです。
どこが分からんのだ
VB.NETを最近始めたばかりです。 コントロール名を文字列(String型)に格納しておいて、操作をする コードはどのように記述したらよろしいのでしょうか。 MS-Accessの dim str1 as string str1="Text1" me(str)="aaaaaa" にあたるものです。 どうぞ宜しくお願いいたします。
コントロール名を文字列変数に格納するのではなく、 コントロールへの参照をControl変数に入れておきましょう。 どうしても文字列でコントロール指定したいなら HashTableでも使いましょう
リフレクション使ったら?(・∀・)
(・3・) エェー
417 :
409 :2006/05/03(水) 16:44:07
>>410 レスありがとうございます。
たとえばログインフォームに文字を入力する場合、
WebBrowser1.Document.GetElementsByTagName("input").Item(0).Value = "ログインID"
などとコードを書いても
「'Value' は 'System.Windows.Forms.HtmlElement' のメンバではありません。」
となってしまいます。
どんなコードであれば.Valueが使用できるのか教えていただけませんか?
もしくは別のアプローチでフォームに文字を入れるのでしょうか
>>411 レスありがとうございます。
リンクの方はWebBrowserを使用していないみたいです
ドキュメントで HtmlElement のクラスメンバ見れば分かるように Value なんてない。 .NET 2.0 の HTML DOM は、HTML 要素は全て HtmlElement 型で扱い、要素特有のメンバは扱わない。 で、value だろうが結局は属性に過ぎないわけで。 HtmlElement 調べれば属性を操作するメソッドはすぐ見つかる。
レガシーなWebBrowserコントロール使ってるのならHtmlElementクラスの エラーなんか出ずに正常動作するお。
解放されない COM オブジェクトの海に沈んで溺れてしまえ
CreateObjectでIE起動すればよいだけの話
422 :
デフォルトの名無しさん :2006/05/03(水) 21:58:15
ドキッ
openFileDialog1->FileName だとフルパスでファイル名を取得することになるんだけど ファイル名だけ取得したい場合はどうやたらいいのかな?
Path クラスのメソッド使え
DataGridviewを使用しているのですが、行き詰ってしまいました。 2つのフォームを使用しており、form1にDataGridviewが配置されており データを追加しています。 このDataGridviewのセルをクリックした時、クリックした行のデータをform2に 表示させたいのですが、可能でしょうか? どこを検索してもさっぱり見つからず、途方にくれております・・・
何が分からないのかが分からない まず順序立てて何が必要か考えてみろ
428 :
VBの初心者 :2006/05/04(木) 02:47:37
VBネットを始めたばかりの者です。こんばんわ。 実は、VBの教科書の問題ができなくて困っています。 サイズ10の配列Aのデータをウィンドウの テキストボックスに表示したり、テキストボックスに入力したデータを配列Aに保 存したりするプログラムを完成させよ。 なお、それぞれの命令はあらかじめ用意されているボタンが クリックされたときにのみ実行されるようにすること。 という問題なのですが、もしよろしければ教えてください。
問題点をはっきりさせろ
何が出来ないのだ 何が出来るのだ
Private 配列A(9) As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 配列A(0) = TextBox1.Text End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = 配列A(0) End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer For i = 0 To 9 配列A(i) = "" Next End Sub
Button1,Button2,TextBox1配置
>426
>表示させたいのですが、可能でしょうか?
>どこを検索してもさっぱり見つからず、途方にくれております・・・
できないわけないだろうよ
ちゃんと調べたのか?
Windows フォームのプログラミング -DataGridView コントロール (Windows フォーム)
http://msdn2.microsoft.com/ja-jp/library/e0ywh3cz.aspx をよく読め
多分やりたいことは
「DataGridViewのCurrentCellAddressを使って、DataGridViewのItemから要素を取り出す」
だろうから、そのコードをFormのDataGridViewのCellClick イベントに書け
Form1からForm2が見えないとか言うなよ
windows forms で、 あるフォームを(FormA) ShowDialog で表示させ、そのフォームの中から別のフォーム(FormB)を さらに ShwDialog で表示させたいのですが、この時、FormA → FormB が ShowDialog されたタイミングで FormA は閉じたいのですが、それがうまくいきません。 ShowDialog された自分自身を閉じつつ、別の Form を ShowDialog させるには どのようにすればよいでしょうか? アドバイスよろしくお願いします。
デジャビュを感じたが気のせいだろうか
436 :
デフォルトの名無しさん :2006/05/04(木) 15:36:12
Hide()でいいんならできないか?
VB.NETで値型の参照をコピーする方法はありますか? dim a as integer dim b as integer a = 100 b = 100 aにbの参照をコピーしたい で a = 300 としたらbも 300 となるようにa=Bとしたいんですが方法があれば 教えてください。
438 :
デフォルトの名無しさん :2006/05/04(木) 17:37:43
Int32使え
>>437 くだらない問題意識としかいいようがないな。
他にもっとやるべきことがあるだろうに。
まあオブジェクト型の変数にボックス化しとけばできないことはないんじゃない?
>>438 意味不明
>>437 変数のエイリアスを使いたいのだろうが、VB.NETではその様な機能は今の所無い
まあ、メソッドやサブルーチン内であれば擬似的にエイリアスっぽいことが出来るが
重要なのはVB.NETに向いた設計をしていればその様な機能は必要がないって事だ
Public Class ValueTypeRef(Of T As Structure) Private v As T() Public Sub New(ByVal v As T) Me.v = New T() { v } End Sub Public Property Value As T Get Return Me.v(0) End Get Set(ByVal value As T) Me.v(0) = value End Set End Property End Class Dim a As New ValueTypeRef(Of Integer)(1) Dim b As New ValueTypeRef(Of Integer)(2) a = b b.Value = 100 Console.WriteLine("a = {0}", a.Value) Console.WriteLine("b = {0}", b.Value) 配列をラップしてみた かなり気持ち悪いが
442 :
441 :2006/05/04(木) 20:27:33
配列にする必要ないな 今気づいた
445 :
443 :2006/05/04(木) 21:30:56
構造体が値型なのも知らないのか
みなさん、ClickOnceって使ってます? バージョンアップすると、アプリのパスとか変わってちょっとあせったけど、 今後はやるのかな?
以前、MS-Accessで開発をしていたものです。 基本的な質問で申し訳ありませんが、VB.NETのフォームには、 Accessでいうフォームヘッダというものはないのでしょうか。 フォームをスクロールさせても、必ず上部にオブジェクトが 固定されて表示されるものなのですが。
そう言う風に配置すればいいだけだろ。 Dock プロパティとか Panel クラスとか使え。
>>450 調べてみます。ヒントありがとうございました。
MSDNサブスクライバからダウンロードできるようだけど MSDN library June2006 使ってる?インストールできますか?
>>454 サンプルが載っているサイトに簡単にたどり着けました。
光ファイバーで首つってきます。
ファイバーを折らないように上手く吊れよ
VB5のときにたしかあったと思うLineオブシェクト?(VisioとかExcelによくある線の両端が動かせる棒線の部品) あれのVB.net版はどれなんでしょうか?
>>457 無くなった。
ラインだけでなくシェイプコントロールも無くなった。
.NETではGDI+を使用します。
なるほど、ありがとうございます。
っていうかMS様がわざわざVB厨向けに、園児の絵本なみにフレンドリーな 「移行ガイド」用意してくれてるんだから人様に質問する前にせめてそれぐらい読めよな。 MSDNライブラリのチュートリアルにだってそんなこと最初に書いてあるし。
461 :
デフォルトの名無しさん :2006/05/06(土) 00:24:19
質問なのですが、運送会社とのEDIシステムを作りたいと考えています。 店のPCでのシステムは完成したのですが、運送会社へは何をどう送るのかがわかりません。 単純にCSV形式のファイルを送れば良いのでしょうか。 開発経験者の方や詳しい方がいらっしゃいましたら、回答宜しくお願いします。 開発環境はVB.NET2003です。 当方、独学による設計です。
何を送るかなんてしらねーよw 運送会社へ聞けよボケ
釣りなのかマジなのかどっちなんだろうなw
来たなGW厨
465 :
デフォルトの名無しさん :2006/05/06(土) 01:19:59
気分を害してしまったのなら申し訳ありませんでした。 運送会社が無料で提供しているものを使えばいいのですが、 現状では二度手間になってしまっています。 資格も持っていない私が相談に行って、相手をしてもらえるのか 心配だったので、こちらで質問させていただきました。 素人の私が突然出てきてしまい、申し訳ありませんでした。
>461 相手が運送会社なら取りに来てもらえよ 取りに来て送り届けるのが運送会社の仕事だよ マジで聞いてるなら 465に書いているとおり、運送会社が無料で提供しているものがあるのなら それを使って送るようにシステム組みなおすのが筋ではないかね そもそも運送会社にとって上客ならセンターと連動した専用端末置いてくれるよ 上客でなければ相談に行っても営業所で軽くあしらわれるのがオチ
>>465 ここはやりたいことをVB.NETで実現する方法を聞くところだから明らかに
スレ違いだと思うが、無料のものがなぜ二度手間になるのかは聞きたい
ところだ。
実際にファイル送っているだけならEXCELでデータ入力してCSV保存して FTPソフトでアップロードすればいい。プログラムなんかいらね
Graphics.DrawString メソッドなどで物を描く際、 ドット単位になっていますが、これをミリメートル単位にする事は 可能なのでしょうか? 帳票があらかじめ指定されている際、長さを測って描く場合、 ミリメートル単位にしないと非常に時間がかかってしまいます。
PageUnit 使えばいいような気がする
>>471 解決しました。キーワードのヒントありがとうございました。
avast が定義ファイルを更新した時に出てくるようなやつとか、 MSNのメッセンジャーで誰かがログインしたときにタスクバーから飛び出してくるあれ。 あんな感じのメッセージの出し方をしたいのだが、Windowsに専用のAPIのようなものがあるのかしら? それとも、地道にフォームを描画するしかないのかな?
474 :
デフォルトの名無しさん :2006/05/07(日) 14:01:02
ASP.NETでWebアプリをつくりたくて、 今、「ASP.NETでいってみよう」を読みながら弄くってみたんだけど、 この本だと、設計の方法とかがわからない。 一応オブジェクト指向の基本はわかっている(つもり)けどWebは初めてなんです。 ASP.NETで設計とかパターンのようなものが学べるよい本はありますか?
『.NETによるエンタープライズソリューションパターン』(日経BP)
477 :
デフォルトの名無しさん :2006/05/07(日) 16:06:24
WindowsFormのDataGridでNULLを入力したいのですが、 どうすればいいでしょうか? ・何も入力しない→空文字 ・「NULL」→「NULL」という文字列が入力される。 ・「DBNull」→「DBNull」という文字列が入力される
ひょっとしてそう言う文字列を代入してるとか……言わないよな?
>>477 @DataColumn.DataTypeでString以外の型を指定する
ADataGridColumnStyle.NullTextにNullの代わりに表示したい文字列を指定する
480 :
デフォルトの名無しさん :2006/05/07(日) 17:29:43
Label.text = "あ" & vbTab & "い" なぜか間が開かず、 あい となります。どうやればタブスペースをあけられるでしょうか?
タブを半角空白に置換しておく
>>481 よく分からないのですが、
Label.text = "あ" & " " & "い"
こういう事でしょうか?ならばそれでは駄目で、
列の位置を揃えるためタブスペースを入れたいのですが。
タブだけ表示してみそ
派生クラス作って OnPaint にごりごり書く つっても数行だけど
LabelだとvbTabが使えなかったんで、TextBoxにReadOnlyプロパ ティをTrueにしたやつで代用したことがあったなぁ。
486 :
デフォルトの名無しさん :2006/05/07(日) 19:30:45
ほんとうは6.0の話題も入っているのですが、ここで質問させてもらいます。 6.0でpointというのはどのような機能なのですか。 そして、これを.NETで書き直そうしているのですが、できますか? いろいろ調べたのですが、どうもはっきりしないのです。 いまやっているのは、VB6.0で書かれている本を全部.NETで書き直そうしているのです。 アルゴリズムの入門書なので言語自体には説明はないのです。 すいませんがお願いします。 半分ぐらいは直してみたんですけどね。
何してるかも分からないコードを移植って凄いな
488 :
デフォルトの名無しさん :2006/05/07(日) 19:35:59
付け加えますと、picture1.pointというときに使う pointです。 よろしくお願いします。
489 :
デフォルトの名無しさん :2006/05/07(日) 19:39:11
>>487 いやもちろん、画像ででるから何をしているかは
大体分かるのですが(w
これでも、本の半分ぐらいは.NETに直したのです。
BASICを少しだけやったことはあったのですが、極めてみようと
今やっているのです。6.0と.NETをまとめて勉強しようと思い始めました。
490 :
デフォルトの名無しさん :2006/05/07(日) 19:46:57
本は多分皆さんご存知のものだとおもうのですが、 こういう場所でそのコードを書いて良いのかわからないので・・・。
ヘルプでpointとGetPixelが見つけられないのなら 素直に.NETの初心者向け書籍を買ったほうがよい
>>490 お前の読んでる本なんかわかるわけねーだろw
493 :
デフォルトの名無しさん :2006/05/07(日) 19:55:31
>>491 一応、本片手でやっているのですが・・・。
載っていないのです。
VB6.0の本にもpicutr1.pointの機能を使った物は載ってないし・・。
getpixelでしょうかね?
>>492 すんません(w
ヘルプも知らないのか?
わからないときはF1キーを押せと学んだよ。
このスレ本当馬鹿な質問者が現れると待ってましたとばかりに
叩く奴がワラワラ出てくるな。
まさに♪弱いものたちが夕暮れ〜を地で行っている感じw
そういう自分に虚しくならんのかね。
>>486 釣りでしょ?
君も虚しくないか
質問者はPointに対応するGDI+のメソッドが知りたいだけなのだが そんなことも知らないのかって言われるので初心者を装ったのでは
VB.NETを勉強してからVB6をやったほうが絶対効率良い
>>498 VB6の改造や移植を業務でするなら別だが、これから趣味でプログラム
しようという人にはVB6は覚える必要ないと思う。
SJISにコード変換したいんだが、例えば以前は StrConv(文字列, vbFromUnicode) って使ってたのだが、netだと無理? どうすればよいの?
.NET では文字列は文字列。 内部でどうこうとか無いので、意味がない。 で、バイト配列との相互変換が欲しいのなら System.Text.Encoding 使う。
先生、EncodingにShiftJISEncodingがのメンバがありません。 ていわれそうだ。
503 :
デフォルトの名無しさん :2006/05/07(日) 21:23:40
>>496 釣りじゃないです。
少し分かってきました。pointというのは
VB6のときはその地点での色を認識するものですよね?
pictureboxでは色の認識をするものは無いのですね?
getpixelを使おうにもbitmapでないとだめだから、pictureboxのままでは
できないのですか?
pictureboxのままでないと、円を描いたり、四角を書いたりできないから
困りますし、何かうまい方法はないでしょうか?
>>503 釣りにしか思えないけど。。
釣りじゃないなら、グラフィックに関してはこの命令をこう変えればいい、
っていう風にはいかないから(考え方がかなり違う)真面目に一から
勉強してくれとしか言いようがない。
っていうか、君VB6も分かってないんでしょ?
やっぱり釣りにしか思えんわ。
本気で言ってるならプログラミングなんて論外の馬鹿だと思う。
>>501 そういう理屈なのか
結局一端バイト配列使うしかないのね
やりたいこと大体実現できた
有り
>>503 Dim G As Graphics
Dim B As Bitmap
Dim C As Color
PictureBox1.Image = New Bitmap(...)
G = Graphics.FromImage(PictureBox1.Image)
G.DrawEllipse(...)
G.DrawRectangle(...)
B = PictureBox1.Image
C = B.GetPixel(...)
507 :
デフォルトの名無しさん :2006/05/07(日) 23:17:00
>>506 ありがとうございます。
これで少し勉強が進みそうです。
508 :
デフォルトの名無しさん :2006/05/08(月) 13:19:19
windowsサービスでActiveXコントロールは使用不可ですか?
別につかえんと言うことはないが
すごく初歩的な質問で申し訳ないのですが教えて下さい。 DataTableの項目をComboboxやListBoxに単純に追加する方法は無いでしょうか? 例えば[商品コード(int)]、[商品名(varchar(20)]というDataTable("商品リスト")の内容を Combobox.DataSource=DataSet.DataTable("商品リスト") Combobox.DisplayMember="商品名" Combobox.ValueMember="商品コード" を指定するのではなくて、 DataTableの内容を1行ずつ読み込み、非バインドモードでComboboxに追加していきたいと思います。 Combobox.items.addで追加するのかと思ったのですが、DisplayMemberとValueMemberが 指定できず困っています。 参考になるURLでも構いませんので教えて下さい。
何がしたいのか読めん その ComboBox のアイテムをどう扱いたいんだ? Items.Add で追加するのと DisplayMember/ValueMember がどう関わる?
>>511 うまく説明できず申し訳ないです。
DataTable("商品コード")の内容をComboboxの選択項目として単純に項目として追加したいだけです。
ComboboxにはDataBindings.Add(New Binding("ValueMember"・・・)で他のDataTableがバインドします。
Combobox.items.addが見当違いだったりごめんなさい。
513 :
デフォルトの名無しさん :2006/05/08(月) 13:44:42
現在windowsアプリケーションでフォームに貼り付けるActiveXコントロールを使っています。 それをwindowsサービスに作りかえたいんですが、 そのままだとフォームがないのでどのようにしたらいいかさっぱりです。 どのようにすればいいでしょうか?
>>510 SQLで重複無しソート済みの項目を抽出してから、ループでComboBox
に追加すれば? バインド関連は一切触らず、純粋にデータをAddする
感じ。
項目が頻繁に追加削除されるなら、タイミングをよく考えないとあかん
けど。
516 :
デフォルトの名無しさん :2006/05/08(月) 14:12:39
同じネットワーク内のコンピュータのNetBIOS名の一覧を取得するような アプリケーションを作りたいのですが、方法が見つかりません。 System.Net.Sockets.TcpClientをつかって137番ポートや138番ポートに 接続しても拒否されてしまいます。 System.Net.Dnsを使うと、取得されるのはNetBIOS名ではなく ドメインネームです。 みなさんは、WindowsのマイネットワークみたいにNetBIOS名の 一覧を取得する時、どうしていますか? 教えて頂けたら幸いです。 よろしくお願いします。
>>514 レスサンクスです。
>ループでComboBoxに追加すれば?
問題はそこなんですよ。
For eachでループする予定なのですが、ValueMemberとDisplayMemberをそれぞれ指定して
Addする方法がわからないのです。
根本的に間違っているかもしれないので、もうちょっと自分でも調べてみます。
>>516 .NET の標準ライブラリじゃ対応してないはず。
WNetOpenEnum ほかの Win32API で。
520 :
510 :2006/05/08(月) 17:01:38
>>519 サンクスです。
これを参考にして作ってみました。
Comboboxの項目追加はこれで出来ました。
実際に使う時は、本来DataBindingしたかったDataTableのRows.Itemの値をComboboxにセットしたり、
DataTableに書き戻す際にComboboxからValueMember相当として扱っている値を取り出す必要がありますが、
Comboboxに値をセットする・ValueMember相当の値を取得する専用のクラス作って解決しました。
情報大変感謝です。助かりました。
521 :
デフォルトの名無しさん :2006/05/08(月) 18:12:57
>>518 UDPパケットを137番ポートに送って、返って来たストリームから
名前を取得するという方法はどうなんでしょうか?
>>521 多分凄く効率が悪い。
キャッシュを使えないわけだし。
523 :
デフォルトの名無しさん :2006/05/08(月) 19:13:22
>>518 >>522 いろいろありがとうございます。
ネットワークアドレスが異なるローカルIPも名前解決の対称なので、
UDPパケットを137番ポートに送るしかないかなと思います。
それにしても、DNSサーバを入れていないVPNのWindoowsネットワークなんて、
うちの客以外にあるのかなー??
524 :
523 :2006/05/08(月) 19:15:43
ちなみに、WINSもない。
定期的にマイネットワークの一覧をハードコピー取って OCRに通してコンピュータ名を取得
100台そこらじゃWINSは無くても大丈夫だが、200台ぐらいになってくるとやや微妙。
.NET2003です。 アクセスをデータベースにしてリストビューに表示しようとしています NULLの時に分岐させたいのですがIFで正確に判定をしてくれないです。 原因分かる方いましたらご教授願います。 Dim DataSet As DataSet = DataSet11 Dim iRow As Integer = DataSet.Tables("テーブル1").Rows.Count For iCount As Integer = 0 To iRow - 1 If IsDBNull(DataSet.Tables("テーブル1").Rows(iCount).Item(0)) = True Then lvwsoft.Items.Add("") Else lvwSoft.Items.Add(DataSet.Tables("テーブル1").Rows(iCount).Item("列1")) End If If IsDBNull(DataSet.Tables("テーブル1").Rows(iCount).Item(1)) = True Then lvwSoft.Items(iCount).SubItems.Add("") Else lvwSoft.Items(iCount).SubItems.Add(DataSet.Tables("テーブル1").Rows(iCount).Item("列2")) End If If IsDBNull(DataSet.Tables("テーブル1").Rows(iCount)) = True Then lvwSoft.Items(iCount).SubItems.Add("") Else lvwSoft.Items(iCount).SubItems.Add(DataSet.Tables("テーブル1").Rows(iCount).Item("列3")) End If
で、結局どこでどうなるの? //毎回コレクション経由ってキモス
529 :
527 :2006/05/09(火) 15:30:09
初心者がいろいろ試してるもんで見苦しいのは申し訳ないです データベースの列2と列3に一つNULLがあるとします 列2の一つのデータがNULLの場合は問題なく”NULL”だと判定してくれるのですが 列3の場合はデータはNULLなのに”NULL”だと判定してくれず このIF文だとELSEを通過してしまいます
530 :
デフォルトの名無しさん :2006/05/09(火) 15:35:27
>>529 釣りか?
>>527 だと3つ目のIf文でIsDBNullで列3じゃなくて、そのレコードがNullか見てるぞ
コーディングが終ったら一から自己ソースレビュー(ようするにコードの見直し)位やれ
531 :
527 :2006/05/09(火) 15:47:56
ごめんなさい、いろいろ試しながらコピペしたんでコピペミスでした 3つ目のソースは↓です If IsDBNull(DataSet.Tables("テーブル1").Rows(iCount).Item(2)) = True Then lvwSoft.Items(iCount).SubItems.Add("") Else lvwSoft.Items(iCount).SubItems.Add(DataSet.Tables("テーブル1").Rows(iCount).Item("列3")) End If これでもダメです
532 :
デフォルトの名無しさん :2006/05/09(火) 16:02:05
DataSet.Tables("テーブル1").ColumnName(2)には何が出力される?
DO AS INFINITY
534 :
527 :2006/05/09(火) 16:11:29
>DataSet.Tables("テーブル1").ColumnName(2) これはリストビューの事でいいのですかね? NULLの場合、エラーになって出力されないです 下位変換しないで呼び出せる、オーバーロードされたアクセス可能な 'ListViewSubItemCollection.Add' はありません。 と追加情報が出ます
535 :
デフォルトの名無しさん :2006/05/10(水) 09:04:12
質問です。 テキストボックスの背景を透明にする方法を教えて下さい。 HTMLじゃなくて、フォームがコンテナのテキストボックスです。
536 :
デフォルトの名無しさん :2006/05/11(木) 09:32:19
VC++って、IPアドレスコントロールがあるけど、VBにはありますか? 調べた限り、無いですよね? みなさん、VBでIPアドレスを入力するときって、どうしていますか? できればきれいなGUIを築きたいですよね。 ご教授願います。 よろしくお願いします。
どのように作ればよいかいいアイディアがでないので質問します。 現在、ある文字列の中から漢字が有れば返値をだすように考えています。 考えているのが、JISコードの[0020]〜[2576]以外が有る場合に戻り値を返すというのものです。 FindメソッドではDo untilなどで検索すればよいのかもしれないのですが、非常に多くの件数を 処理するのでもっと効率のよい方法があればと思います。よろしくお願いいたします
539 :
デフォルトの名無しさん :2006/05/11(木) 11:25:20
正規表現
540 :
デフォルトの名無しさん :2006/05/11(木) 14:41:40
.NetFrameworkって、ExcelやWordのクラスがあるんですか? あるのなら、教えていただけませんか? WindowsフォームからExcelファイルをVBAみたいな感じで作る 必要があるんですよ。 よろしくお願いします。
541 :
デフォルトの名無しさん :2006/05/11(木) 14:55:52
情けないほどの初心者です。。 objDT = Session("ShoppingCart") If (Request.QueryString("ProductID") <> "") Then Dim objConn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Inetpub\wwwroot\fs.mdb") Dim objDA As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM rs_product WHERE ProductID=" & Int32.Parse(Request.QueryString("ProductID")), objConn) objDA.Fill(objDS, "SelectedProduct") Else Response.Redirect("product.htm") End If このページにじかにアクセスしようとすると、ショッピングカート内に値があってもproduct.htmのページにいってしまいます。 どのようにCODEを書き換えればよろしいでしょうか? 詳しい方がいらっしゃいましたら、教えてください。
>>540 .NetFramwork自体は持っていない。
ExcelやWordがインストールされていれば
そのコントロールが.NETから呼べるから
それを使う。
とうぜんVBAで普通にやってるように
各種オブジェクトをVB.NETから呼び出して使える。
ExcelのワークシートやWord文書ファイルも作成できる。
ただしきちんとやるのはめんどくさい。
>>541 まず自分がなにやってるのか理解しようぜ。
クエリ文字列とかセッションとか理解してないだろ。
>>541 他に product.htm にリダイレクトする条件がないのであれば
Request.QueryString("ProductID")
が空文字("")である以外に考えられない。
だからまずそのこと(条件)を確認する
546 :
デフォルトの名無しさん :2006/05/11(木) 15:37:12
早速の回答ありがとうございます。
>>544 さん
まだまだはじめたばかりなもので。すみません。
>>545 さん
ご丁寧にありがとうございます。
ProductIDには確かに値がありません。
といいますのも値を入れてしまうと商品がカートに追加されてしまうからです。
ただ単純にカートの中身をチェックしたいだけなのです。
カートの中身をチェックするリンクがつくりたいのです。
逆に
Else
Response.Redirect("product.htm")
を消してしまいますとエラーになってしまいます。
「ショッピングカート内に値がある」 ということは "ProductID"で指定されるところのテキストボックスか何かに 「値が入力されている」ってことと同意なの?
548 :
デフォルトの名無しさん :2006/05/11(木) 15:53:54
商品の一覧から買いたい商品の横にチェックを入れて[カートに入れる]ボタンを押すとか 買いたい商品のページを表示してからそのページにある[カートに入れる]ボタンを押すとかして はじめてショッピングカートに追加されて欲しいなぁ・・・ ProductIDに値を入れただけでショッピングカートに追加されて欲しいくないなぁ・・・
SQLサーバのデータベースのテーブルにcsvファイルを読み込んで 一気に書き込みたいのですが、どういうコードを書けばいいか分かりません。 どこか参考になるとこを教えてください。
551 :
デフォルトの名無しさん :2006/05/11(木) 16:07:27
>>549 bcp -U user -P pass -f import.fmt -i data.csv
>>550 書き方が曖昧すぎました。
とりあえずcsvファイルの読み込みはできていて、テーブルへの
レコードの追加、更新の方法が分からないのです。
553 :
デフォルトの名無しさん :2006/05/11(木) 16:20:59
説明不足ですみません。
>>547 さん
ショッピングカート内には実際のProductIDはありません。ProductIDをもとにデータベースからイメージ、価格等を引っ張ってきてそれがカートのDATAGRIDに
あります。
>>548 さん
あ、いちよう商品詳細ページのカートに入れるというボタンをおすと、URLパラメーターにProductIDがviewcart.aspx?ProductID=001
という形で転送されるようになってます。。
>>552 CSV以外で追加更新したことはあるの?
>>553 とりあえずQueryStringに001が入るようになるまでがんばれ
>>554 ,555
DAOの時代に一通りのことはやっていましたが、vb.netを使うのは
初めてで・・・ 恥ずかしい質問でしたね。
554を少しみたのですが、多分いけそうです。どうもありがとうございました。
>>541 > このページにじかにアクセスしようとすると、ショッピングカート内に値があってもproduct.htmのページにいってしまいます。
つうことは、ショッピングカートに商品がないときだけproduct.htmページに遷移してほしいってこと?
だとしたら、objDTがDataTableと仮定すると
CType(objDT, DataTable).Rows.Count > 0
かどうかの判定がどこかで必要になるんとちがう?
漏れが推理するに、おそらく
>>541 で提示されているコードは
商品選択後にショッピングカートの中身を表示するページのコードの一部なんだろうな。
だとすると、前からの遷移でなく「直接」そのページにアクセスしちゃったら
"ProductID"は空だから、判定文でproduct.htmにいってしまうのは当然だな。
で、単にショッピングカートの中身を表示するだけの目的でもこのページを
使用したいというのなら、「カートの中身を表示する」みたいなボタンを作って
このボタンを押したときにもこのページに遷移するように実装したうえで、
このボタンによって遷移してきたかどうかの判定を付け加えてやる必要があるんじゃないかな。
そんで、ボタンによる遷移(=ただの中身表示)と判定されたときは
>>558 のようにobjDTをキャストしてやって中身を一覧表示すればいいね。
ま、そのコードはすでに実装されているはずだけどね。
560 :
デフォルトの名無しさん :2006/05/11(木) 17:32:31
皆様有難うございます。たすかります。
>>588 さん
その通りです。ショッピングカートがからのときだけ、product.htmのぺーじ(単純にカートは空ですというページ)に移動ということです。
>>589 さん
おそれります。早速ためしてみます。
561 :
559 :2006/05/11(木) 17:34:33
あと、ショッピングカートの中身を表示するページは、ただそれだけのページとして独立して作っておくべきだな。 で、商品選択後の表示か単なる中身表示かの判定は、ページ遷移コントローラを作ってそれにまかせるべきだな。 もし商品選択後の遷移なら、コントローラからDBアクセスを担当するクラスにProductID渡して 抽出処理やってもらって(抽出結果はSession変数内のobjDTに格納してもらう)、 それからショッピングカートの中身を表示するページに遷移するような実装にすればいいし。
VB.NET2003を使用しています。 メインアプリケーションとプラグインモジュールの様な形式でアプリを 作成したいと考えています。 プラグインモジュール(クラスライブラリdll)を動的にメインアプリケーションに ロードし、プラグインモジュールのフォームをメインアプリケーションで MDI子フォームとして表示したいと思っています。 動的でなければメインアプリケーションの参照設定に追加すれば 行いたいことは実現できるんですが・・・ <DllImport 〜 という手法を試みているんですが、 「PInvoke 項目 (フィールド、メソッド) は static でなければなりません。」 という例外が発生してしまいます。 どのようにすればこのエラーが回避できるか、またはこのようなアプリを 開発する場合、「このような方法で開発するのが一般的」みたいなアドバイス でも構いませんので、何か良き助言を宜しくお願い致します。
C++/CLIを使ってラッパーのクラスライブラリを書く
つか DllImport できるのはアンマネージドの DLL だけ。 .NET で作った DLL(アセンブリ)は System.Reflection.Assembly クラスの Load とかを使う。 一般的な手法としては以下のような構成になる。 ・プラグインのインターフェイスを、インターフェイスまたは抽象クラスとして用意する。 これは独立した DLL として、メインプログラム・プラグインの両者が参照する。 ・プラグイン DLL は、上記のインターフェイスを実装する。 ・メインプログラムは、 ・動的に DLL をロードする。 ・Assembly 型の GetTypes などを使って型情報を探索し、プラグインインターフェイスを実装するクラスを見つける。 ・Activator.CreateIntstance などを使ってインスタンスを生成し、それをプラグインインターフェイスの型にキャストする。 ・あとはそのインスタンスを使って処理を行う。 ちなみに、アセンブリのアンロードは基本的にできない。
565 :
563 :2006/05/11(木) 19:01:34
すまん DllImportに脊髄反射してしまった 無視してくれ
566 :
562 :2006/05/11(木) 19:24:08
>>564 早速のレスありがとうございます!
なんかもっと簡単な方法で実現できると思っていました。
甘かった・・・
中間インターフェイスDLLは発想できなかったです。
Assembly云々は全く触ったことがないので、もう少し勉強してみます。
目標としては、インストールされている(DLLファイルが存在する)場合のみ
表示されるメニューやツールボタン等(DLLファイルからロードする)を実装した
アプリに仕上げたいと考えています。
つうかDLLImportするより簡単でない? そうでもないか…
DllImport は静的にしか書けないから、それに対応するのは参照設定。 Assembly.Load に対応するのは LoadLibrary だな。
>552 テーブルに追加するためのSQLは書けるのか? 書けるんだったら Dim DataConnection As System.Data.SqlClient.SqlConnection Dim SQLCommand As System.Data.SqlClient.SqlCommand 'DBとの接続をOpen DataConnection = New System.Data.SqlClient.SqlConnection(DataSourceの接続文字列) DataConnection.Open() '登録するSQLを生成 Dim sbSqlCommand As System.Text.StringBuilder sbSqlCommand = New System.Text.StringBuilder("") sbSqlCommand.Append("INSERT TABLE") sbSqlCommand.Append(" VALUES(") sbSqlCommand.Append(INSERTする値を列挙) sbSqlCommand.Append(");") 'SQLを実行する SQLCommand = New System.Data.SqlClient.SqlCommand(sbSqlCommand.ToString, DataConnection) SQLCommand.ExecuteNonQuery() 'OpenしたらClose DataConnection.Close() をループで実行したらとりあえず何とかなるだろ DBがmdbファイルならSystem.Data.SqlClientの代わりにSystem.Data.Oledbだったかな まあがんがれ
570 :
デフォルトの名無しさん :2006/05/12(金) 14:23:45
指定したIPアドレスの137番ポートにUDPで接続して、そのIPアドレスを 持つマシンのNetBIOS名を取得するというアプリケーションを作っているのですが、 netbiosnsの通信手順やコマンドがよく分かりません。 GoogleやMSで調べても、NBTSTATぐらいしか出ないし・・・ どなたかご存じないですか? よろしくお願いします。
どうしてもわからないので質問させてください。 現在VBからWordを起動させて、文書を印刷するアプリを作っているのですが、 Word文書内のチェックボックスを制御できなくて困っています。 制御したいチェックボックスはWord内のテーブルにあるのですが、この場合、 チェックボックスにどうやってアクセスするのでしょうか? Dim wDoc As Word.Document wDoc.checkbox1.value = True 上のコードでテーブル内ではなく文書に貼り付けているチェックボックスは制御できました。 よろしくおねがいします。
572 :
デフォルトの名無しさん :2006/05/12(金) 17:38:29
OpenFileDialogの名前ってどうつけてますか? まさにOpenFileDialogだから名前を変えようがないのだけど、 それだとクラス名と衝突してしまう でもそのままだとOpenFileDialog1になってなんだかいや
メソッド内のローカル変数で済ますからどうでも良いな
そっか そうだね サンクス
575 :
デフォルトの名無しさん :2006/05/13(土) 00:13:00
ActiveDirectoryドメインにログオンしているユーザIDって どうやって取ればいいんでしょう。 WindowsIdentity.GetCurrent? それとも、環境変数でしょうか?
WindowsIdentityで取れそうな気がするが… 気がするだけ…
577 :
デフォルトの名無しさん :2006/05/13(土) 02:10:41
>576 ありがとうございます。
>>578 返答ありがとうございます。
そのページを読んだ後、コード変更無しで上記のコードをもう一度実行したところ、
すんなりチェックボックスを制御できました。
ありがとうございました。
すげえ、プログラマの知識だけでプログラムの実行結果が変わるのか
>>581 たぶんコードでチェックボックス指定する時に間違った名前を打ち込んでいたんだと思います。
Word内のコントロールについてはインテリセンスでないので確認できませんでした。
578の紹介してくれたページは自力で調べているうちにもチラ見していたのですが、
今回しっかり読んで勉強になったので、感謝しています。
完了したスレッドの再利用というか、再処理って可能ですか? Dim pThread As Thread = New Thread(AddressOf DoTheTask) pThread.Start() pThread.Join(5000) ' 終わるまで待つ If Not pThread.IsAlive Then pTask.Start() End If こんな感じでもう一度動かしたいんですが、2回目の.Startで例外が発生します。 もう一度Newすれば済む話かもしれませんが、再利用したいなと思って。
なら完了させなきゃいいじゃん。 あるいはスレッドプール使うか。 @ITにもCodeZineにもマルチスレッドの解説があるから とりあえず読んだ方がいいよ。
>もう一度Newすれば済む話かもしれませんが、再利用したいなと思って。 なんで?
死者を蘇らせてどうする
初歩的な質問で申し訳ないんですが test score number of scores average score best score test scoreを入力する度にスコア数、平均スコア、ベストスコアを 算出するプロジェクトのコードを教えてもらえますでしょうか・・・ カウンターやらループなどうまく使えないです;
>>585 ありがとうございます。
とりあえず両方読んでみます。
>>586 ,587
なんと言うか、そこに使える(かどうか判らないけど)スレッドがあるんだから、
どうせならそのまま再利用したいなと
お皿が汚れたからといって、そのまま捨てるのはもったいないので、
洗ってもう一度使う感じです。
書き忘れました。 ボタンは Enter Score, Reset, Exitの3つです。 どうぞよろしくお願いします
591 :
デフォルトの名無しさん :2006/05/14(日) 16:02:02
toolstripって青色をしてるんですが、これをVS2005のツールバーみたいに 灰色にするにはどうすればいいですか?BackColorを変更したら、 丸みがなくなってのっぺりしてしまい、なんか違うみたいだし。
>>588 スコアを入力するたびに
1、カウンタでスコア数を数える。
2、加算してスコア数で割れば平均が出る。
3、直前に入力したスコアと比較して、大きい方を表示。
宿題は自分でやらないと意味ないよ。
593 :
デフォルトの名無しさん :2006/05/14(日) 22:37:52
会社のPCがWindows MEなんですが、VBでシステム開発できるでしょうか? あと、自宅のPCはXPなんですが、自宅で作ったVBのソフトを会社のPCで実行できるでしょうか? 全部できない場合、ME上でシステム開発するのに最適な言語はなんでしょうか? すいません、よろしくお願いします。
しないのが一番だと思うよ。
VBAですれば?
596 :
デフォルトの名無しさん :2006/05/14(日) 23:36:36
ありがとうございます
597 :
デフォルトの名無しさん :2006/05/15(月) 01:26:53
>>593 仕事で使うものを開発するならそれに必要な機材は会社から提供してもらうのが筋だな
それを認めない会社ならあえて作る必要も無いよ
598 :
593 :2006/05/15(月) 07:36:01
資金的に余裕の無い会社なんで、システム開発で合理化と生産性を向上して利益あげようと思ったんですが ショボーン
>>598 会社の合理化のために社員が負担するのは、いかがなものかと
あなたのやろうとしてるのはタダのサビ残
601 :
598 :2006/05/15(月) 09:58:34
ありがとうございます! さっき家からもってきたVBのサンプルを会社で起動してみました。ちゃんと動いた理由がわかってうれしいです。 実績あげたらパソコン交換してもらえると思うんで頑張ります!
MEに既にFramework2.0が入っているなんてマニアックな会社だな
WindowsUpdateで、表示されるすべての項目を選択しているのかもな。
604 :
デフォルトの名無しさん :2006/05/15(月) 12:24:46
あれは「カスタム」の方のボタンを押さないとダメだろ
プロジェクトの発行で作った setup.exe なら、必要に応じてネット経由でインストールしてくれるでしょ。
607 :
601 :2006/05/15(月) 13:04:06
VBのサンプルは動くんですが それしか自分にはわからないんですが たらー
この回答でsetup作ってるとは思えないが
609 :
562 :2006/05/15(月) 14:16:12
>>564 ヘルプやらなんやら自分なりに調べてみています。
今更ながら「Assemblyってこういう事なのか!」などと
発見ばかりなのですが、でもまだよく理解できません。
試しに
Form1をもつMyAPP1と、
Class1とをもつMyDLL1
を用意して試しています。
Form1にボタン(Button1)を配置し、Clickイベントで
MyDLL1のClass1内のTime_Show()というプロシージャを
呼べるように実装したいと思っています。
610 :
562 :2006/05/15(月) 14:17:58
Public Class Class1 Public Function Time_Show() System.Windows.Forms.MessageBox.Show(Now()) End Function End Class
611 :
562 :2006/05/15(月) 14:18:28
MyAPP1のForm1.Button1.Clickイベントで Private Sub Button1_Click( [省略] ) Dim asm as [Assembly] Dim dllfile as string = "c:\hoge\MyDLL1.dll" 'ファイル名を指定してアセンブリを読み込む asm = [Assembly].LoadFrom(dllfile) 'アセンブリの完全限定名を指定してアセンブリを読み込む asm = [Assembly].Load("System, Version=1.0.5000.0, Culture=neutral, " + _ "PublicKeyToken=b77a5c561934e089") '現在のコードを実行しているアセンブリを取得する asm = [Assembly].GetExecutingAssembly() '現在のアプリケーションドメインに読み込まれているすべてのアセンブリの完全限定名を表示する Dim asms As [Assembly]() = AppDomain.CurrentDomain.GetAssemblies() Dim a As [Assembly] For Each a In asms Console.WriteLine(a.FullName) If a.GetName.Name = "MyDLL2" Then 'Activator.CreateIntstance などを使ってインスタンスを生成 Dim act As Activator Dim ins As Object ins = act.CreateInstance(a.GetType, BindingFlags.CreateInstance) '★ここからどうすればいいのかわかりません。★ End If Next a End Sub
612 :
562 :2006/05/15(月) 14:18:59
とやってみたものの、上記★の箇所でどうすればいいかわからなくなりました。 この例の場合、具体的にどうすればMyDLL1.Class1.Time_Show() を MyAPP1から実行できるようになるのでしょうか? 長ったらしい文章&連投&教えてクレ君で申し訳ありません。
Private Sub Button1_Click() Dim C As New Class1 C.Time_Show() End Sub
MyDLL1.Class1
615 :
562 :2006/05/15(月) 15:12:10
なんで 564 に > ・プラグインのインターフェイスを、インターフェイスまたは抽象クラスとして用意する。 > これは独立した DLL として、メインプログラム・プラグインの両者が参照する。 って書かれてるか分かる? > ・プラグイン DLL は、上記のインターフェイスを実装する。 とか > ・Activator.CreateIntstance などを使ってインスタンスを生成し、それをプラグインインターフェイスの型にキャストする。 とか。
617 :
562 :2006/05/15(月) 16:02:07
インターフェイスとしてDLLInterfacesというDLLを作成しました。 DLLInterfaces.dll Public Class Interface1 End Class つまり今回の例の場合、 MyAPP1にDLLInterfacesを参照設定し、 MyDLL1にもDLLInterfacesを参照設定しなければならないと いうことですよね? でも正直なところ、具体的にどのように上記のInterface1クラスに 記述し、MyDLL1にどのように実装すればいいのかわかりません。 > ・Activator.CreateIntstance などを使ってインスタンスを生成し、 これはMyAPP1.Button1_Click()でInterface1クラスのインスタンスを 生成するということで良いのしょうか?
取りあえず抽象クラスとかインターフェイスとか、MSDN やら Google やらで調べてこい 話はそれからだ
619 :
562 :2006/05/15(月) 16:45:47
抽象クラスやインターフェイスを調べて出直してきます!
620 :
デフォルトの名無しさん :2006/05/15(月) 17:58:37
みなさん、クリスタルレポートとかするときは、どんなところを参照しています? なかなか参照するところは見つからなくて、困っています。 教えて下さい。 参考にしたいんです。 よろしくお願いします。
621 :
会社はME :2006/05/16(火) 07:21:13
昨夜300秒シリーズのビデオ講義見てたら、実行ファイルはexeかdllっていってました。 自分がサンプルで走らせたファイルの拡張子はvbsでした。 これはVBの実行ファイルではないんでしょうか?
はい、違います。 それは、VBスクリプトですね。
623 :
621 :2006/05/16(火) 09:58:07
うぎゃー そうですか・・・ たらー 自宅PCの方、ハードディスク整理して空きスペースつくりました。 今度の土日expressダウンロードして300秒の右側にある説明みて実行ファイル作ってみます
>>621 すごいオチだったが、VBSでできるものをVB.NETにする意味あんのか
625 :
562 :2006/05/16(火) 10:25:06
自分なりに少々調べてみました。
ようやく指摘されていた事が少しずつわかってきました。
Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples
に「WinForms-Inheritance-Vehicle」っていうのがありました。
これをみて
>>564 の
> ・プラグインのインターフェイスを、インターフェイスまたは抽象クラスとして用意する。
> これは独立した DLL として、メインプログラム・プラグインの両者が参照する。
という意味が見えてきました。
これは統一されたインターフェイスを持つプラグインを複数開発するのには
良いなと思いました。
しかし、今回自分が作成したいのは、イメージ的には
mmc.exe の様なものでプラグインは.mscファイルの様なものです。
例えれば、SQLServerのEnterpriseManagerみたいな感じです。
まぁ上記サンプルを発展していけば近づけそうな気もしてきました。
まだ
> ・Activator.CreateIntstance などを使ってインスタンスを生成し、
という辺りが調べられていないので、もう少し調べてきます。
でも、お陰様でやってみたいことが実現できそうです。
>>624 上のほうでシステム開発と言っているからTeam Suiteくらいが必要じゃないのか
628 :
会社はME :2006/05/16(火) 12:31:53
いろいろありがとうございます スーツチーム?、ぐぐってみます 知識ゼロなんですけど、今の職場がもしコンピュータ使いこなしたらすごく変わることだけ分かります 少しずつ、を繰り返して、会社全体のOSのようなものを作りたいです
VBで正符号付きの数値型のデータを扱う方法ってありますか? あれば教えて頂きたいのですが…
Dim A As Single A = +123.456
付ける意味ないだろ 数値型としては 表示する際に付けるかであって
632 :
デフォルトの名無しさん :2006/05/16(火) 15:02:45
処理中に表示される砂時計の代わりに、進行状況がループされるプログレスバーを使いたいと思います。 あれはVS2005で提供されているコントロールですか?
「正符号付きの数値型のデータ」って意味不明すぎ
>>632 古より名を変え、形を変えて存在しています。
いや、ループするのは用意されてないでしょw XPの起動画面に出て来るような奴でしょ?
636 :
デフォルトの名無しさん :2006/05/16(火) 18:32:23
質問させてください。 今考えているプログラムでテキストボックスに書かせた 文章(これはプログラムコードなのですが)をプログラム コードとしたいと考えています。 ところがテキストぼっくに書かせた文章を テキストに出力させるのはどんな本にも載っていまし問題ないのですが、 このテキストに書かせコードをVBで読み込ますことはできないのですか? そんなに難しいことではないと思うのですが・・・。 ユニックスとかのプログラムってテキストに書かせたのをコンパイルするのですから テキストでコードを書くというのは昔は普通だったのですよね?
>>636 vbscriptを吐き出して実行させることくらいはできるんじゃまいか
639 :
デフォルトの名無しさん :2006/05/16(火) 18:39:05
>>636 >>638 レスどうもです。
察しのとおり、ド素人です。
どんなことをやるべきですかね?
>>636 そのテキストボックスに入力したプログラムの部分を、どうやってコンパイルするかだな。
>>640 そうなのです。
テキストボックスに書かせたコードをいったんメモ帳に書かせておいて、
それをソフトに読ませれば完了だと思っていたのですが
そんなに簡単ではないのですね・・・。
インタープリター作れば簡単じゃん
>>641 直接コンパイラー呼んで、書き出したファイルをコンパイルする方法もありだが、開発環境が入ってないとだめだしなぁ。
>>642 kwsk
>>644 なんと .NET Framework の実行環境はコンパイラまで含んでいるんだぜ
>>635 プログレスバーのプロパティをよーく調べてごらんよ。
CodeDOM使えばいいんじゃね? ・・・既にURL貼ってあったか。
なぜその日本語には突っ込まないんだ
>ユニックスとかのプログラムってテキストに書かせたのをコンパイルするのですから >テキストでコードを書くというのは昔は普通だったのですよね? 今でも普通だと思うが… VB.NETだってそうだが…
フォームデザイン部を含めて動的に書いたら尊敬はするよ。w 大昔のWinMainから書くよりはちょっとマシだけど。
652 :
632 :2006/05/17(水) 10:28:00
みなさんレスありがとうございました。 [ProgressBar]の[Style]プロパティを[Marquee]にしたところ、ぐるぐる回るプログレスバーが実現できました。 かっこよス(・ω・)
653 :
358 :2006/05/17(水) 11:01:22
VBRUN*.DLL とかで聞きます。 当然、正規のVBのライセンスは持っているので、 ランタイム入りのインストールファイルを配ってもOKなはず。 ここで気になるのが、 最近、WINEとか称して、無理やりLinuxでWindowsをエミュレートする環境があるんですよ。 こういった環境へのインストール、 こういった環境へのインストールを前提としたインストールファイルの配布。 このあたり、ランタイムDLLの再配布ライセンス的にどうなんですかね。 ようは、非MS環境での使用は、合法?非合法?
あ、数字間違った、、、。
VB2005ExpressEditionで質問です。 TreeViewで実行中にノードの追加や削除ができるプログラムを作りました。 で、終了時にそのノードの構成を丸ごと保存して、次の実行時に再現したいのですが いい方法はないでしょうか?
>>656 卵が先か鶏が先か・・・
Treeviewに最初に表示してたのは一体なんだったんだ? それ次第の話じゃないか?
658 :
656 :2006/05/17(水) 16:41:21
>>657 初回起動時には大元のノードが1個だけの状態で、ユーザーが自由にノードの追加や削除、
名前の変更などができる仕組みのアプリなんです。
で、ユーザーが好きに作ったノードのツリー構造を保存して
次回起動時に復元したい、と思っています。
シリアライズすればいいんじゃないの? ノードそのものを。
質問です。 FormのLoadイベントで、DBへアクセスしてデータを取得すると、 その間(2,3秒)は画面が表示されず、レスポンスが悪い感じになりますよね? 現在、画面をEnabled=Falseで開いて、データ取得後にEnabled=Trueにしてみたり、 色々試行錯誤しているのですが、何かいい方法はないでしょうか?
>>660 DBアクセスは画面表示とは別のスレッドで行う。
そのスレッドをスタートした直後にApplication.DoEventsしておく。
662 :
656 :2006/05/17(水) 17:15:48
>>659 そう思ってシリアライズというのをやってみようとしましたが
'System.Windows.Forms.TreeNodeCollection' はシリアル化可能として設定されていません。
とか怒られてしまいます・・・・(´・ω・`)
VB2005初めて3日目だからよくわからないことイパーイ・・・
でももうちょっとがんがってみる(`・ω・´)
>>660 理屈は知らんが、前に↓入れといたら似たようなことができたような・・・
違ってたら、ごめん。
Me.WindowState = FormWindowState.Normal
>>658 ツリーとXMLドキュメントを対応させておく
漏れはXMLをツリー展開させる機能を持った
TreeViewを継承で作成した。
>>660 確かに、こっちだったw
Application.DoEvents
>>661 スレッド生成をLoadイベント内でおこなうわけですね?
スレッドのデバッグって大変そうですが、ちょっとやってみます。
ありがとうございました。
667 :
660 :2006/05/17(水) 17:24:54
>>665 Loadイベントの最初に Application.DoEvents を入れてみましたが、
画面が表示されるまでに、同じように時間がかかってしまいます。
何かやり方がまずかったんですかね?
>>667 画面が表示されるのはLoadイベント抜けた後だから。
DBアクセスの前にMe.Showするという行儀の悪い方法もある。
2005ならShownイベントでDBアクセスすれば問題ないが。
669 :
660 :2006/05/17(水) 17:57:48
なんか質問する方もする方だけど、回答者もアホが揃ってるなあ。。
阿藤海なら思わず何だかなーって言っちゃうよ。
DoEventsって何だよw
理屈わかって言ってるのかな。
っていうか、
>>660 は何がしたいの結局?
DBへのアクセスが完了するまではユーザーにUIを触らせたくない。
でも「待ち」時間は我慢できない。
要求仕様が矛盾してるじゃん。
なんで「待ち」が発生してるの?
DBへのアクセスに時間がかかるからでしょ?
内容の無い
>>670 にも何だかなーって思っちゃうよ。
OnActivatedイベントでやればいいのに
673 :
660 :2006/05/17(水) 18:59:34
>>670 たとえば、メニューを選択して対象画面を呼び出すとする。
メニューを選択したけど、一瞬反応がない(画面が表示されない)と、
ユーザーからすると、あれ?って思う。体感速度が遅く感じるって訳。
そこで、とりあえす画面を先に表示しておくだけでも、体感速度が変わってくると思う。
トータルとしては、逆に遅くなるかもしれないけど。
674 :
660 :2006/05/17(水) 19:04:06
実際、ここまで気にする必要は無いんでしょうか?
>>672 その方法よさそうですね。それでやってみます。
アプリ起動時の話なら、スプラッシュウィンドウを表示しとくって手もあるな。
>>674 そんなことしたって結局アクセスしている間UIがフリーズするだけ。
問題Aが別の問題Bに変わるだけじゃんw
(1) DBにアクセスする部分をフォームとは別クラスにして、(当然既にそうしてあるよね?)
フォームからは何らかのタイミングで(Loadでもなんでもいい)そいつに
「DBにアクセスせよ」と命令する。
(2) 命令された「DBにアクセスするクラスのオブジェクト」は、スレッドを
起動してDBにアクセスする。
(3) DBへのアクセスが完了したらフォームに何らかの方法(イベントが簡単だね)
でそれを通知する。
で、データが来ない間ユーザができることは何もない、と。
>>677 うちのシステムでそれやってる。データの表示待ちの間は唯一「メニューに戻る」は出来る!
679 :
デフォルトの名無しさん :2006/05/17(水) 19:35:40
恐ろしくレベルの低いであろう質問でなんだか気が引けるのですが、宜しくお願いします。 表示されているファイルのパスを取得する方法にはどのようなものがあるのでしょうか、教えて下さい。 現在VBを勉強中なのですが、使用している参考書の練習課題に取り組んでいます。 その課題というのは、フォームにピクチャーボックスとボタン*4を配置し、 4枚の画像ファイルを用意してそれぞれをボタンに対応させ、 さらにピクチャーボックスをクリックすると決まった順番にその4枚が順次切り替わるようなものを作れというものです。 ピクチャーボックスには最初から4枚のうちの1枚が表示されている状態です。 ファイルパス指定の方法はfromfileを使えと指定されています。 ボタンに割り当てるのは出来たのですが、ピクチャーボックスをクリックすると・・・というところが上手くいきません。 select caseで、評価式にpicturebox1.imagelocation()を使えばいいのかなと思ったのですが、 初期状態ではimagelocationにはパスは記憶されていないんですね。 画像を表示させる際にloadを使わなければいけない、とまではわかりましたがそれだと課題のfromfileを使え、にそぐわないので違うのでしょう
いやレベルがどうこうっていうより、 宿題は自分でやらんと意味ないだろ
681 :
660 :2006/05/17(水) 19:40:42
>>676 別スレッドでDBにアクセスすることで、データ待ちの間もウィンドウの移動などができたり、
>>678 の様な処理ができるってことですね。
VB2003でGIFとPNGの減色をやりたいんですがどうやればいいでしょう?
GIFとPNGのRFCを読む
System.Drawing.Imaging.Encoderじゃできなかったな
685 :
653 :2006/05/17(水) 22:18:59
だれかおしえてよ・・・。
自分で読めよライセンスぐらい
自分で読めよRFCぐらい
RFC、ググッたけどよくわからない・・・ もっと簡単にGDI+を使ってGIF、PNGの減色ってできないものでしょうか?
gif でセーブすれば 8bppIndexed にはなる。 それ以外は減色のアルゴリズムから考える必要がある。
691 :
653 :2006/05/18(木) 13:59:10
>>686 ライセンスの条文は、
難しくてわからん、、、。
あれは日本語であって日本語でない。
だれか解説よろ。
で、誰かが解説してそれがもし間違ってたらどうすんだ
>>689 Encorder.ColorDepthのヘルプ見て色深度を変えてみたことあるが
GIFは8ビット、PNGとTIFFは24ビット以外変わらなかったのでやめた
695 :
679 :2006/05/18(木) 16:08:00
>679ですが、どうしてもわかりません(´A`|||) どうか教えて頂けませんか
> 画像を表示させる際にloadを使わなければいけない、 Load メソッドも ImageLocation プロパティも .NET 2.0 で追加されたメソッドだが、 じゃあそれまでは PictureBox で画像を表示することができなかったと言うのか
つかImage.FromFileでググれば一発ででてくるし
698 :
679 :2006/05/18(木) 17:25:31
いや、知りたいのは画像を表示する方法ではなく現在表示中の画像のファイルパスを取得する方法なのですが・・・ select case文の評価に使って、現在表示している画像のファイル名によってcaseを設定したいのです
表示されているファイルのパスを取得するだけなら 表示したときのパス名を覚えておけばよいだけでは それよか解答のついていない参考書もどうかと思うが
何で画像のパスで判定する必要がある? 配列に入れてインデックス回せば済むだろが
四つぐらいなら全部 Image オブジェクトとして持ってても良いような気がするがね
Private Index Sub Button1_Click() Index=1 1 End Sub :: Sub Button4_Click() Index=4 End Sub Sub Button1
スマソ途中で書いてる途中で送信した
Private Index Sub Button1_Click() Index=0 Daisplay End Sub : Sub Button4_Click() Index=3 Display End Sub Sub PictureBox1_Click() Index = (Index+1) Mod 4 Display End Sub Sub Display() Indexの画像を表示 End Sub
fromfileでパス指定するって書いてあるじゃん
今表示してるなら、PictureBoxのプロパティにパスが入ってるだろうに。 どこにあるのかわからない画像が、何故か表示されているとか?
707 :
679 :2006/05/18(木) 19:35:43
すいません、勉強し始めて少ししか立っていないのでわからない事だらけで上手く説明できません・・・ 詳しく書いてみます。 フォームの中央にピクチャーボックス、その上下左右にボタンが配置されています。 予め4枚の画像を用意しておき、ピクチャーボックスには最初1.jpgが表示されています。 4枚の画像と4つのボタンは繋がっていて、ボタンを押す事でそれに対応した画像に切り替わります。 これはpicturebox1.image = image.fromfile(ファイルパス)としています。 ピクチャーボックスをクリックすると、例えば現在1.jpgが表示されているなら2.jpgを、4.jpgが表示されているなら1.jpgという風に次の画像へ切り替わるようにします。 現在select case ??? case 1.jpg picturebox1.image = image.fromfile(2.jpg) case 2.jpg picturebox1.image = image.fromfile(3.jpg) 中略 end select という風にしようと考えています。というよりはこれしか思いつかないだけなのですが select caseの評価式、???の部分をどう記述すれば良いのかがわからないので困っています。
Image を 4 つ Form が持ってれば良いじゃん? 事前に読み込ませとけばさ。 そうすれば PictureBox の Image と比較するだけだし。
>>707 そんなの初心者だろうがなんだろうが人に聞くような内容じゃないと思う。
その程度のこと自分で考えてできないならプログラミングなんて最初から
やらないこった。
ストレスの元になるだけだよ。
>>710 まあ長文なのは気になるが荒らしてるわけではないので気楽に行こうや
>>709 ネットで探せばVB6の減色やGIFやPNGの書き出しサンプルは手に入る
それらを参考にしてはどうか
ノートで.NET使おうかと考えているのですがCPUは1Gあれば大乗がでしょぅか? メモリは256くらいですがしょぼすぎ?
PIII800/256MB で色々やってるが死にそうだぜ つかスワップ発生しすぎでたまらん HDD 遅いのに
まじっすか やっぱ512は必要かな・・・
OSにもよるが、512MBに2000Proサービス切りまくりでもしんどい。
いや、というよりVS2003やVS2005が快適に動作するような環境は あと5年たっても手に入らないと思われますがw メモリは512でも1Mでもそんなに違わないよ。
さすがに1Mでは苦しいだろ
むしろ無理かと
512、は普通に考えて512MBだろう。MBをはしょっている事から基準がMBであると推測出来る。 1Mは100万だから100万MB、1兆byteとなる
1TBと表現したら、それほど大きな感じがしない今日この頃。
昔は1Mのメモリが1万円くらいしたものだ
722 :
デフォルトの名無しさん :2006/05/19(金) 10:42:35
ADにADSI等を使って動的に情報を書き込む方法ってありますか。 行いたいことは、ユーザーの最終ログオンコンピューターを特定すること。 1on1の環境ではないので、不特定多数のコンピューターからADにログオン可能なのですが、 どのユーザーがどのPCから最終ログオンをしたのかを知りたいのです。 最終ログオン時間は現在でもあるのですが、最終ログオンコンピューター見つけられませんでした。 ログオンスクリプトでADを動的に書き換えれば可能だとは思うのですが。 よろしくお願いします。
ログオンスクリプトで、管理共有フォルダあたりにユーザー名やコン ピュータ名を書き出せばいいんでない? 書き出したファイルの作成 日時がそのままログオン時間になるしさ。
725 :
724 :2006/05/19(金) 11:14:31
まあ、VBでやることでもない罠。
>723 いや、VBで使うのにほしかった。VBからもADSI使えるし。 >724 別にSQL鯖でも立てれば簡単に解決するんですけどね〜
727 :
マルボロメン :2006/05/19(金) 12:11:27
はじめまして。VB.NETを勉強中のものです。 Win32APIの機能を使って、2重起動をチェックする というプログラムをコーディングしていたのですが、 それを少し発展させて、2重起動をしたら 起動中のアプリケーションを最前面に表示しアクティブにする、 という具合にしたいと思いました。 別のウィンドウの後ろに隠れていたフォームを最前面に表示・アクティブ化は 問題なくできたのですが、 起動中のものが非表示状態(Visibleがfalse)だった場合、 そのフォームを表示状態にして最前面に表示することは可能なのでしょうか? 【要約】 1度目の起動時は通常起動でフォームを表示させ、 そこでボタンをクリックしてフォームをHideし、 2度目の起動で、先ほどHideしたフォームをShowしたいです。 以下にコードを記します。
728 :
& ◆jxvOu6XgII :2006/05/19(金) 12:15:46
Imports System.Diagnostics Imports System.Runtime.InteropServices Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load Call CheckProcess() End Sub Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click Me.Hide() End Sub <DllImport("user32.dll")> _ Private Shared Function ShowWindow(ByVal hWnd As System.IntPtr,ByVal nCmdShow As Integer) As Integer End Function Private Const SW_SHOW As Integer = 5 Public Shared Function ShowPrevProcess() As Boolean Dim hThisProcess As Process = Process.GetCurrentProcess() Dim hProcesses As Process() = Process.GetProcessesByName(hThisProcess.ProcessName) Dim iThisProcessId As Integer = hThisProcess.Id For Each hProcess As Process In hProcesses If hProcess.Id <> iThisProcessId Then Call ShowWindow(hProcess.MainWindowHandle, SW_SHOW) Return True End If Next hProcess Return False End Function
729 :
マルボロメン :2006/05/19(金) 12:16:21
続き: Public Sub CheckProcess() ' 同名のプロセスが起動していない時は起動する If ShowPrevProcess() = False Then Application.Run(New Form1()) '2重起動に当たる場合は起動中のものをShowし、終了する。 Else End End If End Sub ご意見お願いします。
・多重起動のチェックと通知には名前付きイベント(.NET 2.0 なら EventWaitHandle)使えば楽 ・ウィンドウの処理はむしろ通知を受けた側が行う
このスレにコード書き込むのはインデント知らないやつらばっかりだな
>>729 VB2005ならプロジェクトのプロパティから
「アプリケーションフレームワークを有効にする」
「単一インスタンスのアプリケーションを作成する」
にチェックすればそのままズバリが提供されている。
LoadイベントでよりもMain関数内で判定する方がいいと思う。 そこでMutexの取得可能かどうかで判定した方がいいと思う。
734 :
マルボロメン :2006/05/19(金) 13:52:13
>>730 そうですね。そのやり方も調べてみます。ありがとうございます。
>>731 インデント、Tab使ったらダメなんですね^^;
以前に、とある先輩にコードは半角スペースを使ってインデントした方が
マルチに対応する、と聞かされたことを思い出しました。
>>732 ズバリ、それでできました。付け加えるとアプリケーションイベントプロシージャに
if (Me.visible = false) then
me.visible = true
end if
と付け加えると、フォームがHideされていても表示され、かつ最前面に表示されました。
>>733 そうですね。main()を使ってやった方が良いのかも知れません。
次回はmain()内でMutexコンストラクタを使って挑戦してみたいと思います。
735 :
マルボロメン :2006/05/19(金) 13:55:54
あ、またインデントできてない;; ちょっと練習します。 If Me.Visible = False Then Me.Visible = True End If …これでできたかな?
736 :
マルボロメン :2006/05/19(金) 13:56:58
がーん、できてない…
行頭の半角スペースは省略されるのを知らんのか? インデントしたけりゃ全角スペース使え
全角はやめれ コピペできんだろが を使うんだ
739 :
デフォルトの名無しさん :2006/05/19(金) 15:29:59
VB.NETでExcelを操作する方法が詳しく書かれてあるお勧めの参考書はありませんでしょうか? よろしくお願いします。
740 :
& ◆ueGjjyAmr. :2006/05/19(金) 15:32:51
テ ス ト
別に全角スペースでもIDEにならコピペできるけどなあ
742 :
デフォルトの名無しさん :2006/05/20(土) 17:09:39
タイマーコントロールを使って、フォーム内でラベルを動かすプログラムを作りたいのですが、 ラベルの端がフォームの端に触れた時に進行軸を逆にするにはどう記述すれば良いでしょうか・・・ 一応自分なりに考えてみたのですが、これだとif文の前の代入を毎度反映してしまって反射は出来ないですよね? ヒントでも良いので何方か宜しくお願いします。(インデントずれてたらすいません) With Label1 Dim a, b As Short a = 1 b = 1 If .Left = 0 Or .Left = Me.Size.Width - .Width Then a *= -1 End If If .Top = 0 Or .Top = Me.Size.Height - .Height Then b *= -1 End If .Left = .Left + a .Top = .Top + b End With
なにぃっっっ! 2005のIDEは全角スペースもオッケーなの!! ...orz しら中田
Dim a, b as short a=1 b=1 をtickイベントハンドラ外でやれ。
745 :
デフォルトの名無しさん :2006/05/20(土) 17:20:30
スタートキットを起動したらこんなメッセが出ました。 'System.Data.SqlClient.SqlException' の初回例外が System.Data.dll で発生しました。 DefaultSource Error: 2 : タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。 どうやったらなおるでしょうか。
ボタンとかリストボックスをフォームの大きさに合わせて大きく伸ばしたり小さく縮めるにはどうすればいいんでしょうか 普通に置くとコントロールの大きさは一定ですよね
a = -a
resizeイベントに大きさに合わせてサイズが変わるようなコード書けば いいんでないの。
750 :
745 :2006/05/20(土) 17:49:11
ラジャ!
751 :
745 :2006/05/20(土) 17:56:43
SQLサーバーってなんですか?
<チラシの裏> 今Reflectionで遊んでいるんですけど、 なんか冒険しているみたいで楽しいですね〜♪ </チラシの裏>
754 :
デフォルトの名無しさん :2006/05/20(土) 21:35:23
フォームの中にパネルをFillで張って、タイトルバー分を含まない枠を作ったのですが、 このままタイトルバーを含まないように、フォームの大きさ変更に伴ってパネルサイズも変更されるようにするにはどうすれば良いでしょうか? リサイズイベントにpanel1.size=me.sizeとするとタイトルバーの大きさを含んでしまいますよね?
パネルの Dock が Fill なら勝手に変わるだろ? 取りあえず求めてる大きさは ClientSize で取得できるだろうが。
な、なんのためのFill…
>>743 それはまあ許せる仕様なんだけど、全角のダブルクォーテーションとかまで
強制的に半角にしちまう仕様は腐ってるよな。
半角のみたいにエスケープもできんしw
どうしろっちゅうねんほんと
758 :
754 :2006/05/20(土) 22:05:46
フォームサイズを変えてもパネルのサイズ変わらないままなんですが・・・(´・ω・`) プロパティでfillにするだけでは駄目なの?
>746 プロパティの Anchor を 使ったほうが簡単かも
>758 フォームにパネルだけ配置して、Dockプロパティを Fill にしても パネルが可変されないか、試してみたら?
761 :
754 :2006/05/20(土) 22:39:53
なぜかわからないけど連動するようになりました・・・お手数かけました、すみません。
762 :
デフォルトの名無しさん :2006/05/21(日) 08:29:45
VB.NETを勉強し始めた矢先に、エクセルVBAを使ってプログラムをしなければならない必要に 迫られました。 ひな型にできそうなVBAのコードがあったので、とりあえずVBAではじめたんですが、VSの 方が使い勝手がよさそうです。Visual Studio Tools for Officeというのを入れればVB.NETでも いけそうですが、実際どう思われますか? ほとんど2者の違いを気にせず、コードが書けるのならVB.NETで書きたいです。 プログラミング自体は初心者で、いまさらVBAを学ぶというのも後ろ向きな気がして。
全然別物。
764 :
デフォルトの名無しさん :2006/05/21(日) 10:19:17
>762 です エクセルでやりたいのは、元となるエクセルシートに、SQL Selectステートメントで引っ張って きたデータを特定のセルに貼り付ける程度で、罫線を引いて見栄えを良くしておしまいです。 VB6とVB.NETの違いを参考にいろいろ調べてみたのですが、プロパティの指定が必須とか 変数のデータタイプはきちんと明示しましょう、くらいしか今回のケースに当てはまらなかった ので、VB.NETでVBAと同じことがそれほど苦労なくできそうな気がしていました。 VB6とVBAでのエクセルシートの扱いが全然別物なら、当然ですよね。
765 :
デフォルトの名無しさん :2006/05/21(日) 15:38:57
すいません。 負の数を認識させたい場合はどうすればいいのですか?
なんに認識させるんだよ
>>765 変数に入ってるのが負かどうかを確認したいって意味なら、比較演算子
で0より小さいかどうかを判断させればいいじゃん。
768 :
デフォルトの名無しさん :2006/05/21(日) 15:51:37
765です。 すいません。 a(0)=1.a(1)=2・・というふうにいくつかの数を用意しておいて これを大きい順になるベルと言うプログラムを作っています。 ところが、a(1)=-2というふうに負の数になったらうまく動きません。 対処法を知っているかたがいたらよろしくお願いします。
激しく理解不能
770 :
デフォルトの名無しさん :2006/05/21(日) 16:06:11
765です。 たびたびすいません。 繰り返しの際に、最初に Const MAX =36 as short、 Const MIN=-20 as short というふうに宣言をしておいて、繰り返しで処理させるところでMINやMAXを使って i=MIN to MAXというふうに繰り返させるのですが、負の数が絡んだ場合、 なにかうまい方法はないでしょうか?ということです。 私も理解してなくて申し訳ありません。
>>770 ソートのアルゴリズムはぐぐったら山ほどサンプルが出てくるから、
まずそこを熟読した方がいいよ。いまの状態だと「何がわからないの
かわからない」みたいだから。
的確な質問ができるやつは質問などしないという法則
それをいうなら物事の法則性を捕らえるセンスが全く無い奴ほど法則法則 言いたがる法則w こういうのは必要条件と十分条件を混同してるんだよなw 馬鹿な質問者がいるからって質問者全員が馬鹿なわけじゃない
マーフィーの法則をアレは法則じゃないと言い張る方?
775 :
:2006/05/21(日) 17:35:54
このスレ見ながら、教えてもらいながら、初めてVB.NETでプログラムできました。 チューターの演習問題のWebブラウザになる超簡単なはずのやつですけど。 2回エラーでうまくいかなくて、今日3回目でうまくできた! うれしい! ハッピ!
意味わからんな。 マーフィーの法則の著者だ、じゃなく 君が馬鹿だといっているのだが。
いつもの奴出てきたな
キーワードは馬鹿
779 :
デフォルトの名無しさん :2006/05/21(日) 20:24:33
765です。 聞きたいことが分かりましたので たびたび申し訳ありませんがお付き合いください。 VB6.0のときは、例えばA(i)のiの部分、つまり配列の次元を 負で設定しても問題なかったようなのですが VB.NETではできません。これの代わりの機能はあるのですか?
要素数が負の配列ってどんなんですか
781 :
デフォルトの名無しさん :2006/05/21(日) 20:37:05
私の持っているテキストによりますと ソートのアルゴリズムのサンプルなのですがこんな感じです。 途中までしか載せてませんが、VB6ではこれで動きます。 Const Num = 10 Const Max = 36 Const Min = -20 Private Sub Command1_Click() Dim a(Num - 1), juni(Min - 1 To Max) a(0) = -3: a(1) = 2: a(2) = 3: a(3) = -1: a(4) = -2 a(5) = -6: a(6) = 2: a(7) = -1: a(8) = 1: a(9) = 5 For i = Min To Max juni(i) = 0 Next i For i = 0 To Num - 1 juni(a(i)) = juni(a(i)) + 1 Next i juni(Min - 1) = 1 For i = Min To Max juni(i) = juni(i) + juni(i - 1) Next i
782 :
デフォルトの名無しさん :2006/05/21(日) 20:38:20
juni(Min - 1 To Max) が負の配列をもっていますよね?
そんなのはバグの元にしかならないバッドノウハウだから捨ててしまいなさい
784 :
デフォルトの名無しさん :2006/05/21(日) 20:46:59
>>783 いや、もちろんそれでもいいのですが、
何かうまい方法があればと思い相談したのです。
6.0でできて.NETでできないって事は無いと思ったのですが・・・。
もちろんいろいろ機能が変わったのは知っていますが。
なるべくこのやり方を.NETのやり方に変えられないかなと思いまして・・・。
786 :
デフォルトの名無しさん :2006/05/21(日) 20:58:57
>>785 では、そのハッシュテーブルと言うのを調べてみます。
どうもありがとうございました。
>>784 Dim juni(Max - Min + 1)
juni(x - Min) = xxx
788 :
デフォルトの名無しさん :2006/05/21(日) 21:01:41
>>787 どうもありがとうございます。
またよろしくお願いします。
悪いことは言わんから馬鹿なことはやめとけ。
DataTableにぶち込んでSQLでソートしる
Array.Sortでいいじゃん
>>790 ,791
それじゃソートの勉強にならないよ。(w
あんな糞アルゴリズムを.NETでどうこうしようとするよりよっぽど有意義だがな
794 :
デフォルトの名無しさん :2006/05/22(月) 14:23:12
>>792 ソートするのが目的か、より良いソートを目指すのが目的かで違うが
これって結局は分布数えソートだろ
一般化するなら最大、最小を最初に空読みして決めるか、その場で配列を組みなおすか、リストで管理するかしないと実用にならないな
逆に数値の範囲が決まっていればかなり早くソートできるけどな
いや、テキスト読んでるって言ってたから勉強中なんだろうと思って さ。試験対策でやってるんなら、きちんと各ソートを学んでおくべき かなと。
$' (マッチした文字列の後ろにある全ての文字列) これってVB.netの正規表現に存在してないのでしょうか?
ドキュメント見れ。 .NET Framework の正規表現
798 :
デフォルトの名無しさん :2006/05/22(月) 23:44:45
DataGridコントロールと二次元配列の間でデータの読み書きをしたいのですが、 どのようにすればこの機能を実現できますか?
799 :
デフォルトの名無しさん :2006/05/22(月) 23:54:59
タイマーのtickイベントの中で「ボタン1をクリックした時の動作」を行わせたいのですが、どう記述すれば良いでしょうか?
ボタン1をクリックしたときの動作 ってのはどのレベルのなのよ 単に同じメソッド呼び出したいだけならそう言う風にすれば良いだけだが
801 :
デフォルトの名無しさん :2006/05/23(火) 00:07:15
VB.NET 2003 です。 TabControlの各ページに配置するコントロールの構成が すべて同じの時に、TabControlの代わりに使用する コントロールかプロパティかがあったように思うのですが、 失念してしまいました。 調べても発見できず悶々としています。 すみませんが、教えてください。 よろしくお願いします。
>>801 なんか見当違いかも知れんけど
PanelとPanel用のイベントハンドラを固めたクラスを用意してStateパターンを使ってみるとかじゃだめ?
>>801 旧VBのTabSTripのこといってるんじゃない?
相当するコントロールはドトネトには存在しない。
>>798 二重ループで一個ずつセルに代入すれば?
806 :
801 :2006/05/23(火) 01:49:31
>>803-804 あ、そういえばと思い出して調べてみるとどうもExcelVBAを1年ほど前に
手がけたときの記憶が.NETと混同していたようです。
ちょっと調べてみていろいろ試してみます。
ありがとうございました。
>>801 >>TabControlの各ページに配置するコントロール
↑を全部 TabControl以外に置くだけでいいのでは?
808 :
デフォルトの名無しさん :2006/05/23(火) 12:10:28
無料のVB2005で参照設定ってこれでいいんでしょうか? とりあえず起動させて、プロジェクト→参照の追加→Microsoft Excel Object Library を選んでOKを押します。 Dim xlsOBJ As excel.application とやってもインテリセンスが働かず、型定義がされません。 どうして?
>>808 少しは自助努力ってものをした方がいいと思うよ。
そんなもんちょっと調べりゃすぐ分かるでしょ。
MSのサイトにすらヒントが書いてあるのに
VBで可愛い彼女を作りたいんですが
812 :
デフォルトの名無しさん :2006/05/23(火) 18:32:23
キーが押されるたびにBeginInvokeで短い非同期処理を 走らせているのですが、あるタイミングになるまで すべて同じスレッドが動作してしまいます。 (System.AppDomain.GetCurrentThreadIdで確認) しばらくキー操作しているとbeginInvoke毎に異なる スレッドが動くようになるのですが、 この現象はどうしたら解決できるでしょうか?
>>812 だからエスパーはおらんよ。
解決って、それで何が問題で、どうしたいとおっしゃるんで?
>>812 再現性のある短めのコードをアップしてくれ。
815 :
デフォルトの名無しさん :2006/05/23(火) 18:43:34
>>813 分かりにくくて申し訳ありません。
問題=>アプリケーション起動後、BeginInvokeで使われるスレッドが特定の1個のスレッドになっている
どうしたいか=>アプリケーション起動後すぐに、ちゃんとbeginInvoke毎に異なるスレッドが動くようにしたい
>>815 非同期デリゲートのBeginInvokeのことなら、スレッドプールを使ってるから同じスレッドで動くことがある。
確実に別スレッドで動かしたいならThreadクラスを使え。
>>815 本当にそうなってるなら、「次」にキーが押されたときには既に前のスレッドが
終了しているからでしょ。
逆に言えば、終了してなければそのような現象は発生しないはずだと思うよ。
BeginInvokeはスレッドプールを使ってるそうだから、終了したスレッドが
使いまわされてるだけなんじゃないかな。
>>816 「使え」だってさ。
お前は北方謙三かw
そんな偉そうにいうような内容かよ
819 :
デフォルトの名無しさん :2006/05/23(火) 19:09:36
ちょっと待ってください。 今サンプルコードを出します。。
820 :
デフォルトの名無しさん :2006/05/23(火) 19:20:06
Private Delegate Sub KeyUpDelegate(ByVal e As System.Windows.Forms.KeyEventArgs) Private KeyUpDel As KeyUpDelegate Private iOtherKeyUp As Integer Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp KeyUpDel = New KeyUpDelegate(AddressOf KeyUpProc) KeyUpDel.BeginInvoke(e, New AsyncCallback(AddressOf CallBack), KeyUpDel) End Sub Private Sub KeyUpProc(ByVal e As System.Windows.Forms.KeyEventArgs) TextBox2.Text += "[" & System.AppDomain.GetCurrentThreadId.ToString & "]" & _ "(" & e.KeyCode.ToString & ")" & "KeyUpProc" & vbCrLf If e.KeyCode = Keys.ControlKey Then System.Threading.Thread.Sleep(150) If iOtherKeyUp > 0 Then Return Else TextBox1.Text += "x" End If Else iOtherKeyUp += 1 System.Threading.Thread.Sleep(300) iOtherKeyUp -= 1 End If End Sub Private Sub CallBack(ByVal ar As System.IAsyncResult) Dim d As KeyUpDelegate = DirectCast(ar.AsyncState, KeyUpDelegate) d.EndInvoke(ar) End Sub
821 :
デフォルトの名無しさん :2006/05/23(火) 19:23:32
なるべく大きいフォームにしてtextboxを2つ縦長に並べて 貼り付けてください。 Ctrlを単独で押した時だけxが出、 Ctrl+他のキーが押された場合は何も出ないようにしたいのです。 途中までうまくいきません。(同一スレッドが動いてしまっている) 途中からうまくいくようになります。(ある時点から別々のスレッドが動く)
822 :
デフォルトの名無しさん :2006/05/23(火) 19:26:50
Ctrl+Aでテストした結果: [2812](ControlKey)KeyUpProc [2812](A)KeyUpProc [2812](ControlKey)KeyUpProc [2812](A)KeyUpProc [2812](ControlKey)KeyUpProc [2812](A)KeyUpProc [2812](ControlKey)KeyUpProc [2812](A)KeyUpProc [2812](ControlKey)KeyUpProc [2812](A)KeyUpProc [2812](ControlKey)KeyUpProc [2812](A)KeyUpProc [1728](ControlKey)KeyUpProc ←ここから別スレッドが動き、期待した動作になる(タイミングは不明) [2812](A)KeyUpProc [1728](ControlKey)KeyUpProc [2812](A)KeyUpProc [1728](ControlKey)KeyUpProc [2812](A)KeyUpProc [1728](ControlKey)KeyUpProc [2812](A)KeyUpProc [1728](ControlKey)KeyUpProc [2812](A)KeyUpProc
823 :
デフォルトの名無しさん :2006/05/23(火) 19:41:56
すいません、質問者ですが今日は帰りますので また明日よろしくお願いします
>>822 >>816-817 のとおりでスレッドプールの正常な動作。
System.AppDomain.GetCurrentThreadId は .NET 2.0 では
「メモ : このメソッドは、互換性のために残されています。」
になっててスレッドIDを調べることに意味が無いということでしょう。
いやそれはちょっとちが…
>>825 異論覚悟で後半は書いたので、出来たらもっと意味のある反論がほしいな。
ちが・・・で口濁すなんて掲示板では最低だよ。
ここではWin32のスレッド番号を返すことに意味がないと言いたいわけで、
CLRが管理しているスレッドの何らかの識別子を返すメソッドがあるのはOKなわけですよ。
プラットフォームからもスレッドからも中立であるはずのAppDomainに
このメソッドがあるのがおかしく廃止候補になったのは当然だと思う。
828 :
817 :2006/05/23(火) 21:13:18
>>812 せっかくレスしてるのになんでスルーするんだろ変な人だな。
まあいいや、ダメな人にありがちだけど、なんでもっと単純なコードで
テストしないの?
とりあえずスレッドで実効するメソッドを以下のように変えてみ?
Private Sub KeyUpProc(ByVal e As System.Windows.Forms.KeyEventArgs)
Console.WriteLine("ThreadID = {0}", System.AppDomain.GetCurrentThreadId)
Sleep(10000)
End Sub
だから言ったでしょ?
「次」にBeginInvokeを実行したときに「前」のスレッドが終了してなきゃ
そんなことにはならないから何の問題もないと。
829 :
817 :2006/05/23(火) 21:13:52
ついでに、UIスレッド以外のスレッドからコントロールいじっちゃダメでしょw
.NET 2.0のソフトが動かないです。 エラーメッセージとかは一切出ず、無反応です。 1.1と2.0を一回消してwindowsupdateからインストールもしてみました。 誰か分かる人いませんか?
833 :
825 :2006/05/23(火) 23:21:43
ウワァーン
test
835 :
812 :2006/05/24(水) 10:05:53
>>817 さん
&他の方も書き込みありがとうございます。
CallBackにデバッグ出力を入れて、Sleep時間を変えて試したところ
確かに「前」のスレッドが終了してしまっているようです。
ただ腑に落ちないのはなぜ途中から挙動が変わるのかという点です。
起動後しばらくの間の『「前」のスレッドが終了しまう』挙動は
おかしいと感じます。
837 :
812 :2006/05/24(水) 11:07:20
Sleep時間を長くすると今度はCtrlを単独で押したときの反応が 非常にもっさりしてしまうので困ってます。
838 :
812 :2006/05/24(水) 11:14:43
>>836 これですね、原因は!
ありがとうございます!読んでみます。
839 :
812 :2006/05/24(水) 11:32:10
SetMinThreadsでworkerThreadsを2にすることで問題が解決しました。 836さん、本当にありがとうございました(他のみなさんも)。 手持ちのMSDNにはThreadPoolクラスのこのメソッドのことは書かれていませんでした (気付きませんでしたがIDEではちゃんと補完で出てきますね)。 自分も初期状態での待機スレッドが少ないからではないかという 思考はよぎっていたのですが、そこを追及して調べるまで至っていませんでした。
DataSetを使っているのですが、テーブルからDataSetに読み込み、更新時に テーブルの情報が変更されていた場合、DataSetの情報でそのテーブルを上書きしたいです。 今はDBConcurrencyException例外がおきて更新できない状態です。 何かヒントを教えてください。
>>841 この現象です。
自動生成したコマンドが複雑なWHERE区を作成するのが原因みたいです。
自分でUpdate文を作成することにします。
ありがとうございました。
>>842 SqlCommandBuilder使ってるなら、やめといたほうがいいよ。
単一テーブルでしかまともに動かないし、冗長なSQLを吐くからさ。
844 :
デフォルトの名無しさん :2006/05/24(水) 12:35:32
でもわざわざ自分で更新のSQL書かなくていいのは魅力だぞ
>>844 その程度で済む業務って限られるから。
マスターメンテとかぐらいじゃないの?
そうじゃなければ、ORマッピングの活性化したデータとしてあれを使うわけで。
みんなで突付き合いしたりに耐えられるかな?
>>843 自分でやったらすっげー大変だった
もうやりたくない・・・
>>844 ,846
まあ楽なのはわかるんだけど、自分で組んだSQLならエラーが出ても
原因を突き止めやすいじゃん。自動生成でやたらと長いSQLだと、ど
こがおかしいのか見つけるのが超面倒だし。
コネクションとかアダプタも、ウィザード使わずに自分でコード書く
けど、みんなもそうしてるよね?
例えばテーブルとバインドさせてデータ表示しているDataGridなんかで 行の削除や追加、あちこちのセルの書き換え等が動的に頻繁に起こる業務アプリで 最後にそれら大量の変更をテーブルに反映させるのにいちいちSQL書くのか? 現実的じゃないな。やっぱり自動生成機能は使った方が正解。
849 :
デフォルトの名無しさん :2006/05/24(水) 16:25:28
>>848 汎用Grid操作エンジン作って、独自言語で処理
SQLは自作モジュールで自動生成
これ最強
とか書く馬鹿が出そうw
そういうのはストアドにして、クライアントからパラメータだけ投げる ようにしてるけど。更新のタイミングがキモだから、どちらか楽or軽い ほうを選ぶようにするなぁ。 自動生成したコマンドを見直してチューニングするってのもありだろう し、まあひとそれぞれなんじゃないかな?
>>848 DataSetとGridは連結するけど、DataSet=DBではないからね。
画面仕様をDB設計にあわせる、または逆なんて出来ないでしょ?
画面は客の要望、DBは限りなく理想的に。
そのねじれを自動的にやってくれるなんてのはやっぱないよ。
その皺寄せを仕事にするか、客に押し付けるかの違いだと思うが。
客の要望を全て忠実に実現できなければプログラマは評価されない
そして、客の要望を実現可能なレベルに事前調整してくれる営業は存在しない。 ‥‥なんでもかんでも「できます!」って安請け合いするなよ。orz
855 :
デフォルトの名無しさん :2006/05/24(水) 21:46:11
グローバル変数は使わない方がいいですか?
スコープをしっかり管理してれば、別にいいんでない?
というか使えないだろ
858 :
デフォルトの名無しさん :2006/05/24(水) 23:24:20
すいません。質問です。 VB6ではイミディエイトウインドウに出力するとき debag.print(〜なんだかんだ〜)と書けばいいようですが VB.NETではどうすればいいのですか? 一応、本を見るとdebag.WritelLineというのうがあるようですが うまくいかないのです。 何かほかにdebag.printに該当するものがあるのでしょうか?
debugだろ
862 :
デフォルトの名無しさん :2006/05/24(水) 23:35:37
.NET Frameworkの欠点はどうなんですかね。 ここが悪いとか駄目とかありますか?
普及していない 起動が遅い 画面描画が遅い ソースが丸見え APIをカバーし切ってない
描画が遅いのだけは GDI+ のせいだw
2003使ってます。windowsアプリのDataGridで同一列内のセルの結合させるにはどうすればいいでしょうか
>>.866 EXCELを使う
869 :
デフォルトの名無しさん :2006/05/25(木) 13:06:35
ビルドをすると、実行可能ファイルがbinとobj の両方に作成されますが、配布するのはとち らの方ですか?
>>864 ソースが丸見えなんですか…
つまり… 駄目?
VB.net 2003にて データグリッドにデータテーブルをバインドさせて一覧を表示してるんですが データテーブルの中にあるDatatime型のフィールドの表示を YYYY/MM/DD hh:mm:ss にするにはどうすればいいんでしょうか。現状は YYYY/MM/DDのみ。 DataGrid.DataSource = Datatable こんな感じで単純にくっつけてるだけです。 ちなみにクイックウォッチでデータテーブルの中身を見ると 時間もはいってます。
TableStyles を色々アレする 最終的には DataGridTextBoxColumn の Format プロパティで設定する 日付と時刻の書式指定文字列 参照
873 :
デフォルトの名無しさん :2006/05/25(木) 13:44:37
>>871 DataGridTextBoxColumn#Formatに"YYYY/MM/DD hh:mm:ss"をセットする
874 :
871 :2006/05/25(木) 13:58:40
データテーブルの中身はいろいろ変化するんでdatatimeフィールドの位置がズレます。 そのテーブルデザインにあわせて コード上でDataGridTextBoxColumn の Format を アクティブに変更するようなコードにすればいいんですね。 ありがとうございます。方向性はわかりました。 でもこんなに手間がかかるものだったとは。 ただ時間がみたいだけなのにー
.NET 2.0 & DataGridView においでよ……楽で楽しいよ……
UPX圧縮って使えたっけ?
DataGridとDataGridViewは構造がだいぶ違うからね。 見た目のカスタマイズを行うためのアプローチも 考え方が全然ちがう。 今から開発進めるなら2.0のDataGridViewを使った方がいいね。 以前のDataGridの実装も資産としては発展性が難しいから いきおい作り直しってことになるんだろうな・・・
なんていうかさ。 バージョンが変わるたびに機能アップばっかり前面に出してるけど、 作り込みが甘いというか実用面において片手落ちってのが多くない? 6.0から2003に変えたとき、DataGridの使い勝手が激烈に悪かった 思い出しかないよ。DataGridViewはもうちょっとマシなのかな?
完璧なの付けちゃったらサードパーティの立ち入る場所が無くなっちゃうでしょ
>>871 もしOleDB接続を使っているなら、
OleDbDataAdpterの中で日付時間型のフィールドがSystem.Data.OleDbType.DBDateにバインドされてないかい?
System.Data.OleDbType.Dateにすれば時刻まで出るはず。
882 :
デフォルトの名無しさん :2006/05/25(木) 22:46:55
すいません。Formに点や線を使って絵を書こうと思うのですが ある一定領域しか表示されません。 この表示域を増やすにはどうすればいいのですか? これはサイズを例えば500,500にしても表示される領域が 300,300ほどしかないと言う意味です。
意味が分からん どこにどうやってるのか詳細に書け
884 :
デフォルトの名無しさん :2006/05/25(木) 22:59:08
>>883 いや普通に座標を指定して
fillrectangleやdrawLineなどをつかって
絵を書くのですが、途中で切れるのです。
原点をずらせばきちんと表示されるので
Formの途中で表示できなくなっているとしか思えないのですが?
思ってる間になんで自分でいろいろ条件変えて確認しないのかね。 こんなところにタラタラ書いてる間に十分できるだろうに。 寂しがりやさんでとにかく人に頼りたいのかねw
誰かエスパーの方ー
888 :
デフォルトの名無しさん :2006/05/25(木) 23:18:11
>>885 だいぶいろいろやったんですけどね。
>>887 中央が抜けるとかではないです。
例えば円をかいたとしたら、右5分の1がでないとか
そんな感じです。
原点をずらせば普通に表示されるので問題ないといえば
問題ないのですが、Formのサイズを大きくしても表示される領域が
大きくならないというのも困るし・・・。
とうぜん、図を大きくしたら切れる部分が出てくるわけですし。
>>888 いや、だからそんなことありえないから。
何か勘違いしてるだけだから自分でよく検証してみ
>>885 みんながおまいのいうような行動をとったら
このスレはたちまち過疎地帯w
891 :
デフォルトの名無しさん :2006/05/25(木) 23:23:22
>>889 わかりました。
普通に表示されるはずなんですね。
もう一度みてみることにします。
どうもありがとうございました。
>>888 フォームを全画面表示にして目一杯大きな四角形で塗りつぶす。
描画できない範囲が固定されているのか、それもと描画のたびに
位置や大きさが変わるのか確認してから、もう一度報告よろ。
>>890 そんな訳ないでしょ
普通は自分でやるだけのことはやってから質問するもんだよ。
少しはまともな人間ならね。
しかしそれでもやはり解決できない問題というのはありうる。
Trimメソッドのリファレンスのサンプルを見ていたら、 Dim str1 As [String] = "*;|@123***456@|;*" といった記述があったのですが、この[String](Stringを[]で括った形) にはどういった意味があるのでしょうか? 基本的な事だとは思うのですが、答えを探し出せませんでした。 どなたか教えていただけませんか?
MSDNライブラリで「エスケープ識別子」で検索かけてみ
896 :
デフォルトの名無しさん :2006/05/25(木) 23:54:04
>>892 大きな四角で塗りつぶそうとしたのですが、
あるところから全くでません。
そういう症状です。
位置や大きさは全くいっしょです。
>>893 ある程度未熟な質問やマルチレスなんかも
話題やネタを提供してスレを活性化させるためには
必要だと思うぞ。
漏れは意識的にそうゆう書き込みをしている。
結果として話題が盛り上がって、スレにとって
有益なことも多い。
>>896 新規プロジェクトでコード手打ちして、それでも同じ結果になるか
確認よろ。他のマシンにも開発環境があるなら、ソースを持って行
ってそちらでも動作確認。
て言うかだらだら中身のないやり取りも面倒なのでいっそコード出せ。
>>896 PictureBoxの大きさは、おk?
>>895 ありがとうございました。一応、調べてみました。
Dim [string] As Stringといった様に、予約語を使う際には
[]で括る必要があるという事は理解できました。
ただ、MSDNのTrimメソッドのリファレンスに記載されている
Dim str1 As [String] = "*;|@123***456@|;*"
は、データ型を[]で括っており、これをどう解釈すれば良いのが
まだわかりません。
基本的な事の様で申し訳ありませんが、どなたか教えてください。
VB(7 以降)において、String は二つのものを指す。 一つは、VB の予約語である String 。 一つは、.NET で定義されている型である System.String 。 Trim のサンプルには Imports System で System 名前空間を省略できるから、System.String は String と書ける。 ところがこの場合 String だけではどちらを指しているのか分からない。 そこで予約語じゃない方の String だと言う事を明示するために [ ] で囲っている。 がしかしそもそも VB の予約語 String は、言語仕様で System.String のエイリアスであると定義されている。 つまりこの両者は全く同じものであり、使い分ける意味は全くない。
>>902 納得です。これで、胸のつかえがとれました。
どうも、ありがとうございました。
904 :
デフォルトの名無しさん :2006/05/26(金) 10:25:20
すいません、ビルドをすると作られるEXEファイルなのですが、「\bin\release」と「obj\release」の 二つがあるのですが、どうちがうのでしょうか? 他人に渡すには、どちらにしたらいいのでしょうか? 基本的な質問で恐縮ですが、ご教授願います。 よろしくお願いします。
bin\release
906 :
904 :2006/05/26(金) 13:22:20
>>905 ありがとうございます。
ところで、この二つって、どう違うんですか?
さぁ
>>904 \bin\release以下を「すべて」配布すればOKだよ(・∀・)
VSはビルドすればそうなるようにできている
909 :
デフォルトの名無しさん :2006/05/26(金) 14:39:41
ListViewについて質問です。(VB2005を使用してます。) ListViewを1つのフォームにいくつか配置しているのですが 現在ある項目が選択状態となっているListViewから 他のListView(他のコントロール)にフォーカスが移ると、 以前のListViewの選択状態の反転が消えてしまい、 何が選択されていたのかわからなくなってしまいます。 ListBoxのようにフォーカスが他のコントロールに移っても 反転状態が常に見えているようにするにはどうしたらよいでしょうか? OwnerDrawを使えばと思ったのですが、いろいろ試してもダメでした。 良い方法があったら教えてください。
HideSelection
911 :
909 :2006/05/26(金) 15:02:44
>>910 む・・・失礼しました。こんなプロパティあったのか。見逃してました。
ありがとうございます。
コントロールのいろんな機能や動作について調べたくて VS2005のドキュメントとか見ても、言葉による説明ばっかりで その設定で具体的にどう見栄えや動作が変わるのかが 一目瞭然じゃないところがイタイよなぁ・・・ サンプルコードが付いてても、実際の表示結果とかが 明示されてなかったりして、いちいちビルドして動かしてみないと わからなかったり。。。
>>912 MSDN のサイズが10倍以上に膨れあがりますが良いですか?
>>912 その需要に参考書メーカーやスクールが殺到するわけなんだよ。
>>913 何もローカルPCにインストールすることないんだから
MSDNライブラリのサイトを充実させればいいじゃんよ(・∀・)
これ以上MSDNオンラインが重くなってたまるか
>>915 そうすっと、>912じゃないがビジネスチャンスが無くなる
企業が相次ぐだろうから、わざと説明不足にするのが
暗黙の了解なんじゃろうきっと
じつにいやらしい利害関係だな、PC業界やIT業界っつーのは(´・ω・`)
VB2003をつかってます。 LANでつながっているPC間で動作するIPメッセンジャーのような アプリを作りたいと思っています。 PC1とPC2にこのアプリをインストールすることを前提とします。 PC1からPC2のIPアドレスを指定してテキストボックスに文字列を入力し、 ボタン押下でPC2はPC1の文字列を受信してテキストボックスに表示 する、という仕組みを作りたいのですが、何をどう使えば良いのか全く わかりません。 ちょっと調べてみたら、TcpListner というものを見つけたのですが、 これを使用するのが良いのでしょうか? IPアドレスだけでなくポート番号も知る必要があるのでしょうか? 何から調べていけば良いのかわかりません。 何かキーワードでも教えてください。 よろしくお願いします。
>>919 Visual Basicではじめるネットワークプログラミング超入門
表紙が恥ずかしいは禁止
あっそ。じゃあ勝手にすれば
924 :
919 :2006/05/26(金) 19:42:12
VBのサンプルコード(Listener)ていうのがオマケでインストしてあったのでそれを解析しながら勉強します。
>>919 C#なんですが
『VisualC#.netではじめるTCPネットワークプログラミング』(カットシステム)
っていう本がおすすめです。
TcpListnerなんかについても基本的な使い方から丁寧に
解説されていて、自分でも勉強になりました。
>>925 つい買ったが個人的にどうでもいい事しか書いてなかった。
927 :
デフォルトの名無しさん :2006/05/26(金) 21:17:39
VB.NETのいいとこ教えてください。
俺でも使えるところ
929 :
デフォルトの名無しさん :2006/05/26(金) 21:44:40
VB2005Express使ってます。 gotdotnetにあるSnippet Editorを、さっきDLして使ってみたんですが、 Editorに入力したのに、フォーカスを別に移したとたんEditorに入力した文字が 消えてしまいます。 ちゃんと使えてる人います?
930 :
デフォルトの名無しさん :2006/05/29(月) 23:21:10
DataGridViewで DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect にして行単位で選択しています。 1行に5つセルがあり、バックカラーは1行ごとに変わるのですが、その中でアクティブなセルだけ 黒い点線で囲まれます。この点線を消す方法か、1行全部点線で囲む方法ご存知の方いますか?
そんなことしたらどこがアクティブセルかわからんじゃん どうしてもやるならオーナードローしたらいけるんじゃないか
VS.NETの2003つうか.NET Frameworkなんですが。 C#で作ったクラスのプロパティの型がuintのenum。 enum ehoge : uint { aaa = 0xfede0003, bbb = 0xfede0005 } class csclass { ehoge prop1; } こんなクラスのプロパティをVB.NETのとあるところから参照。 Dim ZZZ = new csclass() ZZZ.prop1 = ehoge.aaa IDE的にも=打てばインテリなんとかはちゃんと動く。 ehoge.でもaaaとbbbが出るのでおっけーと思いきやehoge.aaaには波線が付いて コンパイル不可。 CObjとかで変換してコンパイル通しても実行時例外発生。 VBのEnumにはUInt32とかは使えないとか、CSL的にはuintはダメダメだとか そういうのはわかったんだけど、VBでは当然のことなんだろうか? なにか文献は無いでしょうかねぇ?
CSLってなんじゃ。
なんか間違えてる。 Dim ZZZ As new csclass かな。 とにかくC#で定義した基uintのenumを、VBでまともに使えるものなのか、 使えないとしたら、それは世の中的に当然のことなのか、その辺を 知りたいのですが。
>>933 CLSの間違いです。Common Language Specificationだっけ?MSのあれ。
度々スマソ。
>>934 VB2003では当然というか、みんな不満を持ちつつなんとかやっていた。
コンパイラオプションの/removeintchecks+を指定しちゃうぞワレ!みたいに
思ったことも何度かあった。やんないけど。
VB2005からは、UInteger型(UInt32の別名)などが
言語仕様にとりいれられて対処が楽になった。
最初からそうしとけよゴルァ!ってな感じ。
CLS 的に認められてる基になる型は Byte、Int16、Int32、Int64 のみだし、 それ以外のが基になってるのが他の言語で使える保証なぞ無くて当然。 VB2005 で 符号無し型が使えるようになったおかげでそれらが基になってる列挙型も使えるようになったけど。
>>936-937 うーん、やっぱそういうものだったのですか。
せめて(C#のenumあたりの)マニュアルに明記してくれてるとか、ビルドの
警告レベル上げたら怒ってくれるとか、そういうのがあれば気をつけたのに。
VS2005かぁ。はぁ(ため息
とにかく既知なわけですね。情報ありがとさんでした。
CLSCompliant 属性というのもある。
UInt32調べたら思い切り書いてるだろ。
941 :
デフォルトの名無しさん :2006/05/31(水) 11:13:29
OracleConnection について質問です。 実行パスに「)」(半角丸括弧とじ)が含まれる場合にDB接続できないのは なぜでしょうか。「)」が実行パスに含まれない場合は正常に接続できます。 なお、接続できない場合は ex.Message に 「ORA-12154: TNS: 指定された接続識別子を解決できませんでした」 が設定されています。よろしくおねがいします。 参考ソース Imports System.Data.OracleClient Module Module1 Sub main() Dim OraConn As New OracleConnection Try OraConn.ConnectionString =
942 :
デフォルトの名無しさん :2006/05/31(水) 11:15:34
OraConn.ConnectionString = "User Id=UESM; Password=UESM; Data Source=C003" OraConn.Open() Catch ex As Exception MsgBox(ex.Message) Finally OraConn.Close() End Try End Sub End Module
どんな文字列だとエラーが出るのか? どんな文字列だとエラーが出ないのか? ORA-12154の意味をぐぐってみたのか?
944 :
デフォルトの名無しさん :2006/05/31(水) 15:27:19
>>943 どんな文字列も何も接続文字列は「C003」固定です(ソースに
ある通りです)。だから接続文字列に問題はないと思います。
実行パス(つまりEXEの置き場所)に「)」が含まれるかどうかで
動作が違うのは何故か、という質問です。
よろしくおねがいしいます。
>>945 助かりました。ありがとうございました。
VB2005を昨日から始めたんですが(プログラムとか初めて)質問させてください。 Expressの無償公開を知って、某解説サイトをみつつ勉強を始めました。 そこで「簡単なMultiFileViewerを作る」と言うのが初級のラストだったのですが、簡素な割りに妙に起動が遅くて重いです。 具体的には、Webブラウザコントロールを利用して様々なファイルを閲覧すると言うものです。 もしかしてこれはIEを起動させるような物なのでしょうか?
IEを起動して同じ結果になるのならそういう物
IE よりかは確実に遅くて重いな。
950 :
デフォルトの名無しさん :2006/06/01(木) 13:41:12
すみません、質問です。 テキストボックスをフォーム上に配置した場合は、右クリックすると コンテキストメニュー(ショートカットメニュー、ポップアップメニュー)が 表示されますが、リッチテキストボックスの場合は右クリックしても コンテキストメニューが表示されませんよね。 これを表示させるようにしたらどうしたらよろしいのでしょうか。
951 :
デフォルトの名無しさん :2006/06/01(木) 14:02:37
950です。自己解決しました。すみません。
952 :
デフォルトの名無しさん :2006/06/01(木) 14:03:36
>>950 SetStyle(ControlStyles.StandardClick, True)
953 :
デフォルトの名無しさん :2006/06/01(木) 14:34:03
VB.NET自体に不具合があって、SourceControlは、RichTextBoxなどでは 使えないんですね。。。(T_T)
>>953 へっ?どんな不具合?
漏れ自作のフリーウェアでも普通に機能してるよ(・∀・)
955 :
デフォルトの名無しさん :2006/06/01(木) 14:51:43
>>954 かんたんプログラミングVisualBasic.NET コントロール・関数編 技術評論社
のp198の下に「注意」としてかかれています。
ContextNemu(ContextMenu1)を一つ、RichTextBoxを複数配置する。
すべてのRichTextBoxのContextMenuに、ContextMenu1を指定する。
ContextNemu1_PopupイベントにContextNemu1.SourceControl.Nameの記述を
書くと、右クリックメニューが表示されなくなる。
(本来は、SelectCase文でContextNemu1.SourceControl.Nameを記述する。)
956 :
デフォルトの名無しさん :2006/06/01(木) 14:56:42
あ、ちなみに
>>955 の下の方に書いているものは、私の環境での不具合で、
書籍の方には、「不具合があります」という旨の文章が書かれているだけです。
957 :
954 :2006/06/01(木) 15:27:27
>>955-956 へぇ、それは気が付かなかった。
PopupイベントではSourceControl見てないし・・・
Popupイベント自体が発生しないような現象は
あったかも知れない・・・
958 :
955 :2006/06/01(木) 18:04:51
>>957 確認の意味合いなのですが。。
> PopupイベントではSourceControl見てないし・・・
でも、複数のリッチテキストがあって(テキストをドラッグしなくても)そこで
右クリックをして内容がコピーできるようにする場合は、Popupイベントで
SourceControlを使ってリッチテキストの名前を取得するしかありませんよね?
本当にそんなバグがあるのかどうか知らないけど、 Popupイベントなんて使わずにコントロールが右クリックされたら メニューを表示するようにすれば問題ないと思う。 クリックされたコントロールを表すフィールドが必要でエレガントじゃないけどね
960 :
954 :2006/06/01(木) 22:14:35
>>958-959 ふつうに
menuItem1_OnClick(System.Object sender, System.EventArgs e)
イベントハンドラ内で
(((MenuItem)sender).Parent)).SourceControl
で取ってますけど・・・・
961 :
960 :2006/06/01(木) 22:17:37
あ、ごめん。VB.NETスレだったねw えーと、こう書くんだったっけかな、、、 CType(sender, MenuItem).Parent.SourceControl
頭わるい奴。 だからそもそもメニューがポップアップしなくなるんだと。 本当かどうか知らんけど
まあ悩む前に .NET 2.0 に来い。修正されてるぞ。
965 :
デフォルトの名無しさん :2006/06/01(木) 23:10:25
サーバと通信するクライアントを作成するのに WebBrowserControl(Maicrosoft Web Browser)(正しくはTridentらしい)を 利用してやり取りしようとしています。 入力したデータをdoPostで送っているだけなのですが、 サーバ側で見るとdoGetとdoPostの両方で来ています。 漏れの認識では少しのデータを送るときdoGet 大量のデータを送るときdoPostをりようしていると思っています。 なんで、doPostだけで送ってくれないのかわかりません。 WebBrowserControlのAPIとかどこかにないでしょうか教えてください。 後、HttpのdoPost、doGetの違いをわかりやすく詳しく説明しているサイト等を 教えていただけないでしょうか? もしかしなくてもすれ違いでしょうか? 一応VB.netで作っているから良いかなと思っています。 よろしくい願いします。
>>965 >入力したデータをdoPostで送っているだけなのですが、
ちょこっとソース晒してよ
>>939-940 遅くなったけど助かりました。どもでした。
次からは、表に出るとこは最初からCLSCompliantしようね、と。
ちなみにビルド時の参照アセンブリだけ直せばビルドが通るのね。
GACとかに直す前のをぶち込んだ環境にビルド通った奴を持ってって
動かすと普通に動くし。<動いたからって売り物にはしないけど。
>>970 > ちなみにビルド時の参照アセンブリだけ直せばビルドが通るのね。
> GACとかに直す前のをぶち込んだ環境にビルド通った奴を持ってって
> 動かすと普通に動くし。<動いたからって売り物にはしないけど。
厳密名付けてきっちりバージョン管理すべきじゃね?
972 :
デフォルトの名無しさん :2006/06/03(土) 00:17:28
Dim bitmap As bitmap Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click Dim ofd As OpenFileDialog = New OpenFileDialog If ofd.ShowDialog = DialogResult.OK Then bitmap = New Bitmap(ofd.FileName) End If End Sub Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint ' If Not (bitmap Is System.DBNull.Value) Then e.Graphics.DrawImage(bitmap, 0, 0) End If End Sub 上記のコードは、画像ファイルを開いて、それを表示するという単純なものです。 なぜか下記のエラーが出ます。 'System.ArgumentNullException' のハンドルされていない例外が system.windows.forms.dll で発生しました。 追加情報 : 値を Null にすることはできません。 bitmapがnullじゃなければ、bitmapを描画するっていうようにしたいんですが、nullなのに描画しようとしているみたいです。 どなたかご教授お願いいたします。
DBNull は名前通り DB に NULL として格納されてるかどうかであって、 変数がオブジェクトを参照してるかどうかじゃないぞ。 それは Nothing 。
>>971 もちろんおっしゃるとおりと思ってる。
>>970 の「ちなみに」以降はただ単に動いたよという話でして。
んな普通に動くならビルド時にわざわざ怒らんでも、と思っただけで。
975 :
デフォルトの名無しさん :2006/06/03(土) 00:33:43
>>973 ありがとうございます。
nothingにすると、エラーは回避できたのですが、画像が表示されないです。
なぜだろう??
976 :
デフォルトの名無しさん :2006/06/03(土) 00:42:25
名無しさん@3周年:2006/05/28(日) 19:47:49
小泉内閣による改正道路交通法って、本当に酷いね。
民間の委託業者が駐車違反を見つけて、保育園の送り迎えで車を離れた
だけも、猶予もなく放置違反金を取られてしまうね。警察の新たな裏金財源
だってね。これは、もう、ジョージ・オーウェルの「1984年」の世界でしょ。
配送業者は、どうしたらいいのよ?
委託業者からのキックバックで、自民党と警察はウハウハだね。
放置違反金は都道府県警察に直接入って、使途も使い放題だってね。
「もったいない」のPSE法の出鱈目も酷いけど、国民の知らないうちに
こんなことを決めてたんだね。(-_-)鬱。
駐車違反取締り業者への天下りも、し放題になるね。交通安全協会
を通じて裏金も取り放題だし、議員や警察の知り合いや暴力団や宗教
団体や在日の違反は放置し放題だろうね。民間業者だったら当然だね。
法改正の理由たるや、凶悪犯罪が増えているのに警察の手が回らない
から、民にできることは民に任せるんだって。勝手に朝鮮人(韓国人)
のビザなし渡航恒久化を決定して、治安悪化の扉を開いておきながら、
マッチ・ポンプもいいところだね。
心底呆れ返えった歩く死体、小泉信者馬鹿売国奴B層は、露ほども心
が痛まないのだろうか?本当にもう、いったいいつになったら真実に
目覚めるのだろうか?
小泉はサイコパス?
http://plaza.rakuten.co.jp/okinawapapa/3000
977 :
975 :2006/06/03(土) 01:02:05
すいません、表示されていました。 っていうのは、画面を他のウィンドウやタスクバーの下に隠したら表示されるんです。 すぐに反映させるにはどうしたらいいんでしょうか・・・
Invalidate
979 :
デフォルトの名無しさん :2006/06/03(土) 01:30:23
ありがとうございます。 If Not (bitmap Is Nothing) Then e.Graphics.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height) picturebox1.invalidate() End If としたのですが、めちゃくちゃ重いです。。。 どこに書くのが適切でしょうか?
まず Invalidate の解説読め
プログラムでscpするのに、何かイイのないですか?
UNIXのソースを解析して移植する
984 :
デフォルトの名無しさん :2006/06/04(日) 11:47:47
2つのボタンがあり、ボタンの上で右クリックをするとそれぞれ異なるフォームが 開くようにしたいのですがマウスのポインタがコントロールの上にある時に発生する イベントという便利なものはないでしょうか? とりあえず右クリックした時のポインタの座標がボタンの座標内にあるかどうかで 判定しようと思うのですがもう少しスマート(楽)な方法ってあります? 右クリックの判定はMouseUPでやります。 (0,0)-(60,30) ならフォームA (80,0)-(140,30) ならフォームB という感じ | ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄| 0 | Button1 | | Button2 | |____| |____| 30 0 60 80 140
右クリックでフォームが開くという仕様もどうかと思うが。 そもそも MouseUp のときにどのボタンで発生したかは明らかだろ。 なんでそんな思考になるのかまるで分からん。
あー、すいません。 単純に Button1_MouseUP....... という風にやればいいだけですよね。 お騒がせしまた。 別のフォームが開く理由なのですが99%くらいの場合はButton1/2のクリックのみで済むのですが 極々稀に詳細に渡る説明を付加しないといけない場合があるのでそのためです。 Contextメニューだと細かい選択とかしづらいのでフォームにしようと思いました。 |出口| λ............トボトボ
次の人・・・どぞ
988 :
デフォルトの名無しさん :2006/06/04(日) 17:21:37
ピクチャボックスにマウスをのせると、背景が変わるようなことをしてるんですが、 変わるのがちょっと遅いです。 これが普通なのかな?もっと快適にパッパッパっと変わってくれるもんだと思った・・・ コードは以下のとおり。。。 Private Sub picBxApp1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles picBxApp1.MouseHover If isApp(0) Then picBxApp1.BackColor = Color.Silver Else picBxApp1.BackColor = Color.Gray End If End Sub Private Sub picBxApp1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles picBxApp1.MouseLeave If isApp(0) Then picBxApp1.BackColor = Color.Gray Else picBxApp1.BackColor = Color.Silver End If End Sub コードに原因があるのかもしくは、mouseHoverはそのぐらいの早さなのかどっちでしょうか?
>>988 どうしてMouseHover使うの?MouseEnter使えばいいのに
990 :
デフォルトの名無しさん :2006/06/04(日) 19:01:17
>>989 おお、こっちは素早く動きました。
知りませんでした。どうもです!
TreeViewのノードをマウスでD&Dすることで、任意の階層や位置に移動させるコードを組んでいます。 ドロップ先によっては移動不可にしたいんですが、このとき、マウスカーソルを Cursors.No に変更する ことで、それが視覚的に分かるようにしたいと考えています。しかしながら・・・・・ドラッグ中は、単純に TreeView1.Cursor = Cursors.No とするだけでは変更できないようです。マウスボタンを離し、ドラッグを やめるとカーソルが変更されます。ドラッグ中にマウスカーソルを変更するには、どうすればよいんでしょうか?
>>992 DragOverイベントハンドラ内で
D&Dの可・不可を判定して、不可のときは
e.Effect = DragDropEffects.Noneする
マウスカーソルを変更するのにCursorプロパティを
設定する必要は一切なし。
994 :
992 :2006/06/04(日) 20:54:21
>>993 即レスthxです! できました! これで一歩進むことができました・・・・ありがとうございました! m(_ _)m
質問がない時でもこのスレを見ていると勉強になりますね。 今度自分も使ってみようと思うTipの宝庫です。 質問者さんも解答者さんも頑張ってください。
文字列"あいう"を"a4a2 a4a4 a4a6"というeuc-jpの文字コードとして 出力するにはどのようにすればよいでしょうか?
Encoding.GetEncoding で EUC-JP の Encoding 取得して GetBytes
998 :
デフォルトの名無しさん :2006/06/04(日) 23:21:22
Subプロシージャを読んだハンドルの名前を取得したいんですが、どうやるんでしょうか? Private Sub blahblah(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles textbox1.changed, textbox2.changed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ この部分を取得したいです よろしくおねがいします。
sender
1000 :
デフォルトの名無しさん :2006/06/04(日) 23:35:35
sende.nameですか?それだとtextboxだけになるんですよ・・・。 1とか2とか判断したいんですが可能でしょうか?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。