VBプログラマ質問スレ(6.0以前) Part43
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/08/14(日) 02:04:37ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、
VBS、APIの質問もそれぞれのスレで。(>>2 で紹介)
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
○質問者の心得
一.質問する前に過去ログにも目を通してみる。
二.質問する前に MSDN などで調べてみる。
三.VBScript はこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六.VB.NETの話題はできるだけひかえる。
七.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
前スレ Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
0153デフォルトの名無しさん
2005/08/23(火) 20:55:10今、Inetを使用したファイルのアップロードを作っているのですが
'ファイルのアップロード
.Execute , "PUT c:\TEST\test.tif test.tif"
Do While .StillExecuting = True
DoEvents
Loop
.Execute , " SIZE test.tif"
Do While .StillExecuting
DoEvents
Loop
と、処理を流すとファイルサイズが正常に取得できません。
現状としては
・PUT等をせず、SIZEだけを実行した場合は正常に取得。
・PUTに限らずCDでもDIRでも別の.Executeを実行した後は
ファイルサイズが取得できない。
・何回か実行していると取得できる。
ただし、その次からまたしばらく取得できず
そのまま何回か実行していると取得できる(原因不明
やりたい事は、ファイルをアップロードし
アップロードしたファイルのサイズとローカルファイルのサイズを比較して
正常チェックを行いたいのです。
どなたかお力添えの程、よろしくお願いします。
0154デフォルトの名無しさん
2005/08/23(火) 22:17:59>>146-147とかw
ここまでアレだと、もう怒りとか呆れよりもある種の微笑ましさを感じるよ。
ああ職場で窓際にされてストレスたまってるんだろうな、とか思ってw
ところで、>>145は
>exeをひとつのプロジェクトに纏めることは、都合上できません
これは単一の実行ファイルのからビューAとビューBを表示するという訳にはいかない、
という意味だろうけど、それはいったいどんな都合なんだろう。。
その方が気になる。これなら何もOSの仕組みに依存するような高度な操作は必要ないわけで。
というと、「質問者の目的に疑問を挿むな」という例の馬鹿が湧いてくること必定w
こういう馬鹿が、戦争目的を問わずに鬼畜米英の蛮勇に浮かれたり、
尊師の目的を問わずに地下鉄にサリンを撒いたり、大作様の推挙する
候補に投票したりするんだろう。
0155デフォルトの名無しさん
2005/08/23(火) 22:48:12ようこそ無能さん
0156デフォルトの名無しさん
2005/08/23(火) 22:58:000157デフォルトの名無しさん
2005/08/24(水) 07:51:00ツリービューについてふたつほど教えて欲しいことがあるのですが、
(1) 縦スクロールバーのみ表示させる
(2) 横方向に表示しきれなかったアイテムをツールチップで表示しないようにする
について、コンテナ化や別コントロールでの代用ではなく、
ツリービュー単体で出来る方法をご存じの方、教えてください。
0158デフォルトの名無しさん
2005/08/24(水) 09:11:52ボタンの内側に破線の枠が表示されますが、これを表示しないようにするにはどうすれば良いのですか?
Tabキーでのコントロール移動には不可欠ですがTabStopはFalseにしてるし、
小さいボタンでコレが表示されると見栄えが悪いので。
0159デフォルトの名無しさん
2005/08/24(水) 11:52:29コマンドクリックのイベント内で
Command1.Enabled = False
Command1.Enabled = True
を記述してはいかがでしょうか?
ただ、クリックしている最中は破線枠は表示されます。
別にいい方法があるかも。
0160158
2005/08/24(水) 12:03:52回答ありがとうございます。
しかし、ボタン1をクリックすると破線枠がボタン2に、ボタン2をクリックすると破線枠がボタン1に移動するだけでした。
逆にボタンがひとつの時は意味無しです。Falseで一端枠は消えますがTrueの瞬間に枠が戻ってくるので。
引き続き回答をお待ちしています。
0161デフォルトの名無しさん
2005/08/24(水) 12:07:180162158
2005/08/24(水) 12:22:18回答ありがとうございます。
その方法をヒントに、クリックイベントで下層のボタンにSetFocusすれば、
一応クリック後の枠は残らないようになりました。
アクティブなボタンに破線枠を表示しないようにすることは出来ないのかな?
0163デフォルトの名無しさん
2005/08/24(水) 13:36:46「アクティブなボタンには破線枠を表示する」というのが
Windowsでのルールなので、標準のコントロールでは強制的に
そうなるように作ってあるのです。
ついでに「クリックしたらアクティブになる」というのも
ルールなので。
>>158はToolbarのボタンみたいな、マウスでしか触れないボタンが
ほしいということ?TabStop=FalseだけどTabキーは利かせたい(クリック→Tabで次のボタンに行きたい)のか?
Toolbar風ボタンなら、DelphiにはSpeedButtonてのがあるけど、VBにはないね。
俺は昔、UserControlとDrawFrameControlでシコシコ自作したことがある。
0164デフォルトの名無しさん
2005/08/24(水) 15:22:29うーん、そうでしょ。だから「だめだな」って逃げておいたんだがw
Common Control の5は、ComCtl32.DLLって共通のDLLのAPIを
コールしてるから、>>137で悩んだような変なバグは出ないし
XPの視覚スタイルにも対応させられる。
6はというと、全部独自で処理しているらしいので、ComCtl32の
バージョン違い地獄に引っかからない反面、今回のような
悲しい事態もあるという諸刃の剣。
5でのグリッド表示だけど、>>152の書き方がちょっと変。
Dim ExStyle As Long
ExStyle = SendMessage(ListView1.hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, ByVal 0) 'スタイル取得
ExStyle = ExStyle Or LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT 'スタイル追加
Debug.Print SendMessage(ListView1.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ByVal ExStyle) 'スタイル更新
こんな風にかいてみ。1行選択も。うちではできたよ。
0165137
2005/08/24(水) 19:53:56>こんな風にかいてみ。1行選択も。うちではできたよ。
できました!おかげさまで希望通りの動作になりました
ありがとうございます
躓いてた原因は、スタイル取得のときの wParam、lParamの値で
どちらも LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT を指定していたので
結局ゼロが帰ってきておかしなことになってたみたいです
イメージリストもVer5でないと連動して使えないようだったので、
この際、ランタイム減らす意味も込めてTreeViewなども含めてすべてVer5にしました
大量のデータ表示が、僅かですけど軽くなったような気がします
何度も助けていただき、本当にありがとうございました
0166デフォルトの名無しさん
2005/08/24(水) 23:46:27探したのですが、見つからないです・・Orz
0167デフォルトの名無しさん
2005/08/24(水) 23:56:55CDに入ってますよ。
0168デフォルトの名無しさん
2005/08/25(木) 00:07:11でも印刷に関する物が見当たらなかったですO..... rz
0169デフォルトの名無しさん
2005/08/25(木) 12:34:24MSDN ライブラリ Visual Studio 6.0
+Visual Basic ドキュメント
+Visual Basic の使用方法
+プログラミング ガイド
+Visual Basic を使ってできること
+テキストおよびグラフィックの操作
+印刷
これのことかね?
0170デフォルトの名無しさん
2005/08/25(木) 14:32:49そりゃ無理でしょ。熟語になったら単漢字としての読み方を
しない言葉はたくさんあるし。
たとえば「十八番」を「おはこ」と読ませているときは
どうするかとか、「やし」なんて漢字で書いたら「香具師」
なのに1文字ずつどう対応させるんだ、とか。
つまり「香具師の十八番は百舌鳥の真似」なんてのになると、
(こんな例は極端ですが)熟語、単文節以上には分解
できないわけです。
原理的に無理なので、仕組み自体が搭載されていないと思われ。
0171デフォルトの名無しさん
2005/08/25(木) 17:28:31UNIXで使えるソースコード(C++など)に
変換するようなツールは売られてるでしょうか?
0172デフォルトの名無しさん
2005/08/25(木) 17:53:41中途半端でいいならREALBasicというものがある
VBのソースをWindowsでもMACでもLinuxでも動かせる優れものだぞう
使い物にはならないが。
0174153
2005/08/25(木) 19:03:53いた汚し失礼><
0175デフォルトの名無しさん
2005/08/26(金) 00:37:16どうしたらいいですか?
0176デフォルトの名無しさん
2005/08/26(金) 01:08:071.Googleで代替のツールを探してくる
2.ヨドバシカメラでVisual Studioを眺めていると紳士が現れて買ってくれる
3.どうにもならない。現実は非常である
0177デフォルトの名無しさん
2005/08/26(金) 02:48:25VC買えばいいじゃん。
0178デフォルトの名無しさん
2005/08/26(金) 05:49:29フリーのSPYツール使えばいいじゃん。
0179デフォルトの名無しさん
2005/08/26(金) 09:19:59関数のサンプルはありませんか?
0180デフォルトの名無しさん
2005/08/26(金) 09:54:21宿題は7月中に終わらせておけよ。
それに宿題は宿題スレへ。
0181デフォルトの名無しさん
2005/08/26(金) 15:28:02色がグレーになるのだが、
他の色にした場合どうすればいい?
0182デフォルトの名無しさん
2005/08/26(金) 15:28:45trueじゃなくてfalseだ・・・
間違えた
0183デフォルトの名無しさん
2005/08/26(金) 15:44:59フレームにテキストボックス置いてフレームのEnabled=False
0184デフォルトの名無しさん
2005/08/26(金) 16:40:29ってことを言いたいんじゃないんだよな。言ってみただけだよ。
0185デフォルトの名無しさん
2005/08/26(金) 18:10:350186デフォルトの名無しさん
2005/08/26(金) 18:17:38宿題スレってどこ?
0187179
2005/08/26(金) 18:24:16わかる人がいないとは
0188デフォルトの名無しさん
2005/08/26(金) 18:51:04仕方ないなぁ。今回だけだよ?
Public Function GetAnswer() As Long
GetAnswer = 1 + 2 * 3
End Function
0189デフォルトの名無しさん
2005/08/26(金) 19:47:50厨房が練習で作るレベルの内容だろ。
サンプルなんて必要になるレベルじゃない。
0191デフォルトの名無しさん
2005/08/26(金) 20:00:00自分でやれ。これはお前のためだ。
0192デフォルトの名無しさん
2005/08/26(金) 20:00:030193179
2005/08/26(金) 20:02:280194デフォルトの名無しさん
2005/08/26(金) 20:09:26別に必要ではない
0195179
2005/08/26(金) 20:13:02http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-022.html
0196GetAnswer("1+2*3")
2005/08/26(金) 20:20:00Dim Ope As Variant, foo() As String, bThr As Boolean, bar As Long
Dim i As Long, j As Long
For Each Ope In Array("+", "-", "*", "/")
strQuestion = Replace(strQuestion, Ope, " " & Ope & " ")
Next Ope
foo = Split(strQuestion)
For i = 1 To UBound(foo)
If bThr Then
bThr = False
ElseIf foo(i) = "*" Then
foo(j) = foo(j) * foo(i + 1): bThr = True
ElseIf foo(i) = "/" Then
foo(j) = foo(j) / foo(i + 1): bThr = True
Else
j = j + 1: foo(j) = foo(i)
End If
Next i
bar = foo(0)
For i = 1 To j
Select Case foo(i)
Case "+": bar = bar + foo(i + 1)
Case "-": bar = bar - foo(i + 1)
End Select
Next i
GetAnswer = bar
End Function
この夏からVB始めたリアル厨房ですが、練習がてら文字列操作のみで算出してみました
勉強になるので批判も歓迎、やっぱ数値ではなく数字を演算する時って
Clngとかで数値に直してから演算した方がいいんですかね?
+以外は数字同士でも勝手に数値として演算してくれるみたいなんですが
0197デフォルトの名無しさん
2005/08/26(金) 20:33:50Set sc = CreateObject("ScriptControl")
sc.Language = "VBScript"
MsgBox sc.Eval("1 + 2 * 3")
0198デフォルトの名無しさん
2005/08/26(金) 22:25:18ピクチャーボックス上にテキストボックス・リッチテキストボックスを置いて、
文字だけを表示する方法が分かりません。
前スレでは、「ある」とだけお答えいただいたので、色々試したのですが
上手くいきません(ToT
どのような方法があるのでしょうか?
0199デフォルトの名無しさん
2005/08/26(金) 22:49:33pictureboxに直接じゃだめなの?
0200デフォルトの名無しさん
2005/08/26(金) 23:07:09それかラベルコントロール
0201デフォルトの名無しさん
2005/08/27(土) 00:17:13返事、ありがとうございます。
WORDのシェィプのテキストボックスみたいなかんじで
ある程度、簡単な編集をさせたいと思っていたので、
TextBoxやRichTextBoxを考えていたのですが、ラベルも検討してみます。
0202デフォルトの名無しさん
2005/08/27(土) 23:31:34>Clngとかで数値に直してから演算した方がいいんですかね?
適切な型に変換して演算するほうがお行儀は良いと思う。
ざっくり見ただけだが、考え方はあってると思う。
でも、"(1+2)*3"とか対応していないよね?
あとスペースで置き換えてるみたいだけど、
初めからスペースが混じってたらどうなる?
たぶん、実行時エラーかなんか出るようなきがする。
実は大丈夫なのかな。そうだったらごめん。
0203デフォルトの名無しさん
2005/08/28(日) 14:48:41(´-`).。oO( 179の何処にスペースがあるんだろう… )
0204デフォルトの名無しさん
2005/08/28(日) 16:45:48アホ?
0205デフォルトの名無しさん
2005/08/28(日) 18:12:56機能不足な箇所や実装は自分でなんとかするでしょ。
0206デフォルトの名無しさん
2005/08/28(日) 18:40:50死ねば?って普通に思った。
0207デフォルトの名無しさん
2005/08/28(日) 21:11:17目標が不透明なまま周りがあーだこーだ騒いでも、あんたら何話してるの?ってなるだけだと思ったんだが。
0208デフォルトの名無しさん
2005/08/28(日) 21:39:48別にいいなら死ねば?
0209デフォルトの名無しさん
2005/08/28(日) 21:40:39それをネタにして話が広がって何の問題もないと思います
けど。
0210デフォルトの名無しさん
2005/08/29(月) 01:50:29frameごと別の場所にコピペしたらコントロール配列の並び方がバラバラ・・・
せっかく配列が1234...って綺麗に上から並んでいたのにコピペしたら下からコントロール配列ができちゃうよ
手で直せばいいんだけど、めんどくさい('A`)
何とかならないんでしょうか?
0211デフォルトの名無しさん
2005/08/29(月) 02:05:22VB6のデフォルトの機能じゃどうしようもないでしょ
0212デフォルトの名無しさん
2005/08/29(月) 07:49:500213デフォルトの名無しさん
2005/08/29(月) 11:46:32ありがと
どうしようもないのね・・・(´・ω・`)ショボーン
メモ帳見てみたけどこれもめんどくさそうだヽ(`Д´)ノウワァァァン
0214デフォルトの名無しさん
2005/08/29(月) 14:44:240215デフォルトの名無しさん
2005/08/29(月) 14:54:59質問は日本語で
0216デフォルトの名無しさん
2005/08/29(月) 14:57:040217デフォルトの名無しさん
2005/08/29(月) 15:08:17ってことかな?
0219デフォルトの名無しさん
2005/08/29(月) 15:14:050220デフォルトの名無しさん
2005/08/29(月) 15:25:330221デフォルトの名無しさん
2005/08/29(月) 16:20:40それぞれに対する各イベント(GotFocusやChange、KeyDown等)の処理の
記述内容がほぼ重複する場合は、テキストボックスを配列化するのが一般的なんでしょうか?
(例え、各テキストボックスに入力されるテキストの種類がコード・名前など様々だとしても)
コーディングルールみたいな、暗黙の規定みたいなものってあります?
0222デフォルトの名無しさん
2005/08/29(月) 16:27:11.netならテキストボックスを継承してコンポーネントが
カンタンに作れるんだけどねー
0223デフォルトの名無しさん
2005/08/29(月) 17:04:26配列化しないならこんなのは?
・クラスモジュールを1個用意する。
・Private WithEvents でTextBox型変数を作る。
・その変数へアクセスするプロパティ プロシージャを作る。
・このクラスでイベントを拾えるようになるから、イベントプロシージャに何か書く。
たとえばGotFocus()にSelLengthを使った全選択処理を書く。
・Form_Loadでこのクラスのインスタンスをテキストボックスの数だけ作って、それぞれテキストボックスを割り当てる。
・割り当てられたテキストボックスは、何も書かなくても全選択になる。
・何か追加の情報が必要なら、クラスのプロパティを増やす。
0224221
2005/08/29(月) 17:28:04精進します・・・
0225デフォルトの名無しさん
2005/08/30(火) 07:54:55ttp://www.gj.il24.net/~nakasima/vb/tech/excontrol/index.htm
0226221
2005/08/30(火) 14:59:07ありがとうです
なんとかクラス作って動かすことができました
なんか全然理解度足りないけど、後学のためにもっと使ってみようと思います
0227デフォルトの名無しさん
2005/08/30(火) 22:10:51VBで作ったプログラムのなかの変数の値を
ブラウザのフォームに送りたいのですが、
どのようにしたら可能なのでしょうか?
例としては、VBで作ったソフトにテキストを入力すると、
2chの書き込みフォームの中にそのテキストが入力されるとか、
検索ワードをいれてプログラムを実行したら、
googleの検索ワードを入力するフォームに、
その言葉が入力された状態になるというように、
VBアプリからブラウザに値を渡したいのです。
0228デフォルトの名無しさん
2005/08/31(水) 00:28:20現在、INETコントロールを使用してFTPによりサーバーからファイル
を取得するプログラムを作成しています。
当初開発していたPCで正常にファイルが取得できるのを確認後、実運用する他の
PCにて動作確認をとったところ、Executeメソッドの実行時にResponseCode=12
163(ネットワークから切断されています。)といったエラーが発生していまし
た。
いろいろと試行したところ、さっきまでエクスプローのアドレスバーに"ftp:/
/xxx.xxx.xxx.xxx/"と入力すると、サーバーの
フォルダの内容が見えていたのが、見えないのに気がつき、入力内容を消した
後に再度"ftp://xxx.xxx.xxx.xxx/"と入力したところフォルダの内容が見える
ようになりました。
この状態でプログラムをランさせると、今度はエラーは発生せずにに正常動作
しました。
VBというよりネットワークにつての質問になるかもしれませんが、この現象について
説明できる方いらっしゃいましたら教えて下さい。よろしくお願いします。
開発環境はWinXP(SP2)+VB6(SP5)です。
0229227
2005/08/31(水) 00:56:530230デフォルトの名無しさん
2005/08/31(水) 02:03:21自己解決したっていう報告だけじゃなくて、
どういう方法で解決したのか、情報提供もすると喜ばれるよ。
0231デフォルトの名無しさん
2005/08/31(水) 07:11:26別に喜ばせたくもないです。
0232デフォルトの名無しさん
2005/08/31(水) 08:53:49テキストボックス4つ
その他コントロールいくつか
こんなフォームがあります
テキストボックスは、4つでひとつのコードとして扱います
(01020304というコードを、[01][02][03][04]というように入力する、部分空白もあり得る)
コードを入力して、他のコントロールにフォーカスが移ったらコードチェックをします
しかし、4つのテキストボックスのLostFocusイベントでそれをやると、
テキストボックスからテキストボックスにフォーカスが移ったときにも、
いちいちコードチェックが動いてしまいます
あくまで、4つのテキストボックスを入力し終わった時点で、コードチェックをしたいんです
他のコントロールのGotFocusで、あるいは上で教えていただいたClassで、という以外に、
何か良い方法はないものでしょうか
0233デフォルトの名無しさん
2005/08/31(水) 08:56:000234デフォルトの名無しさん
2005/08/31(水) 09:05:31普通にやればいいんでないかい?
0235デフォルトの名無しさん
2005/08/31(水) 09:13:14気のせいか同じ質問が・・マルチポスト
一応はっときますね
ttp://www7.big.or.jp/~pinball/discus/vb/59468.html
0236232
2005/08/31(水) 09:17:270237デフォルトの名無しさん
2005/08/31(水) 09:38:24ユーザーコントロール作ってExitFocusとかValidateとか
0239デフォルトの名無しさん
2005/08/31(水) 11:30:55(例)AAA111とかを数値に
0240デフォルトの名無しさん
2005/08/31(水) 11:35:59その文字をどういう数値にしたいの?
16進数の「AAA111」を10進数に直せばいいの?
それとも「111」だけを取り出したいの?
後者の場合でAAA111BBB222のときは
「111」「222」「111222」のどれを返せばいいの?
数字を含む文字列から数値を返すのはわけないが
条件はきちんと指定してくれないと何も教えられない。
0241デフォルトの名無しさん
2005/08/31(水) 12:05:03それなら素直にCollectionを使えと。
0242デフォルトの名無しさん
2005/08/31(水) 14:46:42存在しないフィールドを指定したかどうかチェックする方法は無いでしょうか。
0243デフォルトの名無しさん
2005/08/31(水) 15:03:24For i = 0 to rs.fields.count - 1
exl.worksheets(1).cells(k, i + 1).value = rs(i).name
Next
0244デフォルトの名無しさん
2005/08/31(水) 19:58:29Oracleのエラーコード拾ってくるのは?
0245デフォルトの名無しさん
2005/08/31(水) 22:04:35マルチポストが迷惑な理由と全く同じ理由でお前の書き込みも迷惑。
まぁ俺のもそうだが。
0246デフォルトの名無しさん
2005/09/01(木) 01:45:04Aを代入した結果を求めたいのですが、読み込んだ計算式を簡単に
解析する方法とかないでしょうか?
0247デフォルトの名無しさん
2005/09/01(木) 01:51:38これ、どっかの中学校の宿題?
いい加減飽きたよ。
0248??
2005/09/01(木) 02:32:10で、どうやったの?
聞きたい
俺も、その手のアプリを作りたいと思っています。
0249デフォルトの名無しさん
2005/09/01(木) 04:05:10これくらい自分で作れないならおとなしくフリーの使ってろ
0250248
2005/09/01(木) 09:30:54簡単でも、やり方分からないから聞いてんだよ
0251デフォルトの名無しさん
2005/09/01(木) 09:40:52がんばれ
0252デフォルトの名無しさん
2005/09/01(木) 10:29:44おちつけ、つられるなw
とりあえずヒントを出そう
http://www.ken3.org/vba/backno/vba156.html
これで起動中のIEが取れるよ
あとはウォッチで眺めてみれば分かるっしょ
それと下の2つを参照設定に入れとくと、結構幸せになれる気がするな
Microsoft Internet Controls
Microsoft HTML Object Library
ただ、この方法には制限があって、フレームを使ったページで
フレーム内のドメインがトップフレームと違う場合は、
フレーム内のドキュメントには一切アクセスできないよ
Google検索だけなら、単純にURL変数でいいと思うけどね
■ このスレッドは過去ログ倉庫に格納されています