くだすれVB6.0以前(超初心者向け)at TECH
くだすれVB6.0以前(超初心者向け) - 暇つぶし2ch2:デフォルトの名無しさん
06/12/08 19:53:51
2げと☆

3:デフォルトの名無しさん
06/12/08 19:56:47


 ここは重複スレです
 スレリンク(tech板)
 ↑のスレに移動して下さい



4:デフォルトの名無しさん
06/12/08 21:18:09
>>スレリンク(tech板:548番)

ElseIf以降の内容が

 ログ左右桁揃え = " " & b

と全部同じなんだけど、誤記?それとも、仕様?

>>スレリンク(tech板:546番)

Dim Fso As Object
Dim FsoTS As Object

  Set Fso = CreateObject("Scripting.FileSystemObject")
  Set FsoTS = Fso.CreateTextFile(App.Path & "\" & Text1.Text, True)
  FsoTS.Close
  Set FsoTS = Nothing
  Set Fso = Nothing

5:デフォルトの名無しさん
06/12/11 13:06:38
Shell.Windows()でIEを一覧できるように、Excel.Applicationを一覧できません?
GetObject()だと最初のものしか取れない。

6:デフォルトの名無しさん
06/12/11 14:55:02
>>5

最初のオブジェクトを取得後、やりたい事を終えて終了させた
後にもう一度GetObjectやるとかしかおもいつかないなぁ。

それじゃぁだめなの?

7:酔いちくれ ◆J0rwikii8c
06/12/11 23:42:40
>5
複数起動の場合は、難しいね。

普通にはできないと思う。

8:デフォルトの名無しさん
06/12/12 00:48:27
なんつーか、あれだな、馬鹿なふりをしているつもりの本物の馬鹿、
キチガイのふりをしているつもりの本物のキチガイが必ず自分を隔離するような
スレを自分で立てるのは法則か何かだろうか?w

そして程なく、スレが思っているほど繁盛しないことに気づいて放棄することになるんだなw

9:デフォルトの名無しさん
06/12/12 01:17:05
こういう無価値な書き込みをするのは法則か何かだろうか?

10:5
06/12/12 02:42:47
KB190985を見つけましたが、ちんぷんかんぷんです。
見よう見まねで、出来るかも、と、やってみましたが、
手順
1.OffCntrDisp という名前で新しい MFC ActiveX ControlWizard アプリケーションを作成します。
2.以下のメンバ変数を COleControl 派生クラスに追加します。
のステップ2で早、躓きました。追加先のCOleControl 派生クラスはどこ?

これをVBに焼き直したり、もっと簡単にできません?


11:酔いちくれ ◆J0rwikii8c
06/12/12 09:46:45
>>5
MFCというか、C++じゃん。

OffCntrDispCtl.hというヘッダファイルに

class COffCntrDispCtrl : public COleControl

として宣言してあるけど、COMのような実装をVBでやるのは絶対無理。

VBとエクセルで何がしたいのか、教えてくれたほうが解決案が模索できそう。

>>8
オレはお前の事嫌いじゃないぜ?

12:デフォルトの名無しさん
06/12/12 23:17:22
つ WM_GETOBJECT

13:5
06/12/14 09:40:40
>>11
なんとかコンパイルできました。ありがと。
やりたいことは、最初に言ったように、
|Shell.Windows()でIEを一覧できるように、Excel.Applicationを一覧できません?
なんです。

>>12
調べてみましたが、関係がよく分りません。


14:デフォルトの名無しさん
06/12/21 20:35:06
ADODB.Recordset型しか返していないのに
クライアントで予期せぬエラー (0x8003001e)
が発生してしまいます。どのような原因が考えられますでしょうか?

URLリンク(support.microsoft.com)


15:酔いちくれ ◆J0rwikii8c
06/12/21 20:44:14
うぅ。もう酔うたよぅ。

oracleならブロブ型のデータとかじゃまいか?

16:14
06/12/22 08:53:01
URLリンク(support.microsoft.com)
ここのサンプルのまねをしたらOKでした。

あとADOで例外エラー時にrollbackしたいのですが
トランザクションが開始されているかどうかの
ステータスはどこを見ればよいでしょうか?

17:酔いちくれ ◆J0rwikii8c
06/12/22 10:02:44
>>16
新しいADOならあるかもしれないけど、しらない。

MSのサンプル資料なんかでもよく見かけるけど、単純にトランザクションを
はるタイミングで変数にフラグをセットしてる。

自分でDBクラスつくって、IsTransとか内部にプロパティを作ってはどうか。
Begin時にTrueでCommit、Rollback時にFalseで。

18:14
06/12/23 08:50:56
>>17
とりあえずロールバックしておくことにします。
ありがとうございました。

19:デフォルトの名無しさん
06/12/24 12:09:26
VB6.0で開発をしているんですが、コンパイルというのは
【メニューバー】 → 【デバック】 → 【コンパイル】という順でOK
なのですか?何か一瞬なので本当にコンパイルされたかどうか分からないので。
コンパイルをすると、***.vbr?とかいうファイルは更新されるのですが、
***.exeは更新時間が変わりません。exeも更新するにはどうしたら良いのでしょうか?

20:デフォルトの名無しさん
06/12/24 14:43:11
>>19
【メニューバー】→【ファイル】→【~.exeの作成】

VBはVCみたいに警告とかないし、リンクもないし、すぐにコンパイル終わる。

21:デフォルトの名無しさん
06/12/24 15:41:15
>>20
リンクはある

みたいな。
薀蓄垂れるんなら知ってからにしような。

22:20
06/12/24 16:56:12
>>21
あ、そうなの。

それって、参照設定のことをいってる?

VBにヘッダファイルないし、includeないし、
コンパイル時にリンクの更新なんてやってるの?

23:デフォルトの名無しさん
06/12/24 17:06:07
>>22
一旦オブジェクトファイル作ってリンクしてるんですよ

24:20
06/12/24 17:33:03
>>23
無知でスマソ。


オブジェクトファイルはわかる。
exeを作る際に、ソースを実行体にまとめてるんだろうけど
ちょっと誤解してた。

VBでつくったexeだけじゃランタイムないと実行できないから、
Cとコンパイル時のリンクのレベルが違うだけで、VBだってリンクするね。

ランタイムありきでリンクしてるから、コンパイルが速いという事でFA?

25:デフォルトの名無しさん
06/12/24 17:48:03
>>24
Cのコンパイルを基準にするのなら
ソースコード解析するのにやたら手間取るのがCで、VBは構文が単純だから手間取らない
程度だと思う

VB6の構文って曖昧さが無いんだよね

26:debu
06/12/26 11:34:45
VB6のプロフェッショナルエディションなんですが、string型の変数に
sql文を代入していく処理で、250文字以上が格納できません。
試しに
Dim s As String
s = "1234567890~"
上記のように、string型の変数 s に300文字を入れてみたのですが、
ウオッチ式でみるとやはり250文字しか入っていません。
これはどうしたことでしょう??? どなたか教えてください!


27:デフォルトの名無しさん
06/12/26 11:46:25
>>26
ウォッチ式に表示できないだけで、ちゃんと格納されてる。

イミディエイトに

?s

と打てば、ある程度はわかるがそこも表示制限があるから
一番いいのは、ログみたいにテキストに出力すれば、本当に
格納されているデータがわかる。

28:debu
06/12/26 12:22:53
ありがとうございました!
大変助かりました。

29:デフォルトの名無しさん
06/12/27 16:44:57
下の変数宣言でエラー出るのですが何処がいけないのでしょうか。
Dim cnt As Integer;

30:デフォルトの名無しさん
06/12/27 16:47:48
>>29
VBは改行符いらない。
セミコロン「;」がじゃま。

どうしても改行符いれたいときは
コロン「:」にする。

31:デフォルトの名無しさん
06/12/27 16:50:15
…行終端文字?
Cは";"で、BASIC系は昔ッからchr$(13)またはchr$(11)+chr$(13)だです

32:デフォルトの名無しさん
06/12/27 22:56:32
>>30
セミコロンでしたか。ありがとうございます。

33:14
06/12/28 20:28:58
ツリービューでノードを移動するときにドロップ位置に
横バーを出すにはどうしたらよいでしょうか?

34:デフォルトの名無しさん
06/12/29 10:37:43
>>33
ツリービューでノードのドラッグ&ドロップをしている事までは
読み取れた。

その後の横バーが何かわからん。

参考までにDragOverイベントがドラッグ中に発生してるからそこで
なにかしらの処理ができるんじゃないの?

35:14
06/12/29 10:53:34
>>34
これからどこにドロップするよーという目印になるバーです。


36:デフォルトの名無しさん
06/12/29 11:34:21
>>35
オレ、エスパーかもしれん。わかった。

ノードの順番を入れ替えようとした場合にどこに割り込ませるか
ノードの下にバーを表示したいんだな。

簡単に済ませるなら、DragOverイベントで
Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
として、選択状態にでもさせる。

もしくはあらかじめ画面にイメージコントロールを
用意しておいて、同イベントでノードの下にでも表示させる。


もっと本格的にやりたいなら、それこそツリービューをサブクラス化して
メッセージ:CDDS_ITEMPOSTPAINTのときにカスタム描画する。

37:14
06/12/29 11:51:16
>>36
ありがとー

なるほど。これってコントロールの機能じゃないのですね?
自分でやらないといけないのですね

38:酔い 【大吉】 ちくれ 【1229円】 ◆J0rwikii8c
07/01/01 10:32:32

あけおめ。


39:デフォルトの名無しさん
07/01/16 05:35:50
違うフォームのサブルーチンを呼ぶにはどうしたらよいのでしょうか?


40:デフォルトの名無しさん
07/01/16 08:43:59
>>39
コーディングしなきゃいけない
コードを既に書いてるならうp
うpできないなら再現可能なコードにしてうp

41:デフォルトの名無しさん
07/01/18 13:30:42
URLリンク(c-docomo.2ch.net)

42:デフォルトの名無しさん
07/01/28 10:24:18
VBプログラマ質問スレ(6.0以前) Part50
スレリンク(tech板)

↑の次スレってここ?

43:デフォルトの名無しさん
07/01/28 11:01:26
VBプログラマ質問スレ(6.0以前) Part51
スレリンク(tech板)

44:42
07/01/30 13:25:52
>>43


45:デフォルトの名無しさん
07/03/05 01:02:19
こんばんは。

Newで作成した配列などは、破棄するにはどうすればよいのでしょうか?
いわゆる、ググッてみたんですが、なかなかわかりません。

よろしくお願いします。


46:デフォルトの名無しさん
07/03/05 07:51:34
>>45
vb6はnewで配列を作れません
環境をお確かめの上、正しいスレにご投稿くださいますよう申し上げます

47:デフォルトの名無しさん
07/03/05 08:00:20
>>46
お前のスキルでのたまってるんじゃねぇよ。

48:デフォルトの名無しさん
07/03/05 09:21:22
>>46
知りませんでした。

MediaDetを利用するサンプルを見ていたら、
Dim Det As New MediaDet
とあったので、使った後に破棄するのはどうするのか?と思い書き込みました。

49:デフォルトの名無しさん
07/03/05 09:30:03
>>48
vb6では参照カウンタ方式によるGCが働いているので、明示的に破棄する必要はありません(できません)
仮にそのMediaDetオブジェクトが(オブジェクト自身ではない)何かしらのデータの破棄を要求しているのなら、
専用のメソッドが存在するはずです。

50:デフォルトの名無しさん
07/03/05 09:58:12
>>49
そうですか。

Function内で使用したいと思っていたので、何度もNewで定義していったときに
どんどんメモリを食っていくのでは?と思っていました。

ありがとうございました。


51:デフォルトの名無しさん
07/03/05 10:46:46
>明示的に破棄する必要はありません(できません)

先生、いかにVBでも明示的に破棄できないと困ります><

52:デフォルトの名無しさん
07/03/05 10:48:36
>>51
VBの内部はCOMによって実装されている部分が大半だから、CoCreateInstance()付近からAPI探していけ

53:デフォルトの名無しさん
07/03/05 10:51:15
ん、IUnknown::Release()呼ぶだけでいいのか?
COMわかんね('A`

54:デフォルトの名無しさん
07/03/05 12:11:38
VB6.0において、質問があります。
あるバイナリファイルがあり、その先頭4バイトには数値が入っています。
この4バイトをプログラムから上書きしたいと考えています。
そこで以下のようなコードを書きました。

Open ".\hoge.bin" For Binary As #1
Write #1, value
Close #1

これを実行しますと、Writeのところでエラーが出てしまいます。
おそらく、初歩的な間違いのような予感がするのですが、
どのようにすれば良いがご存知であれば教えて頂けないでしょうか。
よろしくお願いします。

55:デフォルトの名無しさん
07/03/05 12:13:33
>>54
> 上書きしたいと考えています。
何を?
何でもいいなら

open ".\hoge.bin" for binary as 1
put #1, 1, clng(rnd)
close 1

でおk

56:54
07/03/05 13:06:24
>>55
神速の回答ありがとうございます。
できました!

57:デフォルトの名無しさん
07/03/05 13:30:30
>>51
VBの参照カウンタ型GCは、.NETのGCみたく参照が無くなっていつか消えるとかいうもの違って、
参照が消えた瞬間に消される。もちろん他に参照がコピーされていない前提であるが、例えば
Sub hoge
dim xx as OBJ
Set xx = New Obj
 :
End Sub でスパッと消える
さらに、途中でNothingや他の参照をぶち込んでもその時点でスパッと消える

58:デフォルトの名無しさん
07/03/05 13:35:46
ReleaseとかCloseあるならやって
そのあとNothingぶちこんだらカウンタが消えていくと思ってたが・・・
実際の所どうなんだ・・・?
>>57でFA?

59:デフォルトの名無しさん
07/03/05 13:37:43
>>58
FA
プロセス越しの場合もFA

60:デフォルトの名無しさん
07/03/05 14:15:10
>>57
ありがとうございます
つまり、参照先のアドレスが変わるタイミングで消えるという事ですね
NOTHINGを指定する事とはVB的なぬるぽですね

つまり明示的に破棄できませんといった人はウソつきですか?
わかりません><

61:デフォルトの名無しさん
07/03/05 14:32:30
>>60
日本語でおk

62:デフォルトの名無しさん
07/03/05 17:11:24
>>60
コレは酷いw

63:デフォルトの名無しさん
07/03/05 17:18:08
>>62
62さん、すみません
どのあたりが酷いのでしょうか

よければ、私にもわかるように教えてください><


64:デフォルトの名無しさん
07/03/05 17:30:59
>>63
参照先のアドレスが変わるタイミングで消えるという事
何故この解釈になった?

65:デフォルトの名無しさん
07/03/05 17:32:24
>>63
自分で確かめろカス

66:デフォルトの名無しさん
07/03/05 17:39:35
>>64
ありがとうございます

>途中でNothingや他の参照をぶち込んでもその時点でスパッと消える
と書いてありました

参照型の変数には「物」がはいっているはけではなくて、メモリにある「物」をさす
アドレスが入っていると思います。

他の参照をぶち込むというのは、参照先を変えるという事では
ないのでしょうか。

>64-65さん、教えてください><



67:デフォルトの名無しさん
07/03/05 17:42:17
>>66
いいから自分の書いた文章読み直して出直して来いカス

68:デフォルトの名無しさん
07/03/05 17:58:55
>>67
>>67

69:デフォルトの名無しさん
07/03/05 18:06:10
>>66
そうですね^^

70:デフォルトの名無しさん
07/03/05 18:43:15
>>54の者ですが、また1つ質問をさせてください。

MouseDownイベントについてなのですが、
フォーム上に存在するコンポーネントを無視して、フォームのどこを
クリックしてもMouseDownイベントを拾いたいと思っています。

Form_MouseDownイベントは、フォームのMouseDownイベントは拾えます
が、ボタンやラベルの上でクリックすると、フォームのMouseDownイベ
ントを拾うことができません。

どなたかご存知でしょうか?
ご存知であれば教えて頂きたいと思います。
よろしくお願いします。

71:デフォルトの名無しさん
07/03/05 19:07:58
>>70
全てのコントロールのMouseDownイベントを拾ってゴリ押しすれば何とかなるんじゃない?
もしくはサブクラス化
それかフック

Spy++でも使ってみるよろし

72:70
07/03/05 19:14:27
>>71
やっぱりその手しかないですか…。

ウィンドウのほとんどをAPIコントロールが占めており、そのAPIコントロールの
ハンドルがDLLに渡されていてDLL側で制御されているため、イベントを付けられ
ないんですよね…。

もうちょっと調べてみます。
ありがとうございます!

73:デフォルトの名無しさん
07/03/06 13:12:29
>>72
試してないのでなんともいえないけど
VBControlExtender
を使えばいけそうな気もするが・・・

74:デフォルトの名無しさん
07/03/06 14:13:44
はじめまして
VB超初心者です。プログラムの経験はCOBOLで17年ほどあります。
会社にNT4.0 VB6SP3で作られたシステムがあります
普通はフォームもモジュールも同一フォルダーに作成するみたいなんですが、
このシステムはフォームと標準モジュール(クラスも)別フォルダーになっています。
それで、仕様書等が無いために、ソースから追っかけてみていますが、VB自体
よくわかっていないので、悩んでいます。
メニュー画面はランチャーのような階層状のメニュープログラムがあります
そこでは、FORM_LOAD()は走っていますが、メニューの中の別プログラムに
移った場合、呼ばれるプログラムにはFORM_LOAD()自体ありません。
このようなプログラムの解析をする場合呼ばれたプログラムの動きを追っかけて
行きたいのですが、どうすればよいのでしょうか?
ちなみに、ファンクションキーのイベントなんかは書かれているようです。
どなたかご教授下さい

75:デフォルトの名無しさん
07/03/06 14:39:54
>>74

>フォームと標準モジュール(クラスも)別フォルダー
これはvbpファイルで参照しているので、別フォルダーでも気にしなくておkです。

>メニューの中の別プログラムに
はっきりとは判らないのですが、もしかしたら、Mainがあるプロジェクトから
DLLないしActiveXのexeのプロジェクトに遷移しているかもしれませんね。


遷移先の別プログラム(DLL もしくはActiveXExe)もVBで書かれている場合、
そのプロジェクトをVSで立ち上げて一番最初に[実行]-[開始]をし、実行状態にします。
その後呼び元をF8キーでステップ実行していくと、別プロジェクトがDLL等の場合は
そのままステップ実行できます。
またブレークポイントを張ってそこで処理を止めることもできます。

はずしていたら、すみません。

76:デフォルトの名無しさん
07/03/06 14:54:51
>>75さん 74です
ありがとうございます。別のところにbasファイルがあって、そこにFORM_LOAD()
がありました。F8で追っかけてみたら、ありました。
これ、クラスとフォームは別々に開発してもOKなんですか?
なんども申し訳ありません。
よろしくお願いします。

77:デフォルトの名無しさん
07/03/06 15:53:52
>>76
別々というのが、ファイルを保存している先が別々という
意味では、問題ないです。

ただ、そのクラスとフォームがどのように依存しているのかは
流石にわからないので、勝手に片方の関数を変えたりすると
もう片方に影響が出るかもしれないですね。

78:デフォルトの名無しさん
07/03/06 16:51:36
お勧め

つ最高にド低脳な発言してください in ム板(XV)
スレリンク(tech板)

79:デフォルトの名無しさん
07/03/06 17:06:52
>>78
お前のようなカスの出てくるところじゃないんだよ。

80:デフォルトの名無しさん
07/03/07 18:08:38
ある規則に従って、CheckBoxのチェックを入れたり、入れなかったりしたい
のですが、どのようなメソッドを使えばいいのか教えてください。

また、手動でCheckBoxのチェックを操作できないようにするには、
どの属性をどのように設定すればいいのかも教えてください。

以上、よろしくおながいします。


81:デフォルトの名無しさん
07/03/07 18:14:35
>>80
> CheckBoxのチェックを入れたり、入れなかったりしたい 
Valueプロパティを調べろ
(ちなみに、チェックを入れるのと、チェックを外すの、な)

> チェックを操作できないようにする
Enableプロパティを調べろ
"無効な色"になるのがイヤなら、縁無しのピクチャボックスにつっこんでピクチャボックスのEnableプロパティを変えてみろ
(もしくはClickイベントで強引にユーザ入力を、無かったかのように見せかける)

82:80
07/03/07 23:40:46
>>81
>> > チェックを操作できないようにする
>> Enableプロパティを調べろ
>> "無効な色"になるのがイヤなら、縁無しのピクチャボックスにつっこんでピクチャボックスのEnableプロパティを変えてみろ
>> (もしくはClickイベントで強引にユーザ入力を、無かったかのように見せかける)

ありがとうございます。その方法が無難なようです。

ところが

>> > CheckBoxのチェックを入れたり、入れなかったりしたい
>> Valueプロパティを調べろ

こちらのほうはValueプロパティというのは無いようですが…
私ももうちょい調べてみようと思います。


83:デフォルトの名無しさん
07/03/07 23:43:57
>>82
もしかしてVB.NETか?
それならCheckedプロパティ
(VB.NETほとんど触って無いから、もっといい方法があるかもしれん)

84:80
07/03/07 23:52:31
>>83
ありがとうございます。VB.NETです。
そして最大の私の勘違いはメソッドの使い方でした。
てっきり
CheckBox1.Checked(True)
のような記述をするもんだと思い込んでましたが
CheckBox1.Checked = True
のような記述をするんですね!!
Cのプログラマが、にわかVBしてたもんで疑いもしませんでした。
これで今日は落ち着いて寝られます。
どうもありがとうございました。


85:デフォルトの名無しさん
07/03/08 12:57:18
それメソッドじゃねぇ・・・
プロパティだぜ・・・・


突っ込んでよかったのかな・・?

86:デフォルトの名無しさん
07/03/08 13:19:37
>>85
てっきりメソッドだと思った、と勘違いしてたんじゃないの?

87:デフォルトの名無しさん
07/03/08 14:53:22
スレ違いかもしれませんが
javaスクリプトでいう『document.ondblclick = sample;』
をvbスクリプトで同じことってできますか?

88:デフォルトの名無しさん
07/03/08 15:15:24
>>87
できます。

参考までにIEだとこんなカンジでしょうか。

Set ie=CreateObject("InternetExplorer.Application")
Set ie.Document.body.ondblclick=sample


89:デフォルトの名無しさん
07/03/08 15:22:05
sampleの型に寄るんじゃね?

90:デフォルトの名無しさん
07/03/08 15:23:39
>>88
本当だ!できました。
確かに"sample"では不十分な書き方でした。
それなのに丁寧に教えて下さってありがとうございました。&ごめんなさい


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