1 :
デフォルトの名無しさん :
2006/01/31(火) 10:16:22
新スレage
8 :
デフォルトの名無しさん :2006/01/31(火) 14:44:24
ageといいつつsageてる
>>7 を笑いつつ新スレage
まあ、あっちのスレタイトルがなんでああなったのかは詳しく聞いて みたいがな。
>>9 テンプレちゃんと貼ってるから荒らし目的じゃないだろうけど、なんなんだろうな
お知恵を拝借。 Graphics.DrawString で文字を均等割り付けして表示したいのですが…
mid関数ってsubstringより圧倒的に遅いのでしょうか?
>>11 文字間隔計算して一文字ずつ書いていく。
>>12 それぐらい自分で計れ
MIDIの再生ってVB.netで出来るのでしょうか?
できるが.NET Frameworkのライブラリには無いのでAPI使う。
17 :
デフォルトの名無しさん :2006/01/31(火) 21:16:41
マルチメディア関係のAPIのリスト及びそれらの使い方が乗ってるサイトないかな?
むむむ・・・ 難しい。VB6のときはサンプルが腐るほどあったのになぁ
ひょっとしてtrimが遅い?
ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な?
redim preserveが遅いのか〜 もっと速い可変配列ない?
もっと速い可変配列ない! ただし文字列型だけを扱うなら、String型の変数を工夫して使う事で超高速化が出来ることがある。
擬似配列なら一次配列しか出来ないでしょ。(工夫次第で出来るかも)
ようは、文字列データをトークン分けするだけ。
A(0) = "北海道"
A(1) = "青森"
A(2) = "秋田"
・
・
・
・
↓
B = "北海道,青森,秋田,・・・・"
後は何らかの方法でインデックスを用意しておけばいいってやつじゃない?
これなら内部のデータを探すときに凄く速くなるよね。
でも扱いにくいから微妙・・・
>>23 間違ってたらごめん
必要なデータ型は作るって時代に何やってんのw 時代錯誤も甚だしいよ。 っていうか、ArrayListじゃいかんのか?
遅さ一番!ArrayList!!
>26 データ型ってどうやって作るの?
畜生!一番の知ったかは>26だったのか!? 答えてくれー!!
なんか幼稚臭いノリの奴だなあ。 ArrayListがそんなに遅いとは思えんが、どうしても気に入らないなら 配列をラップするクラス自分で書けばいいだけでしょ。 可変長とかいっても別に難しく考える必要はなく、 あらかじめ最初から大き目の配列を用意しといて、必要に応じてサイズが変わった 「かのうように」振舞えばいいだけでしょ。 ArrayListの内部実装と(恐らく)同じようにね。
>>30 >あらかじめ最初から大き目の配列を用意
メモリもったいNeeeeeeeeeeeeeeeeeee!!!
速度とメモリは大抵トレードオフの関係にある、というのは常識だぞ
>あらかじめ最初から大き目の配列を用意 ってまさか本気じゃないよな?
>>31 馬鹿でしょ君
ならおとなしくサイズを変更するたびに新しい配列を作成してbltするしかないよ。
VBでいえばPreserve指定してRedimするってことね。
それがパフォーマンスを低下させるのがいやならどうするか、って前提の
話をしてるのに。
今の流行はList(Of String)ですよ //Genericsの話題がちっとも出ないなこのスレ
VBでプログラムを作る宿題でつまづいたので教えてください 指数関数はどうやって表現すればいいんでしょうか? Expっていう関数は存在しないみたいで・・・
System.Math.Pow eの累乗ならSystem.Math.Exp
>35 確かに理にかなってるけど、どうだろ?
>>38 できました!
教えてくれてありがとうございます(T-T)
初歩的な質問かもしれませんがお願いします クリアボタンを押したときに TextBox1〜10の内容を全て削除したくて Dim i As Integer For i = 1 To 10 Me.Controls("TextBox" & i).Text = "" Next このように書いたんですが、うまくいきません >'System.InvalidCastException' のハンドルされていない >例外が microsoft.visualbasic.dll で発生しました。 >追加情報 : 文字列 "TextBox1" から >型 'Integer' へのキャストが有効ではありません。 ご指摘お願いします。
42 :
デフォルトの名無しさん :2006/02/01(水) 01:26:52
今ユーザーコントロールを作っています。 そこで聞きたいことがあるのですが、 @独自のイベントの作り方。 AButtonコントロールのように、MouseDownしたときとMouseUpしたときなどイベントが発生したときに、表示されている画像を変更する方法。 B独自のプロパティに説明をつける方法。 CTextやBackColorプロパティのように独自のプロパティを変更したらすぐにコントロールの表示も変更するように設定する方法。 以上です。 どなたかご教授ください。お願いします。
>>42 > @独自のイベントの作り方。
イベント でヘルプ見れ
> AButtonコントロールのように、MouseDownしたときとMouseUpしたときなどイベントが発生したときに、表示されている画像を変更する方法。
それぞれのイベントで処理する Formでやるのと変わらん
> B独自のプロパティに説明をつける方法。
VB.NET2002/2003じゃ無理
VB2005なら XML ドキュメント コメント でヘルプ見れ
> CTextやBackColorプロパティのように独自のプロパティを変更したらすぐにコントロールの表示も変更するように設定する方法。
プロパティのSetでInvalidate呼ぶ
>>43 ありがとうございます。
早速調べてみます
あ、XMLドキュメントは無理と言い切るのは駄目だな ・自力でXMLを書く ・VBCommenterなるアドインを使う
46 :
42 :2006/02/01(水) 02:18:14
>>45 @とCについては解決しました。
Aは諦めることに、Bは2005インストールして出直してきます。
ありがとうございました。
48 :
デフォルトの名無しさん :2006/02/01(水) 02:40:51
文字を描画してそのサイズを得る方法ってありますか?
Graphics.MeasureString 2.0ならTextRenderer.MeasureTextも
50 :
42 :2006/02/01(水) 02:49:24
相変わらずコントロール作ってます。 質問です。 『Text』という名前のプロパティは作れますか?
オーバーライドする。 作る意味が分からんが。
>>51 やってみましたが出来ませんでした。
以下がコードです。
Private _Text As String = Name
Public Overrides Property Text() As String
Get
Return _Text
End Get
Set(ByVal Value As String)
_Text = Value
Invalidate()
End Set
End Property
本来なら標準のTextを利用しようと思ったのですが、それが無かったので作ることにしました。
よろしくお願いします。
53 :
42 :2006/02/01(水) 03:05:42
>>51 すみません。Textプロパティがないのでは表示されていないようでした。
system.Drawing.Colorをsystem.Drawing.Brushに変換する方法?
可変長配列にあらかじめ確保しておく領域程度で メモリもったいないって、いつの時代の人間だ? そんなこといってたらWindowsなんて使えねーよ。
Labelコントロールの背景を透過することは出来ますか?
>>57 出来ませんでした。
自分の場合はコントロールに画像を描画した上で、ピクチャーを貼り付けているのでその時点で消えてしまうのかもしれません。
コントロール-ピクチャー-ラベル
コントロール・・・画像を描画
ピクチャー・・・背景色Transparent
ラベル・・・ピクチャーの子コントロール。背景色Transparent
>>52 俺も含めて回答者は知ったかぶりやだからあんまり真に受けちゃダメだよw
最終的には自分で判断しないと。
とりあえず、独自プロパティーの「説明」っていうのが、デザイナのプロパティグリッドに
表示されるやつのことを指しているなら、それは2002,2003でも実現可能。
DescriptionAttribute属性を参照。
っていうか、君レベルの奴がそんなにいっぺんに欲張って大丈夫?
二兎を追うものは〜な気がするけど。
VB.netで作ったプロジェクトを VB.netがインストールされていないパソコンで動かしたいのですが binにあるexeファイルをクリックするだけではだめなのでしょうか?
.NET Framework再頒布可能パッケージをインストール汁
>>59 ありがとうございます。
2chは適度に参考させてもらうことにしますw
63 :
デフォルトの名無しさん :2006/02/01(水) 13:58:40
System.IO.FileNotFoundExeption てな具合に激しく超ヒントが書いてあるわけだが? 出直して来いや無能が
System.Windows.Forms.Button で、FlatStyle = FlatStyle.Flat に しました。.Image に画像をセットした時に .Enabled = false にすると 画像がグレーになってしまいます。 画像をグレーにせずに、かつボタンがクリックできないように するには何か方法はありますか?
クリックできないようにってのは、押下の動きもしないようにするのか? それともただたんにClickのイベント処理が進行しなければいいのか? 後者なら、ボタンのプロパティとは別にEnableを判断するフラグを用意しといて、 それに従ってClickのとこでExit Subしとけばいい 前者はすまんが知らない
>>67 前者です。
ボタンにフォーカスもあてたくなく、クリックもしたくない。
なので、画像がグレーにならない Enabled = False の状態を
作りたいのです…。
そういう俺様仕様UIなコントロールってユーザーをイラつかせるだけだと思うけど。。 まあオーナードローでできまっせ。
私も DISABLE = グレーでいいじゃん、と思うのですが、 これがユーザーからの要求なので仕方なく。。。 で、教えて頂いたオーナードローで、との事ですが、OnPaint を オーバーライドして画像を描画する事はできたんですが、今度は 標準のボタンがもっている、フォーカスがあたった時に描かれる 線?を書く方法がわかりません。 度々すみませんが、アドバイス頂けるとうれしいです。
System.Windows.Forms.ControlPaint っていうかどぼんに解説があるじょ
っていうか、ベースクラスのOnPaint呼んでから描画すれば問題ないと思ったけど 違ったかな。
>>70 APIにDrawForcusRectってのがあるけどこれじゃだめかな?
関連付けられたアイコンとDLLにまとめられたアイコンとは直接関係無いんだが。 ExtractIconEx使いな。よくMSDNやサンプルを見ないとリークするぞ。
76 :
74 :2006/02/02(木) 04:29:10
ExtractIconExを使って解決しました。ありがとうございます。 一つ聞きたいのですが、EXE、DLL内のアイコンのインデックス番号にマイナスという値はありますか?
vb6ではラベルを透明にできましたがVB.NETではできないのでしょうか?
できる
82 :
74 :2006/02/02(木) 20:21:43
EXE、DLL内の指定指定したリソース番号からアイコンを取得する方法を教えてください。 インデックス番号とは違うみたいです。 よろしくお願いします。
83 :
デフォルトの名無しさん :2006/02/02(木) 20:45:17
vb.net(2003)で開発を行っています。 プログラム中でローカルマシンのバッチファイルを呼び出し、 処理の終了を検出したいのですが巧い方法はありませんか?
Processクラス
86 :
デフォルトの名無しさん :2006/02/02(木) 22:24:37
87 :
デフォルトの名無しさん :2006/02/03(金) 00:14:23
はじめまして。おとといからBasicの本を買って勉強し始めた超初心者です。 今アプリケーションのテキストボックスの例題をやっているのですが、 ひとつのテキストボックスでTextChangeとKeyPressをどうやって入力すればいいのか分かりません。 フォームでTextbox1をクリックするとTextChangeのイベントプロシージャは出てきますが、つぎにクリックしてもKeyPressのイベントプロシージャが出てきません。 手動で入力なんてことはないですよね?どうすればいいのでしょうか?
88 :
デフォルトの名無しさん :2006/02/03(金) 00:15:18
はじめまして。おとといからBasicの本を買って勉強し始めた超初心者です。 今アプリケーションのテキストボックスの例題をやっているのですが、 ひとつのテキストボックスでTextChangeとKeyPressをどうやって入力すればいいのか分かりません。 フォームでTextbox1をクリックするとTextChangeのイベントプロシージャは出てきますが、つぎにクリックしてもKeyPressのイベントプロシージャが出てきません。 手動で入力なんてことはないですよね?どうすればいいのでしょうか?
コード画面の上のほうのコンボボックス
>>85 MSDNよく探しても見つかりませんでした。
91 :
88 :2006/02/03(金) 02:52:49
>>90 だからExtractIconExの解説をよく嫁って言ってんの
// ExtractIconでも同じ要領でできる
2003でプログラミングしてると出てくる混合モードって何!? エラーが発生すると機械語見せてくるし、ブレークポイントは無視するし・・・
ブレークポイント無視するか? Releaseビルドじゃないだろうね?
アセンブラを見るのが混合モードなんだけど・・ でもソースと全然合ってないことがあるので使えん(C++の話) 元ソースの途中なのにアセンブラ側はretで切れてたり
Releaseビルドじゃねぇの
おはようございます。 MDI親フォームの背景色を変更する事は出来ますが、 MDI親フォームの背景色を透明もしくは半透明にする方法はありますか? 情報がありましたらよろしくお願いします。
とりあえずSystem.DiagnosticsのProcessクラスつかっとけ
うちも時々Debugモードでも迷走することがある 一度VisualStudio閉じて再度開いてリビルドコンパイルかけて〜 とかやると治るな
102 :
94 :2006/02/04(土) 16:49:49
>>95 ,97
両方で発生します。
その状態になったときは、治し方が分からないのでメッセージボックスをブレークポイント代わりにしたりしてます。
開発効率下がりまくり・・・
ContextMenuとかToolTipみたいにフォームをはみ出すことが出来るコントロールの作り方を教えてください。 よろしくお願いします。
MSDNで「混合モード」で検索すれば意味はだいたいわかると思うんだが。。 っていうか、ブレークポイントなんてそんな使わないし、 それで開発効率が下がるってそりゃ使い手の腕の方に問題があると思うぞ。 いや、煽りじゃなくてマジで。 まあMSDN検索する能力もないんだから当然か。 それに.NETのコードぐらい記述性があって可読性のあるコードが書けると そんなにデバッガのお世話にならないと思うんだけど。
108 :
103 :2006/02/04(土) 18:42:38
どなたか分かる方いらっしゃらないでしょうか・・・
デバッガいらんならIDEもいらんだろ
ウィンドウからはみ出すんだったら別ウィンドウにするしかないですよ。 コントロールの中でウィンドウ作るしかない
111 :
103 :2006/02/04(土) 19:07:27
>>110 やっぱり、新しいウィンドウにするしかないですか・・・
ありがとうございます。
112 :
デフォルトの名無しさん :2006/02/04(土) 19:59:33
売上TBLから商品マスタを参照するSQLでDataSetを取得しているのですが、 Form上で、売上TBL側の商品コードを変更しても、 該当する商品マスタの商品名が更新されません。 (変更前の商品名が表示されたままです) どうすればいいのでしょうか?
104の言い分はなるほどなーとオモタ。 が、若干誤解されたか? ブレークポイントに相当するなんらかの機能orやり方を 使っているはずだ。 ほむほむ。
俺もデバッガいらないな。 コンパイルエラーさえ取ればだいたい思ったとおりに動いてしまう。
116 :
112 :2006/02/04(土) 21:16:49
1.アダプタにSQLを設定 SELECT 売上.*, 商品.商品名 FROM 売上 LEFT JOIN 商品 ON 売上.商品コード = 商品.商品コード; 2.アダプタからDataSetを生成 3.DataSetをDataGridに表示するように設定 4.アダプタにFillを行いデータ表示 ここまでで、データの表示はできているのですが、 DataGridで、商品コードを変更しても、 商品名が変わりません
>>116 DataGrid上にでろーっと並んでる売上詳細で、特定の行にある商品
コードを直接変更したら、その横に表示されている商品名がぱっと
変わるはずなんですけど動きませんってことかな?
118 :
112 :2006/02/04(土) 22:04:48
>>117 そういうことです
つたない説明で申し訳ありません
なんで商品名がぱっと変わらないのか、わからないのです
変わるはずありません
>>118 DataGridはインメモリのDataSetをそのまま読み書きしているだけ。
言うなれば値は入ってるけど式の無い、エクセルシートみたいなもん。
自分でコードを追加しないと、そんな都合のいい動作はしないよ。
変更した商品コードをもとにして商品テーブルを検索、ヒットした値
をDataGridのセルに代入するような処理がいるかと。
つか、売上詳細で商品コードを書き換えるっておかしいと思わない?
売上小計や総合計、果ては日報以降にまで波及する操作だけど、そこ
まで考えが及んでる?
121 :
112 :2006/02/04(土) 22:31:40
>>120 例えば、DataGridでなければ大丈夫ですか?
テキストボックスを使った場合とかです
更新してるのは、売上TBL側の商品コードです
マスタ側の商品コードは更新してないので、大丈夫です
こいつは言ってること全然分かってないみたいだから 多分何言っても無駄だな。 ていうか、自分のプログラムが何やってるのかも全然分かってないな。
良く読まずにレス JOINした結果だと DataSetの更新って効かないんじゃなかった?
更新出来るのはデータセットだけ。
>>121 どんなコントロールにバインドしても変わらないよ。
商品テーブルをDataSetに取り込む&商品コードを入れたら商品名を
返すような関数を自作して、表示している値を更新するような感じに
してみたら?
で、そうやって変更したDataSetを使ってマスタファイルに更新をか
けるのは、けっこう面倒だからがんがってくれ。
126 :
112 :2006/02/04(土) 22:52:51
わかりました、やってみます 初心者質問に、みなさんありがとうございました
127 :
98 :2006/02/05(日) 00:00:05
解決したわけではないですが一応自己解決です。 SDIタイプでMDIっぽいアプリを作ってやってみます。 お騒がせいたしました。
128 :
デフォルトの名無しさん :2006/02/06(月) 11:22:05
教えていただきたいのですが。 USING句の利用にはIDisposable インターフェイスを実装する必要があります。 独自クラスの作成時にIDisposable インターフェイスを実装する方法はどのようにしたらよろしいのでしょうか?
何が分からないのか分からん。
とりあえずimplementsしてみる?
131 :
デフォルトの名無しさん :2006/02/06(月) 11:57:10
Public Class UserClass01 Implements IDisposable Sub Dispose() Implements IDisposable.Dispose Dispose(True) GC.SuppressFinalize(Me) End Sub このコードで 'Public Sub Dispose()' に対する引数が多すぎます。 というエラーになります。
>>131 うん
多いんだろうなぁ
> Dispose(True)
意味も分からずに部分的にまるごと写して 一体どうするつもりなんだよ。
そのクラスにはファイナライザなんかあるのか? ないんだろ?
FlexGrid for .NETについて教えてください。 MSFlexGridの場合 msfg.col = 10 msfg.row = 10 msfg.text = "hoge" を記述するには msfg.Item(msfg.row, msfg.col) = "hoge" しかないでしょうか?
で、どうしたいんだ?
137 :
デフォルトの名無しさん :2006/02/06(月) 17:32:41
今、二つのグループボックスに3つづつのラジオボタンを使ってテキストボックスの文字修飾と文字色を変えるプログラムのデータを本のとおりに入力したのですが、 実行すると文字色の方は問題ないのですが字体を変えるほうのラジオボタンをクリックすると emSizeとかゆうのが"0"じゃダメってエラーが出てくるのですが、コードやプロパティを見てもemSizeなんてものがありません。 どうしたらいいのでしょうか?分かる方お願いします。
まずその入力したプログラムのデータとやらをコピペしろ。話はそれからだ。
分かると思って聞いてんのか? 絶対に誰も分からんとまでは言わんが…
141 :
137 :2006/02/06(月) 17:58:10
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked = True Then TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Bold) Else : TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Xor FontStyle.Bold) End If End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged If RadioButton2.Checked = True Then TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Italic) Else : TextBox1.Font = New Font(TextBox1.Text, TextBox1.Font.Style Xor FontStyle.Italic) End If End Sub
142 :
137 :2006/02/06(月) 17:58:43
上の続きです。 Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged If RadioButton3.Checked = True Then TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Underline) Else : TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Xor FontStyle.Underline) End If End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged TextBox1.ForeColor = Color.Red End Sub Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton5.CheckedChanged TextBox1.ForeColor = Color.Blue End Sub Private Sub RadioButton6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton6.CheckedChanged TextBox1.ForeColor = Color.Yellow End Sub End Class
> emSizeとかゆうのが"0"じゃダメってエラーが出てくるのですが、コードやプロパティを見てもemSizeなんてものがありません。 確かに俺がみてもコードにプロパティにも「emSize」なんてないが、 それならコンパイラから見ても「emSize」なんて見つからないはず。 少なくともオマエが「emSize」ってどこかに書いちゃったから、 コンパイラタンがそれを見つけてくれて「そんななものは参照できませんことよ!!」って叱ってくれているとおもう きっと
144 :
137 :2006/02/06(月) 18:12:30
ありがとうございます・・・・・ 何とか自力でやってみます。
emSizeってフォントか文字列描画あたりじゃないか? ちょぃと調べてみるかのぅ
>Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged > If RadioButton2.Checked = True Then > TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Italic) > Else : TextBox1.Font = New Font(TextBox1.Text, TextBox1.Font.Style Xor FontStyle.Italic) > End If >End Sub ここに間違いがある あとは自分で考えろ
目で追うんじゃない・・・F3検索で「emSize」を検索するんだ・・!! (V)(´Д`)(V) フォッフォッフォォ
しかしなんていうか、無駄の多いサンプルプログラムだな
Else : TextBox1.Font = New Font(TextBox1.Text, TextBox1.Font.Style Xor FontStyle.Italic) これか? ってことはキャストのエラーにはならんということか。ほー
150 :
137 :2006/02/06(月) 18:28:07
>>145-148 ありがとうございます!
Text→Fontでした。
しかし独習はつらい・・・
152 :
137 :2006/02/06(月) 18:33:59
エラーも出なくなったし、忘れることにしました・・・・
>>152 バカ
せっかく良いチャンスなんだから、
ちゃんと原因を突き止めてごらん
何でコンパイラがコンパイルエラーを出したのか、
どうすれば解決できるのか、
それが分からないでデバッグできるようになるはずがないよ。
まぁ、「とりあえず動けばいいや。後で苦しんでもしんでもいいや」と思ってるなら別だけどね。
こういうところがVBの嫌いなところだ。 FontStyleとSingleは型違いだってコンパイル時にせめて警告ぐらい出せ。
なるほど
Font(string,single)なのか・・・ってそれじゃ
>>137 の参考書って・・・Σ
>>157 Fontクラスのコンストラクタはそれ以外にも8種類近くある
>>137 の参考書が使ってるのは、Font(Font, FontStyle)の方
Option Strict Onは強力お勧めだが、今回のはそれじゃコンパイル時には分からんよ。 その形式でオーバーロードされてるんだから。 気付くとしたらインテリセンスで違うパラメータが出てくるってとこじゃない?
enumにctype()かければ動くんか?
trace.writeline の意味がいまいちよくわからない 本やhpを見る限り、メッセージボックスまたはdebug.printのような使い方なのだが、 実行してもどちらにもならない。 誰か教えてください
ま、まじや・・・w C#だと明示的にキャストせなあかんな。 textBox1.Font=new Font(textBox1.Text,(float)(textBox1.Font.Style ^ FontStyle.Italic)); ほほぅ。
とりあえずデバッグウィンドウにでてくるが?
>>162 トレース リスナ クラスを*.exe.configで追加してやるとファイルやコンソールに出力できる。
<configuration> 要素 の「トレースおよびデバッグ設定のスキーマ」を参照。
Option Explicit On Option Strict On Imports System Imports System.Diagnostics Public Class EntryPoint Shared Sub Main(args() As String) Trace.Listeners.Add(New TextWriterTraceListener(Console.Out)) Trace.WriteLine("aaa") End Sub End Class vbc /r:System.Dll /d:TRACE=True a.vb これでも一応でてきた。
Explicitとかソースに書き込むヤツ居たんだ・・・
そういう、大して役に立つとも思えん知識までよくカバーする気になるよな。 いや馬鹿にしてるんじゃなくて関心してるのよ、俺はそんなにモチベーションないから。 仕事でいやいやコード書いてる人間なんで。
オプション派なのけ?
何が役に立つかどうかなんてすぐにはわからんやんか・・・。 役に立ちそうにないからやらんとこってのは やめたんだ。特にすぐに試してみればわかることは。ネ!
オプションでつけたら自動でソースに書き込まれるんじゃなかったっけ
書き込まれんようだ。
そうなんだ・・・VB6じゃ書き込まれるよね。 何でソースだけで再現できるようにしないのかなぁ
VB.NETは基本的にそういう方向になってるような希ガス。 名前空間の設定とかもそうだねぇ。
>>173 何でって、C系と違って、そもそもあのIDE環境で作ることが絶対前提の言語だから
SDKでやってる自分の立場は
SDKが何なのかわかってる?
C#だってそういう部分があるだろが
Visual Basic コンパイラ オプション /optionexplicit参照 Visual Basic コンパイラ オプション | /optionstrict | コンパイル コマンド ラインのサンプル | Option Explicit ステートメント 宣言されていない変数を使用している場合に、コンパイラによってエラーが報告されます。 --------------------------------------------------------- Visual Basic 言語リファレンス Option Explicit ステートメント参照 Const ステートメント | Dim ステートメント | Function ステートメント | Option Compare ステートメント | Private | Public | ReDim ステートメント | Sub ステートメント | /optionexplicit | /optionstrict | /optioncompare:binary | /optioncompare:text ファイル内のすべての変数を明示的に宣言するためにファイル レベルで使用します。
VBが関係なくなってると思ってる
>>182 =178にワロタ
187 :
デフォルトの名無しさん :2006/02/07(火) 16:39:18
>>182 ってIDEって言葉を理解してないんじゃないの?
IDEってらっきょだろ? ・・・言ってみたかっただけ 吊ってくる。 確か統合開発環境・・・であってるよね? あってるって言ってくれ。
Dim Frm As Form Frm = New Form1 Frm.Show() て書いて関数抜けても実体は残るよね? でも変数はもう参照できないんだけど実体はどこに入ってんの?
フレームワークが保持してる。当たり前だが。
実体を誰が持っているかは謎・・・。
倒錯してると思うけど。 枯れ木に花が咲くのが当たり前で、生木に花が咲くのを驚く、みたいなw だってさ、参照がスコープから消えると抹殺される、ってことがむしろ 自然状態じゃないわけでさ。
(゚д゚;;;)何言ってんのこいつ・・・・
>>194 ふーん違うんなら反論どうぞ
できないだろうけどw
>>195 ふーん違うんなら反論どうぞ(どうせ私びは)できないだろうけどw
スコープ外れても消えないっていう基本を理解できていない。
ふぅ
VB.NETとかjavaとかVB6とか、これらのプログラミング言語は一応OOPに則ってる節がある。 これらの言語で居移す売る概念は「オブジェクト変数は参照型である」というもの。 以下はこの前提に基づいて書いています。 参照型であるがゆえに、オブジェクト参照式の指す「実体」は別に管理する必要があり、 実体が「別に管理」されているから、「スコープ」という変数の生成/消滅とは別の生存の道を辿らざるをえなくなっている。 管理されている実体は、「いずれの”何か”からも参照されなくなった時点で存在を確認できなくなる」という性質を持つ。 ま、存在を確認できなくなったとたん、殺される運命を辿るわけだな。 --------------- ここまでは普通の話なのであまり面白くないが… オブジェクトが可視性のあるコントロールの様なものの場合、「人の目に参照されている」というのが残る。 VB6とかはこの辺がごちゃごちゃで、わざわざFormsコレクションとか取り入れて、 Formというクラスが生成されると暗黙的にFormsコレクションによって参照されるようになってる。 はっきり言って気持悪い。 で、これを解消したのが VB.NET だと思っていたんだが… 〜つづぬ〜
〜続き〜 > Dim Frm As Form > Frm = New Form1 > Frm.Show() このコードが一つのブロックの中にある(つまり、Frmがスコープから外れたときに消滅する)時、 本当かどうかわからんが、どーも > て書いて関数抜けても実体は残るよね? > でも変数はもう参照できないんだけど実体はどこに入ってんの? らしいな。 これは「オブジェクト変数:Frmにしか参照されていないForm1の実体」が「Frmに参照されなくなっても生存している」 という矛盾がある。 本当なのか? ※明示にDispose()する必要があるかもしれないが、それは実体に対する働きかけであって、 実体を殺すことではないはず。 俺、おかしいかな。
だからスコープから外れた時に実態が処分される、ってのは そのためのメカニズムがあってこそであって、それが自然状態ではないのw Cとかでプログラム書いたことないのかな
参照が切れたらその場で殺して欲しいね。 さもないとC++のnewとdeleteの嵐の二の舞だ
見えないオブジェクトは消えてんの?
>>203 gc働くような言語なら、どこからも参照されなくなったら勝手にgcしちゃいます
きっといつか
C++みたいに、プログラマが任意に殺して良いような言語はdeleteちゃんとしないとメモリ食べつくします
たぶん
>>200 ヒント:自分が書いたコード以外の部分で参照を持っていることもある
>>201 スコープはともかく、GCは言語レベルで規定されているんだから、
参照がなくなったらインスタンスが消えるのはVB(少なくとも7以降)にとっては自然状態と言って差し支えないと思うが
>>205 ?
'on VB.NET
> Dim Frm As Form
> Frm = New Form1
> Frm.Show()
これしか書いてないのに、他に何か参照してるの?
マジで?
教えろエロい人
Form1のコンストラクタ、Loadイベントで何やってるかによるわな。
そういえばそういう方法もあった罠 視野狭くなってるのでちょっと目薬刺してきます
むしろ目刺して視野0にしてこい
TLSが持つんかな。 まっよくわからんや。
どっかが持ってる可能性はそれなりに高いと思うが、 仕様として不明な以上、いきなり消される可能性は否定出来ない。
つうか2005ならUsingできれいに書けるのにね。 Using frm as new Form1 frm.ShowDialog End Using そうじゃなくモードレスフォーム表示だとしたら、ローカル変数にしてるって時点で設問としてありえんな。
FormがIDisposableインタフェイスを実装してるからusingブロックで確実にDispose()メソッド呼んでくれてうれしいなー って思ってるだろうが、実はあんまり関係ない
FormっていきなりDispose呼んでよかったんだっけ? っていうか、そんな一瞬で花と散るフォームに一体なんの意味がw
だから微妙にShowじゃなくShowDialogなんだが・・・。 でもって、普通Showするなら親フォームのフォームレベル変数にするべさ。 ローカル変数でShowしてどこ行った?って議論がナンセンス。 そんなことを考える必要があるソースは書かないのが正解。
ああ、見落とした。。 スマン
Showされた時点でFormは自分自身(MyBase)を参照してる
>>219 まるでMyBaseが遊離してる雰囲気なのか?
だから参照してるとかされてるとかの問題じゃなくて ガベコレ抑制してるだけだっつーのw つーか.NETの継承ってのはベースクラスのオブジェクトに委譲することによって 実現されてるのか?w
それ根拠あるのか? 推測か?
それ->ガベコレ抑制してるだけ ね。
>Showされた時点でFormは自分自身(MyBase)を参照してる 何が言いたいのかよくわからんが、念のため。 ルートからつながってない限り、循環参照は意味なし。 参照カウンタ方式なら別だけどね。
>ガベコレ抑制してるだけだっつーのw 詳しく
gc抑制とか何だ? kwsk
227 :
デフォルトの名無しさん :2006/02/08(水) 03:36:48
VB2005Expressで初めてVBに触れたんですが 参考にしてる資料(VB2003を使ってる)で、コードを書き込む際に クラス名を全般、メソッド名をDeclarationsにして宣言しろってなってるんですが メソッド名にDeclarationsが出てきません。 VB2005になってからの仕様変更なのか、Expressだから出来ないのか この辺わかる方、教えて頂けませんでしょうか。
参考にしてる資料の >コードを書き込む際に >クラス名を全般、メソッド名をDeclarationsにして宣言しろ と書いてある部分を正確に書き移してみて。
コードエディタウィンドウ上部にある左側リストボックスから(全般)を
右側リストボックスから(Declarations)を選択し、以下のソースコードを入力します。
Private DownloadCount As Long ’’注釈文
Private JVOpenFlg As Boolean ’’注釈文
こんな感じのコードです。
えっと、参考にしてるのは、JRA-VANのソフト作成体験教室です
http://www.jra-van.ne.jp/dlb/sdv/trial.html これのLesson 4で躓いてます。
あー。あれか。 GeneralとDeclarationsか。 気にしちゃだめだ。 無視して良し。
Windowsフォームデザイナで生成されたコードの下に書けばよい。
「Windowsフォームデザイナで生成されたコード」 な。
2005はそんなんなってるのかー。 いいと思います。(動けば) ちなみに宣言=Declarationsです。
>ちなみに宣言=Declarationsです。 なるほど、では一番上の所に書き込んで置けば良さそうですね。 こんな夜中に有難う御座いました。
初めてVB2005でBASICを始めたものです。 テキストを見ながら次のようなプログラムを実行してみました。 Dim a As Integer a = 123 Trace.WriteLine(a) MsgBox(a) Debug.Print(a) メッセージボックスは正常に表示されるのですが、デバッグ出力画面は 変化がありません。出力画面に表示させるにはどうすればよいのでしょうか。 よろしくお願いいたします。
DebugPrint・・・って何だ? .net2003のキーワードには乗ってないけど? Debug.WriteLine(a)でやってみ? '的外れなら許せ
239 :
↑ :2006/02/08(水) 10:19:05
うわ 恥ずかしいこと書いてしまった。 TraceとDebugの違いってDebugはデバッグビルドのときのみ有効位しか違いがなかったのか (恥の上塗りになったらどうしよう)
240 :
236 :2006/02/08(水) 10:28:52
使い込まずに質問してしもてすまんかったです。 イミディエイトウィンドウと出力画面(デバッグ)を勘違いしていました。 イミディエイトウィンドウを表示するようにしたらできました。 ありがとうございました。
わからん!どーしてもわからん。 フォームデザイン画面で配列型のテキストボックスが作れないのだ! コピー→ペーストではダメなんですか?
配列型のテキストボックスってなんだろう? VB6.0のコントロール配列のことを言ってるのなら、VB.NETでは そういう機能がなくなった。ほかの方法で同様の使い方ができるん で、ぐぐって出てくるサンプルを参考にするといいかも。
さんきゅ。頭の切り替えが必要みたいですね。 教えて君でスマンが、他の方法ってのは何ですか?
ぐぐればすぐに見つかる
Private Button_test(9) As Windows.Forms.Button Button_test(0) = Button1 Button_test(1) = Button2 ‥‥以下続く‥‥ こんな感じでしょうか。面倒。
>>245 private button_clc as new system.collection.hashtable
for each ctl as control in me.controls
if typeof(ctl)=system.windows.forms.button then
button_clc.add ctl.hashcode(),ctl
end if
next
で、button_clcを使うとか?
247 :
デフォルトの名無しさん :2006/02/08(水) 12:52:05
つうか無理に配列にしないでも、イベント関数を共有して使うなどは出来るわけだし。 プロパティのまとめ設定は確かに面倒だけど、ForEachでいける部分多いし。
248 :
デフォルトの名無しさん :2006/02/08(水) 19:30:21
くだらないことかもしれませんが質問させてください。 文字列二項目程度のレコードを50件程度「何か」にいれて、サーバに送り付けたいと思います。 サーバではそのレコードをDBに挿入します。 この場合、レコードを格納するのは何が適当でしょうか? 配列?データセット?
XML
CSVが無難じゃない?
SOAP
>>250 無難じゃないかと
XMLなら可読性高いから保守簡単
253 :
248 :2006/02/08(水) 22:58:33
すみません。言葉足らずでした。 サーバってのはアプリケーションサーバのことです。 プログラム中で受け渡すので、 >配列?データセット? なんて書いてみたのですが。 ファイルにわざわざ落とすのはちょっと。。。
氏ね
>>253 ".NET リモート処理の概要"を参照
誰もファイルに落とせなんて書いてない件について
257 :
248 :2006/02/08(水) 23:14:10
通信手段を聞いてるのか、それとも通信があってお手紙の書き方を聞いてるのか。 まったく、プログラマ以前の質問だから何が聞きたいのか一切わからんよ。
ADO.netでもOKだし、リモーティングでもWebサービスでもOk、べたにソケット通信でもok。
ここは
>>248 にDDEを使ってもらうことにしよう な!
なんでこう付属するヘルプに書いてあることも読めない奴が多いんだろう?
>>261 俺もそう思うが
.NETの階層の区分け方法を理解しないと目的のクラス/メソッドは見つけにくいのも分かる
イメージできないものが極端に効率が落ちるのと一緒だとおもう
>>262 でもさ、サーバ側をDBで処理するなら、最低でもADOは使うはずだからまずそれは見つかるよね。
それに通信するなら、ソケット通信があるぐらいは自明。
RemotingをWebサービスは知らないと手がかりはないが、それぐらい普通言葉程度は知ってないか?
>>263 まぁ、そうだな。
ソケット通信とプロセス間通信が結びつかなかったとかありえるが、
"リモート"くらいは思いついて欲しい希ガス
何も道を示さず、他人に回答を求めるのはあんまりよくない傾向ではあるが
265 :
248 :2006/02/09(木) 00:43:44
ウゥゥ、不勉強でごめんなさい。
DBとはADO(ODP).NETでつないでます。
>>258 さんのいう「お手紙の書き方」を伺いたかったのですが、
質問の仕方が不十分でした。
APサーバはIntertage云々 for .NETとかいうヤツです。
サンプルがやっと動いた程度で、
>>264 さんの挙げてる単語なんて思いつきもしませんでした。
精進しまつ。
XML俺もお勧めしておこう
よく知らんが、何らかのミドルウェアを使っているんであれば、 それに適した方法あるいはルールとかがあるんではないの?
268 :
デフォルトの名無しさん :2006/02/09(木) 09:29:36
つうか、DBにADOで突っ込んでるなら、普通にクラサバにしちゃえばいいじゃん。 三階層化するだけの知識なかったんだからそれで十分。 三階層化しようと思って少し調べれば、Webサービスってすぐ出てくるんだけどね。
Interstage Business Application Manager for .NET これか、富士通とはかかわらないほうがいいのに
270 :
デフォルトの名無しさん :2006/02/09(木) 11:14:14
質問です。 Windowsアプリケーションで、 ボタンを押したときにパネルコントロール上に配置してある 全てのコントロールを一旦削除したいのですが、 i = 0 Dim Ftype As String Do While i < PanelList.Controls.Count Ftype = PanelList.Controls(i).GetType().ToString If Ftype <> "System.Windows.Forms.Panel" Then PanelList.Controls.RemoveAt(i) End If i = i + 1 Loop このソースで実行すると1回の実行では半分くらいのコントロールが 残ってしまいます。(何回かボタンを押していると全て消えます) 1回で全て削除するにはどのように書けばよいでしょうか?
PanelList.Controls.Count がRemoveAtするたびに減っていくからじゃないか?
Clear
>>270 つーか個別にココの部分がおかしい、とかいうより
もうなんていうか全てがおかしい。
ひょっとして釣りかなんか?
>>270 いったん消去動作に入ったら、消したいコントロールの数は変動しな
いんだから、最初にカウントした個数分だけループ回せばOKだろ。
Whileは回数が状況によって変わる場合に用いられるステートメント。
今回のは普通のForNextループでいけるじゃん。
If TypeOf PanelList.Controls(i) Is System.Windows.Forms.Panel Then End If
dim i as integer for i=PanelList.Controls.Count to 1 step -1 If TypeOf PanelList.Controls(i) Is System.Windows.Forms.Panel Then PanelList.Controls.RemoveAt(i - 1) End If next 完璧だw
277 :
270 :2006/02/09(木) 14:14:26
>>271-276 皆さんありがとうございます。
PanelList.Controls.Count が変動する値だというのを見落すという
単純ミスでした。無事解決しました。
予想だがPanelListにはPanel以外が入っているからではないか。 だったらPanelListという名前はワロスだが
280 :
248 :2006/02/09(木) 15:09:28
>>268 処理内容からしても明らかにそれで充分だとおもいまつ。
でもハードもAPサーバも売らないといかんらしいですので。
そしたら、やっぱSOAPしかないやん てか、さすが富○通
248ってかなり素人っぽいな
283 :
248 :2006/02/09(木) 17:35:26
最初は誰もが初心者だが、それを免罪符にして傲慢かましたりしなけ れば、きちんと相手してもらえると思う。報告連絡相談をしっかりな。
>報告連絡相談をしっかりな。 傲慢ってのはこういう口調態度のことをいうんだけどw
「ほうれんそう」は社会人の必須能力だろうに。
傲慢とはまさに
>>285 を形容するためにあるような言葉ですね
289 :
デフォルトの名無しさん :2006/02/09(木) 21:39:28
>>276 ねぇ何でiで型チェックしてi-1を消してるの?
ていうかループ1回目で例外にならんか?
DBのコネクションオブジェクトって、みんな、ビジネス層のクラス群で生成してる? それともデータアクセス層のクラス群で生成してる?
どっちでトランザクション管理するか次第でしょ? 普通、データアクセス層ではそれは出来ないから、ビジネス層で管理だと思うが。
バイト配列に入っているSJISのデータを String型の変数に入れたいのですが 良い方法はありますでしょうか? dim b() as byte dim s as string s = new String(b, "Shift-JIS") みたいにできるといいのですが
System.Text.Encodingクラス 使うインスタンスはShift_jisなら日本語版WindowsではEncoding.Default一般的にはEncoding.GetEncoding("Shift_jis")
FlexGrid for .NETのセル単位の色変更の仕方わかるかた 教えていただけませんか? どうにもうまくいきません。
GrapeCityに聞けよ
それを言ってはVB.NETのことはMSに聞けよって言うのと同じじゃないですか
FlexGrid for .NETスレで聞けば?
それが無いんですよ。
GrapeCityに聞けばすぐ答えてくれるのに
無ければ作れ。
MSに聞くのとは全然違うからな
とりあえずですね msfg.cols(2).styledisplay.backcolor = system.drawing.color.black としたらカラム2だけ色が変わるはずなのにすべてのセルが 同じ色になってしまいます。なぜでしょう?
どうやらFlexGridのバグのようです。
2.0ではMSがSystem.Transactions使えと言う。 1の頃はビジネス層で接続管理してたんだが。
すいません、教えてください。 指定したアドレスから指定した件名のメールを受信した場合に指定した アプリを起動させるアプリを作成したいのですが、VB.NETで実現 できますか? 想定している機能は・・・ POP3とやり取りしてメールを取得 指定された条件と比較 条件を指定するインターフェース メールを保存したり、HTMLメール・添付ファイルを受信する機能は 必要ないです。またメール作成&送信機能も無くていいです。
そりゃまあSocket扱えるんだから論理的には実現可能だが。 とりあえずPOP3はクラスとして存在しないので自分でしゃべる必要があるな。
312 :
310 :2006/02/11(土) 02:02:08
>>311 夜遅くの回答ありがとうございます。
「自分でしゃべる」ってあたりは多分「Socket」の扱い方を学べば
理解できてきますよね?
とりあえず、着手してみます^−^
そのレベルからだと大変だろうが頑張れ
受信さえできるようになれば後はメールヘッダを読めば終わりだ
315 :
310 :2006/02/11(土) 13:46:20
「Socket」と色々組み合わせてぐぐってみたら、色々解説ページが出てきたので 頑張れそうです。 ありがとうございました。
317 :
310 :2006/02/11(土) 15:05:15
>>316 ありがとうございます。
参考にします。
他スレで怒られてこちらに来ました。 最初に誤ります。 「超ド素人質問で申し訳ないです」 VB.net2005で「データフォームウィザード」が【追加】→【新しい項目】 に無いのですが、名前変わってますか? バカな質問かもしれませんが、真剣に悩んでます。
新しいデータソースの追加?
>318 そのスレ何?
怒られたとは人聞きの悪い こっちが悪者のようじゃないか
経緯が気になるな・・・
そんなに面白い話ではない
殴られた方も痛いし、殴った方も痛いって言うパターンか
言い方わるかったです。 ごめんなさい。 私も分からなくてウワァァ━━━━━。゚(゚´Д`゚)゚。━━━━━ン!!!! ってなってたので・・・ ごめん。・゚・(ノд`)・゚・。
インストールの手順でミスがあったのか、どこかで設定を変更する必要が あるのか、原因が分からないんです。 2003の本を使ってる事が既に間違えなのかもしれませんが、どなたか分かれば 教えていただけませんか?
信じられないんだが一応確認しておきたい。 VB2005をVB2003の解説本で操作してるのか?
2005の本が何処にも存在しなかったので、2003買いました。 やっぱりダメでしたか・・・。
それぐらい探せよ勘働かせて。 そんなこともできんと結局プログラムはできるようにはならないよ。
ツールボックスに表示されていないアイテムは【ツール】→【ツールボックスアイテムの選択】 から選べれる事は分かったんだけど・・・ データフォームウィザードは何処をどうすれば良いのかヒントでも良いので教えてもらっていいですか?
旧msdnもmsdn2見たいにしてくれんかな
Integerって表記してる? Int32 って表記してる? 1時間ほど悩み中
俺は前者。 特に理由はない。
IntegerとInt32って同じなの?
MSDNを調べずに書くのがデフォか?
Windows95〜WindowsXP SP2までは同じ
一つのクラスにフィールド40個って多すぎですかねぇ・・・ プロパティ作るの大変。
クラスにもよるが、一般的には多すぎるだろうな。
ぜーんぶ同じだばか。
残念、昔はIntegerは2バイト
昔って?_
気にすんな、ここが何のスレなのかも理解してない奴の戯れ言だ。
VBに限った事ではないのですが、VBで開発をしているので ここで質問させてください。 ユーザーIDとパスワードをクライアント側に記憶させておく場合 どこに、どのような形で保存させておくのが良いですか??
>>344 (userid+password+自分だけ知ってる値)をハッシュ値として保存すればいいのではないか
と考えたことがあります
お願いします。VB2005 Expressです。 DynamicPropertiesっていうのを使いたいんですが、プロパティウインドウにありません。 2005ではどこから設定するのでしょうか?
347 :
345 :2006/02/13(月) 00:58:46
なるほど! userid+passwordだけでハッシュ値にして保存しても簡単に戻せるので +自分だけが知ってる値にするわけですよね?? そもそも「ハッシュ値にして〜」って事さえ思いも付かなかった素人ですので・・・ ありがとうございました
348 :
344 :2006/02/13(月) 01:01:53
名前間違えた・・・
私は344です。・゚・(ノд`)・゚・。
>>345 にレスしたかった・・・お察しいただけるだろうけど一応
ハッシュって普通不可逆じゃね? てか、暗号化してiniファイルでいいんじゃね?
>>347 > userid+passwordだけでハッシュ値にして保存しても簡単に戻せ
ません。そんなハッシュ関数使うなよ…
※MD5かSHAとかを想定しています
353 :
344 :2006/02/13(月) 01:11:20
ハッシュについてあまり理解していないのに知ったか君しちゃいました。
「戻すことが無理ならどうやって次に使うの??」という質問はハッシュ
について勉強してからにします。
>>352 そこみて出直してきます。
ありがとうです
>>353 うんまぁそうしてこい
ブルートフォースアタックに弱いけど、
中間者の存在しないルートでの、改竄チェックとしては最強だとおもうから。
355 :
344 :2006/02/13(月) 01:18:00
ハッシュ化されたIDとPASSを認証側で持っておけばいいのか・・・ ちと勉強してきます
っていうか、聞いてる話の範囲内では そもそも暗号化なり符号化なりする必要があると思えないんだがw ハッシュ値にしろ、とかいってる奴も何のためにハッシュなんてものが 存在するのかわかってないとしか(w
じゃあなんのために存在するの?
FlexGrid for .NETについてですが Dim i As Integer For i = 0 To C1FlexGrid1.Cols.Count - 1 C1FlexGrid1.Cols(i).TextAlign = C1.Win.C1FlexGrid.TextAlignEnum.RightCenter If i = 2 Then C1FlexGrid1.Cols(i).StyleDisplay.BackColor = System.Drawing.Color.Red End If Next だと2列目を赤にできるのですが Dim i As Integer For i = 0 To C1FlexGrid1.Cols.Count - 1 If i = 2 Then C1FlexGrid1.Cols(i).StyleDisplay.BackColor = System.Drawing.Color.Red End If Next だと全セルが赤くなってしまいます。 なぜTextAlignを設定したときとしないときで挙動が変わってしまうのか 非常に悩んでおります。 これってやっぱりFlexGridのバグなんでしょうか? フォームにFlexGridを貼り付けただけでLoadイベントに書いています。 最小のサンプルだと思います。
だから何度も聞く暇あるならグレープシティーに聞けばいいじゃん。
361 :
359 :2006/02/13(月) 10:39:25
ヘルプを読んでみたらわかりました。 Dim cs As C1.Win.C1FlexGrid.CellStyle = C1FlexGrid1.Styles.Add("err") cs.BackColor = Color.Red Dim i As Integer For i = 0 To C1FlexGrid1.Cols.Count - 1 If i = 2 Then C1FlexGrid1.Cols(i).Style = cs End If Next .NETじゃないやつとかなり変わっていました。
>>360 「がんばってるボクを見て!」ってことなんだよ、きっと。
363 :
359 :2006/02/13(月) 10:55:09
ほんとおまえら役に立たないな
ヘルプに書いてある程度のことを、数日も何度もここで聞く奴って。w ヘルプ読んで、製作元に聞いてみて、それで情報得られなければネットでしょ? いきなり調べもせずに全世界的に自分は馬鹿ですってTCP・IPに乗せて流さなくても。
365 :
359 :2006/02/13(月) 11:14:40
質問には答えられないくせに質問者をバカにするだけだもんな。 ほんとおまえらどうしようもないよ。
そんなに褒めるなよ、照れるじゃねーか。
368 :
359 :2006/02/13(月) 11:22:36
だいたいわからなければ書き込まなきゃいいじゃん。 つか、なんでこのスレ見てんだよ。 ほんとどうしようもないな。おまえら。
ヘルプも読めない馬鹿が何言っても駄目だよ。
371 :
359 :2006/02/13(月) 12:30:14
答えられない馬鹿が何言っても駄目だよ。
372 :
359 :2006/02/13(月) 12:31:40
そろそろ止めてくれませんか?
373 :
359 :2006/02/13(月) 12:34:08
ヤダ 1000まで粘着する
374 :
359 :2006/02/13(月) 13:06:36
よし、ここからは全員359で発言しよう。 本人もなんとなくかしこくなったような気がするだろうし。
375 :
359 :2006/02/13(月) 13:09:31
おまえらより俺のほうがずっと頭ええっつーの。
376 :
359 :2006/02/13(月) 13:10:29
すみませんちょっとうんち漏らしました
377 :
359 :2006/02/13(月) 13:19:41
答えられないくせにうんちまで漏らすか。最低だな。
378 :
359 :2006/02/13(月) 13:31:27
だめだ、頭悪そうなのが本人だと特定できてしまう。
379 :
359 :2006/02/13(月) 13:39:51
分かるようにしてるのがわからんとはあいかわらずアホだな
380 :
359 :2006/02/13(月) 13:41:50
ちなみに貴方はどれですか?
381 :
359 :2006/02/13(月) 13:48:50
こんなことしてると本物はとっくにいなくなっているという説が有力。
382 :
359 :2006/02/13(月) 14:18:47
もう( ゚д゚)アキタヨ・・・
そろそろ止めるか
クライアント側でパスワードをハッシュで保存とは、考えもしなかった!
386 :
デフォルトの名無しさん :2006/02/13(月) 14:38:46
下のtestプロシージャを呼ぼうとしたところで "共通言語ランタイムが無効なプログラムを検出しました。" ってなエラーが出るようになってるっす。 Private Sub test() Dim Dc(1) As Decimal For Dc(0) = 1 To 100 Debug.Print(Dc(0)) Next End Sub Dc(0)を単純変数に置き換えたりDcの型をLongにしたら上手くいくのに なんでか疑問でつ ForのカウンタでDecimalの配列変数使っちゃだめなんての どこかで見かけたりしてませんでしょうか?
例外メッセージぐらい書こうな。
と書いてから試したら本気でそれだけぐらいしか情報無いのな。悪かった。 ま、バグに近い仕様だねコレは。 文句はMSのバグレポートへ。 // いちいちFor...Nextの条件判断程度にメソッド呼び出しとはおもわなんだ
389 :
359 :2006/02/13(月) 15:41:34
VB6の仕様であれば、Forのカウンタに配列変数はNGです。 VB.netの仕様には特に明記ないっぽい(2005のヘルプ) ただ・・・これも普通に使わないよな。w
>>390 > VB6
試した
Private Sub Form_Load()
Dim i(0 To 0) As Long
For i(0) = 0 To 100
Debug.Print i(0);
Next
Debug.Print
Debug.Print i(0)
End Sub
ちゃんと動いた
.NETの方はわからんが、逆アセしてみれば何かわかるのではないかと。
(Decimalのaddとか呼び出しているのかな?)
392 :
386 :2006/02/13(月) 16:19:58
>>387-391 皆様、どうもありがとうございました。
VB6からの移行作業中なのですが、元々のコードでは各種使い回し用
として(大は小を兼ねる的な考えで)Currency配列がPublicで用意されていたんで、
普通はやらないようなコードを書いていたみたいです
VB6の時代からダメだということ(サービスで動作していただけなのか?!)
なんで、すっぱりあきらめてまっとうに配列をカウンタにつかわず、
ついでに変数のサイズを見直し、プロシージャレベルの変数に置き換える
ことにします。確認めんどくせぇけども、これも仕事じゃて。
Visual Basic 2005で Dim DialogRet As Integer のDialogRetってどう変えればいいの?
395 :
デフォルトの名無しさん :2006/02/13(月) 16:32:58
マルチってナンジャイケ 教えてください ボーソ
>>393 DialogReg_t As Dim Integer
みたいに_tってつけるてDimの位置変えるだけなんだけど
こんなことも知らないの?
399 :
デフォルトの名無しさん :2006/02/13(月) 17:01:02
ふーん そんなことしてつよ あんたらあほ?
401 :
デフォルトの名無しさん :2006/02/13(月) 17:03:02
>>397 てゆーかできないじゃん
あんたら何言ってんの?
*デフォルト動作 質問が意味不明なら回答も意味不明になります
>>393 勝手に変えちゃえば?
何したいのかわかんないけど・・
404 :
デフォルトの名無しさん :2006/02/13(月) 17:11:07
できないよぉ 宣言されてないて言ってましゅる
405 :
359 :2006/02/13(月) 17:11:24
相変わらず役に立ってないみたいだねw
406 :
359 :2006/02/13(月) 17:23:51
そんなに自分を責めるなよ。
WMI の Win32_ScheduledJob を使ってサーバにタスクを追加する 処理があるのですが、WMIで追加したタスクの実行アカウントは "NT AUTHORITY\SYSTEM"になり、サーバ上で動きませんでした。 そこで実行アカウントを変更できないかと調べてみたのですが、 どうも無理そうだとの結論に至ったのですが、 やはり実行アカウントをタスク追加時に変更するのは不可能なのでしょうか? あと、その過程でコマンドラインからはSCHTASKSで実行アカウントを 変更できるというのはわかったのですが この場合はこのコマンドをshellコマンドでクライアントから 叩けばいいということでしょうか? 既存のソースを作った人がいないので出来ればWMIは触りたくないのですが やはりWMIはあきらめるしかないのでしょうか?
WMIじゃ無理だね。 コード上でやるならITaskその他諸々の激しく面倒なCOMの定義と操作が必要だし。 schtasksを呼ぶのが現実的かな。 .NETではProcessクラスがShell関数に取って代わる。
410 :
デフォルトの名無しさん :2006/02/13(月) 22:49:54
ASP.NETですが、ログイン時の方法について教えてください。 お店IDと個人IDがあり、お店IDでログインし、その後個人IDで再度ログインする事って 可能なのでしょうか? 無意味な事と思われるかもしれませんが、可能であればちょっと幅が広がるので・・・ でもちょっと認証を調べて見ましたがやっぱ無理ですかね?
意味不明すぎ。
412 :
359 :2006/02/13(月) 22:57:57
少しは俺を見習って質問のレベル上げろよw
413 :
359 :2006/02/13(月) 22:59:23
414 :
410 :2006/02/13(月) 23:05:57
やっぱり意味不明だよね 仕様を考え直します
たまに基地外が寄生するよね。
VBのすれって。
何が問題って基地外が自覚ないことだな。
>>412 さんよ。
>>414 そのお店の顧客IDを持っているってことは、お店に入店する権限が
あるとも判断できるしね。
>>409 やはり無理でしたか、回答ありがとうございました。
schtasksで行うようにします。
以前、ユーザーIDとパスワードの保存について質問したものですが・・・
その後「暗号化」してiniファイルに保存することにしました。
そこで
>>331 さんが教えてくれた
ttp://dobon.net/vb/dotnet/string/encryptstring.html を参考にして作成しようとしているのですが、「ResizeBytesArray」について
ヘルプを探してもぐぐっても何も出てきません・・・。
このサイトの自作関数かな??と思って調べてもみましたが、見つけれませんでした。
暗号化Keyを8バイトに変換する為の関数かと思いますが、どなたか教えていただけないでしょうか?
長文&おバカで申し訳ありません
''' <summary> ''' 共有キー用に、バイト配列のサイズを変更する ''' </summary> ''' <param name="bytes">サイズを変更するバイト配列</param> ''' <param name="newSize">バイト配列の新しい大きさ</param> ''' <returns>サイズが変更されたバイト配列</returns> Private Shared Function ResizeBytesArray(ByVal bytes() As Byte, _ URL先のこれはなんだ?
>>419 おい、ちゃんとリンク先くらい示せ
ついでに書けば、resizebytesarray()はちゃんと定義されていたぞ
恥ずかしい・・・ 本当に申し訳ありませんでしたーーーーー そして、バカな質問への回答ありがとうございました。
423 :
デフォルトの名無しさん :2006/02/15(水) 00:22:07
VB.NETはDDEをサポートしなくなったらしいんですが、 それってDDE関連のAPIを直接呼び出しても通信できないんでしょうか? それともラベルコントロール等でDDE関連のプロパティが消えただけで、 APIを使えば普通にDDE通信が使えるんでしょうか?
そりゃできるに決まってる。 DDEの実体はWindowsメッセージのやりとりにすぎないわけだからな。
そうですよね 別にDDEのAPIそのものが消えたわけじゃないので VB6で出来て.NETでできないはずはないと思ってたんですが、 以前に別板でそのアプリとVB.NETでDDE通信やろうとした人が DDEのコールバック関数の登録に難儀してたみたいだったので、 もしかしたらできないのかなと不安になったんです とりあえず試してみます
あのさ、StrConvで「¥」円マークなんだけど、 半角¥マーク→全角¥マークへの変換ができない(Wide を指定) 全角¥マーク→半角¥マークへの変換はできるNarrow を指定) これって、そういうもの? 半角¥マークって、どうやったら全角に変換できるのかな。
>>426 strconv()はそういうものだった様な・・・他にもあったような気がするけど忘れた。
replace()で代用できない?
うおー VB6と間違ったぞー!! ・・・逝ってくる
>>425 DDEを使わない方向にもっていくのほうがいいだろ
431 :
デフォルトの名無しさん :2006/02/15(水) 07:56:52
VB6.0でクラスをコピーする方法を教えて下さい
つCopyMemory
>>431 shallowcopyとdeepcopyのどちらがお望み?
【OS】WinXP Pro SP2 【開発環境】Visual Studio 2005 【言語】VB.NET 【質問の内容】 質問! 簡単にいうとExplorerの左側ペインのフォルダツリー表示がしたいのです。 で、TreeViewコントロールにNodeを追加していくってところまではOKなんだけど マイドキュメントとかデスクトップとかってOSによってアイコン違うでしょ?CDドライブの ディスクに入ってるIconが表示されたり。 あれってどっから引っ張ればいいのかおしえてけれ〜
436 :
435 :2006/02/15(水) 10:47:18
My.Computer.FileSystem.SpecialDirectories あたりで特殊フォルダのパスは抜けるのは解ったのだけど システムリソースのアイコンリソースが抜けない・・・・
CrystalReportについての質問(VS2003に同梱のもの)なんですけど、
ちょうどいいスレが見つからなかったのでここで質問させていただきます。
CrystalReportでQRコードの出力を検討しているんですが、
なにかオススメなコンポーネントとかあります?
できればAccessのレポートでも使えればなお良しなんですけど。
QR Code Font Kit - DLL/.NET/Java Class - V4.2
ttp://www.componentsource.co.jp/products/515643/13181/index.html こういうのは見つけたんですけど、ご使用なさった方がいらっしゃれば
ぜひご意見をお聞かせください。
439 :
437 :2006/02/15(水) 18:15:08
>438 失礼しました。
440 :
デフォルトの名無しさん :2006/02/15(水) 20:02:47
紹介されてなくてって、そこで聞いたのか?
442 :
デフォルトの名無しさん :2006/02/15(水) 20:54:54
>>440 まぁ、アマゾンにはレビューと言う機能があって書評があるから。
一件あるようだから、それを読んで買うか買わないかは自分で決めてくれ。
.NET自体が初心者にお勧めできないと思うのは俺だけだろうか。。 つーか昔は物事シンプルでよかったなあ。
スレ違いを甘やかすんじゃねぇよバカ
複数プロジェクトで共有のソースファイルディレクトリを 作成したいのですが、プロジェクトディレクトリ以外の ディレクトリにリンクを張ることはできますか?
>>447 MSDNのCloseメソッドの所は見たの?
449 :
デフォルトの名無しさん :2006/02/16(木) 13:27:02
DataGridを使った一覧画面から、修正ボタンで選択したレコードを編集する画面を作りました 編集画面で値を更新した場合、更新内容が自動的に一覧画面に反映されないので、 一覧画面でFillを実行してデータを再取得していますが、 この方法だと、DataGridのカーソルが移動してしまうのが困ります どうすれば再表示させた後、カーソルを移動させずに済むのでしょうか?
>>449 DataGridで一行を選択状態にする→修正ボタンを押すとその内容が
別途表示される→値を個別に編集するって流れなのか?
編集後のデータを書き戻す対象が不明だな。
インメモリのDataSetに対して行っているなら、バインドされてい
るDataGridも表示がすぐに切り替わると思うんだが。Fillで再取得
してるってことは、SQLで直接DBに更新をかけているのか?
DataGridの選択行位置を維持したいだけなら、CurrentRowIndex
プロパティをどこかに記録しておいて、Fill後に戻せばいいじゃん。
基本的すぎて恥ずかしいんですが、インスタンス変数名とプロパティ名ってどうやってつけてますか? あるクラスのプロパティでBackColorいうパブリックプロパティ名があるとして そのインスタンス変数名ってどんな感じでつけてますか? ガイドラインを読むとプライベートなインスタンス変数名は小文字で次の単語は大文字で 書くような事がかかれて板と思うんですが・・・ 自分はm_backColorと付けているんですが、おかしいですよねぇ どなたかエロイ人アドバイスおながいします。
言ってることがわけわかんね BackColorプロパティのインスタンス変数ってなんじゃい
Privateな変数名に対してはMSはガイドライン示してないよ。 好きに付けろって事。どうせ他人(クラスの利用者)には見えないんだから。 仕事でやる分にはこの辺はその会社やグループの縛りがあるだろう。 私はm_プリフィクス+Camel記法で付けてるな(奇しくも451と同じだ)。 大文字小文字区別してくれたら楽なんだけどな。
ワロス
455 :
451 :2006/02/16(木) 17:28:51
いや根本的に俺まちがってる? Public Class ChartCtl Inherits System.Windows.Forms.UserControl Private m_backColor As Integer 〜〜〜〜省略 Public Property BackColor() As Integer Get Return BackColor End Get Set(ByVal Value As Integer) m_backColor = Value ↑ この変数をインスタンス変数といってるんだが・・・ End Set End Property
456 :
451 :2006/02/16(木) 17:31:35
>453 どうもありがとうです。 >Privateな変数名に対してはMSはガイドライン示してないよ。 もれの解釈が間違ってたのかな、そーですか。
>>455 Javaのサーブレットでは、それはインスタンス変数って言うね
458 :
451 :2006/02/16(木) 17:53:10
>452 なんかつっこみだけ入れてお仕舞いですか? モレが間違ってるんですか? 意味がわかんないとは何でなんですか?
>>458 君の書き方だと
class hoge
public BackColor as integer
end class
dim iHoge as new hoge
hoge.BackColor
の.BackColorをm_BackColorって書くの?
見たいに読めるから
>>458 あぁすまん、全然見てなかったわ
で、JavaServletじゃないよ?
VBよ?
インスタンスってなにかわかってる?
そりゃただのメンバ変数じゃろうが
VB6の話だけど、 プライベートメンバはprivate修飾した一つの構造体の中に全部つっこんでおいてる private type PrivateData pd_name pd_age end type private pd as PrivateData んでpd.pd_nameでアクセスしたり。 クローン作るときもfriendなメソッドだとそのままPrivateData渡せるし。
>>461 なんの話だよ。。
っていうか、自己陶酔してるとこ悪いけど君頭悪いと思うよ。
アクセス制御の意義が根本的にわかってない予感・・・。
>>451 、462は何か基本的な知識が抜けているような。。
急いでSharedをキーワードにMSDN漁った方がいいんじゃ
>>465 どういう意味?
インスタンス変数って普通に言うでしょ。
こ の 場 合 言 い ま せ ん
468 :
462 :2006/02/16(木) 19:54:19
>>465 MSDNを漁ってみたところ、Sharedありは共有フィールド、無しはインスタンスフィールドと呼んでいました。
.netのIntegerはプリミティブ変数だよ
似たようなものだが型値と呼んでおこう。
471 :
466 :2006/02/16(木) 20:14:13
インスタンスごとに個別に確保される変数 = インスタンス変数(インスタンスフィールド) static(vbではSharedかな?)な変数 = クラス変数(クラスフィールド) これであってるよね?
VBって整数型で3/2=2になるんだな 予想外の仕様だった
>>473 VB6だと / は実数に拡張されるからそうなりますね。整数同士なら \ で割り算ですな。
この辺はVB.NETでは変わった?
.NETだと分子分母両方がそれぞれDecimalに変換されてから除算、 結果もDecimalだったような。。 なんでこんな無駄なことするんだろね。
整数型同士ならDoubleに変換するだけだし、結果もDoubleだ。 何より整数同士の除算で結果も整数が欲しいのなら \ 演算子がある。
VB.NETは「銀行丸め」じゃなくなったの?
インスタンス変数の意味が通じないってどういうこった? あんまり言語に依存する言い方でもないと思うが。
プリミティブ変数というイメージの言い回しと値型とう言い方は ちょっとニュアンスというかあらわす対象がちがうと思うぞ。
そうだね。 C#やVB.NETはプリミティブ型を.NET Framworkの型値を使って実装していて 型値の別名なんだけど、言語的にはプリミティブ型(基本変数)という扱いでいい。
そもそもプリミティブ型なる定義も曖昧な語句になぜ固執するのか
>>481 あれはエイリアス(別名)じゃなかったか?
delegeteクラスはコンパイラ側がグチャグチャやってそうだが・・・
テキストファイルから込みこんだ20万件のデータを 一番早くSQLサーバに新規書き込みできるコマンドは何ですか?
地道に単純にやること。 込んだデータをほぐして自作クラスに入れて、Insert文発行じゃないの? DataAdapterは使わずにExecuteかストアド。
SOAP
VB.NET2005でクリスタルレポートの付いているのエディションは どれになるでしょうか?
VB.NET+MSDEで開発しています。 データリーダーを使用して取得した列の内容がNullかどうかを判断する 条件がわかりません。 Dim Cmd As SqlClient.SqlCommand Dim dr As SqlClient.SqlDataReader ----中略---- dr = Cmd.ExecuteReader() dr.Read() If dr("列名") Is Not Null Then ~~~~~~~~~~~ ↑この部分
IsDBNull 関数 SqlDataReader.IsDBNull メソッド .Equals(DBNull.Value)
ありがとうございます。 解決しました
491 :
七資産 :2006/02/19(日) 23:53:12
Richtextboxで、最初に開いたファイルの内容と閉じるときのファイルの内容を比較して変わっていたら 「保存しますか」などのダイアログを表示して上書き保存させるにはどうしたらよいのでしょうか。 私なりにいろいろググッたりヤフったり、MSDN探してみたりしましたが、見つからないので質問させていただきました。
いくつかの工程に分けられそうだが、どこが分からないんだ?
493 :
デフォルトの名無しさん :2006/02/20(月) 00:02:25
>>491 _hogeに読み込んだ時のデータを保存しておいて、
if Richtextbox1.text <> _hoge then
じゃあかんの?
ちょっとメモリ無駄かな… 一度でもchangedイベントが発生したかどうかをチェックしたり、文字列相手ではなくハッシュ値相手にすればいいかと。
VB.NETでもsendmessageによるユーザーメッセージを使った アプリケーション間通信はメジャーな手段ですか?
497 :
七資産 :2006/02/20(月) 13:24:47
ありがとうございます。教えてくださったことを重ね合わせてなんとかできました。 感謝しています。 で、続いての質問なんですが、ファイルが関連付けられて(その自分が作ったプログラムに)エクスプローラから ダブルクリックされたときに拡張子がたとえば.2chならファイルの内容をrichtextbox1に表示させる。 というのは出来るのでしょうか。おそらくコマンドラインがファイル名だと思うのですが、 コマンドラインのあそこでファイル名を指定するほうほうがわかりません。 これも先の理由でご教授いただけたら幸いです。
VB.NET2003なんですが System.IO.Directory.GetFiles(str) のstrに全角の入ったフォルダ名を渡すと ハングアップしてしまいます。何か回避策はありますか?
499 :
デフォルトの名無しさん :2006/02/20(月) 13:48:55
時計作ったんだが Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = Format(Now, "hh:mm:ss") End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Timer1.Enabled = True End Sub ↑でおk? 一応Button5をクリックするとLabel1に時刻が表示されるようにしてある 本当はフォームを開いた時点でLabel1に時刻を表示したいんだがVBの本(.netじゃない) を見るとボタンを押すやつしか書いてなかったからこれしか作れんかった・・・
VB.NET2005の my.settings なんですが・・・。 my.settingsに保存した設定を読み出すには、プロパティ一つ一つについて、たとえば Me.Height = my.settings.Height Me.Width = my.settings.Width といったふうに記述していく必要があるんでしょうか? これらをいっぺんに適用する メソッドってないでしょうか。Reloadがそれかと思ったんですが、適用されないようです。
501 :
498 :2006/02/20(月) 14:20:04
vbnullcharが入ってました。スマソ
>>499 Timer1のEnabledプロパティを最初からTrueにするか
Timer1.Enabled = TrueをFormのLoadイベントに記述する
テキスト入力時IMEのON/OFFを自動でする VB6でいうところの、「Text1.IMEMode = 3」 をVB2005で実現したいのですが適当なものがみつかりません。 VB2005ではどうやってすればいいですか?
504 :
七資産 :2006/02/20(月) 17:25:49
>>503 プロパティ(通常だと画面右下)の中に「ImeMode」というのがあるのでそこで。
>>504 すんません、言葉足らずでした。
Webベースでの方法をお願いします。
VB.NETのWindowsFormで開発中です。 現在時刻を1分毎に取得して、リストボックスに追加しています。 この追加した時刻をある時間帯で色分けしたいのですが、リストボックスのitem単位に 色指定する事は出来るのでしょうか? よろしくお願いします。
オーナードローすれば書き分けることはできる。
509 :
506 :2006/02/21(火) 13:32:57
>507 >508 ありがとうございます。調べてみます。
過去ログ読めないので既出だったら申し訳ないです。 デコンパイル対策としての難読化についてみなさんはどんなツールでやっていますか? 個人ユーザーと企業ではお金のかけ方も違うと思いますが、どの辺りが妥当なのかの、 基準として参考にさせていただきますので教えてください。
個人ユーザだから全く気にしない。 寧ろソース公開。 俺の汚いソースを読めるもんなら読んでみろ。
以前
>>488 でNull値について質問させていただいた素人ですm(._.)m
今度はtimestampで定義した列の値を取得してテキストBOXに表示したいのですが
どうやって型変換すれば良いのか分からず、悩んです。
今回も前回同様データリーダを使用して、列の値を取得しているのですが、どなたか
教えていただけないでしょうか?
514 :
デフォルトの名無しさん :2006/02/22(水) 00:09:54
VB.NETによるエクセル操作の基本的な質問です。 VB.NET 2003 Excel2000 という環境です。 Dim xlApp As Excel.Application Dim xlBooks As Excel.Workbooks Dim xlBook As Excel.Workbook xlApp = New Excel.Application xlBooks = xlApp.Workbooks xlBook = xlBooks.Open(ファイル名) このような感じで、起動していないエクセルに対しては操作はできるのですが、 オープンするエクセルファイルがすでに立ち上がっていた場合、うまく動作しません。 対象のエクセルファイルがすでに立ち上がっている場合、どのようにすればよいでしょうか?
516 :
513 :2006/02/22(水) 00:55:20
>>515 ちょっと見た感じ、理解するのに時間がかかりそうだけど・・・
ありがとう頑張って理解してみます
FormA から FormBを呼び出す書き方教えてください dim fb as new FormB fb.show ↑の書き方だとめんどうなので いきなりFormB.Showとできるやり方教えてください
すんな このVB6以前から頭を切り換えることができねぇ化石人
>581 ありがとう。目が覚めたよ めんどくさい方法で実装するぽ
>>513 MSDEのtimestamp型はrowversionと呼ばれるもので日付時間とはまったく関係がない。
読み取る場合はvarbinary(8)の形式で戻ってくるから目に見える形式で表示したいなら
HEX表示にでもするべし。
>>519 2005なら6.0風に扱えるらしいよ。
2003への移行が思うように進んでないから、歩み寄ったっぽい。
>>521 あれは改悪だと思う。
VB6の頃でさえ、暗黙のインスタンスの弊害が多かったのに。
partialされている部分に暗黙の宣言が書かれているはずだから、 その部分を削れば良い
designer.vb には特に見当たらなかったけど? それに、Partial化されたdesigner.vbって、編集してもその部分破棄されると思うし。
関連質問 dim fb as new FormB fb.show で新しく開いたフォームBを×ボタンおして閉じたとする。 で、fbのインスタンスって呼び出し元で意図的に破棄する必要あるの? それとも放っておいても適切なタイミングで破棄してくれてんのかな? どうも×ボタンおしてフォーム閉じただけだと、そのタイミングでは FormBのデストラクタは駆動しないように見えたので。
Show のときは Close 呼んだときに自動的に Dispose も呼ばれる。 大抵の IDisposable なものはデストラクタ定義しちゃ駄目。 Protected Dispose をオーバーライドする(もちろん MyBase.Dispose も呼び出す)。
デストラクタはGCが走ったときに呼び出されるもので、 Closeを呼んだりXボタンで閉じたときはDispose()が呼び出される。 Dispose(bool) に Debug,WriteLineを入れてみるとわかる。
>>526-527 つまり呼び出し元で、改めて「インスタンス破棄」ってこと
しなくても良いって事かな?
×ボタンでウィンドウ閉じたあとは放っておいてOK?
まあそもそも GC のもとではインスタンス破棄と言うこと自体が明示できないけどな。 アンマネージド資源の解放は Dispose で行われ、Show で開いたフォームは閉じるときに自動的に Dispose が呼ばれる。 あとは有効な参照さえなくなっていれば GC がそのうちインスタンスを片づける。 大体、Show で開いたらモードレスなんだから呼び出し側があれこれするタイミングが難しいだろう。
メモリリークなんて気にしなくていいよ
>>529-530 タコな質問に答えてくれてありがd。
>大体、Show で開いたらモードレスなんだから呼び出し側があれこれするタイミングが難しいだろう。
まさにこれで悩んでた。定石ではどうすんのかなって。
>メモリリークなんて気にしなくていいよ
育ちがANSI Cだからどうしても気になっちゃうんだよね。
VBとか見えない(隠れてる)部分多くてとまどうけど、すごい便利なのね。
My.Settingsとか便利sg。
532 :
531 :2006/02/22(水) 18:18:38
あぁそうか、GC=ガベージコレクトか。 便利だな。Windowsプログラムって。
WindowsってかVBがすごい!ヽ(´ー`)ノマンセー
その中でもVBが最優秀
いやさすがにそれは
今までVB馬鹿にしてたけどメチャクチャ簡単で楽 もっと早く使っていればよかった
重くてやってらんねぇけどな
重いよな。楽だけど。
UWSCマクロからVBを勉強中 WEBにアクセスしてIDを自動入力がどうしたらいいやら。。。。 ちなみにUWSCでは、 IE.document.forms[0].Logon.value=user_id とかでできていたんだが。。。。 VBのやり方教えてください。 初歩的でスマソ
そのVBのバージョンによって答えが変わる可能性があるが。
542 :
504 :2006/02/22(水) 23:51:39
バージョンというのか、無償のvisualbasic2005expresseditionを利用中
Dim ie = CreateObject("InternetExplorer.Application") あとは変わらんだろ こういうのにはVBは便利だ
544 :
540 :2006/02/23(木) 00:17:04
thx 結構にているんだ。 少しやってみる
545 :
500 :2006/02/23(木) 01:28:48
>>531 >>500 でも質問したんですが、my.settings の使い方を教えてください! 下記の
やり方ですと、うまくはいくんですが、一つ一つ設定しなければならず、バインドできる
のでなにか自動的に設定を適用/保存してくれたりするのではと考えているんですが・・・。
VB.NET2005の my.settings なんですが・・・。
my.settingsに保存した設定を読み出すには、プロパティ一つ一つについて、たとえば
Me.Height = my.settings.Height
Me.Width = my.settings.Width
といったふうに記述していく必要があるんでしょうか? これらをいっぺんに適用する
メソッドってないでしょうか。Reloadがそれかと思ったんですが、適用されないようです。
>>546 レスありがとうございます〜
バインディングはしています。。。コントロールのプロパティの、「ApplicationSettings」の
Propertyを押し、バインドしたいプロパティに新規作成したMy.settingsの変数を
割り当てています。具体的には、メインメニューのアイテムのCheckedプロパティの値を
保存するように指定しています。ApplicationSettingsの表示は、以下のようになって
います。
ApplicationSettings
Property
Checked [割り当てた変数名]
ApplicationSettingsの表示がこのようになっていれば、バインディングされていると
思いますがいかがでしょうか・・・。なにか間違っているでしょうか。バインディングされて
いると、設定の保存/適用が自動化されるんでしょうか?
548 :
500 :2006/02/23(木) 03:12:48
すいません、
>>547 の補足説明です。
プログラムが終了するとき、つまりメインフォームのClosingイベントにということですが、
My.Settings.Save()
を記述し、プログラム開始時(メインフォームのLordイベント発生時)に、
My.Settings.Relord()
を記述しています。
>>547 の設定とあわせてやっていますが、設定の自動的な保存あるいは
読み込みがうまくいかないようで、たとえば Checked = True の状態でプログラムを終了しても、
次回の起動時には Checked = False になってしまうというわけです。。。
>>547-548 バグのような気がするけど、ToolStripMenuItemだとフォームのDesigner.vbに
バインディングに必要なコードが生成されないのが原因だね。
Setteingsからプロパティに値をセットするのとSettingsの自動保存はされているので
ToolStripMenuItemのCheckedChangedイベントで
My.Settings.Checked = xxxToolStripMenuItem.Checked
と書けば保存されるようになるよ。ReloadとSaveは必要なし。
Public Sub HogeSub(hoge as IHoge) 上記のように引数をインターフェース型(IHogeがインターフェース)で宣言しているときに hogeが参照しているオブジェクトの型をTypeオブジェクトで取得したいのですが、どのように したらよいでしょうか。
551 :
デフォルトの名無しさん :2006/02/23(木) 11:59:42
ドロップファイル名の取得についての質問があります。 環境はVisualStudio2005 Standardです。 DataFormats.FileDropを使用してドロップファイル名の取得を行ったのですが ファイル名に全角文字が入っているとファイル名が正しく取得できません。 いろいろ試してみたところ、文字数=バイト数とみなしてファイル名を取得 しているようにみえました。 例)○123456.txtをドロップ→"123456.txt"を取得 ×123456.txtをドロップ→"123456.tx"を取得 全角文字が増えると取得文字数も最後尾から減っていきます。 どうすれば全角文字を含むファイル名を正常に取得できることができますでしょうか?
>>549 レスありがとうございました! 非常に助かります。
結局のところ、My.Settings による自動的なプロパティの設定はできませんでした(汗
保存はできているようですので、メインのフォームのLordイベントに
Me.TopMost = My.Settings.zOrder
ツールバーの表示ToolStripMenuItem.Checked = My.Settings.ToolbarCheck
ステータスバーの表示ToolStripMenuItem.Checked = My.Settings.StatusbarCheck
という記述をして My.Settings の値を適用するようにしました。いろいろと試しているうち、
奇妙なことに、上の3行のコードのうちの一番上は必要なく、ちゃんとバインディングが効いて
いるようなんです。なぜ他のがダメなのか原因は分かりません・・・。
とにもかくにも、レスありがとうございました。勉強になりました m(_ _)m
553 :
デフォルトの名無しさん :2006/02/23(木) 13:13:07
>551 すいません、自己解決しました。 e.Data.GetData(DataFormats.FileDrop, False) →e.Data.GetData(DataFormats.FileDrop, True) としたら出来ました。
>>554 hoge as IHoge
のIHogeがクラスであればhoge.GetTypeでいいのですが
はなくインターフェースだとhoge.GetType()が使えないのですが・・・
使える。インテリセンスに出るかどうかは知らんけど。
>>556 'GetType'は'IHoge'のメンバではありません。となってビルドが通りませんでした。
何か設定とか必要でしょうか。
すみません、環境を書いていませんでした。 OS:WindowsXp pro 開発環境:vs.net 2003 です。
むお、VBだと本気でエラー出しやがんの。 DirectCast(hoge, Object).GetType()
>>559 いったんオブジェクト型にキャストしてやればいいのですね。
ありがとうございました。
強制再描写のコマンドってありますか? winXP VB.NET
コマンドって言うとデスクトップ全体を再描画するコマンドプロンプトの内蔵命令みたいだ。 Refreshメソッド辺りのことかね。
>562 はい。別窓に表示してるグラフを 計算ループの中で リアルタイムで新しくしたいのです。 Refreshですね!MSDN言ってきます。
それは強制再描画という表現に合わない。
明らかに違うでしょ。
Dim test() As Single 見たいな配列の中身を全部初期化したいのですが 何か良い方法ありませんか? VB.NET winxp
っ [ Array.Clear() ]
>568 ありがとうございます。
先生質問です! ボタン表面の2色のグラデーションを 好みの2色とかに変えるには どうすればいいのですか?
画像で用意してからImage貼りすれば?
>>570 つまり
>>571 は、bitmapのインスタンスでも作成して貼り付けろ、と暗に言いたかったのだとおもふ
すみません、どうしても解決方法が分からないので、ご教授願います。 VB.NET2003とOracleで開発をしています。接続にはODP.NETを使用しています。 モーダルウィンドウにて、「ユーザーID」 「パスワード」「データーベース名」を入れて、「接続ボタン」を押すと、親ウィンドウが 開きます。親ウィンドウには、モーダルウィンドウにて入力した上記の値が渡されており、 その値を元に、「テーブル名一覧取得」ボタンを押すと、リストボックスにテーブル名の 一覧が表示されます。 そして、リストボックスに表示されたテーブル名をクリックすると、隣にある データグリッドにクリックされたテーブルのレコード一覧を表示したいのですが それができません。 ブレークポイントを設定して、テーブル名を格納した変数を見てみると System.Data.DataRowViewとなっています。 System.Data.DataRowViewではなくて、きちんとしたテーブル名を得たいの ですが、どうすれば得られるでしょうか。 以下にソースを挙げますので、解決方法をよろしくお願い致します。
DataRowViewからでもDataView Table Name と辿っていけるけどな。
575 :
573 :2006/02/24(金) 22:00:39
#Region "リストボックスのアイテムが選択された時" Private Sub listShowTables_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles listShowTables.SelectedIndexChanged Try Dim strSelectTable As String 'テーブル名を代入する変数 Dim LB As ListBox = CType(sender, ListBox) Dim DV As System.Data.DataRowView = CType(LB.SelectedItem, System.Data.DataRowView) strSelectTable = Convert.ToString(DV) '選択された項目をString型に変換して代入する 'strSelectTable = Convert.ToString(Me.listShowTables.SelectedItem) Dim cn As New OracleConnection cn.ConnectionString = Me.lablHiddenConnectData.Text '接続文字列の設定 '実行するSQL文 Dim strSql As String = "SELECT * FROM " & strSelectTable
576 :
573 :2006/02/24(金) 22:01:26
続きです。 Dim cmd As New OracleCommand cmd.Connection = cn cmd.CommandText = strSql cmd.CommandType = CommandType.Text Dim da As New OracleDataAdapter da.SelectCommand = cmd Dim ds As New DataSet da.SafeMapping.Add("*", GetType(System.String)) da.Fill(ds, strSelectTable) 'データバインド Me.listShowTables.DisplayMember = "*" 'Me.dtgdTable.SetDataBinding(ds, strSelectTable) 'Me.dtgdTable.DataSource = ds Me.dtgdTable.DataSource = ds.Tables(strSelectTable) Catch ex As Exception MessageBox.Show(ex.Message, "エラーメッセージ") End Try End Sub #End Region
そもそもなんでListBoxのアイテムにDataRowViewが入ってるんだか。
Dim DVなんとかのあとにこれいれてみろ。 Console.WriteLine(LB.SelectedItem.GetType.FullName)
リストボックスに表示されてるんならSelectedItemじゃなくてSelectedValueを使えばいいんでねえの?
580 :
579 :2006/02/24(金) 22:55:07
SlectedValueじゃなくてTextだった
581 :
573 :2006/02/24(金) 22:59:40
>>578 左下のWatch式で見てみると、「FullNameは宣言されていません」と出ていて、コマンドウィンドウには何も表示されません。
>>579 SelectedItemやSelectedValueでは、相変わらず「System.Data.DataRowView」なのですが
LB.TextをWatch式に加えて見てみると、選択されたテーブル名が入っていました。
・・・ということは、LB.TextをstrSelectTableに代入すればいいのかな・・・
>>582 すみません。
System.Data.DataRowViewからDataView Table Name と辿っていく 方法が分かりませんでした。
そして、上に書いてるように、LB.Text をstrSelectTableに代入すると
うまくいきました。
みなさま、ありがとうございます。
584 :
573 :2006/02/24(金) 23:25:51
書き忘れましたが、583は573です。
585 :
579 :2006/02/24(金) 23:28:44
>>582 DataRowViewのDataView.Table.TableNameってテーブル名が入ってるDataTableの名前でしょ
586 :
デフォルトの名無しさん :2006/02/25(土) 02:13:37
すいません。質問させてください。 一つのformにAxWebBrowser1.Navigateを使って、二つのページを 開きたいんですけど、うまくいきません。 同一formに、2つwebページを開くのは、どうしたらいいのでしょうか? いろいろ自分で調べたのですが、わかりませんでした。 どなたか知ってる方いたら、よろしくお願いします
意味が分からん。 単にAxWebBrowserコントロールを横に二つ並べるとかじゃ駄目なのか。
エラーなくプログラムは実行できるんですけど、 二つ目のAxWebBrowserコントロールにページが呼び込まれないので、 困っています。 refresh関数を使ってもだめでした
再現性のあるコードを出せ。 単純なコードでは再現しないようだから。
Form.Show(F1)とForm.ShowDialog(F1)の2つの呼び出し方でF1が表示された場合 F1で正しい終了の仕方は以下で正しいですか? F1 Loadイベントにて me.dispose me.close
いやLoadでCloseするのが正しい終了の仕方かと聞かれても。
Loadでなければどこ?
そもそも質問の意味がよく理解できんなあ俺には。。 なんていうか、デキない奴が下手にショートカットしようなんて考えると 結局余計回り道になると思うよ。 大人しく入門書でも読み漁る努力を惜しまない方が結局効率がいいんじゃない?
> Form.Show(F1)とForm.ShowDialog(F1)の2つの呼び出し方でF1が表示された場合 ここが意味わかんないのでくわしく。
きっと、
>>592 は開いた瞬間に閉じたいんだよ。
フラッシュナンバーを読み取るゲームでも作るんじゃないかな?
MDIの子ウィンドウを開いたときに、子ウィンドウの上に親ウィンドウの
コントロールが見えて困っています。
状況はこんな感じです。
http://v.isp.2ch.net/up/d5a2630a22cc.jpg 子ウィンドウの上にあるコントロールを見えなくするためには、親ウィンドウのコントロールの
VisibleプロパティをそれぞれFalseに設定するしかないのでしょうか。
MDIの子ウィンドウの開閉にかかわらず、親ウィンドウの状態をそのまま残したいので
他の方法を探しています。
どうか助言を頂きたく思います。
>>598 各コントロールを右クリックして、最背面に移動
で多分解決すると思う。
600 :
598 :2006/02/26(日) 00:38:00
>>599 助言ありがとうございます。
各コントロールを「最背面へ移動」にしましたが
状況は変わらずでした。
気休めだけどこれで勘弁して・・・ 子コントロール Me.TopMost = True
602 :
598 :2006/02/26(日) 00:52:26
>>601 ありがとうございます。
見た目は全く変わらずでしたorz
MDIはしばらく使ってないのですっかり忘れた。 子コントロール起動後に「最前面に移動」させればいけるんじゃない?
604 :
598 :2006/02/26(日) 01:00:31
妥協案として、子ウィンドウを開いたときに、親ウィンドウのコントロールの Visibleプロパティを全てFalseにして、子ウィンドウを閉じたときに 親ウィンドウのコントロールを再び表示しようと考えたのですが 下記のソースでは親ウィンドウのコントロールのVisibleプロパティが 再びTrueになってくれません。 どうしたらTrueにできるでしょうか? #Region "「閉じる」ボタンを押した時の処理" Private Sub btnMeClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMeClose.Click Try Dim dimFrmMain As New frmMain 'frmMainフォームの親ウィンドウ設定を取り消す 'dimFrmMain = CType(Me.Owner, frmMain) dimFrmMain.IsMdiContainer = False '各コントロールの表示 dimFrmMain.btnShowAll.Visible = True dimFrmMain.listShowTables.Visible = True dimFrmMain.dtgdTable.Visible = True dimFrmMain.btnClose.Visible = True dimFrmMain.btnOpenSqlBox.Visible = True dimFrmMain.lablYourInfo.Visible = True '自分自身を閉じる Me.Close() Catch ex As Exception MessageBox.Show(ex.ToString(), "エラーメッセージ") Return End Try End Sub #End Region
605 :
598 :2006/02/26(日) 01:10:04
>>603 「最前面に移動」とは、TopMostプロパティをTrueにすることですよね。
子ウィンドウ起動後に、子ウィンドウのTopMostプロパティをTrueにしましたが
それでも見た目は変わらずでした。
そもそもなんでそんなのでMDIにするのかさっぱり分からん。
そもそも親にコントロールって普通置くのかなあ。。 あんまりそういうデザインのソフト見た記憶がないんだけど。 その必要なコントロールだけまとめて子フォームにしたらダメなの?
608 :
598 :2006/02/26(日) 01:29:57
>>606 ,607
両方のおっしゃる通りです。
親フォームにコントロールを作ってから、MDIの機能も付け足そうと
考えたもので…
607さんの方法で行ってみます。
>>598 なんかすごいな、目の錯覚を起こすプログラムだよ(w
610 :
598 :2006/02/26(日) 04:16:36
MDI形式で親ウィンドウから子ウィンドウを開くのではなく 子ウィンドウから別の形式の子ウィンドウを開くことは可能でしょうか。 例えば、子ウィンドウに付いている「SQL」ボタンを押すと SQLを入力するテキストボックスとそれを表示するデータグリッドが 付いてるフォームを開くとかです。 以下のソースのように親ウィンドウのインスタンスを作って MDIの親ウィンドウに設定しましたが、何の反応もありませんでした。 助言お願いします。 ちなみに親ウィンドウからは、目的のフォームを開くことはできます。 #Region "SQLボタンを押した時の処理" Private Sub btnOpenSqlBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenSqlBox.Click Try Dim frmNewMdiSqlWindow As New frmMdiSqlForm 'frmMdiSqlFormフォームをインスタンス化(実体化) Dim frmTopForm As New topForm 'topForm(親ウィンドウ)をインスタンス化(実体化) frmNewMdiSqlWindow.MdiParent = frmTopForm 'frmMdiSqlFormの親ウィンドウを親ウィンドウに設定 frmNewMdiSqlWindow.Show() 'frmMdiSqlFormを開く Catch ex As Exception MessageBox.Show(ex.ToString(), "エラーメッセージ") Return End Try End Sub #End Region
別の形式って何よ。 大体さ、なんでそうMDIに拘るの? 普通にモードレスダイアログ開くんじゃ駄目なの?
>>610 オイオイ、子ウィンドウがある時点で親ウィンドウは存在してるんだから
親ウィンドウのインスタンスを作ってもダメに決まってるだろ。
新たにウィンドウのインスタンスを作っても、そのインスタンスは
すでに存在している親ウィンドウのインスタンスとは別物だ。
MdiParentプロパティがあるんだからいちいちインスタンスを作る必要はない。
試してないから確証はないけど
>frmNewMdiSqlWindow.MdiParent = frmTopForm 'frmMdiSqlFormの親ウィンドウを親ウィンドウに設定
これを
frmNewDimSqlWindow.MdiParent = frmSqlButton.MdiParent
に変えるか、親ウィンドウに目的の子ウィンドウを作るパブリックメソッドを作って
ボタンのある子ウィンドウで呼び出したらいいんじゃないか?
MDIでform1を親として、form2のラベルに取得した数字をform1のラベルに 表示させたいんですけど、うまくform1にform2のデータが呼び込めません。 どういうソースを書けばいいんでしょうか? 知ってる方よろしくお願いします
別のform1とform2とでデータの受け渡しするのと全く同じ方法で可
>>605 うんにゃ
俺の言ってるのはBringToFrontメソッドの方。
>>614 すいません。それはどのように記述するのですか?
なんども試したのですが、うまくいきません
617 :
598 :2006/02/26(日) 10:03:53
>>612 ありがとうございます。
frmNewMdiSqlWindow.MdiParent = frmTopForm.MdiParent
frmNewMdiSqlWindow.Show()
こうすると、目的のフォームを開くことはできたのですが
別ウィンドウとして開いてしまい、MDIとして開いてくれません。
親フォームに目的のフォームを開くメソッドを書いて
子フォームのボタンから呼び出す方法ですが、これも別ウィンドウで
開いてしまいます、MDIではなくて。
>>615 ありがとうございます。
BringToFrontメソッドというのがあるのですね。
親ウィンドウには基本的にコントロールを書き込まない方法に
移行しましたが、覚えておきます。
>>616 教えてもらってばかりも何なので…
Form1でForm2のインスタンスを作れば良いのでは。
Dim dimForm2 As New Form2
Me.Label.Text = dimForm2.Label.Text
これで駄目なら
Form1で
Dim dimForm2 As New Form2
dimForm2.Owner = Me
dimForm2.Show(Me)
Form2で
Dim dimForm1 As New Form1
dimForm1 = CType(Me.Owner, Form1)
dimFrom1.Label.Text = Me.Label.Text
VB2005 Express Edition使ってるんだけど、詳細なコンパイルオプションの項目が見当たらない… コンパイルのタブを見ても暗黙的な変換にエラーを出すかとかそういう設定しかないんですが。
619 :
デフォルトの名無しさん :2006/02/26(日) 21:05:01
VBアプリがコマンドラインから実行された事を知るにはどうしたらよいでしょうか?
620 :
デフォルトの名無しさん :2006/02/26(日) 22:09:32
先生! .NETアセンブリ(DLL)でシングルトン実装して 他のアセンブリDLLから参照するってやり方はOKでしょうか?
621 :
620 :2006/02/26(日) 22:10:59
ageてしまいました。 吊ってきます。
時代が逆行してるんじゃないかと思った 地獄を見たいのなら、ちょっとずつ前進していきなさウウウウウウウウウウウウウウウウウウウウウウ
フォームロード時に、任意のコントロールにフォーカスを移動というか設定するのは どうすればいいのでしょう。 TextBox1 tabindex0 TextBox2 tabindex1 TextBox3 tabindex2 だとして Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox2.Focus() End Sub としても TextBox1にフォーカスがいってしまいます。
Form.ActiveControl
625 :
623 :2006/02/26(日) 23:19:10
>624 ありがとうございます。できました。
TextBox2.Select() でもOK
627 :
デフォルトの名無しさん :2006/02/27(月) 00:21:02
>>514 放置です。 誰か・・・。
xlApp = New Excel.Application
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open(ファイル名)
で起動していないエクセルに対しては操作はできるのですが、
すでに立ち上がっているエクセルファイルをopenすれば、うまく動作しません。
(上書き保存しても保存されなかったり etc)
すでに立ち上がっているエクセルをxlbookに指定するには、どのようにすればよいでしょうか?
628 :
デフォルトの名無しさん :2006/02/27(月) 00:27:22
ヘルプ頼みます・・・ ダブルクォーテーションを文字列として扱えないですか? どういうことかと言うと、 Dim Str As String Str = """ ↑この書き方で気持ち的には、 Str = " に、なって欲しいんだけど、 結果は当然ながら「エラー」! んーならばどう書けば良いのでしょう・・・?
一つ足りんな " のエスケープに " を使うんだから
631 :
628 :2006/02/27(月) 00:36:58
をー そんな書き方するんだ。 どうもありがとう!!!
>>627 どうすれば、ってどうにもならんと思うよ。
俺が君の書いていることを正確に理解できているとすれば。
そんなはずはない、どうしても納得いかない、というのなら
まず一つのブックを複数のウィンドウで開くとどうなるかやってみたら?
633 :
632 :2006/02/27(月) 00:54:41
手動で、って言葉を入れるのを忘れた。
>>627 xlBook = CType(GetObject(ファイル名), Excel.Workbook)
xlApp = xlBook.Application
xlBooks = xlApp.Workbooks
ああなるほどね、ファイル名からブックとエクセルの参照を取得するわけか。 それなら出来そうだ。
636 :
デフォルトの名無しさん :2006/02/27(月) 11:26:06
質問させてください。 ShockWave Flash Objectを使ってFlashを再生し、そのFlash中でボタンが押されたことVBでを検知することは FlashのFscommandを使ってイベントをVBに渡せば出来るということはわかったのですが、 MicrosoftWebBrowserでHTMLを読み込み、そのHTMLで記述されているFlash中でボタンが押されたことを VBで検知することは出来ないでしょうか?
質問〜(;´д`) ちょっとしたデータ配列(ファイルから読み込む程度)のデータを フォーム上で編集したいんだわ。 で、絶対必要な要素として「順番の入れ替え」なんです。(ソートではなく) 具体的にいうとIEのお気に入りで、D&Dで順番(場所)を移動できるのと同じ事 したいんです。 このようなことって、一般的にどのコントロールでやるのかな? ListViewでできる?(IEのはListViewっぽいけど・・) DataGrid使うとその他も便利な気がするんだけど、ファイルから読み込む程度の データでDataGrid使うのも重い気がするし。。
638 :
637 :2006/02/27(月) 12:07:19
SpyしたらIEのお気に入りはSysTreeView32だった。 質問の補足だけど、ListViewで表したいデータは Detail固定で表示させたいんです。
ListView お勧め
刺繍の図案をデザインするためのアプリを VB2005のExpress Editionで作ってます。(OSはXPSP2) で、例えば1000x1000くらいのマス目を、フォーム上に表示して 色や縫い目のパターンを編集できるようなものを作っているのですが こういう場合、どのようなコントロールを使うのがいいでしょうか? ちなみに今は、フォーム上にピクチャーボックスを配置し、 それにpaintイベントでGraphics.DrawRectangleを使って、 しこしことマス目を1000x1000個Drawしているのですが これだと、マスのサイズを変更したり、フォームをスクロールする度に 全てのマスを再描画するため、やたらと遅く使い物になりません。 再描画する範囲を限定して、見えてるところだけを・・・ と思ったのですが、これはこれで方法がわかりませんでした。 良い方法があったら教えてください。
そんな数のマスをVBのコントロールでやったら重過ぎてやってらんねぇから 自前で全ての処理を実装しる
>>640 マス目はコントロールで描画せずに、別途ピクチャで下地に表示する
とか。マス目サイズの変更は、ピクチャごと貼り換えで対処。左上の
座標を揃えていれば、グリッドっぽくGraphics.DrawRectangleで点
を打ったり、スクロールも下地と連動させることができると思う。
643 :
640 :2006/02/27(月) 17:40:15
>>641-642 レスどうもです。
>641
さすがに全マスをコントロールで表示はするつもりないです。
初期表示すらできないと思う(てか最初やって重すぎてできなかった)ので。
基本的には全てGrapphicsクラスでやろうと思ってます。
ただ、マス目の描画だけでえらく時間かかって、スクロールすら
ままならなかったもので・・・
>642
ふむ・・・マス目の下地を固定イメージにしてしまうということですかね。
ただ、山ほどイメージで用意しないとですねえ。
FlexGridを使う。という考えも浮かんだのですが
2005ってFlexGrid使えないのだろうか。見当たらない・・・
今は、諦めかけた描画範囲を見えている部分にだけ限定して
再描画させる方法で試行錯誤してます。これでなんとかなるかも?
Excel上の指定した二つのセルを結ぶような、横の棒線を引きたいのですが… 例えばセル番号 (x(1),y(1)) と (x(2),y(1)) で、上側の罫線でもなく下側の罫線でもなく、その中間に 引くイメージです。 また、上側の罫線を引く場合、もしくは下側の罫線を引く場合はどうしたらよいでしょうか。 レスキュー花ちゃんなどを見たのですが良くわかりませんでした…。
>>640 フォームをスクロールするだけで全部再描画ってそれが本当ならコードがおかしいと思う。
スクロールで新しく現れたところだけ無効化されている、ってのがデフォのはず。
少なくともWin2K以降は。
OnPaintで描画してないか、あるいは変なところでInvalidateかけてるかじゃないのかな。
あと一般論として、どうしても描画処理が重い場合は逆にOnPaintで描画せず、
タイマを起動して一定時間後(一秒程度か?)に描画するようにするらしい。
言い換えれば描画レートを意図的に下げるわけだね。
このあたりのテクニックはMSDNに載ってたはずだよ。
646 :
デフォルトの名無しさん :2006/02/28(火) 00:34:10
ちょいとお尋ねしたいんですが・・・ エクセルで、 シートを選択した時にマクロを起動する方法ってないですか? ブックを開いた時ならあるみたいなんですが・・・違うなぁと。
647 :
640 :2006/02/28(火) 10:02:03
>>645 なるほど。ちょっとコードを見直してみます。
MSDNあんまりちゃんと見てなかったな。。。
探してみます〜
有難うございました。
648 :
640 :2006/02/28(火) 10:06:01
>>646 SheetActivateがWorkbookのイベントに
あるからそれを使えばいいんじゃないかな。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name
End Sub
こんな感じでシート選択したら動いたから多分これでおkかと。
>>643 >>ただ、山ほどイメージで用意しないとですねえ。
?
ひとつだけのマス目を画像にしてタイルみたいに並べると思われてる ような悪寒。最初っから1000x1000のマス目を描いた画像を用意す るって意味で書いたんだけど。
カスタムコントロールを使用して Inherits System.Windows.Forms.TextBoxな テキストボックスを作ろうとしています キーの入力を制限したく、下記のコードを書きましたが どうもうまく制限できていません。 というより下記コード部分を通るとき、既にテキストボックスには テキストが入ってしまっているようです。 何か根本的に間違っているのでしょうか? Protected Overrides Sub OnKeyDown(ByVal e _ As System.Windows.Forms.KeyEventArgs) If e.KeyCode = Keys.D0 Then e.Handled = True End If End Sub
すいません、OnKeyPressで出来ました
コピペには対応せんで良いの?
>>653 一応validationは行っているので、それはそのときに
処理をするようにしてしまおうかと
そしてまた問題が…
>>651 でOnKeyPressをoverrideしたはいいのですが、
これを実際にフォームに貼り付けて使うとき
それぞれのインスタンスではOnKeyPressのイベントの処理は
書けないものなのでしょうか?
このカスタムコントロールを使ってtxtTestをFormに作って
Private Sub txtTest_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTest.KeyPress
に処理を書いてもここを通ってくれません
試してないけど オーバーライドしたOnKeyPressメソッドの中で 基底クラスのOnKeyPressを呼んでみたら?
>>654 > 一応validationは行っているので、それはそのときに
> 処理をするようにしてしまおうかと
ならそれに全て任せた方が良いと思うのだけれど。
> に処理を書いてもここを通ってくれません
オーバーライドしたメソッドで MyBase.OnKeyPress 呼び出してないから。
っていうか、そんな基本も分からずにコントロールを継承して大丈夫かなw 生兵法はなんとやら、の匂いがするけど。
>>655 おー、MyBase.OnKeyPress(e)呼んだらうまくいきました
どうもありがとうございます
最初考えたんですけどMyBase.まで打ったときに
OnKeyPressが候補になかったのでダメなのかと思ってました
質問です Perlで言うところの ($No , $Name , $Sub) = split ("<>" , $line); を、VB.NETでやろうとすると、どうすればよいでしょうか? 以下のように書くしかないのでしょうか? dim t() as string=line.Split(New Char() {"<>"c}, 2) dim no as string = t(0) dim name as string = t(1) dim sub as string = t(2)
そう。 それにそもそもそんなコード書く機会なんて大してないと思うよ。 ところでこの場合ならまだ良いけど、 〜〜で言うところの〜〜ってのは説明になってないので、 具体的にどういう動作なのか言葉を補うべし。
Regex
662 :
デフォルトの名無しさん :2006/03/01(水) 16:31:41
作ったアプリに配置したMicrosoftWebBrowserで読み込んだHTMLに書かれているVBScriptから 作ったアプリに情報を投げる方法ってないだろうか? HTMLで起こったイベントをVB.netで作ったアプリに知らせる方法ってないだろうか?
VB.NET 2003 で RS232C でシリアル通信するプログラムを 作っています。232C の先には、簡単はハードウェアがついていて、 232C から送られてきた値を表示します。 232C の通信には Win API の WriteFile を使っているのですが、 下記のような現象がでて何が原因かわからず四苦八苦しています。 というのは、一度ハイパーターミナルで COM ポートを開き、何も 通信せずに閉じた後であれば、VB.NET で作成したプログラムで 値が送られるのですが、ハイパーターミナルを起動しないと ハードウェアに値がわたっていきません。 これは、一度ハイパーターミナルで接続した後であれば、 PC をリブートするまではずっと正常に動きます。 一度、ハードウェア側の電源をきったとしても、 PC がリブートしていなければプログラムで送信した値を 正しくうけとります。 どのように説明すべきかわかりませんが、ハイパーターミナルの 接続をした以降はずっとプログラムが正常に動作するのか なぜかわかりません。 VB.NET でシリアル通信関係で、上記現象を御存知の方が おられましたらアドバイス頂けないでしょうか?
665 :
デフォルトの名無しさん :2006/03/01(水) 17:23:14
ナイアル厨が一度でもまともな回答をしたことがこれまでにあっただろうか。 たぶんないあるよ。
667 :
デフォルトの名無しさん :2006/03/01(水) 22:53:12
質問です。よろしくお願いします。 MonthCalendarコントロールで、カレンダーから選択した日付と曜日を テキストボックスに代入したいのですが、例えば2006/03/03 00:00:00のように 時刻まで取得してしまいます。これを2006/03/03までで止めて、 また「月」や「火」など、曜日を取得するにはどうすればよいでしょうか。
つ 日付と時刻の書式指定文字列
669 :
667 :2006/03/01(水) 23:47:14
>>668 ありがとうございます。
ToShortDateStringメソッドとDayOfWeekプロパティを使って
目的通りにいきました。
VB6のときはOCXで外部コンポーネント配布して登録していたが VB.NETの場合はどうやって配布したらいいの?
VB6とか.NET以前に、
もういちど小学校で作文から勉強した方がいいと思いますが。。
>>670 みたいな文章書く奴ってどういう教育受けてきてるんだろう。
キトキトキトキト
673 :
667 :2006/03/02(木) 00:28:22
テキストボックスにカレンダーから選択して入力するだけではなく 手入力でも入力できるようにしたいと思っています。 そこで、YYYY/MM/DD の形式で入力できるようにしたいのですが あらかじめ二つの「/」は表示したいと思います。 最初のスラッシュの前には、半角で4文字文、2番目のスラッシュの前には半角で2文字分、 2番目のスラッシュの後にも半角で2文字分空白を空けました。 しかし、いざ入力すると、考えてみれば当然なのですが、予めとって置いたスペースに 入力されるのではなく、スペースの前に文字が追加されていきます。 これを防いで、目的を達成するには、どうすれば良いでしょうか。 長文で申し訳ありません。
その場合テキストボックスじゃなくて DateTimePicker 使った方が良いと思う。 Format を Custom にして、CustomFormat で任意の書式指定文字列に設定する。
VB6のときはOCXで外部コンポーネント配布して登録していたが VB.NETの場合はどうやって配布したらいいの?
676 :
670 :2006/03/02(木) 00:42:47
ちょっと質問の仕方かえるので教えてください VB6とOCXの関係は.NETとの関係は何ですか?
言い直して更に言語崩壊というのもアレだな、才能かな。 DLL。
678 :
670 :2006/03/02(木) 00:52:57
>>677 さん理解してくれてありがとう
そのDLLは使えるようにするのに登録とかインストールは必要ですか?
.NET Framework が必要だな。 実行ファイルと同じフォルダなら置くだけで良い。
680 :
670 :2006/03/02(木) 01:05:32
>>679 さんわかりました。最後にもうひとつ教えてください
>実行ファイルと同じフォルダなら置くだけで良い。
同じフォルダ以外に置いて実行環境を構築する方法はありますか?
DLL HELL が DELI HEL に見えた件について
683 :
307 :2006/03/02(木) 06:20:48
data1 という文字列変数の中身が、 AAAA となっているとします。これが、 "AAAA" となるようにしたいのですが、何かよい方法はないでしょうか。 実際は、 strSql = strSql & data1 strSql = strSql & data2 ... というようにSQL文を生成したいのですが、data1,data2,...の string変数を""でクオートしたいのです。 よろしくお願いします。
684 :
デフォルトの名無しさん :2006/03/02(木) 08:18:50
マルチウィンドウアプリケーションを作るとき、 特定のウィンドウの中だけで必要になるデータじゃなくて いろんなウィンドウから参照されるデータは、 グローバル変数として持っておくのが普通なのでしょうか? 単一のウィンドウしか持たないアプリケーションなら そのウィンドウの Public Class Form1 End Class 内で書けばいいと思うんですが、Form2 のイベントハンドラ からも参照されることがあるデータなどは、全部グローバル に持っておくのが普通ですか?
>>683 """" & data1 & """"
多分これでおk。
>>684 普通かは知らんが、グローバル変数を使う。
Shared変数の方がクラス名を書く分、いいとは思うが。
グローバル変数を使う、とあるクラスのメソッド名でも
コメントにかいときゃいいんじゃねーか。グローバル変数のところに。
>>660 やっぱりそれしかないっすか。
>>661 失礼。String.splitだと上のコードだとエラーが出ますな。
Regex.splitかVBのsplit関数でないと。
687 :
665 :2006/03/02(木) 10:42:39
>>666 ネタだったのか・・・
出来るって書いてあったから信じて調べまくったのに・・・
まぁ掲示板でネタに引っかかることはよくあることだから転んでも泣かない。
688 :
しょしんしゃ :2006/03/05(日) 03:17:05
すいません。教えてください。調べたのですがわかりません・・・ VB.NETのデータグリッドに関してなのですが、 コマンドボタンとデータグリッドがは同一フォーム上にあり、コマンドボタンクリック時に 新規レコードをデータグリッドの先頭行に追加する といったことを行いたいのですが、どのようにすればよいのでしょうか? ご教授お願いいたします。 ------------------- ソ ー ス -------------------- ★フォームロード時 Dim dataSet As New DataSet Dim dataTable As DataTable Dim ts As New DataGridTableStyle 'テーブルスタイル Dim cs1 As New DataGridTextColumn 'カラムスタイル 1列目
689 :
688 :2006/03/05(日) 03:17:48
'テーブルの作成 dataTable = dataSet.Tables.Add("t_Data") dataTable.Columns.Add("Room", Type.GetType("System.String")) 'テーブルのデータ作成 dataTable.Rows.Add(New Object() {"山田 花子"}) dataTable.Rows.Add(New Object() {"佐藤 太郎"}) dataTable.Rows.Add(New Object() {"片山 次郎"}) dataTable.Rows.Add(New Object() {"小泉 一郎"}) dataTable.Rows.Add(New Object() {"茂野 五郎"}) ' テーブル・スタイルの作成 ts.MappingName = dataTable.TableName 'テーブル名のセット 'カラム・スタイルの作成 cs4.MappingName = dataTable.Columns(0).ColumnName 'カラム名のセット cs4.HeaderText = "名前" '列見出しのセット
690 :
688 :2006/03/05(日) 03:18:31
'テーブルスタイル/カラムスタイルの適用 DataGrid1.TableStyles.Add(ts) ts.GridColumnStyles.Add(cs1) ★コマンドボタンクリック時 ?????????? ----------------------------------------------------- 1.1〜5レコード目→配列に退避 2.1行目に新規レコードを追加 3.退避したレコードを2〜6行目に追加 の他に方法はないのでしょうか? 長文すいませn
おまい、@IT でもスレ立てとっただろ。 そういうのは感心しないなー。
ざっと読んだ感じ、VB使いってプログラミングのLv低いな。 VBなんてプログラムというよりスクリプトなんだし。 .NETつかうならせめてCLRの仕組みくらい読んでおけよな。
>>690 そうやって新規行を一番上に持ってくるのは、既存データとの整合性
(ソート順とか)を崩すと思うんだが。社員番号みたいに新旧を区別で
きてソートの基準としても使える列があるなら、一度裏側で追加して
おいてから、その列で降順ソート→DataGridに表示すればいいかと。
てか、その動作を必要とする業務ってなに?
他にもっとうまいやり方とか絶対あるって。
初心者であることを強調すると嫌われる気がする
dim foo as myclass って宣言した場合ってfooっていうのは Cで言うポインターの状態なんでしょうか? また、 dim foo as myclass = new myclass この”new”って言うのもヒープにメモリ確保するっていう解釈でOK?
ポインタと参照はかなり別物だが、その myclass が参照型( VB における Class ) ならまあ大体そんなもん。
質問です
ファイルをCGIと組み合わせてアップロードさせるプログラムを作成しているのですが、どうも上手くいきません。
<form name="UP" action="index.cgi" method="post" enctype="multipart/form-data">
<input type=hidden name="mode" value="World">
<input type=hidden name="No" value="0">
ファイル:<input type="file" name="FileName" size="32">
<input type="submit" value="送信">
</form>
これを、HttpWebRequest等を使ってやる場合、どうすればよいでしょうか?以下はいろいろ調べて書いたコードです。
Dim postdata As String = "?No=1&Mode=A"
Dim uri As New Uri("
http://172.0.0.1/index.cgi " + postdata)
Dim boundary As String = "----------" + DateTime.Now.Ticks.ToString("x")
Dim webrequest As HttpWebRequest = CType(webrequest.Create(uri), HttpWebRequest)
webrequest.CookieContainer = cookies
webrequest.ContentType = "multipart/form-data; boundary=" + boundary
webrequest.Method = "POST"
700 :
続き :2006/03/06(月) 08:52:18
Dim sb As New System.Text.StringBuilder sb.Append("--") sb.Append(boundary) sb.Append(ControlChars.Cr + ControlChars.Lf) sb.Append("Content-Disposition: form-data; name=""") sb.Append(fileFormName) sb.Append("""; filename=""") sb.Append(Path.GetFileName(uploadfile)) sb.Append("""") sb.Append(ControlChars.Cr + ControlChars.Lf) sb.Append("Content-Type: ") sb.Append(contenttype) sb.Append(ControlChars.Cr + ControlChars.Lf) sb.Append(ControlChars.Cr + ControlChars.Lf) Dim postHeader As String = sb.ToString() Dim postHeaderBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(postHeader) Dim boundaryBytes As Byte() = System.Text.Encoding.ASCII.GetBytes((ControlChars.Cr + ControlChars.Lf + "--" + boundary + ControlChars.Cr + ControlChars.Lf)) Dim fileStream As New FileStream(uploadfile, FileMode.Open, FileAccess.Read) Dim length As Long = postHeaderBytes.Length + fileStream.Length + boundaryBytes.Length webrequest.ContentLength = length Dim requestStream As Stream = webrequest.GetRequestStream() requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length) Dim buffer() As Byte = New [Byte]() {}
701 :
続き :2006/03/06(月) 08:55:06
Dim bytesRead As Integer = 0 While (bytesRead >= fileStream.Read(buffer, 0, buffer.Length)) = 0 requestStream.Write(buffer, 0, bytesRead) End While requestStream.Write(boundaryBytes, 0, boundaryBytes.Length) Dim responce As WebResponse = webrequest.GetResponse() Dim s As Stream = responce.GetResponseStream() Dim sr As New StreamReader(s) Dim t As String = sr.ReadToEnd() sr.Close() 以上です。 これだと、送られてきているコードはアップロードするファイルのアドレスだけでした。 CGIの方も動作しっぱなしになります。 どうかよろしくお願いします。
>>700 だらだらしたコードを読む気は起きないんで適当に。
> Dim buffer() As Byte = New [Byte]() {}
これ要素数 0 の配列になるだろ。
あと Base64Encoding はしなくていいのか?
御教授願います。 MicrosoftWebBrowserのAxWebBrowser1_StatusTextChangeイベントを使いたいと思っています。 これで、変更したステータステキストを取得する方法が分かりません。 JavaScriptを使ってステータステキストを変更し(ステータステキストは隠しパラメータになっています)、 そのテキスト3種類のうちどうなっているかを検知してそれに応じた処理をしようと思っています。 Htmlの取得にはAxWebBrowser.Navigate2を使用しています。 Private Sub AxWebBrowser1_StatusTextChange(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_StatusTextChangeEvent) Handles AxWebBrowser1.StatusTextChange senderもeもデバッグライトで値を書き出そうとしたけど何も出力されないです。
e.text に入ってるだろ?
705 :
703 :2006/03/06(月) 18:28:47
>>704 本当だ!
Debug.Writeline(e)で何もでなくてしょんぼりだったのにこんなにあっさり解決してもらえるとは。
ありがとうございました!
今更 printf デバッグかよ。 ブレークポイントとか使えよ。
こんなやつがコーディングしちゃう世の中なのか。。。 何作ろうとしてるか知らんが職業プログラマじゃないよな。
>>702 忘れてました。
が、やっぱり上手くいかないorz
709 :
デフォルトの名無しさん :2006/03/07(火) 00:49:58
PlaySound APIを使用し、exeのリソース(wav)を再生しているのですが、exe起動後、1回目だけザァーっと雑音が入ってしまいます。 2回目以降は問題ありません。 フォームロードで、 1)Assemblyを取得。 2)IO.StreamにGetManifestResourceStreamでリソースを設定。 3)IO.BinaryReader で As Byteに読み込み。 4)BinaryReaderをクローズ ここまでに読み込んだAs Byteを 5)PlaySoundで、SND_ASYNC Or SND_MEMORY にてあっちこっちで再生です。 この方法で1回目だけ雑音(かなり激しい)が入ってしまいます。 なにか、コツのような物があるのでしょうか? 原因、解決方法ご存知の方、すいませんがよろしくお願いします。 VB .NET 2003 WinXP Pro
すいません。自己解決しました。お騒がせしましたm(_ _)m
スレ汚しのついでに、せめてどう解決したかぐらい書いていけよ
うぃっす。 原因は、PlaySoundの直前に、Wait処理としてこんな処理を入れてました。 できるだけ厳密に1sを図りたかったので、 Dim T = timeGetTime Do While T + 1000 > timeGetTime System.Windows.Forms.Application.DoEvents() Loop そうしたら、このループを通るときに、なぜか一回目だけCUP使用率がバコ〜ンとあがってしまってたんです。 CUP使用率が原因じゃないかも知れませんが、このループの部分を System.Windows.Forms.Application.DoEvents() Sleep(1000) に変えたら、雑音消えました。 VB出戻りなもんで、こんなボンミスしてしまった・・・orz
乙
714 :
座標 :2006/03/07(火) 08:09:02
715 :
座標 :2006/03/07(火) 10:03:12
PageScale って印刷の時にしか使わないんでしょうか? ディスプレイ上のコントロールに描画するときには無視? 例えば PictureBox の CreateGraphics で取得した Graphics オブジェクトのプロパティでは DpiX = 96 DpiY = 96 PageUnit = Display PageScale = 1 となっています。ここで PageScale を 2 にしようが 3 にしようが、描画結果は全く変わりません。
716 :
デフォルトの名無しさん :2006/03/07(火) 13:21:24
EXPRESSをダウンしてVBを勉強してみようかと行動に 出ましたが、参考書ではサンプルコードに「フォームデザイナで生成されたコード」 ってあるんですが僕のPCには表示されていません。 表示されてなくても実害はないでしょうか?それとも表示させるオプションが どこかに・・・・?無料ならではの制限??? どなたか分かりませんか?
717 :
デフォルトの名無しさん :2006/03/07(火) 13:30:50
>>716 もしかしてその参考書って、
C# の参考書じゃない???
Visual Basic 2005 Express Edition で、
Windowsアプリケーションのプロジェクトを
新規に作ったんだよね?
2005では .designer.vb の方に移ってる
719 :
716 :2006/03/07(火) 16:04:58
ありました〜 ありがとう〜
720 :
デフォルトの名無しさん :2006/03/07(火) 20:37:04
ExpressとProfessionalとの機能面での違いって何でしょうか?
とりあえず Microsoft のサイト見に行け
722 :
720 :2006/03/07(火) 21:22:59
各Editionの機能比較表をさがしましたがみつかりませんでした。 そういうサイトってあるんでしょうか?
723 :
デフォルトの名無しさん :2006/03/07(火) 21:42:03
>>722 本当に探したのか?
もし探したけど見つけられなかったとしたら、
おまえ、相当情報収集能力低いよ。
724 :
デフォルトの名無しさん :2006/03/07(火) 21:46:11
725 :
デフォルトの名無しさん :2006/03/07(火) 22:03:30
VB6.0についてなんですが質問があります。
ttp://pclabo.org/vb6/1/main.htm こちらのサイトのサンプルプログラムでダイアログをキャンセルしたとき
"キャンセルされました。"というmsgboxが出てくるようになっています。
1度なんらかのファイルを選択して開くを押すと以後プログラムを終了させない限り
キャンセルを押した場合に初回にキャンセルを押したときのような意図したような
メッセージボックスが表示されません。
初回以外でもキャンセルを押した場合、キャンセルを押した意図した結果のでる
プログラムの書き方ありましたら宜しくお願い致します。
つか、質問の意味が分からないんだが、俺の読解力不足?
すみません、教えて下さい。 VSの2003をまだ使っている分際ですが、 .NETFramework 2.0をインストールしてしまっても 問題無いですか?
基本的にない。 絶対ないと断言はできんが。
>>725 VB6.0だけど .NETも一緒かなと思うのでレス
それは1回目はCommonDialog1.FileNameプロパティーは""だが
2回目は1回目に選択したファイル名が既にCommonDialog1.FileNameに入っているからでは?
2回目に表示させたときにダイアログのファイル名という部分を既にファイル名が設定されていると思うが
For each について質問なんですが For i as short = 0 to hoge.count - 1 next でまわす場合、iはそのままhogeのindex番号になるじゃないですか。 それを for each i as string in hoge next でまわした場合、iはhogeの何番目のindex番号か知る方法ってありますか? dim a as short=-1 for each i as string in hoge a += 1 (処理) next と言うやり方は、なんかうまくない感じがします。
732 :
725 :2006/03/08(水) 09:29:22
ありがとうございました。
>>731 hogeが何かによるんじゃないの?
配列なのか、集合(List、Hashなどなど)なのか。
まあ、順番大事ならばeach使わないのが普通じゃないの?
734 :
デフォルトの名無しさん :2006/03/08(水) 11:24:12
ちょっと教えて頂きたいのですが カレンダーについてるテキストボックスの値が 変化したときにイベントを発生させるには どうすればいいですか。 TextChangedイベントをハンドルしているのですが 何故か文字を入力してもイベントが発生しません。 KeyPressイベントは発生するのですが… したいことは、カレンダーの横についてるテキストボックスに 日付が入れば、ある「ボタン」を有効にするというものです。
Calender ってクラスはWindows.Web以下にしかないんだが。
状況がよくわからないよ。 MonthCalenderコントロールには、テキスト入力する部分なんて無い し。「したいこと」をもっと他人がわかるように詳しく書かないと。
737 :
734 :2006/03/08(水) 14:27:20
すみません。 もともとのツールボックスにはない 企業がVS.NETの為に作った有料のパッケージに入ってる コントロールなので、ここで聞いても分からないですよね。
一つのプロジェクトに複数のフォームがあるのではなく フォームごとにプロジェクトが分かれている場合 Form1の値をForm2に渡すにどうすればよろしいですか? 一つのプロジェクトに複数フォームがある場合と同じ方法で いけるでしょうか。
やってみろよ。 ……そう言えば VB のデフォルトアクセス修飾子は Friend だったっけ。 カプセル化とか考えてなさそうなコードが山ほど出てきそうだな……。
740 :
738 :2006/03/08(水) 19:31:38
無理でしたorz 教えてください。
メソッドA Call B() '←これを Exit Sub と同等にしたい End メソッド メソッドB() 呼び出し元メソッド(A)を終了するコード End メソッド メソッドAを、呼び出し先メソッドBから終了させることは可能でしょうか? スレッドを利用してBでスレッド゙をAbortすれば一応うまくいくんですけど これ以外の、呼び出し元メソッドのキャンセル方法ないでしょうか
ダイアログという仮定で。 Form1 が Form2 を作成。 Form2 のプロパティを Form1 が設定。 Form2 を Showdialog()。 Form1 は Form2 のプロパティを参照。 キーワードは Public Property あたり。
>>741 そんなメソッド怖くて呼べるか
手続き型プログラミングの基本を破りまくり
大体何でそんなのが必要なんだ
>>741 なんのこっちゃ意味不明。
どうでもいいが「元」と「先」が逆じゃないの?
745 :
741 :2006/03/08(水) 20:48:04
>>743-744 Aに書くコードをなるべく減らしたいんです。
Sub A
IF B Then
Exit Sub 'ある条件が発生した場合は即終了
End IF
通常処理
End Sub
Function B() as Boolean
IF ほりゃらら Then
Return True ' ある条件が発生した場合
Else
Retuen False
End I F
End Function
AでBの戻り値を使って条件判断してる部分(IF文)をまるごとBに内包させて
Sub A
Call B ' ある条件が発生した場合は即終了してくれる
End Sub
と簡単にしたいのですが、これには Exit Sub と同じ効果があるコードがないとできないので・・・
sub A を呼び出す前に、Bを呼び出せばいいじゃん。 つーか、 Call B を IF B Then Exit Sub じゃあかんの?
747 :
741 :2006/03/08(水) 21:18:57
>>746 逆はちょっと・・・順番はA →B でお願いします
>IF B Then Exit Sub
IF文がAに記述されているので、今回やろうとしてることとしては駄目です。
でも確かにこれが一番簡単ですね・・・戻り値使わないというのはやっぱ無理があるのかなぁ・・・
フローを無視するには例外しかない。 もともと例外を投げるべき状態を判定してるなら投げるべきだが、 フロー制御のためだけに例外を投げるのはやめといた方がいい。
ネタでいってるんじゃなければ741は真性の馬鹿だな。 なんか本気っぽいけど。 悪いこと言わない、こういう明後日の方向の努力をする奴はPG向いてないよ。
750 :
741 :2006/03/08(水) 21:49:36
>>748 TryとThrowを使って、うまく思った処理をすることができました。
例外を投げるというのは未知の領域だったので、勉強になりました。
ありがとうございました!
>>749 やりたいことがやれるのがプログラムの魅力ではないでしょうか
君が言う「やりたいこと」が、一般的なマナーに反していて他の人が 眉をひそめるようなことでも? 日曜プログラマで自分だけに留まる ならともかくさ。 一度、まっとうなプログラミング本とか参考サイトとかひととおり読 んで見たほうが大吉。けっして煽ってるわけじゃなくて、きっと目か ら鱗が落ちると思うよ。 少し前に去年書いたコードを読む機会があったんだけど、顔から火が 出て穴があったら埋まりたいくらい、すんげー書き方してたし。orz
プログラム始めたばっかの頃のソースは酷いもんな。
>>750 多分、If〜End Ifがいっぱいあってソースの行数が増えるのが嫌なんだろうが
悪いことは言わん、今すぐ元に戻せ。例外は本来エラーを通知するために使う物だ。
お前のやろうとしていることは
For〜NextやDo While〜Loopを使わずにGoTo文でループを作るのと同じで、
「言語仕様上できないことはないが、ソースの可読性を下げる等の理由でするべきではない事」だ。
それでも納得できないなら
>>749 の言うとおり、お前はPGに向いていない。
趣味でやってるなら問題無いが、仕事でそんなコードを書いているなら今すぐ転職をオススメする。
単純にソース量を減らすなら↓みたいにするべき
Sub A
IF B Then Exit Sub 'ある条件が発生した場合は即終了
通常処理
End Sub
Function B() as Boolean
Return CBool(ほりゃらら)
End Function
>>753 それを書くならFunctionBを呼ぶ必要がないだろw
755 :
753 :2006/03/09(木) 17:33:03
>>754 言われてみれば確かに必要ないな(ノ∀`)
まあ、コード量を減らすならこんなやり方があるよって事が
言いたかっただけってことでひとつ勘弁していただきたい
すみません教えてください。。。 DataGridの1つのセルに数字を入力中に、数字に応じた内容を ツールチップに表示させたいのだが可能ですか?
TextChangedかKeyPressごとに、CurrentCellの内容を見てTipsを 更新するとか。
758 :
デフォルトの名無しさん :2006/03/09(木) 22:53:23
イベントの扱いがどうなってるか教えてください。 イベントが連続して2回送られたときに、 1回目のイベントハンドラの終了を待たずに、 2回目のイベントハンドラが開始することってありますか? 実際にそのような現象が起きているのですが、スレッドIDは一緒でした。 謎。
Application.DoEventsしてたりしないか?
イベントハンドラの中で、 同じイベントハンドラを呼ぶイベントが発生するようなことを しているんじゃない?
>>759 Application.Run(form) してるだけです。 >>760 それはないですねー。 もしかしてイベント送信元に問題があったりしますか? イベント送信元はOCXなんですが・・。
イベントハンドラの中でメッセージボックスを表示してるとか
>>762 メッセージボックス出してないですが、その場合は、 メッセージボックスが閉じられるまで次のイベントは待っててくれないんですか? てっきり待っているものだと思っていました。
>>763 TimerのTickイベントハンドラでMessageBox.Showすると
メッセージボックス閉じなくてもさらにメッセージボックスが表示されるよ。
MessageBox.Showの内部でメッセージループの処理してるから。
お馬鹿な質問の可能性が大ですが、すごい気になるので教えてください。 クラスの静的メソッドを呼び出すとき、クラス名.メソッド名となりますよね。 String.Substring(2) みたいな感じで。 でも、Enumクラスの静的メソッドを呼び出すときにはそれだと駄目で [Enum].GetValues() のように、括弧で囲まないといけません。 なんでなんですか??
Enum が列挙体の宣言に使うキーワードでもあるから、これはキーワードじゃなくて型の名前であるという印。
767 :
デフォルトの名無しさん :2006/03/10(金) 01:08:20
VB.NETでExcelを制御することってできますか。 グラフを書かせたり、それを印刷させたり。 できるんなら、方法きぼんぬ。
>>766 お答えありがとうございます。
列挙体宣言に使うEnumとクラスとしてのEnumって、違うものだったんですね。
なるほど。なるほど。
ちなみに、Enumのほかに[]で囲まないと駄目なものって、
他にあるんでしょうか?
>>764 なるほど!!! ってことは当然MessageBox.Show()したスレッドIDは一緒になるよね。 とあるOCXの関数をイベント内で使っているけど、 そいつがイベント処理している線が濃厚ですね! ありがとうございました。
>>767 上の方にExcelの制御方法は書いてある気がするが・・・・・
VBAのコードで実行できることは、
Excel Object Libraryの中にいるクラスを使用して
同じことができるはず。
Excelのバージョンの違いや、Objectの開放に気をつけながら
やればそう難しくはないはず
771 :
デフォルトの名無しさん :2006/03/10(金) 09:53:44
VB6のアプリケーションを.NETに移行したいのですが、いい開発支援ツールないですかね。 Devpartner studio proというのを見つけましたが。 こういった開発支援ツールを使えば比較的楽に移行できるのでしょうか。
>>772 一から組み直した方が早い&確実&勉強になる。
ついでにデバッグもできて一石二鳥。
AフォームからBフォームを呼び出した時に BフォームのMyBase.Loadイベントを通らないのですが どうしたら、通るようになるでしょうか。 ちなみにMyBase.Loadイベント内のコードにブレークポイントを 付けると、ブレークポイント内の●の中に、?が出ます。 そこにカーソルをあてると、「現在の設定ではヒットしません。 このドキュメントのシンボルが読み込まれていません」と出ます。 これについては、調べてみたのですが、どうしても解決方法が わかりません。ご教授よろしくお願いします。 ちなみAフォームとBフォームは、ソリューションは同じですが 別プロジェクトで、AフォームがあるAプロジェクトの出力の種類は 「Windowsアプリケーション」で、「Bフォーム」があるBプロジェクトの 出力の種類は、「クラスライブラリ」です。 よろしくお願い致します。
775 :
デフォルトの名無しさん :2006/03/10(金) 15:55:08
PictureBoxの継承コントロールを作成中なのですが、 プロパティに関して質問があります。 (バージョンはVB.NET2003です) Imports System.ComponentModel Public Class ScaledPictureBox Inherits System.Windows.Forms.PictureBox (中略) Private pScaleTopLeft As PointF <Category("スケール"), _ Description("右上座標")> _ Public Property ScaleTopLeft() As PointF Get Return pScaleTopLeft End Get Set(ByVal Value As PointF) pScaleTopLeft = Value End Set End Property End Class
776 :
デフォルトの名無しさん :2006/03/10(金) 15:55:49
>>775 のようにPointF構造体型のプロパティを作ると、
プロパティウィンドウでのプロパティ表示が
ScaleTopLeft {X=0, Y=0}
となり、プロパティウィンドウ上で変更出来ません。
(コード内で変更することは可能です)
[-]ScaleTopLeft 0, 0
X 0
Y 0
のようにプロパティウィンドウ上で表示・編集できるようにする
術はないでしょうか?
質問です。
System.Diagnostics.Process.Start("mailto:
[email protected] ")
で、デフォルトのメーラーを起動できる事は判ったのですが、
指定したメーラーで開く事はできますか?
Outlook Expressで開きたいのにOutlook2003で開いてしまって困っています。
フルパスでexe指定すれば? アドレスは第一引数に指定すればよかったはず
>>775-778 追記。
>>777 を参考に該当するTypeConverterを探したところ
> SizeFConverter クラス
> メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。
.NET2003なら自作しなきゃダメということが判明。
まあ、作れんこたないけど。
それ以前に PointF を変換するのに SizeFConverter じゃまずいだろ
>>780 その方法でできました。
この書き方でアドレスや、CC、BCC、件名、本文も入力できますか?
784 :
774 :2006/03/10(金) 18:59:56
>>777 いえ、オーバーライドしてません。
ロードされたときに、MyBase.Loadイベントを通らない理由が
分からないんですよね。
>>774 君はFormのコード持ってるわけ?w
そいつはスゴイ。
まあ冗談は置いといて、というかこれが冗談に聞こえないなら
手抜きせずにマジメに勉強した方がいいと思うよ。
Bフォームというのは、自分で作ったフォームを継承したものじゃないの?
ツールチップの出し方教えてください ちょうどVB.NETでメソッド名をタイプすると書式が出てくるやつです tooltipというコントロールがありますがあれは、マウスカーソルがその コントロールにあたっていないとでてこないのと出現場所が固定なので 不便です。宜しくお願いします
>>787 まず日本語の勉強から開始した方がいいと思うぞ。
いったい何がしたいねん。
>>788 おれの実装したいのはツールチップです。ツールチップって名前があっているかちょっと不安だが
VB.NETの環境でConvert.ToString(まで打つと書式のツールチップが出る
そのツールチップを作りたい。
具体的にはテキストボックスに文字を入力中にその文字が「メロン」ならば
「おいしい」という文字をツールチップの内容にするって具合なんだが「。。。。
それはパラメータヒント(クイックヒント?)ってやつだ。 そんなコントロールは無かったような気がする。ToolTipsにしろ HelpProviderにしろ、ポインタが指し示さないと動かないしな。 入力中の文字列をリアルタイムに評価して、カーソルのそばにフ ローティングなラベルでも表示するとか、自前で実装しないと。
>>790 パラメータヒントっていうのか。ヒントサンクス
HelpProviderとかフ ローティングなラベルで自前実装できないか
ちょっとやってみます
792 :
デフォルトの名無しさん :2006/03/11(土) 09:07:59
2005 Express 線を描こうと思い、ネットで探し回りましたが Dim g As Graphics = PictureBox1.CreateGraphics() g.DrawLine(Pens.Black, 0, 0, 100, 100) PictureBox1.Refresh() と書いても線が書けません どうすればよいのでしょうか?
Paint イベントで e.Graphics 使って描くとか。 PictureBox の Image にあらかじめ Bitmap 作っておいて、そのビットマップに対して描画するとか。
>>792 Private Sub pictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)
Dim g As Graphics = e.Graphics
g.DrawLine(Pens.Black, 0, 0, 100, 100)
End Sub
>>792 PictureBox1.Refresh()
え゛、、、、
>>793-795 ありがとうございます。
他にもVB6との違いが多く戸惑っているので
書籍を買うことにします。
グラフィックに関して詳しく扱ってる入門書は多分まずないと思うよ。 っていうか、グラフィックの描画方法とか考え方は基本的にVB6と違わないよ。 もし違うと思うなら、それがVB6で正攻法で描画コード書いてなかったってことだよ。 Paintイベントで描画せずに、コントロールのAutoRedraをTrueにして任意のタイミングで 描画とかしてたんじゃない? まあとりあえずデバイスコンテキスト(ドトネトだとGraphicsオブジェクト)って 考え方が理解できれば後はMSDNとか見て前に進めると思うよ。
2005 Expressを使用しています。 作っているソフトの中で、古いDOSアプリを実行する必要があり、 それに与えるパラメータの一つにショートファイルネームが必要なのですが、 どうにも標準で用意された関数が見つけられません。 Win32 APIで、GetShortPathNameA というのを見つけましたが、これを使うしか方法は無いでしょうか。
>>798 標準ではなさそうなので、次のバッチファイルを用意しておいて
rem dos-start.bat
dos-command %~s1
こうやって起動している。
cmd /cdos-start.bat long-file-name.txt
あとは古式ゆかしく FileSystemObject 使うとかな。
vb.net で、ファイル名の直前のフォルダ名を取得したいのですが、 便利なメソッドはありますか? 例えば、c:\tmp\abc\def\ghi.txt という文字列から def もしくは c:\tmp\abc\def を取得したいのですが。。。 もし、c:\tmp\abc\def の形式でしか取る事ができなかった場合、 c:\tmp\abc\def から def を取るのはそれほど難しくないですよね? ヒントでいいのでよろしくお願いします。
System.IO 名前空間をよく見るんだ……って分かりづらい説明しか書いてねぇ Path クラス
HashTable のキーの値の昇順で値を取りたいんですが よい方法はないでしょうか? Dim _h as HashTable = New HashTable() _h(3) = "c" _h(2) = "b" _h(1) = "a" のような場合、_h(1), _h(2), _h(3) の順で値がとりたいのです. ただし,キーの値は何がはいっているかわからないので, なんとかして HashTable のキー順に値をとりたいんですが方法が わかりません.実現できる方法があればアドバイスよろしくおねがいします.
何が入ってるのか分からないのにどういう順番なら良いのかな。 と言う茶々はおいといて、Keys を配列に CopyTo して、そいつを Array.Sort 。 で、その配列を foreach で回す。
805 :
803 :2006/03/12(日) 16:37:49
>>804 すみません. key には数値が入っていますが、連番になっていない
可能性がある、という事でした。
別配列に順序をソートしてそれを基準に HashTable を参照する
ってことですね。やってみます。ありがとうございました.
Forループじゃダメなの? For i = 1 To _h.Count Debug.WriteLine(_h(i)) Next
807 :
798 :2006/03/12(日) 17:42:52
>799-800 有り難うございます。 >799 "%~s1" この受け取り方、全く知りませんでした。 今後に役立つ事がありそうな予感。
インデックスが連番になってないって言ってるだろ
>>806 それで回るなら、ハッシュを使う意味はないんでは?
SortedList使えよ
Dim v As Long = &HFFFFEEFFL 'UInt32の範囲内 Console.WriteLine(v = (v And &HFFFFFFFFL)) 'True Console.WriteLine(CInt(v And &HFFFFFFFFL)) '-273 Console.WriteLine(CInt(v)) ' OverflowException 前者は例外が出ないのに後者はオーバーフローするのはどうしてでしょうか?
3番目の例でオーバーフローするのはむしろ当たり前で、 2番目の例でそれが発生しないことの方を不思議がるべきだと思う。
>>811 CIntがどの型への変換関数か考えれば自明かと。
>>811 俺の環境では
>>Console.WriteLine(CInt(v And &HFFFFFFFFL)) '-273
は-273じゃなくて補数表現で-4352とIntegerに変換された
恐らく、(v And &HFFFFFFFFL)この演算の時点で型の評価がIntegerとかになってるんじゃ?
後者の方は8Byte(Long)でCInt()に突入以後下記の処理
if CIntで32bit目のチェック = 1 then
if 上位32bit = FFFFFFFF then
負数 = (0xFFFFFFFF80000000) - (0xFFFFFFFFFFFFFFFF)
else
OverflowException
end if
else
整数 = (0x????????00000000) - (0x????????7FFFFFFF)
end if
おー嘘書いてた。。。訂正 if CIntで32bit目のチェック = 1 then if 上位32bit = FFFFFFFF then 負数 = (0xFFFFFFFF80000000) - (0xFFFFFFFFFFFFFFFF) else OverflowException end if else if 上位32bit = 00000000 then 整数 = (0x????????00000000) - (0x????????7FFFFFFF) else OverflowException end if end if
>>813 少しも自明じゃないと思うが。。
少なくとも
> Console.WriteLine(CInt(v And &HFFFFFFFFL))
これが通るのは全然自明じゃない。
知識がないなら黙ってりゃいいのに。
817 :
813 :2006/03/13(月) 13:35:27
>>811 コードをきちんと読まずにいい加減な回答をしてしまった。
申し訳ない。
Console.WriteLine(TypeName(v And &HFFFFFFFFL))
でもLong型なのは確認できるな。
>>811 IL的にも問題なさげ、あるとしたらJIT?
IL_0000: ldc.i4 0xffffeeff
IL_0005: conv.u8
IL_0006: stloc.0
IL_000e: ldc.i4.m1
IL_000f: conv.u8
IL_0010: and
IL_0011: conv.ovf.i4
IL_0012: stloc.1
819 :
デフォルトの名無しさん :2006/03/13(月) 15:53:53
SaveFileDialogにある保存ボタンのテキスト を「保存(S)」から「選択」へ変更したいのですが、 何か方法はあるのでしょうか。 よろしくお願いします。
>>814 > >>Console.WriteLine(CInt(v And &HFFFFFFFFL)) '-273
> は-273じゃなくて補数表現で-4352とIntegerに変換された
ああすいません、&HFFFFEEFFL はコピペせず適当に書いた値なんで。一個 E の位置がずれてました。
> 恐らく、(v And &HFFFFFFFFL)この演算の時点で型の評価がIntegerとかになってるんじゃ?
は
>>817 の
> Console.WriteLine(TypeName(v And &HFFFFFFFFL))
> でもLong型なのは確認できるな。
によって反論されますし、実際、直接 IL 書いて And の直後に Console.WriteLine(Integer) を呼び出したら保護メモリエラーです。
CInt は数値型を渡した場合ごく単純な IL (conv.ovf.i4) に変換されるだけですし。
>>818 なんですよねー。
なんで and を通したらオーバーフローにならないのかさっぱり分からない。
また、&HFFFFFFFFL をローカル変数に格納して And 演算を行った場合はオーバーフローです。
この場合ローカル変数が I8 なのがオーバーフローの元なのかと conv.u8 してみても駄目。
演算結果が &HFFFFFFFF で収まる、v Or &HFFFFFFFFL の場合はオーバーフロー。
この場合は conv.u8 の代わりに conv.i8 をすれば通ったり。
謎。
んー、ちょっと MSDN フォーラムの方でも聞いてみます。VS 共通フォーラムが良いかな。
C# でも checked ステートメント内で同じ現象が出るし。
>>また、&HFFFFFFFFL をローカル変数に格納して And 演算を行った場合はオーバーフローです。 変数に一度保持させると64bit同士のand演算になり815で言った処理になるその場合 0x00000000FFFFEEFFは最上位ビットが0の為int32の正の限界を突破する為overflowすると思う 変数に一度保持させない場合下記のように定数(&HFFFFFFFFL)が事実上下位32bitで処理されてる Sub Main() Dim v As Int64 = &HFFFFFFFFL 0000000d mov esi,0FFFFFFFFh 00000012 xor edi,edi Console.WriteLine(CInt(v And &HFFFFFFFFL)) 00000014 mov ecx,esi 00000016 and ecx,0FFFFFFFFh 00000019 call dword ptr ds:[79C56664h] 0000001f nop End Sub
>>821 うお、向こうに書き込む直前。
なるほど、その辺の問題でしたか。JIT が微妙な最適化をやったってところ?
or の場合は定数の値の範囲で制限され得ない(32bitを超えうる)からこれには合致しない、と。
割とすっきりですー。
バグの元になる最適化だと思うけど。
>C# でも checked ステートメント内で同じ現象が出るし。 monoで動かしたらちゃんと例外が出ました。ワロス
質問です。 ToolTipでフォントを設定方法が見当たりません。 どうやって設定すればよいのでしょう?
>>819 簡単には無理。
>>824 デスクトップを右クリックして、プロパティからデザイン、詳細設定で……
フォントを標準以外にしたいのならオーナードロー汁。.NET 2.0 だけだけど。
同じフォームを配列にしてやって、 複数表示させたいのですが、どうすれば良いのか全く判りません。 どうか、教えて下さい。
言葉で書いてるとおりに実装すればいいと思うのだが。 むしろ何故「全く判らない」んだ?
スミマセン ド素人なので。。。 Dim Myform() As Form2 For j = 0 To 1 Myform(j).Show() Next じゃ、ダメだったんです。。
リファレンス/ヘルプで Visual Basic における配列 とかをまず嫁。
空配列を宣言しても、実際に数を指定するまでは使えない。 ()で宣言すれば、好きなだけ呼べると思っていたのかな?
Dim Myform() As Form2 redim myform(0) For j = 0 To 1 redim preserve myform(j) myform(j) = new form2 Myform(j).Show() Next
>831 有難うございました。 早速、試してみます。
配列っていうか、Listとか集合に任せたほうが安全だし簡単だし。 終わったフォームを削除したりも簡単だし、穴を気にしなくていいし。
彼はそれより先に覚えることがたくさんあると思われ
VB.NET 2005 Expressで、 クラスにシリアライズ属性を指定すると、シリアライズ可能になりますが、 その状態で、そのクラスのフィールドにカーソルをやると、 プロパティウインドウに逆シリアル化=Falseと出てます。 でも、これってクラスにシリアライズ属性を指定してるんだから、 デフォルトで逆シリアル化=Tureじゃないとおかしくありませんか? ちなみに、そのプロパティをTrueに設定すると、 そのフィールドに、<NonSerialized()>属性が指定されます。 これってシリアル化しないって意味だから、 逆シリアル化もFalseって意味じゃないと変だと思うんですが。。。
誤訳だろ
やっぱそうですか でもIDEの誤訳ってはじめて見た(;´Д`)
FeedbackCenterに投げてやれ 日本語でもOKだぞ
VB2005 前まであったPictureBoxのAutoRedrawプロパティどこいった? 再描画されないんだけど
Image に Bitmap 突っ込んでそれに描いとけ
AxWebBrowserコントロールで、表示しているHTMLページのイベントを取得するには どうすればいいの?
Documentプロパティから辿ってけ
>>842 MSDNでWebBrowserで検索しら、一発で出てきたorz
すまそ
844 :
843 :2006/03/15(水) 17:00:13
イベントに返値があっちゃいかん理由も無かろう .NET 的マルチキャストなイベントとは反りが合わんが
ベーシックみたいな文法がうざいんですけど、どうにかなりませんか?
C#使えば。 俺は逆にC#のCみたなコードがうざい。だからVB.NET。
ボタンを右クリックでも押せるようにするのは どうしたらできるでしょうか? Buttonクラスを継承してOnMouseDown()から自作で やれば良いのかなぁという気はしているのですが、 押下状態をどうやったら描画できるのかがわかりません。
ControlPaint使う?
windows2000にログオンした時のユーザ名を取得したいんだけど、いい方法ある? ヘルプでログオンとかログインって調べても、ウェブサービス絡みしかでてこないのですよ。
ログオンしたときのユーザ名? どのタイミングでどういう状況で取得することを考えてる? 現在のプロセスを走らせてるユーザ名なら System.Environment.UserName で取れるが。
>>851 ログオンし終わって、普通のVBアプリケーションで使おうと思ってるの。
今実行してみましたが、System.Environment.UserName で取れるもので大丈夫そうです。
凄まじい速さのレス、ありがとうございました。
実行ファイルを右クリック>別のユーザとして実行とかされるとそのユーザになるから注意な。
>>853 それは……まずいなあ。
回避方法はあるの?
まずいって意味わからんな。 ログオンしているユーザーは一人とは限らんよw マルチユーザー環境が根本的に分かってないんじゃないか
>>855 ……分かってない(′・ω・`)
でも、そのプログラムを起動したユーザを取得できるんなら、いいのかも……?
取り敢えず、さっきのでやってみます。
色色とありがとうございました。
SQLServer認証使った場合は、コネクションプールが無効だと言われたので、 SqlConnection使ってOPEN CLOSEを行うアプリを作成しSQLプロファイラで ログイン発生有無を確認したのですが、コネクションプール効いているように 見えるのですよね。 環境:VS2005+SQLServer2005 私が何か勘違いしているのでしょうか? もしくは環境によって動きが違う等あるのでしょうか?
誰が何処で無効だと言ってるのか?
WindowsForms の TextBox で、入力値を制限したいのですが どのようにやればいいのかわかりません。 入力できる文字を数字の 0 から 9 までと、アルファベットの Aから F に制限したいのですが、何かよい方法があれば教えてください。
TextChangedで検証 桁数が決まってるのなら2.0ではMaskedTextBox
認証はプーリングとは無関係、と言ってるようにしか読めないのだが
>>862 サンクス
プールされない=プールが無効
と解釈してしまったのだけど、
ここが間違っているのかな?
質問させてください。 VB.NETからACCESSのデータを取得するには以下のコードでできたのですが、 このとき対象となるテーブルに排他ロックをかけたいのですが、 可能なのでしょうか? SQLSERVERであれば、 select * from テーブル名 with(tablockx,holdlock) で可能ということはわかりました。 ご教授よろしくお願いします。 Dim oleConn As System.Data.OleDb.OleDbConnection Dim retTb As New DataTable Try 'DataBaseに接続する oleConn = New System.Data.OleDb.OleDbConnection oleConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ + "Data Source=" + "@データベースのパス" oleConn.Open() 'Select文を発行する Dim selectCommand As System.Data.OleDb.OleDbCommand selectCommand = New System.Data.OleDb.OleDbCommand selectCommand.CommandText = "SELECT * FROM " + "テーブル名" selectCommand.Connection = oleConn Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter da.SelectCommand = selectCommand da.Fill(retTb)
865 :
857 :2006/03/17(金) 21:24:56
そういえば、認証とプーリングは、↓の関係。
http://msdn2.microsoft.com/ja-jp/library/8xx3tyca.aspx >同じ構成を持つ接続のみをプールすることができます。ADO.NET は、1 つの構成につき
>1 つのプールを同時に複数保持します。接続は接続文字列によってプール内で区別されます。
>また、統合セキュリティを使用している場合は、Windows ID によっても区別されます。
つまり、次の単位にコネクションを共有できると読み取れるのだが。。。
・SQLServer認証:接続文字列
・Windows認証 :接続文字列&Windowsユーザー
さらに、接続クライアント(=アプリ)が違っても共有されなかったのだが、
この辺の記述が、見つけられなかった。
※ログインするだけのexeを作って、コピーして名前を変えて同時に動かし、テストした。
ADO1.0とかだと、動きが違うとかあるのですかねぇ?
VBAをやってて、VB.netをやり始めたんだけど 今までの知識って全部捨てた方がいいのかな? オブジェクト志向ってのが全然わかってましぇん
捨てようとして捨てられるモンでもないけどな。 取りあえず全く別の言語であるという前提の元で始めるべきではある。
>>865 > さらに、接続クライアント(=アプリ)が違っても共有されなかったのだが、
> この辺の記述が、見つけられなかった。
「プールの作成と割り当て」ってとこに
「接続は、プロセス、アプリケーション ドメイン、接続文字列、および
Windows ID (統合セキュリティを使用している場合) ごとにプールされます。」
と書いてあるが。
>>686 C言語と、Javaが似ているレベルの共通点しか無いから要注意。
>>866 ミスった、686じゃなくて、866orz
871 :
デフォルトの名無しさん :2006/03/18(土) 11:43:00
VC#なのですが、質問スレが無くスレ違い失礼します。 VC#でも、VisualBasic6のようなコントロール配列はありますか?
グローバルフックをVB.NETで使えますか?
874 :
857 :2006/03/18(土) 13:17:51
>>868 うぉ(゚□゚ ;ノ)ノ
もろ見落としていた。。
すっきりしたよ、サンクス!
vb2005ってWebbrowserコントロールでNewwindow2とか3って使えないんだね。 せっかくタブブラウザ作ってたのに、新しいウィンドウが開くときに、新しいTABにページを表示しようとしても、 開こうとしているURLを取得できない。 あと、リンクにマウスポインタを乗っけたときに発生するイベントがなくなってる・・・
取得できますが
878 :
http://www.vector.co.jp/soft/win95/util/se072729.html :2006/03/18(土) 18:31:29
TextSS の64bit化おながいします もしくは64bitにネイティブ対応した置換ソフトないですか?
ビルドした実行ファイルの起動が凄い遅いのはなんとかならんの? 拡張子を変換するだけのアプリが8秒かかるんだけど
>>879 ほんの少し調べれば、ツールの話が出てくるんだが。
なんとかならんの?とか無知をさらす前にちょっとぐらいぐぐれ。
ngenで多少はマシになるかもな
ngenやっても倍とかにはならんだろ
883 :
デフォルトの名無しさん :2006/03/18(土) 23:20:31
VBの最適化ってな〜に〜?
VB.net 2005 Expressで、 Dim id As System.Guid id = System.Guid.NewGuid() ってソースをステップ実行させて、idにカーソルを合わせると、 {System.Guid} Empty: {System.Guid} って出るんだけど、これってちゃんとGuidを表示してくれないものなの? ちなみに、Console.WriteLineから出せば、ちゃんと生成されたGuidが表示されるんだけど・・・なぜ?(;´Д`)
単に静的フィールド表示してるだけじゃね?
じゃあ、ToStringさせないと出してくれないってことですか? うーん・・・(;´Д`)
>id = System.Guid.NewGuid() この行で止めてるなら表示されるわけないじゃんw
>>887 止めてないよ
その行も実行させた後の話
確かに出ないな…なんでだろ。
890 :
デフォルトの名無しさん :2006/03/20(月) 00:35:09
仕様です。
891 :
デフォルトの名無しさん :2006/03/20(月) 02:50:25
アカデミックが異様に安いんですが,通常のスタンダードと差はあるんですか?
892 :
デフォルトの名無しさん :2006/03/20(月) 07:33:20
ある。 購入者資格制限。
893 :
デフォルトの名無しさん :2006/03/20(月) 14:21:11
とあるネット上に公開されてたコードをDelphiに移植したくてVisualStudioを買ったんだけど、 VBW,VBP,FRM,FRXの拡張子のファイルしかないんだけど、これってこれだけのファイルからじゃ、 実行ファイルは育成できませんか?
それは、VB6→VB.net→Delphiの処理が必要じゃないのか? とりあえずvbpを開いてvb.netに移植するのが先と思われ
VS2002以降じゃどうしようもない気がする というかDelphiに移植したくてVS買うって意味分かんないんだけど。
>>894-895 レスありがとうございます。
ソースの中身をみたら処理が分かるだろうと思っていたのですが、DLLの呼び出しなどがどうしても分からないもので、
VS買ってステップ実行して動作を一つずつ見てそのとおりにDelphiに移植しようと思って購入しました。
VBPは以下に引用しますがVB.NETはVS2005でも代用できますか?
Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation
Reference=*\G{00000205-0000-0010-8000-00AA006D2EA4}#2.5#0#C:\Program Files\Common Files\system\ado\msado25.tlb#Microsoft ActiveX Data Objects 2.5 Library
Object={248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0; mswinsck.ocx
Form=Form1.frm
Form=BID.frm
Form=ASK.frm
IconForm="Form1"
Startup="Form1"
HelpFile=""
Title="O2GDDE"
ExeName32="hogeDDE.exe"
Command32=""
Name="hogeDDE"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="hoge"
続きです。 CompilationType=0 OptimizationType=0 FavorPentiumPro(tm)=0 CodeViewDebugInfo=0 NoAliasing=0 BoundsCheck=0 OverflowCheck=0 FlPointCheck=0 FDIVCheck=0 UnroundedFP=0 StartMode=0 Unattended=0 Retained=0 ThreadPerObject=0 MaxNumberOfThreads=1 [MS Transaction Server] AutoRefresh=1
898 :
デフォルトの名無しさん :2006/03/20(月) 14:49:17
>>896 その前にDelphiでのAPI呼び出しの仕組みというか呼び出しの記述方法は理解してるか?
>>898 Delphiでは簡単なユーティリティ系から簡単なDBのソフトまでは作っておりAPIも使っています。
>>893 FRMのファイルにソースが記述されてるんじゃ?
>>896 BIDとかASKとかDDEって記述があるから、
たぶんDDE使った相場がらみのソフトかな?
VS2005そのものは問題ないけど、
問題なのは、VB→VB2005への変換で、VSがどこまでやってくれるかだけど、
これがほとんど期待できないので、結局は.netを覚えるしかない
それなら、VBソースから、直接Delphiを書いたほうが早いと思われ
>>900 FRMにボタンを押した処理などは書かれています。
ですが、肝心のDLLのコールの仕方や引数が分からなくて。
メーカーもまともなドキュメントは出さずに、このSampleを参考に汁!状態なものですから・・・orz
frmファイルのほうは、ボタンを押したらログインしてタイマーを回すってところまでは書いてますが、
Timer1が規定値になったときに行われる処理が書かれている場所が無かったりと、ちょっと意味が不明でして。。。
DelphiみたいにProjectファイルを開いたらFormなどが表示されてそこをダブルクリックしたら処理ルーチンが
表示されると思っていたのでちょっとギャップを感じてます。。。orz
>>901 .netは別に買うしかないのでしょうか?
それともVS2005で開けますか?
>>902 >.netは別に買うしかないのでしょうか?
>それともVS2005で開けますか?
つーか2005は.netだから
つーか買ったんだから四の五の言わずにとりあえず開いてみろよw
>>903 いやもちろん開いてまして。
ファイルを開くでfrmとvbpを開いてもテキストエディタチックに表示されるだけでF8でステップ実行もできないですし、
DLLを呼んでるところも見つからないもので。。。orz
905 :
デフォルトの名無しさん :2006/03/20(月) 16:40:55
DDEが出た時点で.NETはダメだろ 素直にVisualStudio6.0以前を入手すべし あとVBもDelphiも対して変わらんよ イベントプロシージャのある場所がちょっと違うだろうけど
896です。 プロジェクトを開くの方からVSで開けるように形式に変更できました。 Loadをばっさり削除したりしてとりあえず表示は出来るようになったのですが、 ***で隠されて表示されてるPasswordはきちんと認識されないですし、外部からのデータの 取り込みもまともにできない。。。orz 一つ教えて欲しいのですが、今までは Timer1.Interval=10000 などでタイマーのイベント間隔を規定して自動的にタイマーイベントが発生してたみたいなのですが、 VSではこのコードだとイベントが発生しないみたいです。 これはどうすれば回避できるのでしょうか。
Start 呼んだり Enabled を True にしたりしてる?
>>907 元のソースがその辺の手続きをせずにきちんと動作してたもので。。。スマソ
皆さん何度も何度もアドバイスありがとうございました。
ちょっと格闘してきます。
909 :
デフォルトの名無しさん :2006/03/20(月) 18:58:03
VB.NETでVB6以前のプロジェクトを開いた場合 かなり行儀の良いプログラムじゃなければ綺麗に変換されない
910 :
デフォルトの名無しさん :2006/03/20(月) 19:54:06
.Netframeworkのバージョンやリビジョンの情報は、どのクラスで分かりますか? どなたかご教授願います。
微妙に意図不明だが、現在のアセンブリが動いてるCLRバージョンならSystem.Environment.Version
VB.NETからDLLを呼び出す場合のマーシャリングについて教えてください DLLはCOBOLです。ぐぐってみましたが情報が少なくて orz 呼び出し方はDeclare Autoです。
>>912 まず日本語の勉強を(w
アンタそれ読んで他人に君のいいたいことが通じると本気で思ってるわけ?
914 :
912 :2006/03/21(火) 12:06:57
゚Д゚自分でも何を言ってるかわからんが 他力本願です。なにかヒントください
915 :
デフォルトの名無しさん :2006/03/21(火) 13:29:25
作ったアプリケーションを部分リリースできるように、 したいんですが、dllとdllの連携はどのように行えばよいのでしょうか。
参照すればいい。 循環参照にならないように注意する必要はある。
917 :
デフォルトの名無しさん :2006/03/21(火) 13:56:14
非常に初歩的で恐縮ですが、 参照したdllにスタートページにしたいページが含まれる場合、 どのようなことをすればよろしいでしょうか。 たとえば、ログインページとメニューページをDLLとして作成し、 アプリケーション本体となるDLLを部分リリースする場合、 ログインページをスタートページにするにはどうすればよいでしょうか 。 すいませんが、ご伝授ください
ASP.NET か WinForm かどっちだ。
919 :
デフォルトの名無しさん :2006/03/21(火) 14:04:15
ASP.NETです。 よろしくお願いします。
Windows Forms のアプリで自分自身(exe)を再起動したいのですが、 何か方法があれば教えて頂けないでしょうか?
なにそのマルウェアみたいな仕様。 なぜそうする必要があるのかを書けば、代案が出てくるかも。
代案も糞もw 再起動もなにもあるかよ。要は「起動」するだけでしょ。 こういう幼稚園児レベルの知恵がない人はプログラマの目はないと思う。
いやいや、起動すること自体が問題じゃなくてさ。
>>920 が再起動させたいと思い至った過程が知りたくて。
924 :
920 :2006/03/21(火) 18:36:53
なんか叩かれてしまいましたが。。。 プログラムを起動していろいろ処理をしている間に、 シングルトンで実装したいくつかのクラスを、起動時の状態によって 生成しています。 あるタイミングでそのシングルトンのクラスを再度生成したいのですが、 それらのクラス内での再読み込みのメソッドを作成はしたくなく (任意のタイミングで再読み込みができないクラスにしたいため) どうしたもんかと考えていました。 で、プログラム自体を再度起動してやりなおすのがてっとり早いかな、 と思いまして。抽象的な回答ですみません。 で、そのプログラム自体は mutex で二重起動を抑制しているので、 自分自身が存在している状態で、「起動」する事ができなく 何からの方法で再起動できないかな、と思いまして。。。 クラスやアプリケーションの設計を見直せ、というのはなしでお願いします。
なら自分の発射台を発射すればいいんじゃないの?
というか再起動が必要なときにMutex解放すりゃ良いじゃねぇか
もしv2.0なら、Application.Restart()なんて簡単な方法もある。
928 :
デフォルトの名無しさん :2006/03/22(水) 08:20:49
Visual Basic 2005 Express Edition を遂に買った。 何と、インターネットエクスプローラもどきのソフトが5分で作成出来るのには驚きだ。
ListViewについて質問です。 プログラム上で、ListViewのあるitemを選択させているのですが、 Item数が多くスクロールしないと見えない位置にある場合、 そのitemが見える位置まで自動的にスクロールさせる方法なないでしょうか?
あるよw
932 :
929 :2006/03/22(水) 11:35:45
>>930 ありましたねw
解決しました。ありがとう。
EnsureVisibleメソッドを見逃してました。お恥ずかしい。
933 :
デフォルトの名無しさん :2006/03/22(水) 13:29:03
>>928 感動しているところすまないが、それはIE3.0以降が出て以来、ほとんどのWindows上の開発環境でそうなんだ
しかもExpressを買ってるし(;つД`)
やっぱ箱入りだろ
付いてくる解説本が最悪って噂だけど、ほんとのところどうよ?
937 :
デフォルトの名無しさん :2006/03/22(水) 17:37:15
厚さは12mmで294ページだな、解説本は2,200円とふんだな。 内容はまあこんなもんだな、最初からあまり期待してねえし。
ボタンをクリックしたときに、TextBox.Textの内容を IEで開いたGoogleのトップページにある検索文字列入力欄に転写することは可能ですか? 可能であればどんなコントロール使えばいいんでしょうか。 VBかC#どちらかで。
その IE ってのは既存の IE なのか新しく起動させるのか WebBrowser コントロール使うのか、一体どれだ。
940 :
938 :2006/03/22(水) 22:09:52
すでに開かれている(起動済み)IEです。
2つ以上開いてたらどうすんのよ?
942 :
938 :2006/03/22(水) 22:39:11
>>941 プロセスIDが一番遅いやつで。
一個しか開いてないって限定でもかまいません。
IEが開いてなかったらどうすんだ Googleトップを開いてなかったらどうすんだ
もはや丸投げ状態な悪寒。
945 :
938 :2006/03/22(水) 22:53:09
突っ込まれすぎてごめんなさい。 IEでgoogleトップページを開いている という限定した条件のもとで動けばいいです。 IEが開いてないとかgoogleトップじゃないとか そんなことはありえない!! て感じでかまいません。
キーワードだけ Shell.Application Windows
947 :
デフォルトの名無しさん :2006/03/23(木) 01:11:07
VB.NETでExcelを制御するアプリは作れるように なったんだけど、 あるブック"hogehoge.xls"内のプロシージャを アプリから呼び出す(実行させる)ことって、できますか?
xlBook.Application.Run("aaa")とかじゃダメなのか?
949 :
デフォルトの名無しさん :2006/03/23(木) 13:44:28
当たり前だけど、Publicになっていないとダメ
950 :
デフォルトの名無しさん :2006/03/23(木) 23:17:05
すまん。みんなの知識をオラに分けてくれ!! PCが2台あったとして、PC1のほうで、 途中まで作ったプログラムの続きをPC2の ほうで作成したい場合、、、どうすればいい? VB.NET は両方のPCに入っているとして、、
ソリューションをフォルダごと持ってけばいいんじゃね?
953 :
951 VB初心者 :2006/03/24(金) 00:50:53
>>952 ありがとうございました。
試してみます。
954 :
デフォルトの名無しさん :2006/03/24(金) 00:53:38
IEがぶっこわれた。
956 :
デフォルトの名無しさん :2006/03/24(金) 02:03:30
957 :
デフォルトの名無しさん :2006/03/24(金) 04:07:43
>>956 うーん、まあね。脅すつもりでは無いんだけどもね。
ところで、内容は読めたのでしょうか?
958 :
デフォルトの名無しさん :2006/03/24(金) 12:23:35
質問です。 DBから取得したデータをListViewにセットしてるんですが、 セット時にデータを1件1件セットしてる描画が見えます。 データ件数が少なければ問題ないと思うのですが、件数が多いときは 処理速度が遅くなってしまうと思います。 そこでデータをセット時に描画をOFFにして全てのデータをセットし終わったときに 描画をONする(処理速度を上げる)ようなことがしたいのですができるのでしょうか? (SpreadのRedrow=Falseのようなもの)
BeginUpdate
960 :
デフォルトの名無しさん :2006/03/24(金) 13:53:41
シューティングゲームとかで、バキューンって感じに巨大な弾出してくる敵を ススイッ・・・と避けながら、ミサイルをドドドーンって感じに攻撃するようなゲームを 作りたいんですけど、VB.NETで、どうやったら作れますか?
バキューン ススイッ ドドドーンって感じで作ってみよう
やりたいこと: クリックしてもアクティブにならないフォームを作成し、 そのフォームに半透明の十字のマークを表示したい。 その十字マークも、クリックしてもアクティブにはなってはいけない。 目的: FPSゲームで、画面の中央に十字で目印を表示して射撃しやすくしたい。 だから、クリック時にフォームがアクティブになると困る。 現在: フォームそのものがアクティブになるのを避けることは出来るようになってるんですが、 十字マークをクリックしたときにアクティブになるのを避けることが出来ません。 これを、十字マークも当たり判定が無くなるように出来る方法を探しています。 どなかた方法を知っておられましたらご教授ください。 次レスにて現在のコードをコピペします。
966 :
965 :2006/03/25(土) 01:59:41
なお、2003でも2005でもどちらでもかまいません。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'フォームを半透明にする。 Me.Opacity = 0.5 'フォームの境界線をなくす Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None '大きさを適当に変更 Me.Size = New Size(100, 100) Me.Location = New Point(50, 50) '透明を指定する Me.TransparencyKey = Color.White 'フォームの背景色を透明色にする Me.BackColor = Color.White End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim p As Pen 'Penオブジェクトの作成(幅3赤色) p = New Pen(Color.Red, 3) Try '十字に線を引く 'この線の当たり判定を消したい。でも方法が不明! e.Graphics.DrawLine(p, 0, 50, 100, 50) e.Graphics.DrawLine(p, 50, 0, 50, 100) Finally p.Dispose() 'リソースを開放する End Try End Sub End Class
固定で良いのなら直接画面のデバイスコンテキストに書き込んだ方が手っ取り早い気がする。 が、DirectX 使ってるとどうなんだろ?
画面にセロテープを張ってマジックで十字を書いたらあかんのか?
ひでーなw
970 :
デフォルトの名無しさん :2006/03/25(土) 10:11:18
VB.NET express iso を入れたんだが、 モニター左側に赤い線が表示されるようになった。 OS再起動しても直らん。誰か分かる人いますか?
おれもISO入れたけど、起こってないなあ それはフィードバック送信した方よさそう
iso入れるって意味わからんよ。 仮想化される前の生のデータ形式がなんだろうと関係ないだろ。 君はwebからダウロードしたソフトは「xxxxインターネッツ」とかいうわけ?w
ISO形式のをダウンロードしてインストールしたってことだろ。 チマチマいじんな。
>>968 サランラップでやったほうがお手軽&再利用もできるよ。
976 :
デフォルトの名無しさん :2006/03/25(土) 14:35:00
だが断る!
VB.net2005で、別スレッドを作って そこからフォームにあるToolStripStatusLabelを 使おうとしたところ、Invoke関連のメソッドが見当たりません。 無理やり.Textに書き込もうとしたら、 容赦なくInvalidOperationExceptionが発生しました。 Invokeなしで、別スレッドからToolStripStatusLabelに 書き込む方法ってないんでしょうか?
フォームの Invoke でもつかっとけ。 つかそもそも BackgroundWorker 使え。
>>979 ありがとうございます
うまくいきました。
BackgroundWorkerって自作のコードからなら途中で停止できるけど、
FrameWork内の処理が長いと
メインスレッドからAbortさせてThreadAbortExceptionを投げられないので
わざわざ変えたんです。(;´Д`)
Abortはやめた方がいいと思うけどなぁ…
・・・え? 何かあるんですか?(;´Д`)
2005 Expressで質問です。 フォーマットは同一な2つのwaveファイル(8bit/モノラルのリニアPCM)を フォーマットはそのままで、一つのwaveファイルに合成したいのですが、何か良いサンプルは無いでしょうか。 出来れば音質より、お手軽さ重視です。
>983 の感じだと、結合じゃなくてミキシングしたいんじゃねーの?
986 :
983 :2006/03/27(月) 14:51:11
>985 そうです。
987 :
デフォルトの名無しさん :2006/03/28(火) 07:33:09
>>984 音質はいくらでも変化させられる。
たとえば2つの音の合成比を変えても音質は変化するだろう。
>>985 初めから合成と書いてあるだろうに。
とりあえずヘッダーの44バイトを飛ばして、次のバイトから2つのデーターを
足して2で割れば簡単なミキシングとなる。
>>987 合成なんて言葉、幾らでもとりようがあるよな。
あんたの脳内定義だけでしゃべっちゃだめだよ。
989 :
デフォルトの名無しさん :2006/03/28(火) 12:02:00
>>988 「2つのwaveファイルを1つのwaveファイルに合成したい」と
言うことが、ミキシング以外にどんなとりようが有るんだ。
俺はギャップレスに繋ぐのかと思ったがな。
おれは単に直列でつなぐのかと思った。
992 :
デフォルトの名無しさん :2006/03/28(火) 13:46:09
993 :
デフォルトの名無しさん :2006/03/28(火) 13:48:52
>>990 ギャップレスに繋ぐことはミキシングの
一種だな。
987に一票。
983は別に言葉足らずじゃないと思うぞ。
読んで分からないとすれば、そりゃ読み手の問題だろw
>>987 別に平均する必要はないでしょ。
wavファイルは8bitの場合確か符合なしデータだから、2つのファイルのデータを
足したものと0xFFの小さいほうを演算結果にすればいいんじゃないの?
(こういうの何ていうんだっけ?飽和演算だったかな。)
2で割ったら音量小さくなっちゃうでしょ。
√2で割るのなら話はわからないでもないけど。
適当に・・・「論理和を取れば?」
996 :
デフォルトの名無しさん :2006/03/29(水) 08:59:46
飽和させちゃまずいな、8bitのwavなら16bitで計算させて 8bitに変換する。 wavファイルは2の補数で表される、従って計算する場合 最上位ビットを反転させてから計算して、再び最上位 ビットを反転させる。 足して2で割ると書いたのはサインビットを無視した方法で いかにも軽率、すまん。 wavファイルはA/D変換のデーターで、あくまでも電圧、 従ってミキシングは電圧加算になるから、足して2で割る で良いのでは。 √2はパワーの場合ではないのかな。
な、何を言ってるのかね
うーんと電圧レベルだからルート2でわらなきゃいけないんだよ。 実効値の考え方ね。 P = E^2/Rね。
999 :
デフォルトの名無しさん :2006/03/29(水) 12:48:26
だからさ PはPowerの略でしょ。
1000 :
デフォルトの名無しさん :2006/03/29(水) 13:01:20
おまえら馬鹿だろ単純に加算したら波が消えるかもしれないじゃないか 周波数成分に分解して各周波数成分ごとにレベルの和を取り、また合成しなおすんだよ とりあえず、振動論とか信号解析とかいう感じの本を読みやがれ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。