VBプログラマ質問スレ(6.0以前) Part30

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
VB(6.0以前)の質問スレです。
VB.NETの話題はできるだけひかえてください。

前スレはこちら
  Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
  Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
  Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
  Part21 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
  Part22 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
  Part23 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
  Part24 http://pc2.2ch.net/tech/kako/1050/10501/1050151126.html
  Part25 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
  Part26 http://pc2.2ch.net/tech/kako/1055/10551/1055145106.html
  Part27 http://pc2.2ch.net/tech/kako/1058/10586/1058674927.html
  Part28 http://pc2.2ch.net/test/read.cgi/tech/1061296197/
  Part29 http://pc2.2ch.net/test/read.cgi/tech/1065446334/

【VB.net関連スレ】
VB.net質問スレ (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1065269043/
【Win32 API関連スレ】
Win32API質問箱 Build14
http://pc2.2ch.net/test/read.cgi/tech/1065328397/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六. VB情報募集中。
七.VB.NETの話題できるだけひかえる。
2デフォルトの名無しさん:03/11/18 21:54
IT業界にアージャイル開発とデザインパターンを広めよう!

C言語を使ってかなり苦労したので
その苦労を最小限におさえるために
アージャイル開発、デザインパターンを
多くのプログラマに使って欲しいと思うことがある。

一種の挨拶みたいなものだね。
「なるべく挨拶を心がけましょう。」
「なるべき綺麗な字で書きましょう。」
のように

デザインパターンを使うこと、アージャイル開発することが
プログラマの習慣、常識になってほしい。

なんとか、デザインパターン文化、アージャイル開発文化を押し広げられたら・・・。

IT業界の将来はオブジェクト指向とアージャイル開発が握っています!  
あげとk
6デフォルトの名無しさん:03/11/20 03:32
ない
7デフォルトの名無しさん:03/11/20 03:36
VBはプログラムではありません。
マクロ板いってください
8デフォルトの名無しさん:03/11/20 03:45
>>7
実在しない板には行くことはできません
>>7
CPUもコンパイラも開発したことがない人が勝手なことを言ってはいけません。
10デフォルトの名無しさん:03/11/20 14:46
VB6で「新しいプロジェクト」をファイルメニューから選択し、「標準exe」を
選択すると、必ずProject1というプロジェクト名で既定のパスにプロジェクトが
作成されてしまいます。
任意のプロジェクト名で、任意のパスに作成したい場合はどのようにすればよろ
しいのですか?
11デフォルトの名無しさん:03/11/20 15:21
>>10
作られてはいなくないか?
保存時に指定すればOKじゃん。
12デフォルトの名無しさん:03/11/20 15:28
>>11
*.frm, *.basなんかも全部別パスに保存するのですか?
VC4/5/6もC#.NETもVB.NETもプロジェクト作成時にパス指定するように
なってたのでよくわからんのです。
13デフォルトの名無しさん:03/11/20 15:46
>>12
よく言えば、自由に配置できる。
まあいえば、自分で決める。

プロジェクトファイルをテキストで開けば判るけど、そのファイルからの相対でもってるから、
移動の時はそれごと移動。
14デフォルトの名無しさん:03/11/20 16:20
>>13
なるほど。わかりました。ありがとう。
今までVBは使ったこと無かったんだけど、いきなり仕事で使わなきゃ
いけなくなって、面食らってるのです。
15勉強2週間目:03/11/20 16:26
どなたか教えて下さい。
変数にファイル名(ディレクトリパス)が設定されている場合に、
そのファイル名の拡張子の部分だけを収集したいのですが、
どのようにコーディングすれば実現出来ますでしょうか?
「file_name」が格納されている変数として…、
file_name = "c:\aaa\bbb\ccc\123.jpg" の場合は jpg
file_name = "c:\aaa\bbb\ccc\123.jpeg" の場合は jpeg
file_name = "c:\aaa\bbb\ccc\123.gif" の場合は gif
file_name = "c:\aaa\bbb\ccc\123.xls" の場合は xls
などという感じに情報を収集したいです。
よろしくお願い致します。
>>15
Dim Arr() As String
Arr() = Split(file_name, ".")
拡張子 = Arr(UBound(Arr))
17勉強2週間目:03/11/20 16:40
>>16
即レスありがとうございます。大変助かります。
さっそく書いて頂きましたコードを反映して動作確認してみます。
18勉強3日目:03/11/20 18:03
Cのポインタに似たようなことしたければ
配列なら配列名()で関数ならAddressOf 関数名でいいのかな?
普通の変数や構造体はどうするんだろ・・・うーん
こういうCとの比較してるHPってないもんですかね?
19勉強3日目:03/11/20 18:04
あ、普通に変数名渡せば勝手に参照になるからいいのか
2016じゃないけど:03/11/20 18:33
>17
UBound(Arr) <= 0 の時は、拡張子を取得できなかった
ということになるから、気をつけてな。
(file_name = emptyの時は、UBound(Arr) = -1、
カンマ未発見の時は、UBound(Arr) = 0)
インターネット トランスファ (Inet)のExecute メソッドに HTTP プロトコルを指定して使用する場合に
データを途中から取得する方法って有りますか?
URLだけでもいいのでご教授お願いします。
pictureオブジェクトをAPIで使う方法ありますか?
何とかPictureオブジェクトからhDCを取得したいのですが。。。
GetDCとか使ってみたけどもうダメポ。
23デフォルトの名無しさん:03/11/21 03:03
すみませんがどなたか教えてください。
OUTLOOKで受信トレイに今月の名前のフォルダを作成し、
その直下に今日の日付のフォルダを作成したいのですが

Set olApp = New Outlook.Application
Set olNameSpace = Outlook.GetNamespace("MAPI")
Set olfolder = olNameSpace.Folders("個人用フォルダ").Folders("受信トレイ")
olfolder.Folders.Add(month)

この後どう書いていいのかがわかりません・・・
よろしく願いします。
24勉強2週間目:03/11/21 10:39
本日も質問してしまい大変申し訳ありません…。
10桁のランダムの数字と英小文字が入った文字列を設定したいのですが、
どのようにコーディングしたらよろしいのでしょうか?
数字のみですとrandomizeを使ってRndで収集のは分かりましたけど、
英文字も混在した方法はさっぱりです…。
ご協力して下さい。よろしくお願い申し上げます。
>>24
Private Function rnd_str(count As Integer)
Dim a As String
Dim i As Integer
Const c = "abcdefghijllnmopqrstuvwxyz0123456789"
Randomize Time
a = ""
For i = 0 To count - 1 Step 1
a = a & Mid(c, Rnd * Len(c), 1)
Next i
rnd_str = a
End Function
'やっつけソースなので正しく動くかどうかは知らん。
>22
hDCを取得して何をしたいんや?
確かpictureオブジェクトにはhDCがなかったと思ったんだけど…。
逆にPictureBoxにはhDCはあるけどさ。
>>25
Randomizeは無いほうがマシだな
28デフォルトの名無しさん:03/11/21 11:01
>>22
最初からデバイスコンテキストで操作すればいいんじゃないのか?
そもそも、なぜpictureオブジェクトを使ってるか?って話がある。
>>25
kが出ないし・・・
30勉強2週間目:03/11/21 11:04
>>25
レスありがとうございます。
書いて頂きましたコードを反映+調整した結果、正常に収集出来ました。
大変感謝致します。
>>25
a = a & Mid(c, Int(Rnd * Len(c)) + 1, 1)
かな
Const c = "a"にして試してミヨ
32デフォルトの名無しさん:03/11/21 11:24
実行メニューから「開始」や「完全にコンパイル後に開始」を選択したら
動作するのですが、ファイルメニューからexeを作成してエクスプローラで
ダブルクリックするとクラッシュしてしまいます。
どうもCOMコンポーネントを呼び出しているところのようなのですが、
これはCOM側の問題でしょうか?
33デフォルトの名無しさん:03/11/21 11:27
>>32
じゃないの?としかいいようがない質問だよ。
まず、そのCOMは自作?既製品?
プログラムの最初のFormLoadまで行けない状態?
プロジェクトを作成して、そのCOMをLOADするだけのEXEでも同じ?
>32
ありえないと思うが一応確認だ。
「完全にコンパイル後に開始」で実行しているパソコンと
exeから実行しているパソコンが違うなんて事、ないよな?
35デフォルトの名無しさん:03/11/21 11:34
>>33
そのCOMは自作です。VB.NETやC#.NETでは動作します。
先程は書き忘れましたが、VB6でWithEventsをつけ、
exeにしたときに特定のメソッドを呼ぶところでクラッシュするようです。

>>34
もちろん同じマシンです。

ありがとうございます。自分でも調査します。
36デフォルトの名無しさん:03/11/21 13:28
Inetコンポーネントは全く小回りが利かない。
"wininet vb"でぐぐれ。
37デフォルトの名無しさん:03/11/21 13:28
>>36>>21へのレスね。
3822:03/11/21 16:21
>>26
言葉足らずでしたね。bitbltとか使いたいです。
やっぱりpictureboxしかないでしょうか?
3922:03/11/21 16:22
あとpaintpictureは重いらしいですし、あまり使いたくありません。
40デフォルトの名無しさん:03/11/21 16:28
>>38
で、そもそもなぜにPictureオブジェクトを使ってるの?
そこまでするなら、イメージの読み込みからAPI使ってやって、自分でDC取ればいいじゃん。
そこまでするなら、VB使わなければ良いじゃんw
4222:03/11/21 17:04
あー、何かややこしくなりそうですね。
素直にpicturebox使っておきます。
>>40
pictureboxは重いからpictureオブジェクトで
代用できるんじゃないかと言う短絡的な思考からです。
考えが甘かったようですね。
>>41
まぁそうなんですけどね。
今までに書いたコードの量が多くなって引くに引けない状況で。
43前スレ966:03/11/21 18:17
>前スレ984
ご親切にありがとうございました。
取得した履歴の日付のDouble値をそのままString型に変換→ListItem.Tagに挿入し、
日付項目クリック時にListView.Visible = False、ダミーの項目を追加、ListItem.Tagの
格納値をCDate & Formatで強制2桁表示、SortKeyをダミー項目に設定の後、
Sorted = Trueにしてみたところ、上手くいきました。
かなりの件数があるときもあったんですが、それでもさほど非表示になったことが
わからなかったです。
これで次の処理に進められます。ありがとうございました。
4432:03/11/21 20:06
>>33, >>34
どうやらCOM側の問題だったようです。
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q196/0/26.asp&NoWebContent=1
ありがとうございました
DAOでaccessのmdbにアクセスしてるんですけど
closeって明示的にしないとだめですか?
oo4oはしなくていいんですけど
しなくても事実上は問題ないだろうが、なぜそんな
お行儀の悪いソースを書きたいのか知りたい。
つか、oo4oも「やらなくてもたまたま大丈夫」ってだけで、
ちゃんと開いたものは閉じるのが当然の作法だと思うが。。。
やらなくてもいいことをやるのが気持ち悪いんです。
そんなソースでDBアクセスしている環境を想像しただけで気持ち悪い。
わけわからずクローズするほうがキモイ
「なんかずっと最後にエラー出てたんだけど、
END入れたら出なくなったよ〜w」

って平然と話してたやつと同類っぽい。
「今日泊まりにいくね」と言っておきながら、時間を過ぎても来なくて
電話したら「忘れてた、もう遅いから行かない」

って平然と言ってのけるやつと同類っぽい。
>>48みたいなやつに限って
エラーで異常終了するときだけは
クローズを省略する
機能が仕様通りでプログラムが正常に動作するならどっちでもいいよ
なんでもいいから教えてくれよ
oo4oのcloseはダミーメソッドなんだよ。ヘルプに書いてある
daoはどうなのか聞いてるんだよ。
>>54
イカレてる。
>>55
わかるなら教えてやったら?
わからないんだろ? 正直に言おうよ。
質問です。
VB6なのですが、あるアプリケーションを作成し、
それを起動したら、最初に立ち上がるメニューバーを常に
タスクバーのすぐ上に表示するようにしたいのです。
つまり、メニューバーのフォームがタスクバーに乗っかっている感じで。

しかし、自分のマシンで大体これくらいだなと数値を割り当てていても
他のマシンで立ちあげると少し上過ぎたり、
また、常にタスクバーは同じ大きさとも限りません。
人によっては2段にしているかもしれません。

そこで、もし現在のタスクバーの大きさがどれくらいで・・・っていうのを
レジストリに持っていたらその場所を教えてください。
また、そのレジストリの値をVB6でどうやって読めばいいのかも
教えていただけると助かります。

よろしくお願いします。
>>57
タスクバーのウィンドウハンドルを取得して
サイズを(σ・∀・)σゲッツ!!!! すればいいのでは?
5957:03/11/22 23:57
>>58
すみません、ウィンドウハンドルとは何でしょうか?
初歩的なことなのかもしれませんが・・・
>>59
検索すれよ
十分親切なヒントだと思うよ
DirectSoundを使用してwavファイルをループ再生したいのですが、ループに入る前に
イントロの部分だけ別のwavを鳴らしたいんです。
A=イントロのwav
B=曲

Aを再生→Aのwavファイルの再生が終わったら間髪入れずにBを再生→以後Bが終点に来たらBをループ

ってな感じです。
そこで、Aのwavファイルの再生終了を判定する方法が分かりません。
どなたか良い知恵をお貸しください。

 #前スレでも質問しましたが回答がなく未だに困っているので、もう一度質問させていただきました。
>>61
俺は使ったことないからわからんが、
演奏してるかしてないか入れとくプロパティはないの?
気分としてはStatusとかPlayingって感じのやつ。
6361:03/11/23 20:19
>>62
そうなんですよ。演奏中であるか否かが判定できれば容易だと思うんですけど…。
探して見た感じ見つかりませんでした。

探し方が悪いのかな…。
どなたか知りませんか?
>>63
DirectSoundなんてずっと昔にやったきりでよく分からないけど、コレがそれっぽいね。
VBじゃないけど。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/directx9_c/directx/htm/playbuffernotification.asp
65デフォルトの名無しさん:03/11/24 06:04
コンボボックスで、選択項目を削除したいのですが、どうすればよいでしょう…?
>>65
Combo1.RemoveItem Combo1.ListIndex
6765:03/11/24 14:45
ありがとうございます。
68デフォルトの名無しさん:03/11/24 16:39
formAとformBの間で、配列のデータを
したいんですが、どうのようにすればいいんでしょうか?
よろしくお願いします。
69デフォルトの名無しさん:03/11/24 16:40
formAとformBの間で、配列のデータ交換をでした。
すいませんが、お教えください。
70デフォルトの名無しさん:03/11/24 16:41
検索や過去ログを見ても欲しい回答が無かったので質問させて頂きます。

タグブラウザを作っているのですが、
webbrowser1.navigateの際、IEのProxyがそのまま適応されてしまうのですが、
IEとは別にProxyを仕様することは可能でしょうか?

winsockやInetを使用してソースを取得、webbrowserに表示も考えてみたのですが、
その場合だとリンクが狂ってしまったりするので
やはりwebbrowserで無いとダメっぽいのですが・・・

よろしくお願いします。
>>69
一要素ずつ交換すればいいんとちゃう ?
>>69
モジュールで共有変数として宣言すれば?
73デフォルトの名無しさん:03/11/24 16:52
>>71さん

form間のデータ交換じたいが
わからないんですが、お教え願えないでしょうか?
74デフォルトの名無しさん:03/11/24 16:52
>>70
IEコンポーネントを生成する直前で、Proxyの値を書き換える。
生成したら元に戻す。
>>73
Public 宣言しときゃいいんじゃなかったっけ ?
76デフォルトの名無しさん:03/11/24 17:00
>>74
回答ありがとうございますm(_ _)m

IEコンポーネントを生成のやり方が分からないので、
詳しくは分からないのですが、

その場合ですと、HP閲覧途中などにProxyを変更するのが無理なのではないでしょうか?
77デフォルトの名無しさん:03/11/24 17:29
>>76
IEコンポをフォームに貼り付けるんじゃなくて、
オブジェクトの参照だけにしておいて(参照設定の方)、
下のようにやればオブジェクト生成される。

Dim IE As SHDocVw.InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")

オブジェクト生成時にIEのインターネットオプション設定が
読み込まれるみたいなので、その直前に書き換えておけばいい。
もっといいやり方があるかもしれないけど、俺はこれしか知らん。
78デフォルトの名無しさん:03/11/24 17:53
>>77
なるほど・・・
この方法ならちゃんとProxyの設定もうまくいってますね。

でもやっぱりフォームに貼り付ける様な形で作りたいので続けて質問させて頂きます。
77さん、すみませんm(_ _)m

とりあえずwebbrowserを動的に作成しようと思って、

Private WithEvents oIE As WebBrowser
Private Sub Form_Load()
Set oIE = Form2.Controls.Add("Shell.Explorer.2", "oIE") 'SHDocVwCtl.WebBrowserではダメでした
oIE.Left = 400
oIE.Top = 100
oIE.Width = 2000
oIE.Height = 400
oIE.Visible = True
End Sub

としてみたのですが、
エラー(プロジェクト プロパティのダイアログボックスの使用していないActiveXコントロールの情報を削除するのチェックを外してください。)が出ます。
探してみたのですが、見あたらないので、どこにあるのか教えてください。
79デフォルトの名無しさん:03/11/24 18:21
>>72さん

ありがとうございました。
なんとかできましたm(_ _)m
>>78
"プロジェクト(P)"→"[プロジェクト名] のプロパティ(E)..."→
"実行可能ファイルの作成"→"使用しない ActiveX コントロールについての情報を削除する(E)"
81デフォルトの名無しさん:03/11/24 19:29
>>80
普通に見落としてましたね・・・(汗
くだらない質問にお答え下さってありがとうございます。

おかげさまで動的にwebbrowserを作成は出来たのですが、
なぜかProxyを変更しても適応されませんでした・・・(汗

どうすればうまくいくのでしょうか?
はじめまして、自力でいろいろページ探したのですが、
解決できないので、質問させていただきます。
ShapeコントロールでPictureBox上に長方形を描き、その上に透明のLabelを貼り付け
Labelをドラッグすると下のShapeが一緒に動くようにしているのですが、
ドラッグをするとノイズ(ビリビリ横に線が入る)が発生し、移動するオブジェクトを大きくすれば
するほど、そのノイズが目立ってしまいます。
ちなみにオブジェクトを半透明状態にしたいので、MaskPenのあるShapeに色をつけて、
FillStyleをMaskPenにし、上に透明Labelを貼り付けるという強引な方法をとっています。
もう1つ、ウィンドウズでよく使う縄(範囲選択するための半透明の正方形)を実装したいのですが
やはりこちらもノイズが入ってしまいます。
こちらのほうもMouseDownで開始座標,終了座標を変数に格納し、shapeを表示
MouseMoveで適した形,大きさにshapeを移動するようにしています。
ノイズを消す良い方法があればご教授願いますm(_ _)m
>>82
ディスプレイドライバの不具合の可能性もアリじゃない?
色々なPCで試してみた?
8461:03/11/24 23:13
>>64
まさにそれですね。
ありがとうございます。m(_ _)m

仰せの通り、VBではないようですが、使い方などを試行錯誤してみます。

もし知っている方がいましたら、ご教授願えると幸いです。
>>81
プロキシ変更ヒント。
適当に切り貼り。適当に組み合わせて調べて使ってくれ。
そういえば、IDEからだと動かなくて、EXEだと動いたことがあったような解決したような。もう忘れた。

Proxy←プロキシのアドレス
If Trim(Proxy) = "" Then
  ipi.dwAccessType = INTERNET_OPEN_TYPE_DIRECT
  ipi.lpszProxy = 0
  ipi.lpszProxyBypass = 0
Else
  ipi.dwAccessType = INTERNET_OPEN_TYPE_PROXY
  ipi.lpszProxy = StrPtr(StrConv(Proxy, vbFromUnicode)) '←なんかもっといい書き方ありそうだけど手抜き
  ipi.lpszProxyBypass = 0
End If
If UrlMkSetSessionOption(INTERNET_OPTION_PROXY, ipi, LenB(ipi), 0) = 0 Then
  '成功
Else
  'エラー
End If
定義とか。足りないのあるかもな〜。
Public Declare Function UrlMkSetSessionOption Lib "urlmon.dll" _
(ByVal dwOption As Long, pBuffer As Any, ByVal dwBufferLength As Long, _
ByVal dwReserved As Long) As Long
'
' INTERNET_PROXY_INFO - structure supplied with INTERNET_OPTION_PROXY to get/
' set proxy information on a InternetOpen() handle
'

Public Type INTERNET_PROXY_INFO
'
' dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or
' INTERNET_OPEN_TYPE_PRECONFIG (set only)
'
dwAccessType As Long
'
' lpszProxy - proxy server list
'
lpszProxy As Long
'
' lpszProxyBypass - proxy bypass list
'
lpszProxyBypass As Long

End Type

Public Const INTERNET_OPEN_TYPE_PRECONFIG As Long = 0 'use registry configuration
Public Const INTERNET_OPEN_TYPE_DIRECT As Long = 1 ' direct to net
Public Const INTERNET_OPEN_TYPE_PROXY As Long = 3 ' via named proxy
Public Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY As Long = 4 ' prevent using java/script/INS
Public Const URLMON_OPTION_USERAGENT As Long = &H10000001
Public Const URLMON_OPTION_USERAGENT_REFRESH As Long = &H10000002
おまけ。USERAGENTをかえるサンプル。
Dim UserAgent As String
UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
If UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ByVal UserAgent, LenB(UserAgent), 0) = 0 Then
'成功
Else
'エラー
End If
8885:03/11/25 05:31
自己レス。

>ipi.lpszProxy = 0
>ipi.lpszProxy = StrPtr(StrConv(Proxy, vbFromUnicode)) '←なんかもっといい書き方ありそうだけど手抜き

この部分って、
Type INTERNET_PROXY_INFOのlpszProxy As LongをlpszProxy As Stringにして、

ipi.lpszProxy = Proxy
ipi.lpszProxy = vbNullString

と書けば動くはずだよねぇ。
こうやっていたときだったかなぁ。IDEからなんかおかしかったの。

作っていたのが特定サイト専用俺個人用ツールで、サイト更新で
今つかえなくなっているので試す気がおこらない。
あと、これレジストリとか変えるわけじゃないので終了処理とかはいらない。

コメントのproxy server listが気になる・・・。なぜにアドレスじゃなくリスト?
8982:03/11/25 10:54
>>83
なるほど。今グラボを修理にだしていて、GF2MXを臨時で使っているので、
グラボが修理から戻ってきたらドライバいれて確認してみます。
(他のコンピュータを持っていないため)
これはVBのバグ(というかVBがグラフィックに弱いの)かと思っていましたが、
そうでは無いようなので、安心してこのまま続行してみます。
どうもありがとうございましたm(_ _)m
>>89
なんか妙な方向でまとまってそうなので言っておくが、
VBでコントロールを動かしまくるとフリッカが出るのはバグとかそういう類のものじゃない。
リアルタイムに動かすものは、コントロールなんか使わずに自前で書くべき。
範囲選択ツールも、普通はLineメソッドなんかを使って直接PictureBoxに描く。
>>90
そうだよねー
9282:03/11/25 18:59
ご指摘ありがとうございます。
いま作っているものはオブジェクトを右クリックすると「色の変更」などの右クリックメニューが出る
ようにしていて、かつ、ドラッグするとそのオブジェクトを動かすことができるように
しています。
クリック、などのイベントは直接書き込んだオブジェクトでは発生させられないため、
透明ラベルを貼り付ける方法を思いついたのですが、この様な方法をとらずに同じようなことは可能でしょうか?
範囲選択ツールは直接描く方法でやってみます。
オブジェクトの位置情報を中で持っといて、ピクチャボックスにClickイベントが発生したときに位置を比較してメニュー表示とか。
面倒だろうが、まぁガンガレ。
#ちらつくのは仕様だと言い張って楽するのもありだぞ
9493:03/11/25 19:25
っと、Clickイベントじゃマウスの位置取れないか。訂正。
コンテキストメニュー出すんなら、MouseUpイベントで処理すべきだな。
95デフォルトの名無しさん:03/11/26 00:30
>>85
回答ありがとうございます。

早速試してみたのですが、エラーが出てしまいます(汗
ヘルプを見たり検索してみたのですが、
なぜエラーが出るのか分からなかったのでご教授お願いしますm(_ _)m

変更した点は、
モジュールに
Public ipi as INTERNET_PROXY_INFO

を足したのだけです。
Form1にwebbrowser1を貼り付けてます。

If UrlMkSetSessionOption〜〜のところで、
INTERNET_OPTION_PROXYの値がEmptyになっているので、それが原因な気がしますが、どうなのでしょうか?

よろしくお願いします。
>>95
あ〜。マジで抜けてたね。俺んとこはCのWININET.Hファイルから半機械的に変換した
モジュールを使っているから、長くて必要なとこだけ取り出したつもりだったんだけど。
Public Const INTERNET_OPTION_REFRESH As Long = 37
Public Const INTERNET_OPTION_PROXY As Long = 38

この部分で必要なのはもうないと思うけど、これ関連でなんかやりたいときは
WININET.Hを見てくれや。なんか興味深い定数もあるしね。
97バレーボーラー:03/11/26 00:58
はじめまして、いきなり質問です
Dim i As Integer
i = 1
Controls("Text" & i).Text = "ok"

みたいに Text1.text="ok" の1の部分を変数に変えるように

Dim objDocument As Object 'As MSHTML.HTMLDocument
Dim objForm As Object 'As MSHTML.HTMLFormElement
Set objDocument = IE.Document
Set objForm = objDocument.Forms(0)

objForm.ID.focus
のIDの部分を変数に変えるにはどうしたらよいでしょうか?
98デフォルトの名無しさん:03/11/26 01:03
>>96
ありがとうございました!!
おかげさまで無事思った通りのことが出来ました。
作者が更新停止してしまったこのソフト(kerio4β用のルール追加ソフト)
のソース書き換えて最新のkerio4に対応できるようにしたいのですが、
VB6は全くわからないです・・・。

言語:Visual Basic6

ttp://www.geocities.co.jp/HeartLand-Icho/9798/tools.htm
ttp://www.geocities.co.jp/HeartLand-Icho/9798/kpf4b4ras0.0.1.lzh

どなたかこのソースを元にkerio4.08に対応したものを作っていただけないでしょうか?
よろしくお願いしますm_ _m

ごめんなさい、誤爆です
>>99はスルーしてください
101PC初心者:03/11/26 09:18
お願いです。
VBとアクセスで作ったあるソフトが手元にあるのですが
ノートPC全般で一部機能が働きません。デスクトップでは
まともに動いていた代物なんですが。。。
しかも、インストーラーが入ったCDを紛失してしまい、
そのソフトはノートPCにしか現在ない状態です。
ノートPCからソフト本体と目に見えるフォルダーをコピー
したのですが当然動きません。
初心者なので非常に困っています。
作成した会社には連絡が取れずじまいです。
東京都近辺で実際にそのノートPCから吸い出してインストーラーの
作成まで面倒みてくださる神様はいらっしゃいませんか?
もちろんお礼はいたします。よろしくお願いします。
102VB初心者:03/11/26 09:35
 VB-5.0を使用しておりまして、質問があります
テキストボックスで40X2byte(改行無し)の入力部を作成しようと想っています。
"MultiText=on"に設定して、2行以上に表現する事が出来るのですが、1行40文字で
次の行へ行かず、勝手に改行されてしまいます
----------------------
|aaaaaaaaaaaaa bbbbbb|
|bbbb cccccccc dddddd|
| |
---------------------- と表示させたいのですが、
----------------------
|aaaaaaaaaaaaa |
|bbbbbbbbbb cccccccc |
|dddddd |
---------------------- と表示してしまう

また、バイナリモード入出力で、2バイト文字・1バイト文字の含んだ文字列を80byte
扱いたいのですが、固定長80文字で取得しようとしたら80byteではなく、80文字分
扱う感じになってしまいます。
固定長byteの入出力を行うにはどのようにすればよいのでしょうか
103デフォルトの名無しさん:03/11/26 09:49
>>101
その手段ではライセンス違反になるので注意を。
VBのランタイムなどの再配布は統合開発環境があることが前提のはず。

その他のOCXとかも個別にある。

インストール先のPCからそれらのファイルを抜き出して再配布することは問題です。
104デフォルトの名無しさん:03/11/26 09:52
>>102
TextのChangeかKeyPressかで入力値を判定。
VBは内部的な文字扱いはUNICODEなので、文字はバイトじゃなくて文字数で数えます。
バイト長が欲しい場合はStrConvしてLenBする。
その辺りは前スレにも出てたように思うのでそれを参照。
>>101
お礼ってなんだよ
普通に有償。あたりまえだ!
>101のお礼=鳩サブレ(\1,000)
>>101
10万+実費で、「動くようになるまで」。必要機材はそちらで用意。
もし3日かけても動かなければ、なにも要らない。
インストーラ作成までやるなら、これぐらい当然だろう。
本気なら捨てアド晒せ。なお、こちら浜松町。
108デフォルトの名無しさん:03/11/26 11:09
VB6.0には配列の初期化構文というのは存在しないのですか?

とある配列データを定数として持ちたいんですが
ひょっとして一々代入しないといけないのか?
>>108
その通り。なお、変数の初期化構文さえないぞ。
110108:03/11/26 11:15
>>109
やっぱりそうなの?面倒くせー。
572バイトのバイナリデータなのに・・・。
>>110
単にファイルとして持てばいいんじゃないのか?
別ファイルにしたくないならリソースファイルにするとか。
どっちもめんどいけどなー。
112108:03/11/26 11:22
>>111
そうします。

hoge.binってファイルを作って
Form_Load時に読み込ませる事にします。

VB.Netだと配列初期化構文用意されてるみたいだね。
>>107
実費?
必要機材?
なんなのよ。
114デフォルトの名無しさん:03/11/26 13:42
ディレクトリ名の取得の質問です。
ディレクトリには物理ディレクトリ(c:\windows等)と
論理ディレクトリ("マイコンピュータ"等)がありますが、
論理ディレクトリ名を取得する関数はあるんでしょうか?

例えば、
path = Dir("デスクトップ", vbDirectory)
などとすれば、"デスクトップ"以下の論理ディレクトリが取れるような
APIが知りたいのです。
ご存知の方いませんか?
>>113
CD-Rに焼きたいのにドライブがないだのメディアがないだのって場合とか
場合によってはインストーラー作成用ソフトを購入しなきゃいけないとか
現地までの交通費とか いろいろあるでしょーが。
必要機材ってのは、ノートと該当デスクトップを接続するLAN環境だの
インストーラー作成に使用するマシンだのって意味だよ。
なにもそのへんにかこつけて、法外な要求しようってわけじゃない。
つか、そもそも元発言者なのか?
ここまで反応がないから、多分諦めたんだとおもうが。
>>115
101は本当に鳩サブレ程度のお礼のつもりだたそうです
それでやってやるやつがいたら、本当に神様だなw
119デフォルトの名無しさん:03/11/26 17:32
>>116
ありがd。
作りたいのはファイラーのようなツールなのですが、
IShellFolderインターフェースがらみで何とかなりそうです。
120デフォルトの名無しさん:03/11/26 19:52
VB6.0で「通常使うブラウザ」として設定しているブラウザを開く場合はどうすればよいのでしょうか。

過去ログにIEを開くものはありましたが、Mozillaやその他のブラウザでも開けるようにしたいのです。
121120:03/11/26 20:02
自己解決しますた。

ありがとうございました。
>>120
関連付けされたファイルならshellでhtmlを開けばいいけど、
これって、Win2kのアプリケーションの追加と削除の所にある、
既定のWebブラウザを使う と同じものなのかなと思ったり。
123PC初心者101:03/11/27 09:34
著作権やライセンスの問題は大丈夫です。
当方で依頼して作成してもらったソフトで権利もこちらにあります。
が、作成した会社がないのです。
実費とは概ねどの程度なんでしょうか?
現在そのソフトが入っているノートPCをお渡ししますので
そこからデスクトップにインストール出来るような状態にしてほしいのです。
初心者なのでよく分かりませんがよろしくお願いします。
浜松町までお持ちしますので一度ご連絡ください。

[email protected]
誤爆?
>>123
>著作権やライセンスの問題は大丈夫です。
何もわかっちゃいねぇな。
>>125
契約の内容によっては著作権侵害になるとは限らないぞ。
>>126
鳩サブレの著作権のことだろ
128PC初心者101:03/11/27 10:04
なんにも分からず申し訳ありません。
>>123
>>125も書いたけど、わかってないかな?
VBとかあるの?それが無くて開発されたソフトがあってもしょうがないんですよ。

最初の開発時につかったソフト会社がランタイム等の配布権をもってるわけで。
あなたのノートに入ってるMSなんかが作ったDLLを再配布する権利はあなたに無いです。
130デフォルトの名無しさん:03/11/27 10:06
あと、純粋なVBランタイムだけならVectorとかでランタイム配布がある。
あれの場合、ダミーのアプリをインストールする名目でランタイムを入れるからOK。
フォームだけのアプリでもいいわけで
ランタイムは別途にインストールすればいいだけじゃん。
ねぇねぇ!
ランタイムライブラリってスタティックリンクできないの?
>>132 VBのランタイムはね。
101のアプリが市販のカスタムコントロールを使ってる場合とか問題だし。
そもそも、その調査自体を頼んでる割には・・・だし。
仕事でやるなら調査だけでも1人日欲しいよな。
いや、APIなんかはどっちみちスタティックリンク出来ないし。
136デフォルトの名無しさん:03/11/27 10:21
>>133
煽り?それが出来ればVBの問題の70%は解決できるんだけどね。
あとの30%はクラスの仕様。

.netになると、別にVBじゃなくてもってなるし。
>>134
何も分からんのに、カスタムコントロールの調査をしてくれと頼めるか?
>>136
煽りじゃないYO!
・・・やっぱり出来ないんだ。
>>133
サイドバイサイドを使えば、スタティックリンクしたのと同等になる。
>>138
ソースがあれば出来るよ。
VBも内部でLINK.EXEをよんでいる。
コンパイラにちょっと細工をすればスタティックリンクも可能。
142デフォルトの名無しさん:03/11/27 10:34
>>141
VC98\BinフォルダにあるLINK.EXEと全く同じ物がVB98フォルダにもあるね
oo4oを使っています。
2万件のデータのなかからどれでもいいので1件選択して
データを取得したいのですが、sql でminやmaxをすると
時間が掛かってしまうのですぱっと1行選択する方法はありますか?
144デフォルトの名無しさん:03/11/27 13:38
>>143
そのSQLが悪い。SQLを磨け。または設計がだめだめかもしれないから、再設計しろ。

oo4oはミドルウエアだから、あんたの意図を察して1件だしてくれるものではない。
あくまで仲介役。

糞な設計、SQLで直せないなら2万件程度なら全件持ってきて判断しても大丈夫じゃないの?
>>144
知らないなら引っ込んでろよ
146>>144:03/11/27 13:41
あとSQL鯖でいうところのTOPが欲しいなら、以下を参照。

http://tsubosak.hp.infoseek.co.jp/1-10/12-select.html
147デフォルトの名無しさん:03/11/27 13:42
>>145
しらないんじゃなくて、無いって教えてるんだろ?アホか?
ROWNUMがあるじゃん
149デフォルトの名無しさん:03/11/27 13:47
>>148
ROWNUMはORDERBY前の順序でしょ?
その場合、その集合をFROMに入れてさらにってなるからめんどい。
>>149
どれでもいいならいいんでない?
151デフォルトの名無しさん:03/11/27 13:56
>>150
いや、細かくなるけど全件検索してしまう可能性があることなどあるから、
SQLレベルできちんと分析(実行計画見て)をやってチューンすべき。
INDEXなど使われてピンポイントで行けるなら、劇的に早くなるけどね。

っていうか、どれでもいいのか元題の要件は?
152143:03/11/27 14:03
ありがとうです。
とりあえずROWNUMとうのが出たのでやってみます。
153143:03/11/27 14:12
3万件の中から1しゅんで取得できました。ありがとう。
ありがとう。そしてさようなら。
155143:03/11/27 14:16
また来ます
>>155
そういうときは、もうこねーよのAAだろ?
まあ、3万程度なら力技でもなんとかできるからがんばってね。

テストだと綺麗なデータで数千とかでやっちゃうことが多いから、それだとボロがでないんですよね。
数万から数十万でやるとさすがに下手なSQL書くと結果に現れる。

ミドルウェアでどうにかできるのは、バッファをどう持つかとかダイナセットをどうするかとかの設定ぐらい。
根本的な検索はSQLを突き詰めるしかない。
157勉強3週間目突入:03/11/27 14:48
HTMLのページでチェックボックスで選択された複数の内容を
ASP側で配列として受け取りたいのですけど、どうすれば実現できますでしょうか?
HTML側のプログラムでは、
<form method="post" action="test.asp">
<input type="checkbox" name="user" name="taro">太郎
<input type="checkbox" name="user" name="jiro">次郎
<input type="checkbox" name="user" name="hanako">花子
<input type="submit" value="実行">
と作っています。
受け取り側のASPではname_listという配列を作って、
配列番号の0からチェックボックスで選択された内容を書き込みたいです。
太郎と花子の2つが選択されたらname_list(0)に"taro"、name_list(1)に"hanako"が入って欲しいのです。
どなたか実現の方法がおわかりの方がいらっしゃいましたら、
サンプルのプログラムを掲載して頂けると助かります。
よろしくお願い申し上げます。
158デフォルトの名無しさん:03/11/27 14:56
フォルダの変化を監視&自動でファイル名変更するツールを作ってます。
「FindFirstChangeNotification」を使って「CHANGE_FILE_NAME = &H1」にして
あとは「WaitForSingleObject」で待っています。

殆どの場合、コレでも動いたのですが、変化(追加)されたファイルをイヂろうと
した時(ファイル名変更等)に、ファイルが未だコピー中だったりすると怒られて
しまいます。

つまり監視中のフォルダに大きなファイルをコピーしてきた場合なんかに
まだコピー中でも、「FindFirstChangeNotification」は新たな変化ハケーンしたと
通知して処理が戻って来ちゃいますよね。

大きなファイルでもコピーが完了した(=ファイルが最後まで書き込み完了)
時を知る方法は無いでしょうか?

# 監視フォルダに連続してファイルが来る可能性もあります。。。

宜しくお願いします。
159143:03/11/27 15:04
>>158
そのAPIって役に立たないよね。ほんと。
どなたかお願いします。
PictureBoxとボタンがあって、
そのボタンを押すごとに画像が少しずつ拡大されるようなプログラムを探しています。
できれば、縮小もお願いします。
143ってなんか愉快な奴だなw
>>160は、
さすがに入門書を読めと言いたくなる質問だな
163デフォルトの名無しさん:03/11/27 21:10
Outlook Expressで読める、拡張子がemlのファイルの構造がわかるサイトを
教えてください。
お願いします。

目的は、Accessのmdbファイルにメールを取り込むためです。
>> 163
emlだとPOPサーバから取得したままの原文だと思う。
メール関係のRFC読み漁ってみたら?
処理するメールの書式が決まってるなら
普通のテキスト文書とみなして処理できると思うけど
完璧に対応したいっていうなら
素人が手を出せるもんじゃないと思うよ。
(メーラーを作るのと大してかわらん)
>>161
143を騙って名前に143と入れたまま、
違う奴を煽ってしまったんでしょw
166143:03/11/28 08:16
>>165
143は私一人ですが・・・
167PC初心者101:03/11/28 08:30
107さん、ご連絡お待ちしております。
[email protected]
168デフォルトの名無しさん:03/11/28 09:35
>>163
>>164の言うとおり、emlは受信内容をそのままテキスト保存しただけのもの。
本文の漢字コードは通常JISコードを使用している。
ヘッダ中の日本語はJISコードをさらにbase64エンコードしている。
添付ファイルもbase64エンコードされたものがメールの最後に付いている。
マルチパート(text, html混在)の奴はtext部分の先頭とhtml部分の先頭に
区切り文字列が入っている。
などなど。結構ややこしい。
漢字コード変換やbase64デコードのフリーライブラリやソースは探せばあるよ。
169デフォルトの名無しさん:03/11/28 17:18
フォームにPictureを貼り付けてその四隅をマウスでドラッグ&ドロップして
Pictureのサイズを自分でいじれるようにするにはどうしたらいいですかね?
どなたか教えてください
170VenBen:03/11/28 19:24
>>169
SetWindowLong使うのが一番簡単です。
あとはググってクレ
171163:03/11/28 20:21
>>164
>>168

ありがとうございました。
ちょっと頑張ってみます。
>>157
--- 送り側 ---
値はnameじゃなくてvalue。nameはこんなかんじにする。
<input type="checkbox" name="Checkuser1" value="true">太郎
<input type="hidden" name="user1" value="Taro">...
hiddenを使って、inputの数をあらかじめ所得しておく。
<input type="hidden" name="icount" value="3">

--- 受け取り側 ---
dim ArrayNum
dim NewArray()
dim iNum
redim NewArray(Request.Form("icount"))

'配列するときに使う
ArrayNum = 1
'icountの分だけ繰り返す
for i = 1 to Request.Form("icount")
'チェックの入ったものはtrueになる。それ以外はもちろんfalse
if cbool(Request.Form("Checkuser" & i))=true then
NewArray(ArrayNum)=Request.Form("user" & i)
ArrayNum = ArrayNum + 1
end if
next

'これで確認してみてね
for iNum = 1 to ArrayNum-1
Response.Write NewArray(iNum)
next
173室長 ◆VVVF/Nq4YU :03/11/28 22:01
TabStripの使い方が、ドコ探しても殆ど載ってなくて、全く分からないので教えてください
とりあえずボタンとかどうやって置けばいいんすか?
よろしく頼む
174VenBen:03/11/28 22:20
>>173
> ドコ探しても殆ど載ってなくて
何処を探してる?ネットを探せば普通に見つかるよ?

ttp://www.google.co.jp/search?q=cache:8B2Gcs7YQkcJ:www.int21.co.jp/pcdn/vb/noriolib/vbmag/9805/ctl/+vb+TabStrip+%E4%BD%BF%E3%81%84%E6%96%B9&hl=ja&ie=UTF-8

とか、適当に探すだけでもイッパイある。


> とりあえずボタンとかどうやって置けばいいんすか?
例えば、タブの数だけFrameを用意してタブのIndexごとにVisibleを切り替えるとか。
それぞれのFrame内に好きな部品をおいておけば良い。
XPのテーマに対応させるとコンテナがフレームだとおかしくなっちゃうから
ピクチャボックスを進めておく
エクセルに入っているVBAで、九九の掛け算の答え(1×1〜9×9)を表示させる
プログラムを教えてくれませんか?

1 2 3 4 5 6 7 8 9
2
3
4
5
6
7
8
9

かける数を指定して、その交わる部分に掛け算の答えが表示されるように
したいのですが、どうしても完成できません。
ご存知の方、よろしくお願いします。
177デフォルトの名無しさん:03/11/29 00:05
>>172
通りすがりの者だけど役に立ちますた。
178143:03/11/29 00:19
>>172
答えになってないんじゃない?

'** form パラメタ取得(全件)
for each rq in request.form
response.write(rq & "<BR>")
response.write(request.form(rq) & "<BR>")
next

これでなんとなくわかるでしょ?
179デフォルトの名無しさん:03/11/29 00:27
>>176
Sub kuku()
  Dim ws As Worksheet
  Dim i As Integer
  Dim j As Integer
  Set ws = ThisWorkbook.ActiveSheet
  For i = 1 To 9
    ws.Cells(i, 1).Value = i & "段"
    For j = 1 To 9
      ws.Cells(i, j + 1).Value = i * j
    Next j
  Next i
  Set ws = Nothing
End Sub
180176:03/11/29 00:42
>>179
おおおお!! ありがとうございます!!
本当に助かりました。
VBでCD-Rライティングソフト作りたいんですけど・・・
どなたか作った方いません?
APIでどうにかなるレベルのものなんでしょうか。。。
182デフォルトの名無しさん:03/11/29 07:21
textbox1 ← IPアドレスを入力
botton1 ← クリックするとtextbox1に入力されているIPアドレスに向けてpingを撃つ
textarea1 ← 上記結果を表示する

というプログラムを作りたいのですが、botton1にはどんな記述をすればよい
のでしょうか?すいません教えてください。
183143:03/11/29 09:23
>>182
少しは検索したら。vb ping でgoogleしろ
184デフォルトの名無しさん:03/11/29 11:14
VB6.0です。
DataGridのスクロールバーですが、データの表をはみ出して
表がない部分までスクロールします。
なんとか表が表示されている部分でスクロールの最後とすることは
できませんでしょうか?
185(295):03/11/29 18:12
VB6.0です。
コーデエディタウィンドウでマウスホールをクリックしても
↑↓スクロールができないのですが、何故でしょうか?
>>185
答えただろうがヴォケ
187185:03/11/29 18:17
>>186
あ、なるほど、ホイールを入れるんですね。
わかりません。
Google "どこでもホイール"
189163:03/11/29 18:49
VB6.0+Access2000+SPREAD Ver6.0Jで参加している団体のMLの
データベース化を進めています。
投稿数が1万件あって、そのフォームをSPREADで表示しようと
フォームを作成してそれを開こうとすると30秒以上かかってしまいます。。。
こういう場合は、どうすればいいのでしょうか?
>>189
メモリを増設するか、表示件数を絞り込んで少なくしろ。
191デフォルトの名無しさん:03/11/29 18:55
>>189
「只今処理中です・・・」 を出しておけば?
192163:03/11/29 19:02
>>190
現在、ノートPC(セレロン700MHz、512MB(MAX))です。
表示件数の絞りこみですか。。。

>>191
つらいです。。。
>>192
メモリが512Mがあれば十分かと。
あとは表示するまでの時間と表示件数のトレードオフしかないだろ。
194191:03/11/29 19:38
セレロン700でAccessDBファイルから1万件抽出表示かぁ。。。
やっぱり多少時間はかかるよね、それ。

MySQLとかじゃダメなの?
195163:03/11/29 19:40
>>193
今きっちりはかってみたところ、11403件が51秒でした。。。
SPREADにVirtualModeがあるんですけど、
それを使ったほうがいいんでしょうか?
196163:03/11/29 19:44
>>194
> MySQLとかじゃダメなの?

使ったことがないのでなんとも。。。
会員データとかAccessで作ってしまってるんで
その流れでいきたいです。
197191:03/11/29 20:02
>>196
そんな件数を一度に表示させる必要が本当にあるのか
もう一度、検討してみたらどうでしょう?

ツリーヴューと組み合わせて何かの項目ごとの表示に
するとか、500件づつのページ表示にするとか。

>VirtualMode
良く知らんが、BOCの説明だと、
「仮想モード: 一度に読み込むデータ量やバッファリングするデータ量の設定 」
と有るので、もしかしたら早くなるかもしれないですね。

ttp://www.grapecity.com/japan/support/database/P1_159.htm#新機能 (全製品)
メーリングリストって大勢が使うものだから
SQL Serverじゃないとダメ
199163:03/11/29 20:11
>>197

一度、VirtualModeを使ったんですけど、
勝手がうまくいかないし、垂直スクロールバーの操作が
しっくりいかなくってやめたんです。。。

アドバイスを参考に1から考えてみます。
ありがとうございました。
200191:03/11/29 20:11
>>196
良く見てないけど何かのヒントになるかもしれない
ttp://www.nasbi.co.jp/technology/activex_db.htm

>>198
Accessの推奨クライアント数って同時接続5くらいだったっけ?
201198:03/11/29 20:36
>>200
JETエンジンが同時接続1で、MSDEを使うと5に増えるだけだ。
>>198
ド素人ですいません。この場合、AccessとSQL Serverの違いって何ですか?
203143:03/11/29 22:17
オブジェクト指向なんて役に立たないと思う。
204198:03/11/29 22:24
>>202
このスレにはその質問に答えられる人がたくさんいるけど、
説明はそれなりに長くなるから
同時接続が起こる場合はSQL Severを使用するようにみんなは言うだけにとどめることだろう。
本やインターネットを読んでいるうちにわかってくる。
マイクロソフトはソフトの格付けをするためにわざと製品同士に性能差をつけているからAccessもSQL Serverも値段の違いが機能の違いになっている。
なぜ性能が違うのかというと販売戦略によりわざと性能差がつけてあるだけだ。
205デフォルトの名無しさん:03/11/30 01:54
ひらがな・かたかな・漢字が混じっている文章を
ローマ字に変換してくれるような
APIを作っている神様をご存知ありませんか?
>>205
作るもなにも、IME関連のを呼び出せば変換できるんだが。
オマエら、
ブラウザのアドレス欄に、ファイル名称を表示させない方法、
知らね〜だろ。
大手サイト作ってる奴しか知らないワナ♪
漢字は音訓読みがあるから完全に正しい変換は難しいな
209デフォルトの名無しさん:03/11/30 06:52
ImplementsしているクラスをさらにImplementsしたいのですが
とりあえず↓のようにしてやってみましたがうまくいきません。(つまりわかってない
なにか良い方法はありますでしょうか?
'clsA
Public Sub Method()
...
End Sub

'clsAA
Implements clsA
Private Sub clsA_Method()
 Me.Method
End Sub
Public Sub Method()
...
End Sub

'clsAAA
Implements clsAA
Private Sub clsAA_clsA_Method()
 Me.Method
End Sub
Private Sub clsAA_Method()
 Me.Method
End Sub
Public Sub Method()
...
End Sub
>>209
委譲使うしかないよ。
C++のそれと同じものを期待しているなら無理。
211デフォルトの名無しさん:03/11/30 07:39
【Shell()について】
Shell() は非同期で引数のプログラムを実行するとリファレンスにありますが、
VB(6.0)で作ったファイルをコピーするexeを実行すると、
ファイルコピーが終了するまでブロック(同期)してしまいます。

これはなぜなのでしょうか。また回避方法はありますでしょうか?

#ちなみに、ノートパッドを実行すると確かに非同期でした。

どなたかよろしくお願いします。
はてな http://www.hatena.ne.jp/1070065952

VB6で使用可能なアイコンファイルの制限について。XP用の32bitアイコンが使えるのか。色深度、解像度、複数混在の場合の挙動など。

質問者:kiichigo (8) 回答ポイント:130ポイント 質問日時:2003/11/29 09:32:32
質問ID:1070065952 閲覧済み:
現在の状況:回答受付中 回答件数:
カテゴリ:コンピュータ
>>202
どうかくたばってください
214デフォルトの名無しさん:03/11/30 19:39
>>202
Accessは軽自動車。
MSSQLは中央線。

まぁ、そんなカンジだ
>>214
軽自動車に失礼だろ
216214:03/11/30 20:20
>>215
そいつはすまなかった。
釣られ覚悟で言うが、もうちょいスレに沿った事は言えないか?

教えてください。
VBからバーコードを印刷したいのですが
いいミドルかバーコードフォントをご存知ないでしょうか?
できればフリー、なければ市販のもので。

それかバーコードの仕様ってどこかで公開されてて
描画して出力したことある人っていますか?
219回し者じゃないよ:03/11/30 22:20
>>217
> それかバーコードの仕様ってどこかで公開されてて
ちゃんとした仕様を作っている所があったり
もっといいのがあるのかも知れんが、キーエンスからただでもらえる。
http://www.keyence.co.jp/barcode/download/download_tech.html
220217:03/11/30 22:51
>>218,219
ありがとうございます
218さんに紹介していただいたソフトはかなりよかったのですが
VBからの使用を考えると、もうちょっとって感じでした。すみません。
で、そのヘルプに参考リンクとして記載されてた
http://www.technical.or.jp/handbook/
のフリーのフォントを使うか、それか微妙に高さが足りないのが気になるのと
面白そうだってのもあるので
仕様をみつつ自作してみようかと思います。
ありがとうございました!
>>220
ただバーコードは作っても
それを読む機械が高いからテストできないんだよなー
出力したものを画像として読み込んで
正しいバーコードかを解析するアプリかサイトあったらなーと思います。
スレ違いスマン
222PC初心者101:03/12/01 09:54
メールをくださった方。
ご連絡お待ちしております。
よろしくお願いいたします。

>>222
あれからだいぶ日が経つのに、ずいぶん余裕あるなぁ。
>>221
最近のプリンタだと大丈夫だとは思うけど、バーコードて結構デリケートだからね。
印刷の都合で線の太さの比率がおかしくなったりして、昔プリンタによってだめだったことがある。

バーコードの基礎知識はキーエンスあたりに読み物があったように思うので、一度読んでみといたほうがいいよ。
あと、バーコードの種類によってはそれほど高くなくても、リーダはあるよ。
キーボードにつけるタイプで数万。
>>224
安いとこだと1万ちょっと。
でも買ってもテスト以外に使い道がみつからないので
買うのを躊躇してしまう。
5千円くらいなら買うんだけど、この差が貧乏人なのか(涙)
>>225
必要経費だろ?
最低限の検証はしようよ。
>>225
> でも買ってもテスト以外に使い道がみつからないので
バーコードバトラー。

携帯自作ゲーム機としてどうぞ。
(つーか、上位機種ならマジでテトリスぐらい出来る)
>>227
それってディスプレイ付きのやつでDOSで開発するやつ?
1台4〜50万しない?
買わねーw
229デフォルトの名無しさん:03/12/01 13:48
教えてください!!
VB6で英語表記のフォント名を取得したいのですが、どのようにしたらよいのでしょうか?
Illustrator にスクリプトでフォント設定を行おうとしているのですが、設定するフォント名は英語表記のものでないとだめみたいなんです。
"MS ゴシック" の場合は、"MS-Gothic" という具合に・・・
どなたか、英語表記のフォント名の取得の仕方を知っている方はいらっしゃいますか?
230デフォルトの名無しさん:03/12/01 14:51
10進数⇔2進数を相互変換してくれる便利なAPIは無いですか?
>>230
そのテーマは普通宿題じゃないか?
それなら自分でやったほうが良いぞ。
2進の文字列欲しければ、簡単にできるからいらないだろ?
普通に手計算で割っていくロジックをそのまま文字列連結してけばOK。

逆はそのままn乗を賭ければいいだけだし。
自作のプロセスヴューアを作ってるのですが、
タスクマネージャ等で表示されるようなプロセス名を指定して、
そのプロセスの実行ファイルのフルパスを取得するにはどうすればいいでしょうか?
234デフォルトの名無しさん:03/12/02 09:07
教えて下さいませ。
Accessで顧客のデータ管理をしていましたがあまりにもデータが大きくなりすぎた
のでSQL Serverに乗せかえることになりました。
ですが、レポートの数も多いのでDataReport等で作り直すより、できればそのまま
Accessのレポートを使用したいのです。
そこで、ADOのレコードセットのデータをAccessのレポートで使用できないかなぁ
とか思ってるのですが。
そんなことはできるのかと。。。?
XPとかでタスクトレイのアイコンから
「ポッ」とかいう音出しながらメッセージ表示するにはどうすればいいの?
236143:03/12/02 14:59
>>236
何に対するレスのつもり?
>>236
「ポッ」とかいう音出しながらメッセージ出ないぞ!
239デフォルトの名無しさん:03/12/02 15:28
すいませんが、教えてください。
FORM全体を画像として保存する方法を
どなたかご教授してくれると
とてもありがたいです。
240143:03/12/02 15:32
ヽ(°▽、°)ノエヘヘヘヘ
242デフォルトの名無しさん:03/12/02 16:29
>>241
ありがたき幸せ。
試してみます。
フォーカスを受け取らないコントロール(ボタン等)って
簡単に出来ますか?
>>243
GetFocusでどっかにSetFocusしちゃえばいいんでない?
なんかヘンなことになりそうだけど・・。
受け取らない=フォーカス動かない。
なので、どっかにSetFocusするのはダメなんです・・・
>>243
フォーカスしたくないコントロールをフレームコントロールの中に入れる。
フレームコントロールのプロパティで、
Enabled = False
とする。
フレームの線が気になるなら、プロパティで線の表示を消せばよい。
>>246
それだとボタンは押せなくなっちゃいますね・・・
>>247
エエェェ。。。
ボタンおしちゃうのぉ・・・
249163:03/12/02 18:59
>>248
あたりまえだろ。
250デフォルトの名無しさん:03/12/02 19:00
なんのためにフォーカスを受け取らないように
したいのかが良く分からないけど、
TabStopプロパティをFalseにするってのは?
>>250
TabStopをFalseにすると、フォーカスは移りませんが、
フォーカスが元に戻らず、TabIndex=0のコントロールに
行ってしまいますね・・・

やっぱり、そう簡単には出来ないですかね・・・
>>247
押すという事はマウスでクリックという事ですよね。
クリックできるという事は当然フォーカスが移動しないとできませんよね。
フォーカスってそういうもんでしょ。
何をしたいのかもう少し詳しく書けば、良い知恵を授けてくれる人はいると思うんですけど。
253デフォルトの名無しさん:03/12/02 19:18
ソーダソーダ!

Focus無しのボタンをオスナ!
DelphiだとTBitButtonとかあるんだけどなあ。
TSpeedButtonだった
256143:03/12/02 19:39
じゃあ、ラベルかなんかをボタンの代わりにすれば?
>>256
あー、そんな感じのいいかもしれんね。
258252:03/12/02 20:10
なるほど、そういう事がしたいんですか。
だったら、フォーカスを取得できるすべてのコントロールの
LostFocus イベントには、自分自身の参照を変数に保存するコードを書きます。
フォーカスを移動したくないコントロールの GotFocus イベントや
Click イベントには、先に変数に保存してあるコントロールの参照を利用して、
SetFocus するコードを書きます。
今、頭に思い浮かんだままに書いたんですけど、こんな感じでできないですかね。
http://www.playemu.com/cgi-bin/forum/psx/patio.cgi?mode=view&no=31
変なヤシキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
260デフォルトの名無しさん:03/12/02 20:58
ボタンひとつでサイトの入力フォームにCSVをコピーできるソフトをつくりたいのですが、
どうゆう物を参考にしたらいいか教えてください。
261デフォルトの名無しさん:03/12/02 21:03
>>260

書店のVB入門書。
これ最強。
262252:03/12/02 21:07
>>243
コード書いてみましたよ。
フォームに、テキストボックス2つとコマンドボタン1つを配置し、それぞれText1、Text2、Command1 とする。
Command1 が、フォーカスを取得しないコントロールとする。
Command1 のプロパティ設定で、TabStop を False 、
同じく、TabIndex を 0 以外の数字にする。(←重要)
フォームに以下のコードを記述する。

Dim objReturnFocus As Object 'コントロールの参照保存用

'テキストボックス1(Text1)がフォーカスを失ったとき
Private Sub Text1_LostFocus()
Set objReturnFocus = Text1
End Sub

'テキストボックス2(Text2)がフォーカスを失ったとき
Private Sub Text2_LostFocus()
Set objReturnFocus = Text2
End Sub

'コマンドボタン1(Command1)(フォーカスを取得したくないコントロール)
'がフォーカスを取得したとき
Private Sub Command1_Click()
objReturnFocus.SetFocus
'---------------------
'以下に処理コードを書く
'---------------------
End Sub
263デフォルトの名無しさん:03/12/02 22:17
>>262
そこまでするなら、キーボードフックした方がキレイなソースになるよ。
やりたいことは何でもできるし。
264デフォルトの名無しさん:03/12/02 22:39
コンパイルしたものを戻すのはなんていうのですか?
265デフォルトの名無しさん:03/12/02 22:39
逆コンパイル、デコンパイル
クラック
267143:03/12/02 22:54
リバースエンジニアリング
>>265 昔風
>>266 割れ厨
>>267 今風

‥‥と、ひととおり揃いました(w。
「おや?ハッキングが無いようだが」
「そんなもの、誤用です」
270143:03/12/03 11:19
DTPickerを使いたいなぁと思ったのですが
どうしても日付が入った状態になってしまいます。
なんとか日付が入らない状態も表したいのですが
どうしたらいいですか?
例えばDBから取得した日付がnullの場合などです。
>>270
CheckBoxプロパティ
272143:03/12/03 13:29
>>271
thx.
確かにそれっぽいですね。
いいことおもいつきましたよ。
MonthViewを使えばいいんです。どうでしょ?
273143:03/12/03 13:37
ガ━(゚Д゚;)━ ン !!!
VB5には無かった。
PictureBoxに表示されている二値画像(曲線)を、
マウスのD&Dに合わせて、前後の点を補間しながら
変形させるプログラムを書きたいのですが、
どうすればいいのかよくわかりません・・・。
どなたか教えていただけないでしょうか。
よろしくお願いします。
>>274
どこがわからないかとか、どこまでできたかって書かないと。
レスありがとうございます。

まだ全くできていないのですが、
マウスで線を描いて、そこにいくつか特徴点を付け、
その特徴点をD&Dすることで画像を変形させるような事を考えています。
Line Input #Flno, Txt
List5.AddItem (Txt)
Loop Until EOF(Flno)
Close #Flno


このようなファイルを読みこむプログラムを作っているのですが、
1行が1024バイト以上のテキストだと
それ以上の部分は読みこまなくて次の行にいってしまうのです
String型が1024バイトまでなのかもしれないのかな?

1024バイト以上の部分はどうやって読みこめばいいのでしょう?
278143:03/12/03 16:40
リストボックスだからじゃない?
279デフォルトの名無しさん:03/12/03 16:48
239です。

formにピクチャボックスとラベルで
グラフを書いてます。
ピクチャボックスだけ保存すると
ラベルが写らず、

241氏にスナップショットならどうだと
教えてもらい、やってみたんですが、
保存時にダイアログを立ち上げるために、

画像にダイアログが写ってしまって、
どうにもなりません。
コマンドボタンをおして、ダイアログを立ち上げて
保存するのですが、うまく行く方法をお教えください。
お願いします。
280277:03/12/03 16:57
>>278
テキストボックスにコピーしても
1024バイトしか読みこんでないので
Line Input #Flno, Txt
だと1行最大1024バイトまでしか読みこまないと思うのですよ
1024バイト以上を読みこむにはどうやればいいのかな?と
281デフォルトの名無しさん:03/12/03 17:05
>>280
手元に環境ないからヘルプもしらべてないけど、
Len(Txt)、LenB(Txt)の値は?
Debug.PrintでTxt出力した場合は?
282277:03/12/03 17:11
>>281

msgbox Len(Txt)を間にいれると

24
167
1024 ←この行のデータが途切れる
1
283デフォルトの名無しさん:03/12/03 17:19
Line Input自作しちゃえば?w
1バイト読みで改行コードまで取る。
284143:03/12/03 17:26
Txt は
dim Txt as String
?
285143:03/12/03 17:29
Private Sub Command1_Click()
Dim buff As String
Open "c:\hoge.txt" For Input As #1
Do Until EOF(1)
Line Input #1, buff
MsgBox Len(buff)
Loop
End Sub

余裕で読めたよ
>>285
そりゃあ、読めるでしょ。
Len 関数がオーバーフローしない限りね。
277氏が言っているのは、文字数のことじゃないと思うのだが・・・
286です。
私の勘違いです。
Len で文字数が取得できるという事は、 buff に全データ読み込まれてるってことですよね・・・
すんまそ・・・>285
288デフォルトの名無しさん:03/12/03 19:43
ハガキのレイアウトを保存したいのですがどうしたらいいでしょうか?
今自分がやってるのはリッチテキストBOXの上にピクチャーBOXとテキストBOXを置いて
そのピクチャーBOXとテキストBOXを適当な位置に移動しCommondialogを利用して保存し、その保存したのを読み込むと
保存した通りのように開くというものです。
わかりにくい文章ですが簡単に言いますと自分で作成したレイアウトを保存して、また読み込むと
ピクチャーBOXやテキストBOXが同じ位置で読み込まれてるということです。
どなたかご教授おねがいします。
>>288

PictureBox や TextBox のLeft/Top/Width/Height を保存しておけばよいのでは?

1つの保存ファイルではがきの宛名や文章もレイアウトも保存したいのなら
そういうフォーマット(保存内容の形式)を自分で決めてみるのも良いかも。

290143:03/12/03 19:55
いいってことよ( ´ー`)y-~~
291277:03/12/03 20:18
>>285
普通のテキストならそれで読めるんだけど、
改行コードを間にはさまず1024文字(1024byte)以上の行があると
1024byte以上の部分が読みこまれない
292288:03/12/03 20:23
>>289
ありがとうございます。
293143:03/12/03 20:24
>>291
??
読み込まれるよ。1行1400文字くらいでやってみたけど。
294143:03/12/03 20:28
Stringは2GbyteまでOKみたいだよ。
>>291
通りすがりのあてずっぽうだけど...
1025byte 目が &h1a なんてことはないよな。
296277:03/12/03 22:07
msgboxの位置が間違ってた _| ̄|○スミマセンスミマセン
297143:03/12/03 22:11
いいってことよ( ´ー`)y―┛~~
>>277
285は、1025byte以上読める。
277は、1024byteまでしか読めない。
リストボックスコントロールは、1024byteまでなんですね。
278で、143氏が言っているとおりですね。
コンボボックスコントロールも、1024byteまでみたいです。
299デフォルトの名無しさん:03/12/03 23:04
@Microsoft ADO Data Control 6.0(OLEDB)
AMicrosoft DataGrid Control 6.0(OLEDB)
で、@を DC, AをDG としています(名前を)。

で、ADOのRecordsetをRsとすると、

Set DC.Recordset = Rs
Set DG.DataSource = DC 又は Set DG.DataSource = DC.Recordset

としていますが、データグリッドに何も表示されません。
テキストボックスのDataSourceをDCにしてみると、データが表示されるので、データコントロール
はきちんと設定されているようなので、データグリッドの設定がまずいのかと思ってます。

どうしたらデータグリッドに表示されるんでしょう?
テキストボックスってOLEDB使えたっけ?
DAOは使えたような気がするけど。
お助け下さい ≦(_O_)≧

■VB6+SP5+WinXP
■MSWinSCK.ocxが正常に動作しない。
winsock ocxを使ってFTPクライアントツールを作成しているのですが、
Win2000では正常に動作するのに、WinXPで実行すると正常に動作しません。

FTP通信なので、winsockコントロールを同一フォームに2つ配置(@、A)し、
@をFTPコントロール用にport.21で接続、connect/pwd/list等やりとりを行い、
AをFTPデータ通信用にPASVでデータポートを取得し、接続、listやファイルダウン、
送信等のデータのやりとりを行うように作りました。

Win2000では設計したとおりに動作するのですが、WinXPではPASVで取得したポートに接続した後、
LISTコマンドを実行しても、データ用winsockコントロールのDataArrivalイベントが発生せず、
設計したとおり、動作しません。

何かWinXPではwinsockコントロールが使えない等、あるのでしょうか?
よろしくお願いいたします。
302デフォルトの名無しさん:03/12/04 10:02
そもそも、VB6ってXPでの動作保障ってあるの?
>>302
 Σ( ̄□ ̄; コンパイル後の実行ファイルでもダメですか?
 試してみたのですが、やはり動作しなかったです…。
 WinXPにインストール自体は正常にできたのですが...
304143:03/12/04 10:17
PASVだったらファイアウォールは関係ないよなー
305301:03/12/04 10:24
>>304
 一応ファイヤーウォールはない環境でテストしてるのですが。
 (テスト用にローカルにも鯖立ててるのですが)
 PORTコマンドを使うのに、自身のポート番号を得るAPIを使うより
 PASVコマンドの方が楽だったもので。
306143:03/12/04 10:28
>>305
XPはデフォルトで自身が持ってるファイアウォールを起動してる場合があるよ。
ネットワークの詳細設定参照。でもPASVなら関係ないよなー
307301:03/12/04 10:40
>>306
一応ローカルネットワークのプロパティを確認し、
ファイヤウォールが起動していないことを確認してます。
その他、QoSパケットスケジューラーも無効化してます。
でもダメです il||li _| ̄|○ il||li
308143:03/12/04 10:50
>>307
おいらもまったく同じもの作ったことあったので
ソースひっぱりだしてコンパイルしてXPで実行してみたけど
問題なかった。何が違うんだろうね。
309301:03/12/04 10:52
う―ん。 対したソースではありませんが、公開しちゃいます(汗)
http://spcar.info/onFTP/onFTP_source.lzh
無断転用なコードもあったりなかったり、デバック用に怪しい情報書かれていたり
無かったりしますが、もう手に負えないから、お願いします。
WinXP環境でVB6使ってる方、実行してみてください!!

・レジストリは使ってません。
・EXEで実行時はonFTP.iniを、プロジェクトで実行時は!onFTP.iniを参照します。
・FTPサイトの設定は.iniを編集して下さい。
・DLL/OCXくっつけてますが、SYSTEMディレクトリにはコピーしません。

よろしくお願いいたします。
310143:03/12/04 11:24
実行してみたいけどスパイウェアだったらどうしよう
((((;゚Д゚)))ガクガクガクブルブルブル
311301:03/12/04 11:32
>>310
 Σ( ̄□ ̄; そうか! その手があったか!(笑)
 ってかソース付きなんで、不安なら読んで見てください。
 添付のDLLとOCXは削除しても実行できるはずだし。
 (W2K+VB6インストール環境で確認)
 ってかFTPとは関係ないコードが8割強です(ぉぃ)
 まぁ 皆さん当たり前に作っていると思われるプロシージャばかりですが。
 ※タスクトレイやファイルチェックやレジストリやらなんやら
 言ってしまえば、ウチの力量バレバレ。
312143:03/12/04 11:37
>>311
君を信じて実行してみたけど2000でもXPでも
LISTコマンドのあとで125が帰ってきてエラーになっちゃうYO!
313143:03/12/04 11:42
あっ。125はいいのか。なんでリストでないんだろう。
314301:03/12/04 11:42
>>312
テストありがとうございます!
もしよろしければ下記のファイルを入れ替えて頂ければと。
http://spcar.info/onFTP/bas_ftp.bas
リターン"125"に対応しました。
315301:03/12/04 11:46
>>313
125または150が帰ってくると、正常終了と書いてあります>FTPレスポンスコード
ウチのテスト環境が150返してくる鯖だったので、150しか書いてませんでしたが、
単純にselect case の case "150" を case "150", "125" としただけです>>314のコード。
316143:03/12/04 11:49
こっちでかってに125追加しちゃったよ。
そしたら日本語のファイル名のとこで型違いエラーがでた。
そこもすっ飛ばすとXPでもリストでたよ。
317301:03/12/04 11:55
>>316
テストありがとうございます。
そうですか、XPでも動きましたか。となるとウチのXPマシンがおかしいん可能性が大…。
ちなみに、editionは HOME ですか? PRO ですか?
添付のDLL/OCXはカレントディレクトリのままでしょうか? それとも削除されましたか?
是非教えてください。 よろしくお願いいたします。

p.s.まだ作ってる途中なので、日本語ファイルの処理はしてませんでした(汗)
318143:03/12/04 11:56
Proだよ。DLLやOCXはそのまま。
319143:03/12/04 11:58
でも、そのXPマシン。VB6が入ってる。
320301:03/12/04 12:01
私のXPはHOMEなのですが、後は一緒だと思います。
もちろんVB6もインストールしてますし…。

とりあえず自分のマシン(XP)をWinXPのクリーンインストールから
やり直してみます!

143さん、ご協力深謝!
本当にありがとうございました≦(_O_)≧
321143:03/12/04 12:22
いいってことよ( ´ー`)y-~~
322デフォルトの名無しさん:03/12/04 16:21
質問です。
VB6.0でサブフォームを表示する方法ってありますか?
(フォームの中にフォームがある。)
ACCESSのサブフォームと同じような動きを実現したいのですが。
323デフォルトの名無しさん:03/12/04 16:27
>>322
有る。

キーワード 「MDI」 でググレ

それかアプリケーションウィザードで「MDI」を選択すれば簡単に出来る。
MDI
325デフォルトの名無しさん:03/12/04 17:19
プロジェクト内のForm一覧を取得し、一覧表示する必要があるのですが
どのような方法が考えられるでしょうか? もしくは可能なのでしょうか?
>>325
Forms()とForms.Countを使って、Forms(*).nameをListBoxに追加していけば
可能だと思いますが。
327デフォルトの名無しさん:03/12/04 17:44
For I = 0 To Forms.Count
Debug.Print Forms(I).name
Next

このコードでチェックしてみたところ、プロジェクト内にFormは10以上あるのですが、
I=1の時点で インディックスが有効範囲にありません になってしまいます。

MDIを使用していることとなにか関連があるのでしょうか?

I=0ではMDIの親フォームの名前が表示されます。
のこりのFormはMDIChildFormと単独のFormが数点あります。
328デフォルトの名無しさん:03/12/04 17:45
>>325
326さんの方法で可能だが、LoadされているFormのみ。
LoadされていないFormも取得するなら・・・Projectファイルを
テキストとして読込んで読み出すしかないかもしれない。
329301:03/12/04 17:47
>>327
FormsのMSDN(ヘルプ)を開いて、関連項目をみれば、
MIDForm関連の記述があると思います。
330328:03/12/04 17:49
>>327

For I = 0 To Forms.Count

↑IndexがゼロからなのでLoadされているForm数は-1しなくちゃダメ

っていうか、1個しか無いみたいだから、子FormはLoadされていないのでは?

PictureBoxの画像を自由変形させたいのですが
どうすればいいですか?
332デフォルトの名無しさん:03/12/04 18:12
>>331
PictureBox自身にはその機能はない。
VBにもその機能はない。
APIであなたのいう自由変形ができるかは微妙。どう変形するかによる。
安上がりなのは、コントロールを買うことでは?
333328:03/12/04 18:21
>>331

>169 で有ったように「 SetWindowLong 」を使ってPictureBoxを
実行時にマウス操作でサイズ変更できるようにして、サイズ変更時に
PictureBox画像もリサイズするようにしておけば可能。

この説明で分からなければ、あとはググってくださいませ。
>>333
自由変形ってその程度なのか?
ゆがんだり、もりあがったりみたいなことじゃないの?
335331:03/12/04 18:36
>>332,333,334
レスありがとうございます。
PictureBoxの画像をこのような感じに変形したいのですが、
なんとかなりますでしょうか?

ttp://members.jcom.home.ne.jp/morita-2/pic/jpeg/chap2-5/fig5-83.JPG
>>335
VBだと曲線はないかな?
線分の各座標点を自力で計算して、Polyline API呼び出し。

VBの円、楕円だけじゃ表現できないでしょ?
点の集合で考えれば上のAPIと同じだと思うけど。

塗りつぶしとかまで考えたら結構めんどくさそう。
337143:03/12/04 18:44
>>335
その手のソフト一回作ってみたいなぁ。
338328:03/12/04 18:57
>>334
確かにそのとーりでした。頭まで四角いなオレってば

>>335
ドロー系やね。面白そうだけど面倒そう
>336さんのと、「 PolyBezie API 」もいいかも。

VB(6以前)って「配列のようなもの」の最初が0だったり1だったりするから嫌い。
>>339
確かに。
Dim a(1 to 10) as hoge
って書くようにすれば統一できるのかな?・・・・と。だめかな?
配列は Option Base でどうにでも出来るけど
コレクションは 0 で始まったり 1 で始まったり。
んな事言ってたらどの言語にもツッコミ処はある訳で・・・
VBにそういうのが多いのは確かだけど。
すみません、ActivX Dllのフォームを呼ぼうとすると
以下のようなエラーがでるんですが
ぐぐったんですけど全然解決できません(泣

MSDNも調べたんですが同じエラーが出てる例がないんです。
なにか知っている方居ませんか??

実行時エラー '374'

----------------------------------------------------------------------
メッセージ:コントロール 'VB.UserControl' をアクティブ化できませんでした。このコント
ロールにこのアプリケーションとの互換性がない可能性があります。アプリケーションで提供され
たバージョンのコントロール を使用しているかどうか確認してください。
すみません

VB6はでSP5を当ててまつ
OSはXPproです
345328:03/12/04 22:47
>>343=344

ググルと色々有りますが・・・
そのActivX Dllを今の環境でリコンパイルしてみては?
もしソースが無いのであれば自分の環境を変えてみるとか。

例えば、ActivX DllがVB5製だったら自分もVB5にするとか。

もうちょい状況が見えないと正直ワカラン。スマソ

参考:ttp://www.intranetjournal.com/ix/msg/46403.html
    ttp://support.microsoft.com/default.aspx?kbid=258192
おたすけください

Option Explicit
Dim Flg As Boolean 'イベントの連鎖防止フラグ
Private Sub Form_Load()
Flg = False 'イベントの連鎖防止フラグ初期化
End Sub
Private Sub Text1_Change()
Dim intPoint As Integer
'イベントの連鎖防止
If Flg = True Then Exit Sub Else Flg = True
'文字列中から特定の文字列(ここでは"!")を検索し,存在する場合は選択状態にする
intPoint = InStr(Text1.Text, "!")
If intPoint <> 0 Then
Text1.SelStart = intPoint - 1
Text1.SelLength = 1
End If
Flg = False
End Sub

要は入力に変化があった場合に自動的に特定文字列を選択するようにしたいんですが、
ふつーにTextBox上でDeleteキーを押下すると、何故か左端の特定文字列まで消えてしまう・・
(例)Text1.Text = "abcdefg!hijklmn!opqrstu!vwxyz"の場合
キーボード入力によりgとhの間の"!"が選択される
ここでマウス等で選択状態を外し、例えばmの左隣にカーソルを移す
Deleteキーを押すと、mは正常に削除されるが、同時にgとhの間の"!"も消え、nとoの間の"!"が選択状態になる
Deleteキー以外は想定通りに動くので何が何だか・・
ググったりMSDN見てみましたがそれらしきトピはありませんでした
SelLengthの部分をコメント化したらgとhの間の"!"は消えなくなる(もちろん"!"は選択されない)
のでこの辺が怪しいとは思ってるのですが・・
環境はWinXPPro+VB6.0SP5。Win2000+VB4.0でも同様の現象です
よろしくおねがいします
>>346
>Deleteキーを押すと、mは正常に削除されるが、同時にgとhの間の"!"も消え、nとoの間の"!"が選択状態になる
いや、Delキー1回だけ押せば m しか消えんぞ。
Delキー2回目で、g と h の間の ! が消えて、n と o の間の ! が選択状態になる。
WinXP Pro + VB6SP5
348デフォルトの名無しさん:03/12/05 09:21
>>330

色々と調べてみたのですが、やはりFormsではLoad済のFormしか取得できないようです。

今回の趣旨としてはあるプロジェクト内にあるForm群のなかから、
exeの実行されるクライアント上のiniファイルもしくはレジストリに記述してある
実行可能Formのみを実行可能にしたかったのです。

Form一覧を予め記述しておくことで解決するのですが、記述なしに
対処できないかと思い質問させていただきました。

質問に答えていただいた方々、ありがとうございました。
349301:03/12/05 09:32
>>348
.vbpや.vbgがあるなら、そのファイルを読み込んで、
登録されている.frmファイルを列挙する方法はどうでしょうか?
350デフォルトの名無しさん:03/12/05 09:41
>>349
実行環境にVBのプロジェクトファイルを配布するの?
お洒落じゃないよ。

>>348のやり方でしょうがないんじゃないの?
351328:03/12/05 11:44
>>348
何がどうしたいのか、ハッキリとは分かりませんが、
そんなにForm数が多くなければ起動時に一度全部
Loadして(Showはせず)数えて処理してから不要な
FormをUnloadしちゃって・・・なんていうのもアリかも。

Formが多いとかなり重くなりそうですがw
どちらにせよ解決策があって良かったですね。
352328:03/12/05 11:52
>>346
ホントだ。一見フシギ現象ですね
追っかけてみるとどうもDELキーの時だけ2回、Changeイベントが発生している模様。

KeyDownとかKeyUpとか使うしかないのかなぁ
353328:03/12/05 12:39
>>346
これだとウマク動くけど・・・どうかなぁ


Option Explicit
Dim dFlg As Boolean

Private Sub Form_Load()
dFlg = False 'DeleteKeyの連鎖防止フラグ初期化
End Sub

Private Sub Text1_Change()
Dim intPoint As Integer
If dFlg Then Exit Sub
'文字列中から特定の文字列(ここでは"!")を検索し,存在する場合は選択状態にする
intPoint = InStr(Text1.Text, "!")
If intPoint <> 0 Then
Text1.SelStart = intPoint - 1
Text1.SelLength = 1
End If
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then dFlg = True
End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then dFlg = False: Text1_Change
End Sub

354328:03/12/05 12:52
>>346
カンタンな補足だけ。

どうもDeleteキーの削除有効期間?がTextChangeイベントが終わるまで
続いているようだったので、KeyDownとKeyUpでフラグを使ってみました。
順番としては、

1:TextBoxから任意の文字を消す(例:mの左でDeleteキーを押す)
2:KeyDown発生(Deleteキーの時だけFLGをON)
3:任意の文字がTextBoxから消える
4:TextChangeイベント発生(FLGがONなら無処理で終わる)
5:KeyUp発生(Deleteキーの時だけFLGをOFF→TextChangeを呼ぶ)
6:普通にTextChangeイベント内の処理が行われる(!が選択される)

と、こんな流れです。参考になれば。。

ゴチャついててスマソ
355デフォルトの名無しさん:03/12/05 15:44
すみません、教えてください。
ワーカースレッド内部でmdbを最適化したくて
CDaoWorkspace::CompactDatabase(lpPath,tmpPath);
という命令を書いています。
引数には思う値がきちんと通っているのですが
なぜか二度目で落ちてしまいます。
具体的にはvoid PASCAL CDaoWorkspace::CompactDatabase内部の
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
DAO_CHECK(pDaoState->m_pDAODBEngine->CompactDatabase(V_BSTR(&varSrcName), V_BSTR(&varDestName),
COleVariant(lpszLocale, VT_BSTRT), COleVariant((long)nOptions),
lpszPassword != NULL ? (VARIANT)COleVariant(lpszPassword, VT_BSTRT) :
_afxOptionalVariant))
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
ここでAccess Violationで落ちてしまいます。
気になる点は1度目は
if (pDaoState->m_pDAODBEngine == NULL)がtrueと評価され
InitializeEngine();が実行されると言う点です。
仕方なく無理やり二度目もInitializeEngine();を実行しても同じようにエラーがでました。
なにか根本的に理解が足りていないのでしょうか?
教えていただけませんか?宜しくお願いします。
356355:03/12/05 15:49
>>355
VBとVC両方開きながら書き込んだら思いっきり誤爆してしまいました。
申し訳ありません。
GetForegroundWindowとGetActiveWindowの違いって何?
358328:03/12/05 17:58
>>357

GetActiveWindow・・・この関数を呼び出したスレッドが持つ全てのウィンドウの内、
アクティブウィンドウのハンドルを取得する。スレッドがアクティブウィンドウを持た
ない場合、NULLが返される。アクティブウィンドウの概念は、スレッドごとに存在する。
Windowsが管理している全てのウィンドウの内、ユーザの操作対象になっている
ウィンドウを取得したい場合は、GetForegroundWindowを使用しなければならない。

GetForegroundWindow・・・Windowsが管理している全てのウィンドウのうち、ユーザ
の操作対象になっているフォアグラウンドウィンドウのハンドルを取得する。
フォアグラウンドウィンドウは、デスクトップにつき1つのみ存在する。
取得したウィンドウハンドルが示すウィンドウがトップレベルウィンドウであるとは
限らない。現在アクティブなアプリケーションのメインウィンドウを取得したい場合、
例えばGetWindow関数などを使用しなければならない。



・・・ググってくれ。
359デフォルトの名無しさん:03/12/05 22:27
どなたかテンキーのKeycode番号を教えてください
←、↑、→、↓の順に、37,38,39,40なのは分かるのですが。
よろしくおねがいします
360デフォルトの名無しさん:03/12/05 22:41
>>359
Callback手続きでウインドウメッセージをダンプすれば良いだろう。
あふぉか?
361328:03/12/05 22:45
>>359

 7   8   9
(103) (104) (105)

 4   5   6
(100) (101) (102)

 1   2   3
(97)  (98)  (99)

     0
    (96)

その他のコードは全て以下のコードで「自分で」調べてくれ

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Me.Caption = KeyCode
End Sub



・・・釣られてんのかな?オレ
362デフォルトの名無しさん:03/12/05 22:52
>>361
どうもありがとうございます。
>>360
nyで落としたものでヘルプ使えないんですよ
そもそもCallbackてのも分かんない様なペーペーなもんで。
>>360-361
見事に恩を仇で返されてしまったよな。(つД`)
傍観者の漏れまで悲しくなってしまった。
364328:03/12/05 23:02
>>362

> nyで落としたものでヘルプ使えないんですよ

貴方にひとこと云っておく。
不正利用をしている者が正規ユーザでないことを理由にして
ヘルプが見れない等という理由で公な掲示板で質問するな。

あと味の悪いことしちゃったじゃねーか。
・・・短い間でしたが、サヨウナラ。
                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U  キコキコ
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎
365143:03/12/05 23:07
まあ、いいじゃなか( ´ー`)y-~~
366デフォルトの名無しさん:03/12/05 23:26
IEコンポーネントを使ったソフトを作っているのですが、
VBアプリから「インターネットオプション」のダイアログを表示させる
ことはできるんでしょうか?
>>362
なんつーか、こういうの見ると、京都警察は正解だなって思ってしまう。
本当は京都警察嫌いだけど、けど・・・
368デフォルトの名無しさん:03/12/05 23:56
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < >362 通報しますた!!
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д`) < しますた!!!
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚)  シマスタ!!
    / ./     ( ヽ、     / /⌒> )     ゚(  )−
   (  _)      \__つ  (_)  \_つ     / >   (・∀・)シマスタ!! .マスタ!! .スタ!!
369デフォルトの名無しさん:03/12/06 00:15
たかが割れくらいで過剰反応するなよw
370デフォルトの名無しさん:03/12/06 00:18
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < >362 通報しますた!!
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д`) < しますた!!!
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚)  シマスタ!!
    / ./     ( ヽ、     / /⌒> )     ゚(  )−
   (  _)      \__つ  (_)  \_つ     / >   (・∀・)シマスタ!! .マスタ!! .スタ!!


371デフォルトの名無しさん:03/12/06 00:18
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < >369 通報しますた!!
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д`) < しますた!!!
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚)  シマスタ!!
    / ./     ( ヽ、     / /⌒> )     ゚(  )−
   (  _)      \__つ  (_)  \_つ     / >   (・∀・)シマスタ!! .マスタ!! .スタ!!
372デフォルトの名無しさん:03/12/06 00:25

      3ヵ月後 >362 に手紙が届きますた・・・
          _____
         / ヽ____//
         /   /   /
        /   /   /
        /   /   /
       /   /   /
       /   /   /
      /   /   /
       ̄ ̄ ̄ ̄ ̄





       | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
       |                    |
       |                    |
       /    ̄ ̄ ̄ ̄      /_____
       /              /ヽ__//
     /     出頭セヨ      /  /   /
     /              /  /   /
    /   ____     /  /   /
   /             /  /   /
 /             /    /   /
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/   /   /
373143:03/12/06 00:27
>>362
趣味でやるならCにしとけ
今、>>369は「クールな俺ってかっこいい。俺ってワルだしぃ」と思っている。
375デフォルトの名無しさん:03/12/06 01:00
     ∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
    < >369 なんだってーーーーーーーーーー!!!!!        >
     ∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨
            ,. -─- 、._               ,. -─v─- 、       _
            ,. ‐'´      `‐、          , ‐'´        `‐、, ‐''´~   `´ ̄`‐、
       /           ヽ、_/)ノ   <         ヽ‐'´            `‐、
      /     / ̄~`'''‐- 、.._   ノ   ≦         ≦                ヽ
      i.    /          ̄l 7  .....1  イ/l/|ヘ ヽヘ ≦   , ,ヘ 、         .i
      ,!ヘ. / ‐- 、._   u    |/  / ̄l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、       |
.      |〃、!ミ:   -─ゝ、    __ .l /  ...レ二ヽ、 、__∠´_ |/ | ! |  | ヾ ヾヘト、    !
      !_ヒ;    L(.:)_ `ー'"〈:)_,` /.|\  riヽ_(:)_i  '_(:)_/ ! ‐;-、   、__,._-─‐ヽ. ,.-i、
      /`゙i u       ´    ヽ  !..|(・)  !{   ,!   `   ( } ' (:)〉  ´(:.)~ヽ  |//ニ !
    _/:::::::!             ,,..ゝ!...|⊂⌒.゙!   ヽ '      i゙!  7     ̄     | トy'/
_,,. -‐ヘ::::::::::::::ヽ、    r'´~`''‐、  /....| |||||||||!、  ‐=ニ⊃   / !  `ヽ"    u    i-‐i
 !    \::::::::::::::ヽ   `ー─ ' /  ......\ ヘ_ ..ヽ  ‐-  /  ヽ  ` ̄二)      /ヽト、
 i、     \:::::::::::::::..、  ~" /    .........\__..ヽ.__,./   //ヽ、 ー         / ゝ
 .! \     `‐、.    `ー:--'´       ./  .//イ;;:::::    //〃 \   __,. ‐' ./ / \
  ヽ \     \   /       ..⊂ (    ./  /i:::::.   //      ̄ i::::  / /
376346:03/12/06 01:47
>>353-354(328さま)
ありがとうございました。おかげさまでなんとかなりそうです。
またこのスレに戻ってくる機会がありましたらよろしくお願いします。
(もうこのレスすらご覧ではないとは思いますが。。)
>>369
Private Sub Form_Load()
   A = "C0-B2-84AA-84AA-84AA-84AA-7C-7C-83B3-7C-28-7C-DF-7C-81CD-7C-DF-" & _
    "7C-29-7C-83B3-7C-7C-84AA-84AA-84AA-84AA-CE-21-21-21"
   Tmp = Split(A, "-")
   For i = 0 To UBound(Tmp): Msg = Msg & Chr(Val("&h" & Tmp(i))): Next i
   MsgBox Msg
End Sub
378デフォルトの名無しさん:03/12/06 03:31
VB6LearningEditionでプログラムを作ってるんですが、
これで作ったプログラムってネットで配布できるのでしょうか。
>>378
ライセンスのことを言ってるんだったら、可。
ただし、対価は取っちゃだめ。
381デフォルトの名無しさん:03/12/06 12:31
厨な質問ですみません。
最近ひさしぶりにVBの開発に戻ってきたのですが、
VB6のMSDNライブラリってネット上では見れなくなったのでしょうか?
MSDNのページからさがしても.NETのものしか見つからないです。
もし見れるのなら、どなたかアドレスをお願いします。
382343:03/12/06 13:45
343です

>>345
なんかサービスパックを当ててない奴がいたので
パッチ当てさせてリコンパイルさせたら行けました。

スンマセンでした
383366:03/12/06 16:14
>>380
おおおおっ!すげーー。
ありがとーーー!!!
384デフォルトの名無しさん:03/12/07 21:29
Dim intPastWindowHeight As Integer
Dim intPastWindowWidth As Integer
Dim intPastListBoxHeight As Integer
Dim intPastListBoxWidth As Integer

Private Sub Form_Resize()
Form1.LogForm.List1.Height = intPastListBoxHeight + (Form1.LogForm.ScaleHeight - intPastWindowHeight)
Form1.LogForm.List1.Width = intPastListBoxWidth + (Form1.LogForm.ScaleWidth - intPastWindowWidth)
intPastWindowHeight = Form1.LogForm.ScaleHeight
intPastWindowWidth = Form1.LogForm.ScaleWidth
intPastListBoxHeight = Form1.LogForm.List1.Height
intPastListBoxWidth = Form1.LogForm.List1.Width
End Sub

のようなコードでフォームのサイズ変更によっての増減を、その中の
リストボックスにも反映させようとしてます。ですが、横幅はうまく行くん
ですが、高さがうまくいきません。伸ばすときは伸びず、縮める時だけ
急激に反映されて、プロパティの値がおかしいとエラーがてでしまい
ます。高さの方だけうまくいかないのは仕様なのでしょうか?
 また、うまくいきそうな方法を知っている方がいらっしゃったら教えて
ください。
385384:03/12/07 21:41
Dim intPastWindowHeight As Integer
Dim intPastWindowWidth As Integer
Dim intPastListBoxHeight As Integer
Dim intPastListBoxWidth As Integer

Private Sub Form_Load()
intPastWindowHeight = Form1.LogForm.ScaleHeight
intPastWindowWidth = Form1.LogForm.ScaleWidth
intPastListBoxHeight = Form1.LogForm.List1.Height
intPastListBoxWidth = Form1.LogForm.List1.Width
End Sub

Private Sub Form_Resize()
Form1.LogForm.List1.Height = intPastListBoxHeight + (Form1.LogForm.ScaleHeight - intPastWindowHeight)
Form1.LogForm.List1.Width = intPastListBoxWidth + (Form1.LogForm.ScaleWidth - intPastWindowWidth)
intPastWindowWidth = Form1.LogForm.ScaleWidth
intPastListBoxWidth = Form1.LogForm.List1.Width
End Sub

理屈は良く分かりませんが、たまたま上のようなコードになった所、
うまくいきました。とりあえず、ありがとうございました。
ですが、なぜこれでうまくいくのでしょう?・・・・・
386デフォルトの名無しさん:03/12/07 22:29
質問します。
mdbファイルの中のテーブルにOLEオブジェクトフィールドがありまして
bmpイメージを保存しています。
それをPictureBoxに表示しようとしたのですが、
「フィールドまたはデータメンバに連結できません。‘イメージ’」
ってエラーメッセージが出てしまいます。
表示するのにコツとか必要ですか?
387386:03/12/07 22:49
現在、adodcコントロール使ってPictureBoxと連結してます。
388386:03/12/08 08:55
だれか・・・・、よろしくお願いします。
389386:03/12/08 09:24
ググってみたんですけど、mdbファイルの中に置くのは
利用な方法でないみたいなんですね。

なので、外部ファイルにすることにしました。
(パクられるのが嫌なんですけど・・・)
ありがとうございました。
390386:03/12/08 09:25
>>389
× 利用
○ 利口
日曜の夜中に書いて、月曜の朝一にせっついても・・・。
まあ、MDBを余り肥大化するのは良くないよ。性能劣化が激しくなるし。
すみません、質問です。
変数Aのアドレスを、変数Bのアドレスに設定する方法を教えてください。
昔どっかで見たんですけど、忘れてしまい、検索してもわからなかったのです…。
VBにはポインタ変数はないと思うので、確か何かの関数を使ったような気が
するのですが…。
>>392
そんな事しないで下さい。
>>392
>>393の回答が全てです。
VBではそういうことはしない設計にするのが普通です。
どうしてもやりたいなら、ラップするクラスを作って参照をどこかに保持するとかかな?

元の文面だけでは、なんでそんなことが必要かわからないからこれ以上は回答できん。
395392:03/12/08 12:42
VBではやらないのが普通なのはわかっているのですが、やっぱり必要かと思ったので。
ええと、用途としては、フックをする際、lParamの値をMIMMAXINFO構造体変数の
アドレスに格納したかったからなのです。
フックするメッセージがWM_GETMINMAXINFOだけだったらよかったんですが、
他のメッセージも横取りして処理する予定なので…。
質問します。
Dim str As String
If str = A Or B Then
str = str & "hoge"
End If
こういう場合はどうすればいいのですか?
>396
質問の意図がわかんねー!!! と思ったら、条件の部分か。
A、B共に文字列変数だと仮定して、

If ((str = A) Or (str = B)) Then

でいいと思うんだけど?
>>396
If str = A Or str = B Then
399398:03/12/08 12:57
>>397-398
ハナ差でまけたぁ・・・
>>395=392

HookするところだけCで組んだら?
絶対その方が早いと思うけど



>>397-398
スゴイ!質問の意図を読み取るなんて
モレにはさっぱり分からなかった

>>392(395)

> VBにはポインタ変数はないと思うので、確か何かの関数を使ったような気がするのですが…。

隠し関数のStrPtrとかのことかなぁ?
M$さんも隠すくらいの関数だからもちろん無保証らしいけど。昔は使えたヨ
>>395
そういうアプリはVCとかDelとかで作る。
適材適所。
403デフォルトの名無しさん:03/12/08 13:19
↑訂正
If str = "A" Or "B" Then
>>403
どれの訂正かわからんし、何がわからないのかも判らない。

もしかして。”A"と”B”をびっと演算してstrに代入したいのか?
405396:03/12/08 13:23
>>397 >>398
ありがとうございます!
406392:03/12/08 14:14
ちょっと深くもぐってみたんですが見つからなかったので、参照渡し関数を宣言して
そこで処理しようと思います。lParamを使う分だけ宣言しないといけないのがネックですが、
時間がないので…。
明日完成していないといけないので、今回はこれで間に合わせますが、時間が出来たら
CでHookを作ってしまおうかと思います。2年近くCを触っていないので不安ですが、
リハビリついでにやってみようかと。
皆様ご教授ありがとうございました。

>401
VarPtrで取得したアドレスを、何かの関数で格納していた覚えがあるのですが、
はっきりとは覚えていないのです。
見た当時は、VBでアドレス代入なんてしないだろーと思って、スルーしてしまったんです…。
MoveMemoryとかではない…と思うのですが……。もしかしたらこれか?
>>406
さぶクラス化で検索してみれば?
VBでWindowsのメッセージループを使うときのコールバック関数を渡すのに使うよ。
408401:03/12/08 15:00
>>406(392)

> VarPtrで取得したアドレスを、何かの関数で格納していた覚えが (略)
> MoveMemoryとかではない…と思うのですが……。もしかしたらこれか?

詳しくは知らんが、MoveMemory関数の引数が
MoveMemory(コピー先のポインタ, コピー元のポインタ, コピーするバイト数)
なので、そうじゃないのかなぁ。

どっちにしろ、自分的にも>402さんと同意見。
とりあえずVBで納品しといてあとでCでDLLなんかを作って差し替えておくと
良いと思います。ガンガッてくださいまし。
チェックボックスが4個あって
1がチェックされている時はこの画像を表示、
1、4がチェックされている時は1と4のANDを取った条件の
画像を表示させるようにするにはどうすればいいんでしょうか?
参考になるページ等あったら教えて欲しいです。
お願いします。
410デフォルトの名無しさん:03/12/08 18:33
質問させてください。
Win32APIのLockFile()って、
ロックかけたら、自分自身もファイルアクセスできなくなっちゃうんですか!?
ロックかけたら、ファイルオープンやリードでエラーおきちゃいました・・・
イミネーーー
ヘルプ上は他プロセスはNGだね。
同一プロセスで別ハンドルの場合はやったことないからわからない。
まあ、普通はロックしたハンドルで読み書きしてアンロックしてクローズだよな。
初めまして、いきなり質問ですみません。

現在特定のキーを押したらメモ帳などに特定のキーを押下した動きをさせたいと思い、
GetKeyboardStateやkeybd_event等を駆使して色々やっていたのですが、
どうしても、自分のフォームがアクティブの時にしか正しく動作しません。
正しく動かないだけで、メモ帳からVBフォームにカーソルを動かすと反応したりします。

サンプルではNumLockを外すとアクティブなウインドウにエンターキーを送り続ける
感じになっています。
既存製品のオートデモを作りたかったのですがこういう単純な方法では難しいでしょうか。

以下サンプル。
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
Const VK_NUMLOCK = &H90
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Sub SubDisplayNUMLOCK()
Dim keys(0 To 255) As Byte
Call GetKeyboardState(keys(0))
Me.Cls
If ((keys(VK_NUMLOCK) And &H1) = &H1) Then
Me.Print "現在、NumLockはオンです"
Else
Me.Print "現在、NumLockはオフです"
Call keybd_event(&HD, 0, 0, 0)
Call keybd_event(&HD, 0, KEYEVENTF_KEYUP, 0)
End If
End Sub
Private Sub Timer1_Timer()
SubDisplayNUMLOCK
End Sub
(;゚Д゚)
TABは消えたのか……すみませぬ。
質問です。

Shell_NotifyIconでタスクトレイにアイコンを表示させたのですが、
そのアイコンをクリックしたときにポップアップメニューを表示させると
その項目の何れかをクリックしないとメニューが閉じないのですが、
どうにかならないでしょうか・・・。
AppActivateで自分をアクティブにしとく
417415:03/12/08 21:52
>>416
フォームのvisibleをfalseにしてあるせいかエラーが起きるんですが・・・。
他に方法はないですか?
418デフォルトの名無しさん:03/12/08 22:02
>>415
メニューの中に『キャンセル』をつけてはどうですか?
419デフォルトの名無しさん:03/12/08 22:05
>>415
メニューの中に『キャンセル』をつけてはどうですか?
押されたときはExit subするようにしておくか何も書かないでおいては?
420415:03/12/08 22:09
>>419
うーむ・・・とりあえずそうしておきます。
他に方法が見つかったらまたお願いします。

有難う御座いました。
421143:03/12/08 22:19
>>415
今眠いからあとで教えてあげるね。
422mo:03/12/09 02:28
すみません、質問です。

VBからAccessのオブジェクトを操作する方法は分かったのですが
その逆、つまりAccess(VBA)からVBのオブジェクトを操作する方法、
どなたかご存じですか?

例:Accessのフォームの「閉じる」ボタン押下→VBで作ったフォームを閉じる、とか。。。

宜しくお願いします。
423デフォルトの名無しさん:03/12/09 02:36
Windowが、移動されたことを検出する方法ってありますか?
マウスなどを使って移動されたときに他の処理を行いたいのですが…。
>>423
イベントを拾って云々というやり方もあるけど、めんどいからいつも
タイマイベントで移動したかを判定してる。
425デフォルトの名無しさん:03/12/09 04:09
>>424
なるほど、それで行こうと思います。m(_ _)m
>>423
一番すなおなやり方は、ウインドウメッセージを取得する方法だね。
VBではサブクラス化というやり方で実現されている。
>>426
参考になります。
一応動けばOK的な感じなので、タイマで動作させていますが、負荷を考えるとそちらの方法がいいのでしょうね。
サブクラス化云々がよくわからない段階ですので、現状ではタイマが一番簡単そうなので…。^^;
428143:03/12/09 10:52
>>415
これじゃないかな
// TrackPopupMenu か TrackPopupMenuEx を呼び出す前に、ウィンドウを
// フォアグラウンドウィンドウにしなければならない
// (see the MSDN Article ID: Q135788 )
429143:03/12/09 14:02
こっちかも
// BUGFIX: 最後に次のクリックに反応できるようにメッセージをポスト
// (see the MSDN Article ID: Q135788 )
PostMessage(tnd.hWnd, WM_NULL, 0, 0);
430デフォルトの名無しさん:03/12/09 15:51
imageboxに壊れた画像を読ませると応答を返してこなくなり、
そのままフリーズしてしまうのですが、なんとかならないのでしょうか・・・。
431401:03/12/09 15:53
>>428-429

428の方のTipの通り、「SetForegroundWindow()」 を使って期待通りの
動作(PopUpメニューが他の場所クリックで消えてくれる)になるのを
確認したよ。たぶん、415さんもウマくいってるんじゃないかなぁ?
#もちろん自身FormはHiddenしたままでOKでした。


と、代わりに確認&報告してみるテスト
>430
壊れていない画像を使えばいいじゃん
>432

で、どうやって壊れてないかどうか調べるんですか?
434デフォルトの名無しさん:03/12/09 17:23
旧版VBのバイナリデータを
VB6のテキストデータに変換したいのですが
変換ツール(フリー) どこかにありませんか?
>>434
意味がわからん。
EXEからソースコードに変換したいってことか?
436143:03/12/09 17:29
>>435
ワラタ
水野女史ですか?
>>436
その名前を出すなぁぁぁ!!!
438143:03/12/09 17:39
水野女史ってexeの中身が英語で書いてあると思ってたんですかね。
439デフォルトの名無しさん:03/12/09 17:43
>>434
いや
コンパイル前のものです
>>435
たしかVB2ってソースをバイナリ保存できるんですよ。
で、そのことなのか?
441143:03/12/09 17:56
VB2.0か。さすがに忘れたな
VB4.0で読めるのかなー
442401:03/12/09 18:00
>>430
不正な画像を入れた場合、エラー「ピクチャーが不正です」とかなんとか
出たはずだったけどなぁ・・変わったのか?
443デフォルトの名無しさん:03/12/09 18:04
>>440
「保存できる」はなくて「保存しなければいけない」ようです
テキストでないとVB6で開けないので
>>443
VB4ではコンバートできたけど、そのあとのバージョンだと意識したこともない。
VB2はないの?(私んところはあるんだが。w)

どの程度のアプリかはわからないけど、16->32Bitの問題、Win3.1 と今のOSの違いとか考えると、
動きだけ見て再設計のほうがいいと思う。
445444:03/12/09 18:20
一応参考までに
ttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9711/conv/

まあ、ひとことでいうと、TEXTで保存してないとだめだと。
446401:03/12/09 18:22
>>434 出来ないらしいです。以下参考までに。ドゾ
参考: ttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9711/conv/
447401:03/12/09 18:22
ウォ かぶった。。スマソ
>>446
こんなところで結婚とは・・・。w
449デフォルトの名無しさん:03/12/09 18:37
わかりました
新しく作ります
>>449 
カッチーーーーーン (#゚Д゚)
わろた
452デフォルトの名無しさん:03/12/09 20:04
VBではできるかどうかすらわかりませんが、現在のプロジェクトの
ブックマークとブレークポイントのステップをプログラム上から
(例えばアドインとか)取得する方法をご存知の方
いらっしゃいましたら、教えてください。
Format$(Now, "yyyy/mm/dd")の結果が

2003/mm/12/mm/09

って返ってくるようになった。ワーイ('A`)ノ
454デフォルトの名無しさん:03/12/09 22:01
質問です。
スタートボタンが押されたことを感知する方法を教えてください。
455デフォルトの名無しさん:03/12/09 22:32
>>454
windowsキーの入力を検知すりゃいんでねーの?
ちなみにwindowsキーはCtrl+Escだべよ
>>455
マウスの時は?
457デフォルトの名無しさん:03/12/10 02:35
現在VB6+SP5でインストーラーを作っています。

システム環境変数に登録する等の内容があるので
admin権限が必要なためadmin権限以外での
インストールに排他をかけようと思っています。
APIのNetUserGetLocalGroupsで取得は出来たのですが、
ドメインに参加をしているユーザーの権限が取得できません。

なによい方法がありましたらご教授頂けないでしょうか?
よろしくお願いします。
458助けてください:03/12/10 07:08
助けてください。
VBで直線を書いたりとかしかプログラムできないんですけども、今度
ビジネスゲームというのをつくらねばならなくて参っております。
ここからが質問なのですが、あるお店の一日のお客の数を乱数で
割り当ててさらにそこからその乱数で決定されたお客の数の分だけ
そのお客が何を買うのかというのをさらに乱数で決めることはできるので
しょうか?もしできるのであれば、そこからまたお客を主婦、大学生、高校生
といったように客層も一人一人どんな人が何を買うのかというのを
つくってみたいんですけども・・・こういったものってできるんでしょうか?
長々とした文章ですいません。
459143:03/12/10 07:14
>>458
それってVBの質問?
460デフォルトの名無しさん:03/12/10 07:17

Visual Basic を習得するのに最適な本は
ありますでしょうか?

C/VC++/HTMLくらいは知っているのですが
今度アルバイトに応募するところがVisual Basicが要件
になってまして。

どれくらいで一通り習得できるものなのでしょうか?
461助けてください:03/12/10 07:29
>>459
そうです。本当は何を使ってもかまわないんですけども
VBしか使ったことがないもので。最終的には利益がどれだけ
あったということをだすのが目的なんですけどもさっぱりでして・・・
462デフォルトの名無しさん:03/12/10 07:30
>>460
VC使えるってことはMSDNぐらい読めるんでしょ?
本なんか買わなくても2〜3日で大抵のことはできると思われ
463デフォルトの名無しさん:03/12/10 07:37
>>462
MSDNがありますたね。
しかしソフトはない。

自分ではVC++6.0Pro持ってるんですが、
VBだとどの辺買ったらいいですかね。
464デフォルトの名無しさん:03/12/10 07:46
>>463
VC持っててMSDNないってあんた・・・・
>>464
ソフトがないというのは Visual Basic のソフトがないっつーことです。
VC付属のMSDNにVBの解説も入っていますけれど。

買うとしたら、VCにあわせてVB6.0のLearningですかね。
ヤフオクでみたら1万円ちょいみたいなようで、
VCよりも高いかもという印象。
C++言語みたいにフリーのコンパイラ(インタプリタ?)が
あるといいんですがねぇ・・・。
>>465
あぁそういうことですか
勉強ならLearningで十分じゃないかな

本は
http://www.amazon.co.jp/exec/obidos/ASIN/4797307595/ref=pd_sims_dp__1/250-5255653-7155423
http://www.amazon.co.jp/exec/obidos/ASIN/479730801X/ref=sr_aps_b_2/250-5255653-7155423
くらい見てればいいかと
最近釣りするやつと釣られるやつと
ギャラリーばっかだな
>>467
どもども。
とりあえずバイト予定先に電話してからですが。(笑
ここで蹴られても、とりあえず習得しておくべきなのかな。
>>458
構造体使えばええやん
471助けてください:03/12/10 08:37
>>470 構造体ってなんのことですか?
>>471
ユーザー定義型のこと。
473デフォルトの名無しさん:03/12/10 10:17
474デフォルトの名無しさん:03/12/10 11:08
>>471はそもそもプログラマに向いていないので辞めたほうがいいと思われ。

プログラム作成の基本を教えると、だいたいこうだ。

1 何をやりたいかを箇条書きにする
2 どういう順番でやればそれを実現できるかを書き出す
3 2で書いた項目ごとにどういうコードを書けばいいか考える
4 実際に書いて動かしてみる

4の段階まで進んだら初めて質問にこい!!
VBで業務用のソフトを作るのにお勧めのHPや本ってありますか?
現在VB6.0、Oracle8iの環境です。
>>475
システム設計の本が欲しいのか、技術本が欲しいのかすら分からないぞな。

ここはいつから「初心者の質問に速攻で答える」スレになったんだw
>>475
PCDNでも行けば?
但し、今の状態では誰にも相手にされないと思うけど。
>458
474のいうことはもっともなんだけど、このおいちゃんがヒントをやろう。

1:客情報構造体を宣言する。構造体には客の種別、買い物リストを作成。
2:Rnd関数を使い、得た値を要素数にして客情報構造体配列を作成。
3:ループ構造で各客情報配列の買い物リストにRnd関数を使って、客の種別、
 買った物を選択。あらかじめ客の種別・商品リスト配列を作っておけばいいだろう。
 もし、買った物の数も複数にしたいのであれば、ここで買い物リスト変数をRnd関数を
 使って要素数を取得し配列宣言、ループでリストを埋めていけ。
4:終わり

アルゴリズムもどきはこんな感じだから、あとはわからない単語等はMSDNで検索汁。
そのくらいは自分でやれ。以上だ。
479デフォルトの名無しさん:03/12/10 15:46
すんません、VB6でDOMを使ってXML文書の読み書きを
やろうとしてるんですけど日本語のヘルプやサンプルってどこにあるんですか?

MSXMLを落としてきてインストール、VB6の参照設定まではできたんですけど、
いざ作ろうと思ったらヘルプが英語のためさっぱりわかりません。

ご存知の方いらしたらよろしくお願いします
>>465
VB5.0のCCEをダウンロードするか、VB6.0の体験版が付いてる本を入
手してもいいんでない? 実行形式にはできないけど、コードの勉強に
は十分かと。

あと、.NET Frameworks SDKにGUIを実装するオープンソース環境も
あったはず。
僕はVB初心者です。私の書いてるのが意味わからなかったらすいません。
質問なのですが
チェックボックスが4つあります。スタイルは、グラフィックスです。オブジェクト名をa,b,c,dとします。
aをクリックしたらaのVALUEが1とされる。そして、bをクリックしたらaのvalueが0となりbのvalueが1となる
次にCをクリックしたらbのvalueが0となりcのvalueが1となる。
このようなコードの書き方を教えてください。何階やってもうまくいきません。
お願いします。
482デフォルトの名無しさん:03/12/10 17:06
>479
アージャイル開発もできない愚か者には死を!
http://pc.2ch.net/test/read.cgi/prog/1070781553/l50
>>479
MSXMLの日本語訳は出てませんよ。
でもXMLの技術情報を扱ったページが多くあるので、
そういうところで勉強すればいいかと思います。
485デフォルトの名無しさん:03/12/10 17:11

★★★★★常時接続の方におすすめビジネス★★★★★

1日二時間ネットを利用する人だと1ヶ月20000円は稼げます。

ネットサーフィン中に広告バナーを表示させているけでお金になります。
ネットサーフィンだけでなくワープロソフトやホームページビルダーなどを使って
お仕事していてもバナーを表示させていれば課金されます。
広告バーの使用時間は無制限。極端なことを言えば、1日24時間稼動させてもOK。

紹介制度も8段階あり頑張れば1ヶ月50万以上も可能です。もちろん登録も無料。
今までクリック保証のビジネスやメール受信をしましたがこれが一番お金になりました。

英語が苦手な方もホームペーシに解り易く登録方法を載せましたので登録できると思います。
ぜひ登録してみてください。確実に稼げます。

http://www.hamq.jp/i.cfm?i=cashfiesta
>>481
スタイルが、グラフィックスなんだったら
チェックボックスではなく、オプションボタンにしてはどうですか?
ダメですか。そうですか・・・。
>>481
Private Sub Check1_Click()
If Check1.Value = 1 Then
Check2.Value = 0
Check3.Value = 0
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
Check1.Value = 0
Check3.Value = 0
End If
End Sub
Private Sub Check3_Click()
If Check3.Value = 1 Then
Check1.Value = 0
Check2.Value = 0
End If
End Sub
4個でも5個でも6個でもこの応用
スペースはどこに……
>>487
コントロール配列にしろ。
490479:03/12/10 18:10
>>484 そうですか・・・(´・ω・`)ショボーソ
サンプルコードと英語辞書片手にがんばります。
491481:03/12/10 18:39
>>487
わざわざ、ありがとうございます。けど、やっぱりだめでした。
実行すると、全部valueが1になってしまいます。
ほかの方法はありませんか?

>>486
そうなんですよね。しかし、チェックボックスじゃないといけないんです。
ありがとうございます。
Private Sub Check_Click(Index As Integer)
Dim i As Long
If Check(Index).Value = 1 Then
    For i = Check.Lbound To Check.Ubound
        If i <> Index Then Check(i).Value = 0
    Next
End If
End Sub
493454:03/12/10 18:45
>>455
ありがとうございます。
マウスでクリックされたのはどうやって感知すればいいのでしょうか。
494デフォルトの名無しさん:03/12/10 19:15
>>455
Ctrl + Esc = Win か
知らなかった
感動!
>>491
>実行すると、全部valueが1になってしまいます。
そうなのか? じゃ、492もダメ?
処理ではなく、他に原因がある気がスルーテスト。
496481:03/12/10 19:19
>>492
できました。ありがとうございます。ほんとにありがとうございます。
VBをやりはじめて、2週間ぐらいです。ずっと、これでなやんでました。
けど、この意味が理解できない。
497481:03/12/10 19:20
>>492
あのLBOUNDとUBOUNDってどういう意味なんですか?
>>497
MSDNで検索しる!
>>497
分からない単語にカーソルを合わせてF1キーを押す。
話はそれからだ。つか、もしかしてMSDN入ってない?
500481:03/12/10 19:28
>>499
はい。入ってません。
501499:03/12/10 19:29
>>498
カブりましたが、何か?

  i|i| _| ̄|○ i||i
>>491
まじですか(;゚Д゚)

これ、vbで実際に試して動いているコードなんだけど。
ボタン三つあって、必ず一個しかへこんでいない状態を作れる。
vb6だと動きが違うとかあるのかのぉ。
>>500
何故いれていないのか理由を知りたい
504481:03/12/10 19:48
>>503
インストールしたときに入るものなのですか?ちょっと、もう一度、インストールしなおしてみます。
テキストボックスに数字と、バックスペースのみ入力可能にするコードは?
>>505
これでどないだ?
ちなみにChr(8)がバックスペース

Private Sub txtbox_KeyPress(KeyAscii As Integer)

Dim strPress As String

strPress = Chr(KeyAscii)

If (strPress >= "0" And strPress <= "9") Or strPress = Chr(8) Then
Else
KeyAscii = 0
End If
End Sub
データリピータコントロールで使うデータ連結ユーザーコントロールの作り方を
解説しているWebサイトで、いいのをご存知の方教えていただけませんか。
MSDNはどこを見ればいいのかわかりませんでした。
Googleで検索しても、いまいち
トホホな質問ですいません。
>>506
Private Sub txtbox_KeyPress(KeyAscii As Integer)

If keyascii>=asc("0") and keyascii<=asc("9") Then
exit sub
Else

KeyAscii = 0
End If
End Sub
これだったらバックスペースキーをどこにいれればいいですか?
>>508
ほれよ


Private Sub txtbox_KeyPress(KeyAscii As Integer)

If keyascii>=asc("0") and keyascii<=asc("9") Or asc(&H8) Then
exit sub
Else

KeyAscii = 0
End If
End Sub
510デフォルトの名無しさん:03/12/10 22:35
Imageコントロールに任意のjpgファイルを表示するには
どうしたらいいんですか。
よろしくお願いします。
>>508
スマソ
509は間違い
これでいけるはず
If (KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) Or KeyAscii = 8 Then
すれ違いですが、こんど基本情報技術者受けます。
VBは少しやってます。ほんとに少しだけれども。
それで、その資格でJAVAを選ぶつもりなんですけど、JAVAは難しいですか?
あと、JAVAのソフトっていくらくらいしますか?
リア厨しかいない悪寒
514143:03/12/10 22:50
Javaはたタダよ
>>514
そうなんですか。すいません。文系なもんでまったくしらないんです。
できれば、どこからダウンロードできるかおしえてください。
すいません。逝ってきまつ。
516507:03/12/10 23:01
>>515
ここにこい。おもいくそ揉んでやる(w。
ttp://school2.2ch.net/test/read.cgi/lic/1069335327/
518143:03/12/10 23:04
>>518
このなかのドレを落とせばいいですか?たくさんあってわかりません。詳しくお願いします。

>>517
もうそこにはお世話になっています。
>>512
C/C++もフリーのコンパイラあるぞ。
統合開発環境もフリーである。
521507:03/12/11 00:21
>>519
J2SE v 1.4.2 および NetBeans IDE v 3.5.1 Cobundle
OSにあわせて選んでください。
>>508
KeyPressだけじゃ不十分なのは頭に入れておきましょう。
キーからのCtrl+Vやマウスでのペーストには効果ないからね。
523デフォルトの名無しさん:03/12/11 01:35
常に最背面に表示するフォームは出来ないのでしょうか?
SetWindowPosでは、背面表示は出来るけど、常にというのが出来ないので困ってます。
524 :03/12/11 07:13
そういや、昔のbasicってアスキーセーブってのがあったな。
例えば50個のテキストボックスがあって、
フォーカスがあたった場合は、色が変わるとします。
この場合、前のフォーカスがあたっていたテキストボックスの色を消す必要がありますが
どのようにすれば良いのでしょうか?
私には、全部のテキストボックスを消すという無能な方法しか思いつきません・゜・(ノД`)・゜・。
厨房な質問ですいません

実際には、あるコントロールをラジオボタンのように動かしたいのですが。
526デフォルトの名無しさん:03/12/11 09:21
>>525
lostfocusイベント
>>523
たしかSetWindowPosでできたと思うよ。クグれば出てくると思う。
>523
SetWindowPosで、HWND_BOTTOMとSWP_NOOWNERZORDERまたはSWP_NOREPOSITIONで
いいと思うんだけど、どうよ?
529143:03/12/11 10:54
教えてください。DBはSQLServerです。
以下のようなソースで数量の合計と各数量を取得したいのですが
2回も同じレコードセットをオープンするのは無駄ですし
タイミングによっては不整合が生じると思います。
rs.MoveFirstなどを使ってレコードセットを再使用したいのですが
どのようにすればよいでしょうか?

dim cmd, rs, cnt
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "sp_SELECT"

cnt = 0
set rs = cmd.Execute
Do Until rs.EOF
cnt = cnt + rs.Fields("数量").Value
rs.MoveNext
Loop
rs.Close

document.write cnt & "<BR>"

set rs = cmd.Execute
do until rs.eof
document.write rs.fields("数量").value & "<BR>"
rs.movenext
loop
各数量とって、プログラム側で合計すればいいんじゃないの?
531143:03/12/11 11:08
>>530
はい。合計してるんですが、ASPなので合計を先に取得しないといけないのです。
配列を使って取得したレコードセットの中身を保存しておけばできますが
それでは美しくないので・・・レコードセットの再利用がしたいのですが
rs.CursorType = adOpenDynamicとしても
rs.MoveFirstしてもエラーになってしまいます。
ストアドから取得したレコードセットはMoveFirstできないのでしょうか?
532523:03/12/11 12:36
>>527
>>528
ありがとうございます。
でも、どうもうまくいかないんですね。
確かに、実行時には後ろへ行くんですが、
該当フォームや親フォームがアクティブになると、前へ出てきちゃうんです。
SWP_NOACTIVE を入れてもダメです。
純粋に「常に前面に表示」の逆パターンというのは出来ないのでしょうかね。
533迷える子羊:03/12/11 13:53
フォルダサイズを取得したく、以下のようにしたのですが、
C:\ を指定すると 3行目のSet objFolder...でエラーが発生します。
(Err.Number=70) ルートディレクトリを指定するのが問題なのか?
それともサイズ(ルートディレクトリのサイズ)が10GBなのが
問題なのでしょうか?
ちなみに他のフォルダ(サイズは1GB程度)だとエラーはでません。

Dim objFileSystem, objFolder As Object
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder("C:\")

>532
ちょっと簡単にサンプルを作ってみたところ、SetWindowPosを
FormのPaintイベントで実行すれば、前には出なかった。
ただ、Paint関数にこれを置いてもいいものか…。誰か補足キボン
535デフォルトの名無しさん:03/12/11 17:58
VBで作ったモノとC言語(VCでもOK)で作ったモノでメモリを使って通信したいのですが、
まったく方法が分かりません。また、探してみてもやりたい事のレベルが自分のレベルよ
り高いためかぜんぜん当たってくれません。 どなたか以前にやった事がある。または、
関連したサイトを知っている方いないでしょうか?
そうでなければ、メモリにVBからファイルを作って読み書きできる方法でもいいです。
アドバイス下さい。よろしくおねがいします。
536143:03/12/11 18:03
>>535
メモリって何のこと?
DDEって言いたいのか?
DDEを教えると、VB.NETに移行するときに泣く目にあわせる事になる
539デフォルトの名無しさん:03/12/11 19:31
グレゴリオ歴→天保歴



簡単なソースありませんか?
540デフォルトの名無しさん:03/12/11 20:43
あるバイナリファイルに
「00 00 00 10」
というデータがあります。

これをVBで読み込むと、「&h10 00 00 00」となってしまいます。
なんとか、「&h00 00 00 01」と読み込む方法はないものでしょうか?
>>540
読み込んでるソースさらせ。
542143:03/12/11 20:51
>>540
リトルエンディアンだからじゃない?
>>541

Dim lData As Long

Dim f As Integer
f = FreeFile

Open "****.***" For Binary As f

Get f, , lData

Close f


このようにLong型に読み込んでます。
544143:03/12/11 20:55
バイトオーダーの変更はネットワーク系のAPIがあるんだけど
使う?
この辺
http://vbvbvb.com/jp/gtips/0951/gWSANtohs.html
545デフォルトの名無しさん:03/12/11 21:00
>>534
それで出来ました?
試してるんだけど、バックに張り付いたままにならないね。
パラメーターは何にしてる?
546デフォルトの名無しさん:03/12/11 21:05
教えてください。以前VB6を購入しました。XPにインストールして
使うにはどこでアップグレードしたりすればいいのですか
>>546
Microsoftのページから。
ええっ、VB6.0ってXPに対応してないの?
ふつーに入れて使ってるけど問題あり?
>>542
テンリトルインディアンだよ。
>>548
XPへの対応はちゃんとサイトに書かれていたよ
IDEの動作の不具合報告なども。
>>550
情報さんくす。
前に調べた時は、この程度しか見つからなくて安心してたーよ。
ttp://www.microsoft.com/japan/msdn/vs_previous/vstudio/techinfo/toolos.htm

再度やってみたら、こんなのもでてきたし確かにコンポーネントの追加
がUserではエラー落ちするのを体験してる。
IDE不具合ってこれのこと?
ttp://members.at.infoseek.co.jp/mythe_lune/contents_column/column030201.htm
>>551
それのこと。
>>535
CreateFileMapping APIからの一連でいけないか?
554534:03/12/12 09:40
>545
hWndInsertAfterにHWND_BOTTOM、uFlagsに
(SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_NOOWNERZORDER)を
入れた。アクティブにするとhWndInsertAfterの値が無効になるらしいので、
SWP_NOACTIVATEは必須。Form_Loadに入れず、Paintイベントで実行。
SWP_NOSIZEと SWP_NOMOVEはなくても大丈夫っぽい。いろいろ試してみてくれ。
http://www.seraphyware.jp/dev/tips/vb.tips.ado2dim.html
↑にあるみたいに、Recordsetを配列のように使いたいんですが、
ループで列定義して、その後、値を入れていくのですが、
一旦は値が入るものの、次の周回では、前の周回の値が消えてしまいます。
ちなみに、Supportsメソッドで、Updateがサポートするのか
調べてみましたが、Falseが返ってきました。
原因がこれだとすると、どのように対処すればいいのでしょうか?
556555:03/12/12 13:47
質問したのに下げてしまったので、あげます。
>555
そのリンク先のとおりやったら上手くいったよ。
一体どんなコーディングを組んだのさ?
558555:03/12/12 14:25
こんなのです。jループで値が消えていくんです。
Dim objRec As New ADODB.Recordset
Dim strArrA(2) As String
Dim strArrB(2) As String
Dim i As Integer
Dim j As Integer

strArrA(0) = "hoge1"
strArrA(1) = "hoge2"
strArrB(0) = "fuge1"
strArrB(1) = "fuge2"

For i = 0 To 1
objRec.Fields.Append strArrA(i), adBSTR
Next i

objRec.Open

For j = 0 To 1
objRec.AddNew
objRec.Fields(strArrA(j)).Value = strArrB(j)
objRec.Update
Next j
>555=558
まず、jループの部分が違う。iループの部分で項目が2つ出来上がってるので、
要素数j、項目数2の2次元配列が定義されていることになる。要素数が1つで
いいのなら、ループは不要。要素数が2つ必要ならループを組んでもいいけど、
その場合、挿入する値をもう1種類増やす必要がある。

例えば、"hoge1"(adInteger)に列の値を、"hoge2"(adBSTR)にstrArrBの値を代入する場合、


For i = 0 to 1
Call objRec.AddNew( strArrA, Array(i, strArrB(i)) )
objRec.Update
Next

で値を代入していけばよい。
値が代入されているかの確認として、

Dim n As Integer
Dim s As String

objRec.MoveFirst
Do While ( objRec.EOF = False )
n = objRec.Fields(strArrA(0)).Value
s = objRec.Fields(strArrA(1)).Value
objRec.Next
Loop

のDoループの部分で、nとsの値を確認していけ。
ただ、気になるのがUpdateをサポートしていないらしいところ。AddNewもだめなのか?
それと、参照設定は何を定義したのかが気になる。自分は
Microsoft ActiveX Data Objects 2.1 Library を使っているんだが。
FindFirst?
質問です。
VBAで宣言したGlobal変数を、VBから参照することはできるでしょうか?
出来る場合、どのようにすればいいでしょうか。
ご回答おながいします。
562561:03/12/12 16:20
質問あげ(忘れ)。
563デフォルトの名無しさん:03/12/12 16:32
グレゴリオ歴→天保歴



簡単なソースないんですか?
564555:03/12/12 16:44
>559 さん

ありがとうございます。
まず、参照設定はMicrosoft ActiveX Data Objects 2.5 Libraryです。

で、Supoortメソッドなんですが、実行した場所が悪かったらしく、
RecordsetをOpenする前にやっていたのでFalseが返ってきたみたいです。
Open後はTrueでした。お恥ずかしいです。

頂いたコードで上手くいきました。
ありがとうございました。




>>563
「ないんですか?」って物言いはどうかと思うが?

ttp://park1.wakwak.com/~y-nagano/Programs/koyomi/
自分で書き換えな。
>>561
どのアプリのVBAと、VBのツールを連携させようとしてるか分からないから何ともいえないけど。
普通はできない、というかやろうとも思わない。

もし、連携が必要なら、COM使うとか、今日の朝上げたメモリ参照のところあたりを見てみれば?
567デフォルトの名無しさん:03/12/12 17:13
>>566
AccessとVB連携させようと思ってます。
(一部、VBでしか作れないものがあり)
「やろうとも思わない」っすか。。。(苦笑

「今日の朝上げた」というのは>>553のことでしょうか?
うむむ。これも含め、色々試してみます。
ありがとうございました。
>>567
できないってことを言ってみてくれると、そっちのほうが解決できたりするかもよ。
569デフォルトの名無しさん:03/12/12 17:29
>>568

DBを使っているので、Global変数の内容を
専用の一時テーブルに放り込んで
それをVBから参照するようにしました。劇的にカンタン。

最初からそうすれば良かったです。
頭カタイな、漏れ。。。

ともあれ、有り難うございました。
570510:03/12/12 19:20
loadPicture使ったら成功しました。
とりあえずの報告です(苦笑)
571デフォルトの名無しさん:03/12/12 22:42
質問です。
既に起動しているIEを操作するプログラムを作りたいのですが、
どうやったらいいのか分かりません。
SHDocVwで新しいIEを生成して操作するのはできるのですが。
>>571
どういう操作をしたいのかによる。
573571:03/12/12 22:55
>>572
フォームコントロールの操作とかです。ボタン押したり。
VBで作られたExeを逆コンパイルするツールを教えていただけないでしょうか.
>>574
そういうものが存在するという噂だけが存在する
とりあえず家にあったからVisual Basic 6.0でを強してみたんだけど、
Helpはないし、今更6.0を説明してるHPもないしで質問です
どこかに乗ってたマシンイプシロンを手動で求めるプログラム
Private Sub cmdOperator_Click()
Dim eps As Single
Dim hantei As String
eps = Val(txtOperand1.Text)
If 1# < 1# + eps Then
hantei = "大きい"
Else
hantei = "等しい"
End If
lblAnswer.Caption = hantei
End Sub
で、なぜ1の後に#をつけるんですか?
付けないでやってみたら、結果が違ったんで気になってきました

要するに数値に#をつけるのはどんな意味があるんですかい?
577デフォルトの名無しさん:03/12/13 01:47
>>576
「hantei」が「hentai」に見えたage
hanteiでもhentaiでもいいですけどね
>>571
SHDocVw.ShellWindowsをNewしてFor Each

>>576
Debug.Print TypeName(1)
Debug.Print TypeName(1#)
580デフォルトの名無しさん:03/12/13 13:34
すみません。質問したいのですが、
初めのログイン画面でパスワードを2つ(a,b)設定して、bで
入ったら、次のメイン画面で一つコマンドボタンを非表示にしたいのですが、
どうすればよいのでしょうか。
581デフォルトの名無しさん:03/12/13 13:44
質問です。コントロール間を、TabではなくEnterキーで移動する方法はありますか?
できればキーコードを拾わずに実現したいのですが。。。
582580:03/12/13 13:46
583582:03/12/13 13:47
582=581です。
重ね重ね失礼しました。
584デフォルトの名無しさん:03/12/13 15:12
(,,゚Д゚)∩せんせー
オーナーフォームを指定してフォームをshowした場合、
オーナーフォームのオブジェクトにはどうやってアクセスするんですか?
585571:03/12/13 16:21
>>579
ありがとーーー!
586デフォルトの名無しさん:03/12/14 00:19
すみません。visual basic6.0 のsp5をインストール中に
cabファイルが開けませんでしたというエラーがでます。
xpです。
587デフォルトの名無しさん:03/12/14 00:27
質問です。

チャットのログを特定のウィンドウ上に書きたいと思っています。
例えば
 ・IEでページを見ているときに
 ・チャットで誰かが発言をしたら
 ・その発言内容をIEのウィンドウの固定位置に書く
というような感じです。

で、チャットの発言内容を取得するところまではできたのですが
IEの固定位置に、文字列を描画する、というところが上手くできません。

何か、こういうテクニックとか、こういうWindowsAPIを使えばいい
とかありましたら、よろしくお願いします。
>>586
最近入れ直したけど、うちでは出なかった。(VB6.0 on XP Pro)
SP5が壊れてるのかもしれないから、もう一度ダウンロードしてみそ。
589586:03/12/14 03:15
>588
なんどやっても同じです。
SP5はマイクロソフトのサイトからダウンロードしています。
うちのxpはhome edition です。

ちなみにspは今、一つもあたってません。

http://support.microsoft.com/default.aspx?scid=kb;ja;413124


ここにそれらしい情報がありますが、正直申し上げて、
意味がわかりません。
>>589
ダウンロードツールで落としたら?
壊れた状態がキャッシュに残ってて
何度やってもキャッシュから読み込むとかあるから。
>>589
>>590が書いてくれてるダウンロード専用ツールで落としてみるか、せ
めてIEのキャッシュを全部クリアしてから試してみそ。

どーしてもダメなら、Visual Studioの入れ直しも検討要かな?
592586:03/12/14 03:44
IEのキャッシュクリアしたらできました。
なんか、しっくりこないですが、結果オーライです。
ありがとうございました。

Visual Basic で Cの関数を呼び出したり、
それを静的にリンクしてコンパイルすることは
できるんでしょうか?

またマルチスレッドプログラミングは可能ですか?
594デフォルトの名無しさん:03/12/14 08:13
>>587
IE のウィンドウに書かなきゃだめなの? IE のウィンドウに重ねて別の
ウィンドウに、なら簡単でしょ。

>>592
何がしっくりこないの? IE のキャッシュの仕組みぐらい、理解しておいて
損はないよ。

>>593
できません。マルチスレッドも(一般的な意味では)できません。
>>594
えーっと、それでも問題ないんですけど
文字だけ書かれてる感じにしたいので
背景を全部透明にしたいと思ってます。

で、Windows2000とかだと簡単にできるみたいなんですが
ある程度、色々対応するためには、どうしたら良いのか分からなくて・・・
596デフォルトの名無しさん:03/12/14 10:45
>>595
簡単なのは、IE のウィンドウをフォームの背景に描画して、ってやつかな。
透過に見せかけて、こういう処理を行ってるアプリはいくつか知ってる。

まじめにやるなら、描画したフォントのパスからリージョンを作って、それを
適用することになるね。
597デフォルトの名無しさん:03/12/14 11:32
質問なんですが、VCのDLLを利用する場合に
 ・Declare文でのコールバック関数の表現方法
 ・そのコールバック関数にNullを指定する方法
について、参考になりそうなページはありますでしょうか?
少し自分でも調べてみたのですが、まとまっているページが見つかりませんでした・・・

ちなみに
typedef int (WINAPI *funcInit)(funcCallBack, void *, unsigned long);
という関数があって
 ・Declare文が分からない
 ・第一引数(funcCallBack)にNullを指定したい(コールバック関数を利用しないため)
 ・第二引数(funcCallBackのパラメーター)は、funcCallBackがNullのとき無視される
  ということらしいのですが、適当な値として、何を指定すればよいのか分からない
という状況です。
あ、書き忘れなのですが、コールバック関数は
typedef int (CALLBACK *funcCallBack)(unsigned long, unsigned long, unsigned long, void *);
と定義されていました。
>>597
> typedef int (WINAPI *funcInit)(funcCallBack, void *, unsigned long);

呼びたい関数も動的に変わるのか ?
それは、VB でできるんだっけ ? (識者の人 Help)

VB で、C/C++ のポインタは Long で表現する。
Null を指定する時は、0 を指定すればいい。
600デフォルトの名無しさん:03/12/14 12:09
多分岐はswitch文じゃないんだなselect文なんだな
じゃぁswitchはいつ使うのかと聞きたい
601デフォルトの名無しさん:03/12/14 12:12
>>599
関数のポインタ呼び出しは、(かなりイリーガルなことをしない限り)VBでは不可。

>>600
使わんよ。
602デフォルトの名無しさん:03/12/14 12:14
>>601
すまん。読み違えてた。この例の場合だと、AddressOf でユーザー定義の
コールバック関数のアドレスを渡してやれば大丈夫。
603デフォルトの名無しさん:03/12/14 12:17
おまけ。

Declare Function funcInit lib "dll名" _
 (ByVal funcCallBack As Long, _
  ByVal arg2 As Long, _
  ByVal arg3 As Long) As Long

で、いいはず。
>>593-594
ビジュアル面をVBで作成して、背後の動作を
VCで作ろうと思ったんですが、結構難しいですか?
VBは未経験なんで、これから勉強なんですが。
>>604
背後をVCで作ること自体は難しくないよ。
癖のある部分を気をつける必要はあるけど。

文字だけ描画って、ウィンドウハンドルもらって
GetDCしてDrawTextじゃ駄目?
手元に開発環境無いので検証はできないけど。
606デフォルトの名無しさん:03/12/14 19:27
>>604
割とありがち。API 呼び出しにするか、ATL/MFC で COM コンポーネントを
使うか。敷居が低いのは前者かな。古い方法ではあるけども。
>>606
COMは知らないので、APIですかねぇ。
*.dll にしてそれを呼び出す形になるのかな・・・。
608デフォルトの名無しさん:03/12/14 21:52
>>607
そだね。

とりあえず、

|| [VB5] Visual Basic 5.0 から呼び出し可能な DLL の作成例
|| 文書番号: 410837

を読んでおきなはれ。
>>604
VCの画面造りがきらいで、VBのぺた貼りでやりたくて、言語がCがいいならば
C++ビルダーがあるじゃないか。
なぜその選択をしない。
610デフォルトの名無しさん:03/12/15 12:42
次のようなコードがあります。

Private Sub Form_Load()
Combo1.AddItem "aa"
Combo1.AddItem "bb"
Combo1.Text = "a"
End Sub

ロード後、コンボボックスをクリックすると、text部分が
「aa」に変わってしまうのですが、「a」のままにしておくことは
可能でしょうか?
なお、仕様上、リストに「a」は入れられません。
611デフォルトの名無しさん:03/12/15 13:25
>>610

無理だと思います。
>608
文章番号が違うじゃねーかYO!!! 正しくはJ031874だ!!!!!


丁度その資料が欲しくて、文章番号で検索しても見つからなかったんだよ…。
613デフォルトの名無しさん:03/12/15 13:40
>>612

ごめんごめん。MSDN ライブラリ版から持ってきたからさ。と思って、試してみたら、

http://support.microsoft.com/default.aspx?scid=kb;ja;410837

で行けるじゃん。
>613
こっちも禿げしくすまんかった。オンラインは番号違うんだね…。
こっちはCD版のほうで検索してたんだ。
615デフォルトの名無しさん:03/12/15 17:21
質問です。
プログラム的に漢字コード表を作りたいのですが、
VBではどういう方法があるのでしょうか?
ttp://www.infonet.co.jp/ueyama/ip/binary/x0208txt.html
こんな感じの表で、SJISコードと漢字の対応表です。

StrConvを使えばできるんでしょうか?
616デフォルトの名無しさん:03/12/15 17:45
>>615
自己レスです。StrConv(buffer, vbUnicode)でSJISコードからUnicode漢字に
変換できることが分かりました。
617デフォルトの名無しさん:03/12/15 19:07
TabStripでフォームロード時に
2つ目のタブを選択状態にして表示する
ことは可能ですか?
618デフォルトの名無しさん:03/12/15 20:49
>>617
コードでタブが切り替えられるのなら可能でしょう。
>>617
SelectedItemだっけかな。こんな感じ。
Set TabStrip1.SelectedItem = TabStrip1.Tabs(1)
>>619
出来ました。ありがとうございます。
621デフォルトの名無しさん:03/12/16 11:12
IMEを使わずに、自前でローマ字入力→カタカナ変換
(キーボードで“konbanwa”と入力するとラベルなどに“コンバンワ”と表示されるような)
をしたいと思っています
作成言語がVBなのでこちらで質問させていただきましたが、
他の言語用にかかれたものでも結構ですので、なにか
参考になる資料など教えていただけるとうれしいです
よろしくお願いいたします
622デフォルトの名無しさん:03/12/16 11:30
byte配列の結合(?)ってどうやればいいのか教えてください。


Dim bytByte() As Byte

bytByte = ChrB(&H1)
bytByte = bytOutByte + ChrB(&H2)

みたくしたいのですが上のはエラーになります。
>>621
一文字づつ処理していけばいいだけですよ。タイピングソフトを参考にしましょう
ただ、ローマ字には複数の書き方があるのでIMEのヘルプなども参考に。

>>622
どんなエラーが出たのかくらい最低限書きましょう。
ReDimを調べて使ってください。
624デフォルトの名無しさん:03/12/16 13:54
ガイシュツだったら申し訳ありません。
RichTextBoxで背景に画像を指定することは出来ますか?
罫線入りノートの様なエディタを作りたいのですが・・・
>>624
そーゆーのはオリジナルの描画処理で作ってるのがほとんど
626デフォルトの名無しさん:03/12/16 18:31
かなり初歩的な質問で申し訳ないのですが、

Int(4.975 * 100 + 0.5) の演算結果が497になってしまいます。

これって確か丸め?が原因で起こるんでしたっけ?
Int関数などを使って、常に正しく四捨五入の演算をさせる方法が
ありましたら、解決法を教えてください。
>>626
Int(4.975@ * 100@ + 0.5@)
いや。冗談だ。
628デフォルトの名無しさん:03/12/16 21:52
フォーム上でGIFアニメを表示させるにはどうすればいいのでしょうか?
検索しても.NETの方のやり方しか記載されてませんでした。
>>628
WebBrowser
630CPU100%:03/12/16 22:30
float f=int((4.975 * 1000 + 5)/10);
は?
Cではなった。
しかし、このスレって聞き逃げのヤツばかりだな
解決したかどうかもわからん
>>628
DirectShowを使うという手もある。
動画ファイルと同じようにGIFアニメを再生できる。
>>626
回答じゃないけど、昔どっかのサイトで見た記憶。
VB5では、Int(100@/1@)がP-Codeだと100になって
ネイティブだと99になるw
634626:03/12/17 01:02
レスさんくすです。
>>627
全部を通貨型にする方法ですね。
でも、ちょっと現実的でないような・・(W

>>633
ネイティブとP-Codeで違う結果になる場合もあるんだー。
VB6ではどうなんでしょう?

>>630
Webを探索してたら、似たような方法が載ってました。
Cの場合はおそらくそれで大丈夫のようですね?

原因が浮動小数点の丸め誤差だということは、
一度整数に直してから演算すれば問題が起こらないのでしょうか・・?
(4.975 * 1000 + 5) \ 10
って式も考えてみたんですけど、これでいけるのか
イマイチ自信を持てなくて・・・。
>>634
何 故 試 さ な い ? ?
636626:03/12/17 01:26
>>635
上の例の場合は試しましたけど、丸め誤差の可能性がある
全ての浮動小数点で大丈夫なのか自信が持てなくて。
なら通貨型にしとけよ、、、
638626:03/12/17 02:22
>>637
おっしゃるとおり。通貨型にしたいところですが、
4.975っていうデータは、例として挙げただけで、
実際はここに演算結果が入るんですよー。
それに通貨型の場合は小数点の有効桁が4桁だから・・・。
639デフォルトの名無しさん:03/12/17 02:31
フォームを動的に選択してロードする方法?

どういうように質問したらいいのかすら分からないのですが・・・
大量のフォームモジュール(ユーザに見せる画面)があるプログラムを作りたいのですが、保守の手間や
ファイルサイズなどから、それらを個々にファイルとして作成しておいて、動的にロードできたらと思っています。

初心者な質問で申し訳ないのですが、この個々のフォームはどのようにして
作成すればよいのでしょうか?標準EXE?ActiveXコントロール?
そして、呼び出し方も不明です。DLLで作成できたら、
Declare Function で呼び出せばいいのかなとも思いましたが、その他上記の問題とあわせて
何の命令を使ったらよいのか分かりません。

ご教授いただけますでしょうか。よろしくお願いします。
こんな時、ASMリストとか出したくなるよな
>>639
考えるだけ無駄です。素直に作ったほうが身のためですよ。
642582:03/12/17 03:18
>>639
frmファイルを動的に読み込むような仕組みはVBにはない。
コントロール配列なら、元を一個配置しとけば実行時に数は増やせる。

でも、ファイルサイズについては、あらかじめフォーム作ったものであろうが
フォームの情報外出しにしようが本質的には変わらないんじゃない?
要はEXEコンパイルしなくてもフォームのデザインを変えられるようにってのが
最大の目的でしょ?
でもフォームによって使うコントロールが全く違っているような場合は
当然コードも変わるだろうから結局コンパイルし直さなきゃいけなくて
ほとんど意味無し。

使うコントロールが完全に決まっていて、配置とかプロパティとかだけの変更なら、
iniファイルか何かに保存しておいてロード時に読み込む仕組みを自分で作るしかない。
[text1]
top=100
height=200

コントロールの種類は決まっていて、データ件数などに応じて動的に個数が
変わる感じなら、コントロール配列のIndex=0だけ配置しといて実行時に
Load Text1(1)
text1(1).Visible=True
見たいな感じで。
643639:03/12/17 03:42
>>642
レスありがとうございます。

フォームのデザインをたびたび変更することが考えられるのですが、その変更時に
変更した部分だけをコンパイルして、そのファイルを変更する、といった事がやりたいのです。
やりたいことは、フォームデザイン変更時に、ネットワーク経由でそのファイルを送りつけ、自動更新の
ようなイメージで変更させることです。
なので、呼び出し元や、その他フォームはさわらずにやり過ごせたらと思っています。
サイズの部分はここで気になっています。

フォームではイベントも扱うのですが、生成時にコントロールの配置やサイズなどを決める方法は分かったのですが、
イベントの処理を書く方法が分かりませんでした。
フォームを動的に生成できるならコンパイルの必要もなくなるので、それがベストだと思っています。

よろしくお願いします。
644639:03/12/17 03:58
連続投稿失礼します。

たとえば、A,B,Cの仕事をするフォームがあったとします。
各仕事をするためのフォームには、さまざまな種類があります。
A1からA20までの種類のフォームの中から、ユーザは好きなものを選んで使います。
さらに、AからBのフォームを、呼び出します。
Bにも、B1からB20までのフォームがあります。
同様に、Cにもたくさんの種類があり、AやBのフォームから呼ばれます。
A,B,C、それぞれ、どの種類のフォームを使うか、ユーザー側が自由に気軽に変更できるように出来れば
ベストです。
実際にはABCだけでなくて、種類が30種類程度になるので、全てを一括であつかいコンパイルする手間は
避けたいと思っています。
各フォームでは、コマンドボタンとテキストフィールドでSQL文を発行したり、
キーイベントでファイルを読み書きしたりします。しかも例えばA1からA20の種類の中では、デザインも
異なりますが使用するコントロールも異なってきます。

作成者側は、あらかじめ全ての部品をコンパイルすることはできます。
ユーザー側では、コンパイル作業はできません。
ネットワーク経由でファイルを書き換えることはできます。

このようなイメージなのです。よろしくお願いします。
>>643-644
VBで作成し、コントロールから挙がってくるイベントも処理したいとなると、
ActiveXでDLL作るくらいしか選択肢無いんじゃないかな。(管理が面倒なんで
あんまり好きではないけど)

Winampのプラグインみたいに、本体を再コンパイルしないでDLLだけ増やす
ってなことをやろうとしたら難しいとは思います(CreateObjectを駆使すれば
なんとかなるかもしれませんが)
内容が変わることはあっても種類自体は固定、という状態なら、画面の管理と、
画面遷移を管理するプログラム(EXEかDLL)と、画面(DLL)を分けて作ればいいと
思います。
デザインパターンのMediatorパターンが、やりたい事に一番近いのではないでしょうか。

実行時にイベントを受け取りたいコントロール(及びクラス)を変えたい場合、
WithEventsでメンバを定義して、それにインスタンスをセットしてやれば
いいはずですよ。
646639:03/12/17 17:11
>>645
レスありがとうございます。
とりあえず、ActiveX DLLをキーに検索して、ThingDemo DLLというサンプルを見つけたので、色々やってみたいと思います。
また投稿します。
647デフォルトの名無しさん:03/12/17 17:37
質問です。
自作のメーラを「標準のメーラ」にする方法が分かりません。
インターネットオプションのプログラムー電子メールのコンボボックスの
中にプログラム名が出るようにしたいのですが。
どっかのレジストリでもいじるんでしょうか?
648デフォルトの名無しさん:03/12/17 17:51
>>647

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail あたりがそれっぽい。
649デフォルトの名無しさん:03/12/17 17:53
>>648
そうみたいですね。ここを変えると変わりました。
ありがとうございます。
650デフォルトの名無しさん:03/12/17 21:27
>>629,632
レスありがとうございます。無事動きました。
>>650
何を使ったのかという事までリポートしてくれたら他の人への情報の
共有ともなるのに。
>>651
お礼は言えても、どう解決したか書けないのは、
的確な情報を自分で検索できなかったことと、
本質的に同じ。
653デフォルトの名無しさん:03/12/18 08:35
Webbrouserコントロールを使って、テーブルをとってきています。
たとえば、Yahooファイナンスの株価情報のような物です。
ただ、テーブルの長さがものによってちがうんですが、
テーブルの最後を判定する方法ってどうすればいいんでしょう?
>>653
HTML系のオブジェクトにWebBrowser.Documentを代入すると
操作が楽だぞ。
VB5.0で作成したソフトが管理者権限のユーザーでログインして
インストール後、管理者権限でないユーザーでログインして
そのアプリケーションを実行すると「パスが見つかりません」
というエラーが出るとのクレームがありました。
同様の経験をお持ちの方は是非アドバイスください。
よろしくお願いいたします。
>>655
ユーザ名に2バイト文字つかうなゴルァと言いましょう。
>>656
ちょっと聞いて見ます。
>>656
聞いて見ました。2バイト文字は使われていませんでしたが
ユーザー名の中に「\」が入っていました。
これは問題でしょうか?
659デフォルトの名無しさん:03/12/18 14:27
このスレで既に出てる質問と似てますが
proxyの切り替えについての質問です。

私の場合はむつかしいプログラムは無理っぽなので
IEのインターネットオプションのproxyを書き換えて使いたいのです。
いくつかのVBの質問が出来るサイトで質問したのですが
「VBで出来ることではない」とか
「自分で調べてみれば?」とか言われました。
似たような機能があるVBプログラム(確かサイトにはVBで作ったと書いてあったハズ)
があったと思うのでVBで出来なくは無いと思うのですが・・・
質問しておいて反論すると吊るし上げを食らいそうなので
「そうですか、わかりました。」と書いて泣き寝入りしてしまいました。
技術的には質問サイトの方々には負けないぐらいのスキルをお持ちの
方々がいらっしゃるこのスレで質問させてください。
よろしくお願いします。
>>659
質問の仕方が(・A ・) イクナイ!
>659
>むつかしいプログラムは無理っぽ・・・
これがイクナイ!
>>658
聞く前に実験するとか何とかしないのかねぇ
>>662
現在、実験できる環境にないのですみません。
>>663
それは根本的に直すにはセットアップを作り直す必要がある。
対症療法で直すならユーザー名変更して再セットアップするしか。
どっちもできないならあきらめれ。
>>664
同じ環境で作り直しても事態はよくなりませんよね?
環境構築からやり直しかー(頭痛
>>665
setup.exeだったかsetup1.exeだったかを作り直す必要あるよ。
VB入れたら、それ作るためのソースも同梱されてる。
OSだのVBだのの再インストールは必要ないぞ。つか、しても良くならない。
VSIで作ればマシかもしれんな。
人柱としてためしとくれ
>>666
なんですとーーー
アプリケーションをVCで作り直すかー
>>668
だからそうじゃなくて・・・ ('A`)
もういいや。ほかの人にまかせたw

>>667
それはそうかも。ディストリ・・・のバグ(?)だからね。
670デフォルトの名無しさん:03/12/18 18:21
>>622
Option Explicit

Dim m_bBuf() As Byte
Dim m_lBufLen As Long

Private Sub StrCpy(ByVal s As String)
Dim lLenB As Long
lLenB = LenB(s)
If lLenB = 0 Then
lLenB = 1
End If
ReDim m_bBuf(lLenB - 1)
m_lBufLen = lLenB
m_bBuf = s
End Sub

次へ
671デフォルトの名無しさん:03/12/18 18:22
>>622
続き


Private Sub StrAdd(ByVal s As String)
Dim lLenB As Long
Dim sTmp As String

sTmp = m_bBuf

lLenB = m_lBufLen + LenB(s)

m_lBufLen = m_lBufLen + LenB(s)
If lLenB = 0 Then
lLenB = 1
End If
ReDim Preserve m_bBuf(lLenB - 1)
m_lBufLen = lLenB
m_bBuf = sTmp & s
End Sub

次へ
672デフォルトの名無しさん:03/12/18 18:22
>>622
続き




Private Sub Command1_Click()
Dim b() As Byte
Dim s1 As String
Dim s2 As String
s1 = "abc"
s2 = "def"
ReDim b(LenB(s1) + LenB(s2) - 1)

b = s1 & s2
Debug.Print b


StrCpy "abcxx"
StrAdd "zzz"
Debug.Print m_bBuf
End Sub

終わり。
673デフォルトの名無しさん:03/12/18 18:48
すいません、質問です。

テキストボックスを格納できる変数って、あるのでしょうか??
フォームと、それが持つテキストボックスを動的に指定したいので;

Global G_Form As Form
Global G_Txt As Control

を標準モジュールにて宣言し;

(例)
Private Sub Command1_Click()

Set G_Form = Me
Set G_Txt = Me.Text1

End Sub

とすると、G_Txtの中身は""になってしまいます。
ちなみに、G_Txt As TextBoxで宣言しても駄目でした。

宣言の仕方がおかしいのか、代入の仕方がおかしいのか
その辺からよく分かってません。

宜しくお願いします。
ボタンを押すと最前面に表示するようにしたいのですが、拾ってきたコードを実行すると
「SubまたはFanctionが定義されていません。」とエラーがでます。
どうすれば動くのかご指南願います。
  Dim FORMHANDORU As Long
Dim SHOKITI As Integer
Dim HYOUZI_SURU As Variant
Dim NO_MOVE As Variant
Dim NO_SIZE As Variant
Dim KAIJYO As Integer
'ウィンドウハンドルの取得
FORMHANDORU = Form1.hWnd
If SHOKITI = 0 Then
'「常に手前に表示」を解除
MODORITI = SetWindowPos(FORMHANDORU, KAIJYO, 0, 0, 0, 0, HYOUZI_SURU Or NO_MOVE Or NO_SIZE)
SHOKITI = 1
Command1.Caption = "「常に手前に表示」する"
Form1.Caption = "現在は「ノーマル」状態です"
ElseIf SHOKITI = 1 Then
'「常に手前に表示」をセット
MODORITI = SetWindowPos(FORMHANDORU, TUNENI_TEMAE_SET, 0, 0, 0, 0, HYOUZI_SURU Or NO_MOVE Or NO_SIZE)
SHOKITI = 0
Command1.Caption = "「常に手前に表示を解除」する"
Form1.Caption = "現在は「常に手前に表示」状態です"
End If
Declare
676674:03/12/18 21:39
解決しました。
有難うございました。
677VB開発1年目:03/12/18 23:26
質問です。
Debug.Printをラップして、イミディエイトウィンドウだけでなくファイルにも
デバッグ文を出力する関数を作ろうとしています。
目的は、Debug.Printをラップ関数に置き換える事で実行時にログファイルを
出力する機能を既存のアプリケーションに追加する事です。
しかし、Debug.Printと同じような引数の記述の仕方がわかりません。
Debug.Printの引数は次の通りです。
-----(MSDNより抜粋)-----
{Spc(n) | Tab(n)} expression charpos
Spc(n):省略可能です。出力にスペースを挿入するときに指定します。・・・
Tab(n):省略可能です。n で指定した絶対桁位置にカーソルを移動します。・・・
expression:省略可能です。出力する数式または文字列式を指定します。
charpos:省略可能です。次の文字を出力するためのカーソル位置を指定します。・・・
解説
引数 expression に複数の式を指定する場合は、各式の間をスペースまたはセミコロン (;) で区切ります。
-----(MSDNより抜粋)-----
Debug.Printの引数を完全にラップできるのがベストですが、少なくとも
expressionの"各式の間をスペースまたはセミコロン (;) で区切ります。"
を実現したいです。
開発環境はWin2000+VB6.0SP5です。
有識者の皆様、ご指導の程よろしくお願い致します。
>>677
最初に配列を宣言して、debugと同じタイミングで
この配列に値を突っ込んで、最後にテキストファイルに
内容を書き出してみては?
679デフォルトの名無しさん:03/12/19 00:52
質問です。
印刷を行うのにPrinterオブジェクトを使用したものを考えていたのですが、
どうやっても拡大率が指定できません。
調べてみるとZoomプロパティはプリンタのドライバに依存するとの
ことですが・・・
なんとか拡大率の問題をなくす方法はないでしょうか?
680:03/12/19 03:09
質問です。

String型の変数にフォーム名を持っているのですが
これを使ってフォームを開くことは出来るでしょうか?




Private Sub Cmd1_Click()
Dim strFormName as String
strFormName = フォーム1

   strFormName.Show
   ’↑こんな感じで。もちろん、これではできませんが。

End Sub


よろしくお願いします。
681デフォルトの名無しさん:03/12/19 07:44
>>680

Forms コレクションをループさせて、その名前を持つフォームを探し、
フォーム型のオブジェクト変数に入れて Show する
682677:03/12/19 12:50
>>678
早速の回答ありがとうございます。
説明が足りず申し訳ありませんが、私が実現したいのは・・・
-----↓元ソース-----
Dim Data1 As String
Dim Data2 As Long
Dim Data3 As Boolean
'〜処理〜
Debug.Print Data1; Data2; Data3
-----↓修正ソース-----
Dim Data1 As String
Dim Data2 As Long
Dim Data3 As Boolean
'〜処理〜
DebugPrintWrap Data1;Data2;Data3 '←ラップ関数に置換

この様な感じでDebug.Printを単純に置換するイメージなのです。
配列に入れるやり方だとこれは実現できませんよね。
やはりセミコロンで区切るのはDebug.Print等の特殊なIFでしか出来ないのでしょうか?
683680厨:03/12/19 13:07
>>681
朝早くから有り難うございます。

MSDNからコードをコピペして走らせてみましたが、
MDI親フォームと、そいつがロード時に開くMDI小フォームの
二つしかリストボックスに表示されません。

開きたいのは、他の入力画面なのですが
どうしたらそれの名前を取得できますでしょうか?

度々すみません。
宜しくお願いします。



(試してみたFormsコレクションのループです)

Dim I
lstForms.Clear
For I = 0 To Forms.Count - 1
lstForms.AddItem Forms(I).Name
Next I
>683
Formsコレクションでは、現在ロードされているフォームしか取得できません。

上記の手段をとるなら、少々野暮ったいですが、起動時に全フォームを
ロードしておき、必要ないフォームはHideで非表示にしておけばいいと思います。
で、必要なフォームだけShowするの。

HideとShowの切替がめんどいかもしれませんが。
685デフォルトの名無しさん:03/12/19 16:11
あ、sageちゃった。
686680厨:03/12/19 17:04
>>684
あー、なるほど。了解です。
ありがとうございます。

私が作っているものの場合、
全てロードしてしまう=全てのForm_Loadが実行されてしまう
で、困ったことになってしまうのですが
ロードされていないフォームの取得は出来るのでしょうか?
>686
ロードされていないフォームの取得は………不可能なんじゃないでしょうか。
vbpファイルからFormを抽出して名前を得ることは可能でしょうが、名前だけ
解っても仕方がないし。
全てのForm_Loadが起動時に実行されると困るならば、Form_Load関数では
最低限の処理だけ記述しておいて、大事な処理を別関数にしておくのは
どうでしょう?Showメソッドを呼び出す際、その関数を一緒に呼ぶとか
その関数内でShowするとか。
688デフォルトの名無しさん:03/12/19 17:27
あぁ、またsageちゃった。ごめんなさい
689デフォルトの名無しさん:03/12/19 17:35
>>686

これで満足か?

Private Sub Command1_Click()
  Dim f As Form

  Set f = Forms.Add("Form2")
  f.Show
End Sub
690デフォルトの名無しさん:03/12/19 18:09
>>689
キタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━ !!!

満足です!うわー、嬉しい。できたできた!
有り難うございます。 ・゚・(つД`)・゚・


>>687さんも、ありがとうございました。
691デフォルトの名無しさん:03/12/19 19:01
vbのon error goto ステートメントを使ったエラー処理のベストプラクティスにはどんなものがあるでしょうか。
参考になるWebサイトなど教えてもらえませんか。
>>691
On Error Resume Nextのほうが無難っぽいけどね。
ttp://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page21.htm
Tabでよくやるように、重ねたFrameを切り替えるとします。

この場合、実際にEnableなFrameを知る方法を教えてくださいませんかm(_ _)m
boolean型って何故あるんでしょう?
TrueかFalseかなんだから0から1までしか取れないですよね?
それなのに手持ちの本にはサイズは2バイトって書いてあるんですよ
それならByte型のほうが良いと思うんですが
>>694
Boolean型はTrueかFalseしか使用できないから、使い勝手が(・∀・)イイんですよ。

Byte型使うと、0か1だけでなく、2や3等の他の値も入れられてしまう。
仕様上、0か1しか許可しないのに、Byte型だと2以上の値を入れることが出来てしまうが、
Boolean型だと、コンパイラがエラーか警告出してくれるから、それでチェックできる。

チェックをコンパイラ任せにして楽できるから(・∀・)イイ!!
696デフォルトの名無しさん:03/12/20 17:05
getdataで受信したデータが何かを識別したいんですが、どうすればいいでしょうか?
具体的には、Int型の定価データと商品番号データの2種類を送受信したいんです。
データを受信したときにそのデータが定価なのか商品番号なのかを
識別する方法はないでしょうか?
697名無しさん:03/12/20 17:08
http://www.freepe.com/ii.cgi?arityuu
これもう消すので荒らしてください
698デフォルトの名無しさん:03/12/20 17:39
GlobalAlloc関数を用いて取得したメモリを、
Byte型の配列変数として参照するにはどうしたらよいのでしょうか?
どなたかご教授願います。
>691
VBが生産性が高いって思い込みじゃない?【2】
http://pc.2ch.net/test/read.cgi/prog/1061132253/
で似たようなネタ出てるよ
700デフォルトの名無しさん:03/12/20 18:50
極窓っていうソフトのバージョン情報を
表示したときに表示されるような
パソコンの情報を色々と取得したいのですが、
どうすれば良いですか?
厨な質問ですいません。

textboxにSetFocusすると、
「プロシージャの呼び出し、又は引数が不正です」とでます。
例えば、
sub txtBoxSetCursor(aaa as integer)

Text1(SheetInfo(aaa).BackColor = vbYellow
Text1(SheetInfo(aaa).SetFocus

end sub
この場合、テキストボックスの色は変わりますが、SetFocusでエラーが出ます。
宜しく御教えください
>>701
Form_Loadでやってる?
フォームを表示したときに最初にフォーカスを与えたいならTabIndexを0にすればいいよ。
703701:03/12/20 20:26
アドバイスありがとうございます。
フレームでページを切り替えてるのですが、
切り替わったページをのトップのテキストボックスにフォーカスを与えようとすると
エラーが出てしまいます。
テキストボックスの色は変わるのに何故エラーが出るのかが釈然としません。
EnabledがFalseとか
705701(厨):03/12/20 22:05
>>704
念の為、Focusをあてる前の行で、該当のテキストボックスをEnableにしてみたのですがダメでした。
ActiveとFocusの違いが分かってないせいですかねえ?
706 :03/12/20 23:25
VBでUSB接続のPC用ゲームコントローラからの入力を受け付けるには
どうしたらいいのでしょうか?KeyDownイベントとかで入力を受け付けられますか?

どなたか詳しい方ご教授願います。
DirectXツカエ
>>706
DirectInput使うのがめんどい場合は、
WinAPIのJoyGetPos関数を使用して、ジョイパッドの状態
(各ジョイパッドの接続状態、その各キーの状態)を調べられる。
詳しくはMSDNライブラリを参照のこと。
この時JOYINFO構造体を使うので注意すべし。

分からなかったらまた書き込んでくれ。
709デフォルトの名無しさん:03/12/21 11:47
ビデオカードの名称を取得するには、どうすればいいのでつか?
>>709
DirectX使えw
711卒研中:03/12/21 12:53
今、VB6.0を使ってプログラミングをしているのですが、外部のソフトの設定を
VBで行うことは可能でしょうか?

shell関数を使えば、プログラム自体を呼び出すことは可能だとわかったのですが、
呼び出して自分で設定するのではなくてプログラムの中に組み込みたいのです

具体的に書くと、ボリュームコントロールのオプション→プロパティから、録音を選び
Lineにチェックをいれ、OKをクリック。
その後Lineを選択
というものなのですが・・

どなたかよろしくお願いします



>>711
ほかのプログラムのボタンを押したりしたいのならFindWindowとSendMessage

プログラムから音量を調整したいのなら、
http://www.google.co.jp/search?q=mixerOpen
>>694
微妙に遅レス。
Booleanは論理計算できるのがいいと思ってたのだが。

Dim A,B,C as Boolean
 A=True
 B=False
 C=(A And B) Or (A Or B)

ってやるとC=Trueってなるとか。
Booleanの内部表現が16bitか8bitかということと、
言語仕様上Boolean型が存在すべきかということとは、
なんの関係もない。

言語仕様上はあった方が分かりやすいし、理にかなっている。

内部表現的には、1bitで実装されていてもおかしくはない。
>>711
他人が見てもわかるかどうか、自問自答しながら説明する努力をしたほうがいい。
仕様を説明できるということは、コーディングできるということ。
コーディングできない君は、説明もうまくできていないことに気づくべき。
これは、プログラミングに向いているかの、資質の問題。
いま、>>715がいいこと言った。
まあ、何が判らないか判らないんです!って感じだな。

訳判らない奴が考えて、ここが判らないという場合、
その思考することは大事だと思うが、初手から間違えた思考をしていることが多い。

だから聞く時は・・・、
1.何をやりたいか、普通の日本語(内部処理とか考えずに要求仕様を)で書く。
2.その上で、自分がどう考えて、何を調べ、試し、どのように上手く行かないかを書く。

それだけで、回答を得られる率は全然違うと思うけど。
VB6.0(SP5)で開発を行っています。アプリケーションのローカリゼーションを行っていて、
VB6.0付属のサンプルコード(ATM.VBP)を参考にしてアプリケーションを作ったのですが、
例えば

101 ラベルの表示
102 フレームの表示
103 メニューの表示
104 英語ボタン
105 日本語ボタン

201 Label's Caption
202 Frame's Caption
203 Menu's Caption
204 English Button
205 Japanese Button

と言うリソースファイルを用意して、

pubRESID=100

Label1.Caption = LoadResString(pubRESID + 1)
Frame1.Caption = LoadResString(pubRESID + 2)
Menu1.Caption = LoadResString(pubRESID + 3)
Command1(0).Caption = LoadResString(pubRESID + 4)
Command1(1).Caption = LoadResString(pubRESID + 5)

みたいな感じで、逐一Captionプロパティーに代入しているのですが、もっとうまいやり方が
あるんじゃないかと思うんですよ。例えば
719718:03/12/22 09:23
(続きです)

Dim Obj_Control As Object
On Error Resume Next

i = 1
For Each Obj_Control In Form.Controls
Obj_Control.Caption = LoadResString(pubRESID+i)
i = i + 1
Next Obj_Control

と言ったコーディングが出来るかと思ったんですが、フォームに配置したオブジェクトの順番
(一時停止してローカルウィンドウのMe.ITEMで確認してます)ってコントロールを追加したり
削除したりすると変化しますから、フォームをメンテするとリソースファイルもメンテしなきゃ
ならなくなるので、うまくないなぁと思いまして・・・

なにかよいアイディアはないでしょうか?
720デフォルトの名無しさん:03/12/22 09:32
テキストコントロールの仕様不可時の色って変えられないんですか?
721デフォルトの名無しさん:03/12/22 12:24
>>720
TextBox.BackColor=(任意の色)
TextBox.Enabled=False

これでいいのかな?

ちなみにEnabled=Trueにするときは
もちろんまた色戻さないといけない。
722720 :03/12/22 12:44
あ、すみません! 説明不足でした・・・
フォントの色です。。

テキストボックスのフォントの色、使用不可にするとグレーになるじゃないですか。
たとえばこれを黒のままにしておくとかしたいんですが・・・
>>722
使用不可(Enabled=False)では出来ない。
使用不可ではないけどLocked=Trueなら色変えられるよ。
あとはそのテキストボックスにフォーカスが移ったら
他のコントロールにフォーカスを飛ばすとか。
724720:03/12/22 14:17
>>723
ありがとうございます。
試してみます
725デフォルトの名無しさん:03/12/22 15:35
>>722
コンテナ上に配置して、コンテナの Enabled を False にする、ってのがよくありがちな技。
726デフォルトの名無しさん:03/12/22 17:13
A(1000,1000)
B(10,1000,1000)
という配列があって、B(1,)にAの内容を全てコピーしたいのですけれど、
For i=0 to 1000
 For j=0 to 1000
  B(1,i,j)=A(i,j)
 Next
Next
とやると時間がかかりすぎるので、一括してコピーする方法というのはないでしょうか?
memcpy
>>727
連続して格納されているとは限らないので、それを使うのはどうかと。
固定長なら>>727でいけるんじゃないの?
>>726が型を書いてないからわからないけど。

Dim A(1000,1000) as ?
Dim B(10) As Variant
・・・・・・・・・・・・・・・
B(1) = A()
MsgBox B(1)(1, 1)
730726:03/12/22 18:25
>>729
すみません。
AはByte型、BはInteger型です。
SP6はいつになったらリリースされますか?
>>718
おいらも昔悩んだ記憶があるなぁ。
おいらの場合、必要なコントロールのTagに「RES=xxxx」って入れておいて、
それをキーにLoadResStringしたっけなぁ。
SP5で打止めでつ。XPでは.NETをお使いくだちい。
‥‥と、MSなら平気でアナウンスしそうな悪寒。(´・ω・`)
734デフォルトの名無しさん:03/12/23 00:33
Eval関数を使いたいのですが、VB5には実装されていないようです。
VB6には入っているのでしょうか。

テキストボックスに書き込んだ数式を、実際の関数としてプログラム内で
使いたいのですが。(OSはXPです。)
DataGridやDBGridでIMEのモードを変更する方法をご存知でしたら
教えてください。

ちなみにVB6+SP5を使っています。
text1.text が

こんにちはA
こんにちはB
こんにちはC



text2.text が

こんばんわA
こんばんわB
こんばんわC

の時、

text1.text + text2.text だと、
こんにちはA
こんにちはB
こんにちはC
こんばんわA
こんばんわB
こんばんわC

になってしまいますよね。
そこで

こんにちはAこんばんわA
こんにちはBこんばんわB
こんにちはCこんばんわC

にするにはどうしたらいいんでしょうか。
>>737-738
text1.textの内容を一文字ずつ読んでって、改行を発見したらそこにtext2.textの同じく改行までを挿入する
740718:03/12/23 07:34
>>732
おお、Tagプロパティーを利用すればオブジェクトを一意に識別する事が
出来ますね。ヘルプファイルにもヒントが書いてありました。

Tagプロパティーって全然意識してなかったので盲点でした。こう言う場
合に使うんですなぁ・・・
>>737-738
Dim a As Variant, b As Variant, c() As String

a = Split(Text1.Text, vbNewLine)
b = Split(Text2.Text, vbNewLine)

'If UBound(a) <> UBound(b) Then Exit Sub
Redim c(UBound(a))

For i = 0 To UBound(a)
 c(i) = a(i) & b(i)
Next i

Text3.Text = Join(c, vbNewLine)
742デフォルトの名無しさん:03/12/23 10:15
どなたか質問に答えていただけないでしょうか?

Printerオブジェクトにイラストを描画した後、その上にテキストを重ねて描画し、
印刷をしようと思ったんです。
そしたら印刷されたイラストの上に、テキストの背景であろう白い矩形が残ってしまい、
イラストが欠けた状態で印刷されてしまいます。
コードを以下に記します。

Printer.CurrentX = 0 '頭から0ミリの場所に印刷
Printer.CurrentY = 0 '左から0ミリの場所に印刷
PictureBox.Picture = Loadpicture("c:\picture\picture.bmp")
Printer.PaintPicture PictureBox.Picture, 0, 0, PictureBox.Width, _
PictureBox.Height, 0, 0, PictureBox.Width, _
PictureBox.Height)

Printer.CurrentX = 10 * 56.7 '頭から10ミリの場所に印刷
Printer.Current = 10 * 56.7 '左から10ミリの場所に印刷
Printer.Print "あいうえお"

Printer.EndDoc

先にテキストを描画した後でイラストを描画しても、テキストがイラストに
隠れた状態で印刷されてしまいます。

イラストもテキストも欠けることなく、PictureBoxに描画してからそれを
印刷するという手法を取らずにきちんと印刷するにはどうすれば良いので
しょうか?
743742:03/12/23 10:24
すみません、上のレスの誤字修正です。
Printer.Current = 10 * 56.7→×
Printer.CurrentY = 10 * 56.7→○

PictureBoxに描画してからそれを印刷するという手法を取らずに→×
テキストは、PictureBoxに描画してからそのイメージをそのまま _
印刷する、という手法を取らずに→○
744XPpro + VB6SP5:03/12/23 11:47
>>742
やってみたら問題なくできた。環境のせいかな・・・
>>739
一行づつ読んでいくというのが分かりません。
ファイルを読み込む場合は

open ファイル名 for input as #ファイル番号
   input #ファイル番号 , 変数名
close #ファイル番号

なんでしょうけど、text1.textみたいのを読み込む場合はどうすればいいのでしょう。



>>741
配列・・を使うということですよね。
頑張ってみます。


それにしても、簡単な式で表せそうで、そうでもないんですね;;
>>745
dim i as integer
dim s1 as string
dim s2 as string

s1 = text1.text

for i = 1 to len(s1)
s2 = mid$(s1,i,1)
next
747訂正:03/12/23 12:25
>>745
Dim i As Integer
Dim strText As String
Dim strTmp As String
Dim strTmp2 As String
Dim strArray() As String

strText = Text1.Text
ReDim strArray(0)

For i = 1 To Len(strText)
strTmp = Mid$(strText, i, 1)
Select Case strTmp
Case vbCr
Case vbLf
ReDim Preserve strArray(UBound(strArray()) + 1)
strArray(UBound(strArray())) = strTmp2
strTmp2 = ""
Case Else
strTmp2 = strTmp2 & strTmp
End Select
Next

For i = 1 To UBound(strArray())
MsgBox strArray(i)
Next
748へぼ:03/12/23 12:43
最近WirelessOpticalMouse2.0を導入したのですが、コーディングウィンドウ上
で、ホイールによるスクロール操作ができなくなってしまいました。
以前IntelliMouseでも同様の症状がありましたが、これはドライバをアップデート
することで解消できました。
ですが、今回はドライバの最新版が見当たりません。
どなたかご存知の方いたら教えて下さい。

>>748
どこでもホイール使うとできる
750へぼ:03/12/23 12:58
>>749
それは普通にスクロールするということでしょうか?
ちなみに当方はVB6.0、Win2000という環境なんですが、全く動きません・・・。
俺はコレで動いてるがなぁ
スクロールバーを右クリックして、「最上部」、「最下部」ってのが機能した事がない。
>>750
”どこでもホイール”というソフトがあるのだが。
754742:03/12/23 14:33
>>744
ごめんなさい、確かに>>742のコードでは正常に動くようです。
僕の作っているプログラムでは、>>742のコードの前で以下のコードを
書いていたのです。

Printer.ScaleMode = 1
Printer.Height = 10777
Printer.Width = 7687
Printer.Orientation = 2 '用紙の向きを横に

この4行が入ると何故か動かないのです・・・
>>747
ありがとうございます。
まだ配列勉強中ですけど、参考にさせて頂きます。
756shggy:03/12/23 20:02
はじめまして。shggy と申します。
自分、最近日本語環境 Win98 で作成したアプリを英語版 Win XP Professional
に移植する仕事を依頼されました。
ソースから移植しXPでexeを作成しようとしたのですが、
DBのOpenが動作しません。
日本語のXPに移植したときはうまく動作したのですが。
問題が起こるソースは

SQL="select * from abc"
Set rs = New ADODB.recordset
rs.Open SQL,ADO_Connection,adOpenStatic,adreadOnly

といった感じのごく普通のソースです。
この文を実行すると

Run-time error '-2147467259(80004005)';
selected collating sequence not supported by the operating system

というメッセージが表示されますがMSDNのHELPにはリンクしていないです。
この文はそこらじゅうに使っていて、もしこのOSで使用できないとなると
全ての文を書き換えねばならず、正月も吹っ飛ぶ勢いです。

もし、同じ現象を経験された方がいらしたら、ご意見を伺えないでしょうか。
宜しくお願いいたします。 shggy


>>756
正月ないかもね。
データベースの文字コードは何?
EUCとかShiftJISだとまずいかも。
758shggy:03/12/23 20:13
databaseはひとまずmdb です。日本語環境のAccess 2000 で作成しました。
内容は全て英語なのでもんだいないと思います。

rs.Open "abc",ADO_Connection だと動作するのですが。

やはり正月はないですか・・・ が、が、がっくり。
,adOpenStatic,adreadOnly

これ消すだけで正月がふっとぶの?
760shggy:03/12/23 20:26
いや、違うんです。

rs.Open "select * from abc",ADO_Connection

だと756のエラーが出力されて動作中断するのです。
select文が使えないというのはやはりDBの問題ですかね。
もう少し、調べてみます。
761shggy:03/12/23 20:31
申し訳ありません。解決しました。
databaseをXPで最適化したら、あっさり動作しました。
お騒がせしました。

また、お邪魔することもあるとは思いますが、ひとまず失礼します。
shggy
正月休みおめ
byte型を数値(Long)型に変換する手段はどんなのがありますか?
検索してもいまいち解りません。
手法だけでもご意見ください。お願いしまっす。
>>763
どんな事がやりたいんだ?
>>764
定義体ファイルにbyte宣言されている項目があってその値は本来
数値で表現されるべき値なのでLong変換した後RecordSetに更新し
外部に受け渡したいのです。
Vbの中で変数に値を代入する際、強引に
a = Cdbl(バイト変数値)
とか横着しても駄目でした(当然か)
なにか策はありませんでしょうか?
>>765
Dim a As Long
Dim b(0 To 3) As Byte
a = ((b(0) And &H7F) * &H1000000) Or _
(b(1) * &H10000) Or _
(b(2) * &H100) Or _
(b(3))
If b(0) And &H7F <> 0 Then
a = a * (-1)
End If

動作確認もリトル/ビッグエンディアンもまったく無視してるので適当に
デバッグしておくれ
767765:03/12/23 23:31
おお、コードまで有難うございます。
ここに環境が無いので即試すことはできませんが明日早速試して
みます。
やはりそんな都合の良い関数がVbに用意されている訳はないのですね。
もし有ったら馬鹿な質問かと心配してしまいました。
ありがとうございます
memcpy でやれるかもしれんが、俺はやったことないので退散。
769742:03/12/24 01:22
>>754の件ですが、結局その4行は削除しました。
そういった印刷の諸設定は、印刷用コモンダイアログ内のプロパティボタンで
ユーザーさん側で手動で行ってもらうことにしました。
用紙サイズの設定は、プリンタの設定内で”ユーザー定義サイズ”を新規に
作っておいて、それを使ったほうが手っ取り早かったようで・・・
つうかさ、VBでmemcpyなんて使うなよ。
普通に動作保障ないぞ。

まず、変数のアドレスを取得するところからして保障なし。
>>770
で、おまいさんならどうするね?

>>771
基本的に、業務で扱ってるデータで二元配列にしなければいけないデータがないってのもあるけど、
二元配列自体を避ける。
(ベーシックのループ処理、配列処理の遅さを考慮)

で、もう変更できない状態でやらなければいけないなら、ループでべたにやる。
memcpyなんか使うよりはセーフティー。

大体さ、memcpyをVBで使うなら、OLEとかまで勉強して、VBが変数をどのようにして持つかまで
勉強しないと駄目だべさ。
勉強した上でmemcpy
バイト型って0〜255の範囲の値だよね?
なぜ長整数型に変換するんだろう…? よくわかんねぇ。
>>774
LongがByteの配列に入ってるからLongに戻したいってだけだべ?
ただ、>766のコードじゃうまくいかないのではと思ってるが。
>>775
ああーなるほど、

2,147,483,647 = &h7FFFFFFF
 ・
 ・
0=&h00000000
-1=&hFFFFFFFF
 ・
 ・
-2,147,483,647 = &h80000000

ってのを、例えば2,147,483,647なら

b(0)=&hFF
b(1)=&hFF
b(2)=&hFF
b(3)=&h7F

ってな感じでバイト配列に放り込んでるのか。
>>776
-2,147,483,647 = &h80000000
.        ↑
無限ループしちゃってるみたいなんですけど、強制終了しかないですかね・・・(´・ω・`)
>>778
Ctrl+Breakは?
780737-738:03/12/25 02:36
>>741さんはじめ、レスくれた方々ありがとうございました。
なんとか出来ました。
プログラム自体はじめてなもので、四苦八苦でした。

http://metal.bbzone.net/up/upron/source/up0020.zip
初めまして。みなさん高度なことを質問されているようで恐縮ですが…

描画系のメソッドの色指定にアルファ値を含めることは可能でしょうか?
(Picture1.PSet(X,Y),RGB(R,G,B)←ここをRGBAにしたい。)
RGBAのような指定の仕方がありましたらぜひご教授ください。
.Netではいろいろやって可能のようですが、私にはチンプンカンプンだし、
VB6しか持っていないのでやろうとしてもできません。

どうかよろしくおねがいします。
>>781
2000/XPにはAPIがあったような気がするし(だれかおしえて)、
DirectX使ってもできそうだけど、計算でやるならば

加算結果:R,G,B
加算元:の色r1,g1,b1
加算したい色:r2,g2,b2
アルファ(0.0〜1.0):A
とすると
R=r1*A+r2*(1-A)
G=g1*A+g2*(1-A)
B=b1*A+b2*(1-A)

アルファが0〜255なら割っておくこと
>781
BitMapならAlphaBlendAPIを使えばいいと思うんだけど、
使ったことはないから何ともいえん。誰か補足よろ。
でもDirectX使ったほうが早いと思うな。
784デフォルトの名無しさん:03/12/25 15:05
IrfanViewという画像ビューワーソフトのプラグインに
SFF(Structured Fax File).DLLというファイルがあるのだけれど
これをVBに組み込んで PictureBox に
表示する方法等ご存知の方いらっしゃいませんでしょうか?

※Structured Fax File … 一つ一つの画像のスプライトをグループ化して
  ***.sffの一つのファイルにまとめたもの。

Public Declare Function ReadSFF Lib "SFF.dll" ()
のように組み込めばいいような感じはするのですが、
今イチDLLを組み込むことに慣れていないもので・・・
このSFF.DLLを使ってのプログラミング経験のある方いらっしゃいませんでしょうか?
785750:03/12/25 22:21
>>749
>>753
ありがとうございました!
無事スクロールできるようになりました。
786デフォルトの名無しさん:03/12/26 11:04
すいません、質問です。
自作アプリでバージョン表示のダイアログを出しているんですけど
プロジェクトのビルドごとにバージョン番号を書き換えるのが面倒なので
できれば自動的に値を取得したいと思っています。
.NETでのやり方はGoogleで検索して見つけたのですがVB6でのやり方がわからず困っています。

実行時に自分のプログラムのバージョン情報を取得するのってどうすれば良いんだすか?
>786
App.MajorとApp.MinorとApp.Revisionを使え。
788素人:03/12/26 11:50
vb6って買えばいくらくらいなん?
オレもやってみるかな
>>788
検索すればすぐ分かるような事をすぐ人に聞くような軽い気持ちじゃ
プログラムなんて習得できないよ。
コントロールボックスの終了の×ボタンだけ非表示
または押せないようにすることは可能でしょうか?
最小化・最大化は残したいので。
>>790
可能なんじゃねえの?検索したらすぐ出てきたんだがな
ttp://www.ne.jp/asahi/protech/hiroaki/programing/vb.html#Q8
>>791
ありがとうございます。超急いでたもので。
793デフォルトの名無しさん:03/12/26 15:36
素人が挑戦しているのですが、行き詰ってしまいました。
よろしくお願いします。

inputboxで日付を受け取ってB2セル日付のデータと比較するだけなのですが、うまくいきません。
日付の入力形式は 2003/12/24、コーディングは以下のとおりです。





Dim idate As Variant

idate = InputBox(prompt:="日付を入力してください")

Range("A2").Select
Range("A2").Formula = "=if(B2)>=datevalue(""idate""),""new"","""")"
Dim idate As String

If IsDate(Range("B2").Formula) = False Then Exit Sub
Do
idate = InputBox("日付を入力してください")
If Len(idate) = 0 Then Exit Sub
If IsDate(idate) Then Exit Do
Loop

If CDate(Range("B2").Formula) >= CDate(idate) Then
Range("A2").Formula = "new"
Else
Range("A2").Formula = ""
End If
795デフォルトの名無しさん:03/12/27 00:29
ウェブブラウザコントロール上もしくは画面上の、
特定の場所の色を取得するにはどうすればよいのでしょうか?
796793:03/12/27 08:07
>>794
ありがとうございます。早速やってみます。
>>795

Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal nXPos As Long, ByVal nYPos As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long

Private Sub Command1_Click()

    Dim lngDC    As Long
    Dim lngColor As Long

    lngDC = GetDC(0)
    lngColor = GetPixel(lngDC, 1, 1)
    Debug.Print Hex$(lngColor)
    ReleaseDC 0, lngDC

End Sub
798デフォルトの名無しさん:03/12/27 12:09
質問です。

TextBoxをサブクラス化してCtrl+Aで「全てを選択」するようにしたのですが、
Ctrl+Aを押したときに、「キン」という音が鳴るのです。
これは無効な操作をした時に出る音なのですが、
例えば、NoteパッドでCtrl+Qを押したりした場合に出る音です。

この音を出さないようにする方法はないでしょうか?
Ctrl+AのKEYDOWN, KEYUPイベントを拾ったときにオリジナルな
WindowProcを実行しないようにしてみたのですが、やっぱり音が出ます。
799デフォルトの名無しさん:03/12/27 12:32
VBスクリプトにて、
長い形式のDate(日付)を出力したいのですが、
Format関数が使用できません。
どうしたら良いでしょうか?
800795:03/12/27 12:41
>>797

ありがとうございます。
おかげでできました。
>>799
FormatDateTime()じゃだめ?
802799:03/12/27 13:28
>>801
おかげでできました。
どうもありがとうございました。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
 If (Shift = vbCtrlMask) And (KeyCode = vbKeyA) Then
  Text1.SelStart = 0
  Text1.SelLength = Len(Text1.Text)
  KeyCode = 0
 End If
End Sub
804798:03/12/27 14:04
>>803
ありがとうございます。
でもやってみたんですが、音がなります。。
KeyCode=0だけではダメみたいですね。

鳴らしてるのはTextBoxコントロールなんでしょうかね。
なんか違うような気がしてきました。
805デフォルトの名無しさん:03/12/27 14:10
VBからPL*SQLってどうやったら実行できるの〜?
学校に誰もいないからわからないよー
あなたも家に帰りなさい。お気をつけて。
807デフォルトの名無しさん:03/12/27 16:56
コードの画面でマウスのホイールボタンが利かないんですが仕様ですか?
>>807
このスレを全部みたら解決する。
すみません。教えてください。
よくアプリケーションでヘルプとかにリンクが貼ってあって
押すとブラウザが立ち上がってヘルプページに飛んだりしますが
あれはどうやってやっているのでしょうか??
>>809
アプリケーションからヘルプを起動して、そのヘルプからブラウザにURLを渡したいのか、
アプリケーションからブラウザにURLを渡したいのか、どちらなんだ?

あいまいに書いた文章が思ったように解釈されないように、
あいまいに書いたプログラムは思ったように動作しない。
的確に表現するよう心がけよ。話はそれからだ。
「ヘルプからブラウザにURLを渡す」というのがどういうのかわかりませんが、
「押すとブラウザを立ち上げてアプリケーションからプラウザにURLを渡して
表示させる」ということです。
失礼しました。
>>811
そういうこと。
>>810
' 指定したURLをブラウザで開く

ShellExecute Me.hwnd, "Open", "アドレス", _
vbNullString, App.Path, 1
>>811
Private Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long
Private Sub mnuHelpOnline_Click()
ShellExecute Me.hWnd, "Open", "http://www.google.co.jp", vbNullString, "C:\Program Files\Internet Explorer\iexplorer.exe", 5
End Sub
で解決いたしました。ありがとうございました!
すいません。
文字数にあわせて(計算して)テキストボックスの大きさを変えたいのですが上手くいきません。
20桁分くらいのテーブルを持たせればいいのでしょうが、
普通はどうやって対応するものなんでしょうか?
817VB厨:03/12/28 08:49
おしえてください
VB5.0で作ったプログラムを配布する場合
必要ランタイムのバージョンは
最新で大丈夫なのでしょうか?
おながいします
>>816
手元に VB 無いから検証できないけど、

With Text1
 .Width = .TextWidth(.Text)
End With

ぐらいでできなかったっけ ?
VB6.0でタブブラウザを作ろうとしているんですが

Dim iCnt as Integer

iCnt = iCnt + 1
Load webbrowser(iCnt).GoHome

みたいな感じでやれば、Form上に貼り付けたwebbrowserコンポーネント
を複数ロードは出来るんですが、これをタブと関連付けて、タブを閉じた場合に
タブを閉じた数だけ添え字を詰めてやらなければならないんですが
どうしたものか・・・
単純にUnloadするだけでは閉じたタブの添え字が抜けてしまうもので。

webbrowser(0) Google
webbrowser(1) Yahoo
webbrowser(2) Infoseek

Yahooのタブを閉じると
webbrowser(0) Google
webbrowser(1) Infoseek
としたいのです。

どなたか教えてください。お願いします。




820デフォルトの名無しさん:03/12/28 11:17
VBScriptでAPIのGetKeyState関数を使用したいのですが
どうすれば良いでしょうか?
>>816
テキストボックスの裏側にAutoSize=Trueにしたラベルを置いて

Private Sub Text1_Change()
With Text1
Label1.Caption = .Text
.Width = Label1.Width
End With
End Sub

みたいな感じ。幅は適当に調整しる
質問です。

VB6.0で今、Accessのフロントエンドを作っています。業務用パーソナル
アプリケーションで営業の方々に持たせるものなのですが、

Accessですと、サブフォームのデータグリッドのかく升目でいちいち、
商品IDだのコードだのを入れるのではなく、ルックアップさせて、商品名
を選択するとそれにまつわるものが

ずらーーーっと引っ張ってこれますよね?

あれをVBで実現させたいのですが、標準のコントロールですと出来ません。
何かやり方があるのでしょうか?それかこれを実現できるOCXがあったら
是非教えてください。
コマンドボタンをクリックすると(テキストを表示するように)右にhtmlを表示するようにしたいのですが、
どうすればよいでしょうか?
824デフォルトの名無しさん:03/12/28 19:56
ageておきます。
>>823
他人にわかるように質問する技術を勉強してからにして下さい
>>825
失礼しました。
827816:03/12/28 21:14
ありがとうございます
828デフォルトの名無しさん:03/12/29 05:08
正負を見分ける関数とかってあります?
>>828

自前で作れ
見分ける意味ってある?
正か負にしたいなら、絶対値だけわかればいいわけだし。
831chibiegg:03/12/29 08:53
VBでソフトをつくりXPでコンパイルして実行するとどうしても、
XPのLUNAが適用されずにボタンやプログレスバーが、クラシック表示
になるんですけどどうすればLUNAを適用させて、ボタンやらを表示できるんでしょうか?

なにかAPIでもあるのですか、急な質問ですいません
832デフォルトの名無しさん:03/12/29 10:09
>>831
.manifest を書く。もしくはリソースに組み込む。
833デフォルトの名無しさん:03/12/29 11:05
>>825
VB以外も理解できるようになる技術を勉強してからにして下さい
834デフォルトの名無しさん:03/12/29 11:28
VBScriptでWin32APIを使用したいのですが、
DeclareステートメントがVBScriptでは使用不可のようです。
どうすれば良いのでしょうか?
835デフォルトの名無しさん:03/12/29 12:15
>>823
意味がわからない。TextBox の代わりに WebBrowser コントロールを使う、って
ことかな?

>>833
(・∀・)カエレ!!

>>834
API を呼ぶ ActiveX DLL を作って、それを VBS から呼び出す。
836chibiegg:03/12/29 13:08
>>832
どうもありがとうございました
中1なのでとても参考になりました
837デフォルトの名無しさん:03/12/29 13:22
質問です。
Access2000のリストボックスで、値リストをRowSouceにセットする際に、
大きな文字列(とは言っても せいぜい3〜4キロバイト程度の大きさ)
で「このプロパティの設定値が長すぎます。」とエラーになってしまいます。

ひょっとしてこれ以上の値はセットできないのでしょうか?
>>835
お前が(・∀・)カエレ!!
839デフォルトの名無しさん:03/12/29 16:18
VB6(SP5) + Spread6.0(GreapeCity) で作成したプログラムを異なる複数のOS(WinXP Pro/Home、Win2000、Win98SE)に
配布しようとした場合に一番安全な配布方法はどんな方法でしょうか?

以下のように3つに分けて別々に入れさせる方法を考えたのですが

1.VB6(SP5)のランタイム  →Vectorとかに落ちてるやつ
2.Spread6.0の必要なdll   →ファイルコピー&レジスト
3.プログラム         →EXEのコピーのみ

2のSpreadの動作に必要なファイルの扱いが良くわかりません。
プログラムと一緒のフォルダに入れるべきなのか
Systemフォルダに入れたほうが良いのか...

サイドバイサイドという方法まではたどりついたのですがまだ理解できてないです。 
(↑これについて解りやすく解説してあるサイトとかないでしょうか?)

>>839
4.VSI
5.ディストリビューション ウィザード
6.その他のインストーラ作成ソフト
>>840
それを分けて入れてどうするのかと小(ry
842デフォルトの名無しさん:03/12/29 16:47
>>837
駄目って言われるなら駄目なんじゃない?
いったんテーブルに突っ込んでおくとか。

>>838
回答しないなら(・∀・)カエレ!!

>>839
Install Studio/Install Shield できちんとやる、ってのが一番安全。

サイドバイサイドについては、理解なんてものは必要ないくらい簡単。
単に、.local ファイルを置くだけだから。Web でも記事が読めるところが
あったね。
843デフォルトの名無しさん:03/12/29 16:48
>>839

> 2のSpreadの動作に必要なファイルの扱いが良くわかりません。
> プログラムと一緒のフォルダに入れるべきなのか
> Systemフォルダに入れたほうが良いのか...

サイドバイサイドを使うなら、ローカルフォルダ。そうでないなら、System フォルダ、
ってのが正解。
844822:03/12/29 18:08
ども。

ウェブをあさっていたらまさに望んでいたものが見つかりました。
けれどこの手のものでOCX化されているものって殆どがものすご
く高い製品ばかりですね。びっくらこきました。

Grid Control内でCombo Boxという
http://www.mvps.org/vbnet/index.html?code/subclass/comboflexgrid.htm
のテクニックがまさにそれで、これで最初のコンボを選ぶとずらっと出すこと
ができるんじゃないかと考えています。

こういうのってOCX化できませんかね?で、Data Environmentで呼び出した
Access2000のテーブルをそのコントロールにはじき出す。
無理?
845デフォルトの名無しさん:03/12/29 18:52
>>844
無理ではない。けど、それを作るのに一月かかるなら、買っちゃった方が安い、
ってことでみんな作らないだけ。

846デフォルトの名無しさん:03/12/30 04:20
>828
激しく亀レスではあるが実はsgn関数というものが存在する・・・
847839:03/12/30 09:54
>> 842

>Install Studio/Install Shield できちんとやる、ってのが一番安全。

Install Studio or Install Shieldでスクリプトを書くって事でしょうか?
これから試用版を試してみて良ければどちらかの購入を検討します。
みなさんのおすすめはどっち?
 
Install Studio (GrapeCity)
ttp://www.grapecity.com/japan/support/database/P3_26.htm

Install Shield (ネットワールド)
ttp://www.networld.co.jp/products/is/index.htm


>サイドバイサイドについては、理解なんてものは必要ないくらい簡単。
>単に、.local ファイルを置くだけだから。Web でも記事が読めるところが
>あったね。

サイドバイサイドって情報少ないですね...
かなり検索しているのですけど、なかなかこれといったサイトにたどり着けません


848デフォルトの名無しさん:03/12/30 10:39
>>847

Install Studio は、Windows Installer に対応してなかったはず。ということで、お勧めは
Install Shield だね。

> サイドバイサイド

Windows 2000 登場とともに大々的に取り上げられたね。なので、ちょっと古めの
記事を探してみるのがいいかな。とはいえ、あんな単純なもの、何がわからないのか
わからんけど。

要するに、実行ファイル名.local ってファイルを置いておくと、レジストリを無視して
ローカルフォルダから COM コンポーネントが読み込める、ってだけなんだけど。
849839:03/12/30 10:55
>>848

存在を知っただけで、実際どのようにするか知らなかったので
簡単なのか難しいのかも解ってなかったです。
そんなに簡単だったのですね...
やってみます。
ありがとうございました。
850デフォルトの名無しさん:03/12/30 12:27
はじめまして。

VB6.0のフォームにWebBrowserコントロールを貼り付け、
NavigateメソッドでJava Plug-inのあるページにアクセスしたのですが、
グレーの長方形が出てくるだけで、Plug-inが表示されません
(タスクトレイにJavaアイコンも出ない)。

ちなみに、Java Plug-inはインストール済みで、
バージョンは1.4.2-b28、
IEを普通に起動してアクセスしたときは、
Plug-inが正常に表示されています。

誰か原因がわかる人がいたら、教えてください。
お願いします。
bmpからリージョン作りたいんだが
単純な形と違って切り方がわからない。
bmp解析してゴニョゴニョとかしなきゃ無理なのかな。
実現の仕方おせーてplz
852デフォルトの名無しさん:03/12/31 00:04
サイドバイサイドで質問です。

ローカルフォルダに置くComコンポーネントは
やっぱりレジストリ登録が必要になるのでしょうか?
853デフォルトの名無しさん:03/12/31 00:21
>>851

マスク画像を作って、そこからパス→リージョンみたいな変換ができなかったかな?

>>852
登録は必要(だったはず)。でも、フルパスで登録する必要はない。
前回終了時のウィンドウの位置を記憶するためにはレジストリは必要ですか?
出来れば使いたくないのですが・・・。
>>854
iniとかファイルとして残せば?
856デフォルトの名無しさん:04/01/01 20:00
VB初心者の質問です。
1つのフォーム上に2つのDataComboを配置します。
DataComboのデータ元となるのテーブルはそれぞれ別となっています。

※DataCombo1のデータ元となるテーブル
【分類ID】←フィールド名
    1
    2
    3

※DataCombo2のデータ元となるテーブル
【分類ID】【商品名】←フィールド名
    1  大型電卓
    1  小型電卓
    2  ファイルボックス
    2  クリアファイル
    3  CD−R


DataCombo1で"2"を選択した場合に、
DataCombo2のリストに"ファイルボックス・クリアファイル"のみ表示させるには
どのように処理すればよいでしょうか?

Visual Basic 6.0 SP5 Access 2000 を使用しています。
どなたか分かる方、教えて下さい。よろしくお願いします。
>>856
大雑把に書くと、

Sub DataCombo1_Change()
 Set DataCombo2.RowSource = 「SELECT * FROM table2 WHERE 分類ID=?」
End Sub

・・・って解釈でいいのかな?
858デフォルトの名無しさん:04/01/01 22:01
>>857
即レスありがとうございます。
以下のように書いて実行してみたのですが

Private Sub DataCombo1_Change()
Set DataCombo2.RowSource = "SELECT * FROM table2 WHERE (" & DataCombo1.Text & ")"
End Sub

オブジェクトが必要ですというエラーがでてしまいます。
『分類ID=?』の部分は具体的にどのように書けばよいのでしょうか?
859デフォルトの名無しさん:04/01/02 01:47
Set DataCombo2.RowSource = "SELECT * FROM table2 WHERE (分類ID = '" & DataCombo1.Text & "')"

とかかな。このままの形じゃエラー処理とかできないのが個人的にはいやだけど。
860 :04/01/02 01:50
Kさん 好循環  Aさん 悪循環  
 (健康体)  (喘息)

1.(神が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある    体力がなくなる

3.K        A 行動力、
          五感(嗅覚)が鈍り感性が変化する

4.K&A 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。

5.K 変化なし   A アトピーになる
6.K 正常な感性  A 外に出なくなりさらに異常な感性になる
7.K 正常な人間   A 異常な人間(レッテル)
8.K&A 死  9.K&A      来世
10.K&A 神は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。

11.K&A 神が喘息であるかないかを決める
12.K 喘息でない  A 喘息である
13.K&A    1.に戻る

これは事実。広めようぜ
解決法:寝て起きて、やな気分でも、続けるけること。
体力をつけると感覚が正常に戻り、
アトピーも快癒に向かう。 目安としてグランドを10週くらい。
あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
861デフォルトの名無しさん:04/01/02 02:40
>>856 です。

>>859
ダメでした。やはりエラーを回避できません。
自分でがんばって他の方法を考えてみます。
レスありがとうございました。
862857:04/01/02 06:28
ぎゃふん


Set DataCombo2.RowSource = コネクション.Execute("SELECT ・・・")
ひでぶ
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
>>864
誤爆?
誤爆というか、絨毯爆撃みたいね。
三面型なんて用語、はじめて見た。3ペインのことか。
867デフォルトの名無しさん:04/01/04 14:11
質問です。

アクティブなアプリをチェックする方法を探しています。
EnumWindows()ではアプリ名ではなくてウィンドウ名になるので
これではうまくいかないのです。
アプリ名とはタスクマネージャで出てくるプログラムのタイトルです。

何かいい方法はないでしょうか?
868867:04/01/04 14:22
追記です。
「アクティブ」というのはそのアプリのウィンドウの一つが
フォーカスを持っているということです。
アクティブなアプリが一つもないこともありえます。
869デフォルトの名無しさん:04/01/04 16:29
>>867-868
GetForegroundWindow() でウィンドウハンドルを取得して、あとはそのウィンドウハンドル
からごにょごにょ。
870デフォルトの名無しさん:04/01/04 17:43
VBでweb上のHPをhtmlファイルとしてDLし、それを、

Set fso = CreateObject("Scripting.FileSystemObject")
Set ojText = fso.OpenTextFile("c:\temp.html", 1, True, True)

このように、テキストストリームオブジェクトとして
読み込むプログラムを作成しております。

通常のHpは問題ないのですが、一部のHPでなぜか文字化け
してしまいます。

例グーグルのトップページを読み込むと
http://www.google.co.jp/
繧ヲ繧ァ繝悶・繝シ繧ク縺九i讀懃エ「
このようになります。

DLしたファイルを、ブラウザ又はテキストエディタで開くと
問題なく表示されるので原因がわかりません。

何が原因で、どのような回避方法があるか、
おわかりになる方はおられませんか?
>>870
日本語サイトの文字コードには大別して
UTF-8、Shift_JIS、EUCがあることは知ってるかね?
872デフォルトの名無しさん:04/01/04 17:53
>>871
それは知ってますが?
htmlファイルをエディタで開くと問題なく、
テキストストリームで化けるのが謎なのですが・・・
>>872
分かっていないと思うYO!
874872:04/01/04 19:34
原因わかりました。
変換コードの記述ミスでした。
故にもうイイです。
冬厨は(・∀・)カエレ!!
なにここ、デバッグもやってもらえるの?
NKFでJIS→SJIS→UNICODEの変換をしているのですが上手くいかないです。
どなたかNKFに詳しい方、過去に似たようなことがあったという方、教えてください。
漢字表の重複ではありません。

45 44 43 66 21 21 45 50 3B 56 4C 40 (JIS)
↓NKF
SJIS
↓STRCONV
93 63 81 40 93 6F 8E 75 96 BE (UNICODE "中"の文字が消えてしまう)
93 63 92 86 81 40 93 6F 8E 75 96 BE (UNICODE 正しくはこうなるはず)
補足します。全角空白2121があるため、
NKF側のNULL付加で1文字消えているのかと思ったりしましたが、
それはありえないような気がします。またバッファは4倍以上確保しています。
879デフォルトの名無しさん:04/01/05 14:10
TextBoxの選択領域の背景色を変えたいんですが、
APIを使ってもできないんでしょうか?

TextBoxのBackColorを黒にした場合、選択領域かどうかが
分からなくなってしまうので。
880デフォルトの名無しさん:04/01/05 14:27
>>879
自己レス。
SetSysColors()でできることが分かりました。
これはシステム全体に影響が及んでしまいますが。
881301:04/01/05 14:34
>>301-320
301で質問させて頂いた者ですが、その後WinXP HOMEを再インストールしても、
また友人のPC(WinXP HOME)で試してみても、データ用に設置したwinsock
コントロールのDataArrivalイベントが発生せず、データ(リスト)が
取得できません。 FFFTPなどは問題なく動作するのですが...

助けて下さい。 よろしくお願い致します≦(_O_)≧
882VB厨:04/01/05 18:28
あの・・・どなたかご存知でしたら
教えて頂けないでしょうか。
VB5.0で作った、プログラムを
他のPCで動かしてみたいのです。

『VBランタイム 6.0 [SP5]』
↑を移植先のPCに入れれば大丈夫
なんでしょうか? SP4とか5の意味がわからなくて
悩んでます。どうか神様おねがいします。
だれか答えてやれよ・・・やれやれ
(・∀・)**クシ*エン*シタ!!
リストビューの内容をPutで一気にファイルへ保存する方法ってありませんか?
昔、雑誌のTipsで見た記憶があるのですが……。
887301:04/01/06 09:14
>>886 こんなの?

'書き込み
Private Sub Command1_Click()
Dim i As Long

Open "test.dat" For Random As #1 Len = 255
For i = 0 To List1.ListCount - 1
Put #1, , List1.List(i)
Next i
Close #1

End Sub


'読み込み
Private Sub Command2_Click()
Dim buf As String

Open "test.dat" For Random As #2 Len = 255
Do Until EOF(2)
Get #2, List2.NewIndex + 2, buf
List2.AddItem buf
Loop
Close #2

End Sub
888301:04/01/06 09:16
>>882
『VBランタイム 5.0』
889デフォルトの名無しさん:04/01/06 10:50
ある画像の上に、透明度を指定して多角形(ポリゴン)を描画したいんですが、
どのような方法が一番適切でしょうか?
>>889
DirectX
891きのこ王子:04/01/06 12:24
VBランタイムって再配布は可能なんですか?
892デフォルトの名無しさん:04/01/06 12:46
なんだか どんどんレベルが低くなっていくな・・・
893デフォルトの名無しさん:04/01/06 14:06
>>892
そんなことはない、昔から低かったぞ、と書こうと思って読み直してみたら、ほんとうに
レベル下がってるな。
894301:04/01/06 15:52
>>891
単体での再配布は認められていません。
895886:04/01/06 23:47
>>887
Listではなく、ListViewです。
現在VB6とADSIを使用して、ユーザーの情報を引き出すプログラムを
作っているのですが、どのようにしたら、電話番号を引き出せるのでしょう?
色々WEB上に載っている方法を試したのですが、うまくいかないので
どなたか知っていたら、教えてください。
使用OSはWindows2K Pro SP4
VB6エンタープライズ版
です。
897301:04/01/07 10:28
>>895
 申し訳ない。勘違い。
>>896
 電話番号?携帯サイト?
>885
今大体同じような処理を手がけているけど、自分はListItems.Count分roopし、
その中で(ColumnHeaders.Count - 1)回roopで各項目の値をString型変数に
格納して、それを1行として出力しているよ。そんな感じじゃダメなのかい?
899898:04/01/07 13:22
ごめ…>885じゃなくて>886です。両者ともスマソ
loop
>900
ごめ…素で間違えてたYO。ハズカチー!!!!!
>897
携帯サイトではなく、業務上ユーザーの電話番号を
調べるソフトが必要になったのです。
別に外部に公開する物ではないです。
903素人K:04/01/08 07:02
質問です、どなたか回答お願いいたします。
学校課題のVBをチェックしていただきたいのですが、VBのアップの仕方がわかりません。
どのようにアップすればよろしいでしょうか?
>>903
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
905素人K:04/01/08 07:24
ありがとうございます。
宿題ソース置き場の176です。
お願いいたします。
>>905
ここはそういうところなのか?
宿題スレに行けば?
907301:04/01/08 09:06
ここの住人さんで、WinXP Homeを使われている方、いませんか?
908デフォルトの名無しさん:04/01/08 10:13
動作環境としてはWinXP HOMEあるよ
開発環境はWinXP Pro

ついでに質問も書いとくです。
この前
WinXP Proでランタイムセットアップするやつ作って
HOMEに入れようとしたらエラーになった
原因まだ良く解ってないけどProはSP1あたってて
HOMEはSP1あたってない状態だった。
これが原因ってありえる?
909301 ◆si65ga2MW6 :04/01/08 10:34
>>908
 エラーと言うのは、セットアップ実行したら、できなかった。
 と言うことでしょうか? SPはOSのもの?VB?
 OSにしろ、VBにしろ、SP当たって無くても、セットアップくらいは
 なんともないと思いますが。。。

 私の抱えている現象と関係有るのかな?
 W2K proでVB6(SPなし)でwinsock.ocxを使って開発したFTPプログラム(EXE)を、
 WinXP HOMEで実行すると、FTP鯖から送られてくるデータを受信できない
 現象に悩んでます。 WinXP Proでは問題なく動作するのですが。
 詳細は >>881 >>301-320 に。
910908:04/01/08 17:47
>>909
状況としてはあまり関係ないかもしれません・・・^_^;
今日時間とって調べたのでとりあえず書いておきます。

SP1はWindowsXPのServicePackの事です。
WindowsXP Pro SP1でCOMCTL32.OCX、MSCOMCTL.OCX等が含まれた
ランタイムを作成し SP1があたってない WindowsXP(Pro/Home)に
ランタイムを入れようとすると次のようなメッセージが出る。

「システムファイルを更新しようとしています・・・・再起動してください・・・」

で 再起動してもセットアップは終わってなくて、もう一度セットアップを実行すると
同じことの繰り返し。
SP1をあてる事によってこの現象は出なくなり正常にセットアップできた。

これはインストール先のWindowsXPにもあらかじめSP1入れておくしか
対処方法はないって事なのかな?
誰か知ってたら教えて
だから、2バイト文字のユーザ名をつけるなとあれほど(ry
913912:04/01/08 19:41
>>908
910を読んでなかった。症状としてはこっちか。
http://support.microsoft.com/default.aspx?scid=kb;ja;413232
914デフォルトの名無しさん:04/01/08 22:13
http://xxxxxxxxxxxxx/test/read.cgi/tech/1069160036/

「1069160036」の部分を03/11/18 21:53に変換する方法を教えてください。
Replace "http://xxxxxxxxxxxxx/test/read.cgi/tech/1069160036/", "1069160036", "03/11/18 21:53"
916822:04/01/09 01:24
>>915
強引なやつだな
#1970/1/1 9:00# + 1069160036 / (60*60*24)
918デフォルトの名無しさん:04/01/09 17:21
Private Sub Picture1_MouseUp _
(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
に配列変数x(5),y(5)を宣言したいのですがどうすればいいのでしょうか?
ヘルプ嫁よ
920デフォルトの名無しさん:04/01/09 17:55
質問です。
メニューエディタで作成したメニューの色を変更するのは
可能でしょうか?
>>920
そんな事するなよ、とつっこんでおく。
まあオーナードローでどこまでできるか知らんが、めんどくさそうだな
922301 ◆si65ga2MW6 :04/01/09 19:13
>>920-921
 それなら、OCXやAPIでメニュー作った方が融通効くのでは?と。
>>920, 921
やっぱり、変なことしないほうがよさそうですね。
ありがとうございます。
書籍スレで聞こうとも思ったんですが、C++の話ばっかなんでこちらで質問させていただきます。
VB6.0のお勧めの書籍とかってあったら教えていただけませんか?
ちなみにラーニングエディションなんでそれに対応したものをお願いします。

すれ違いだったら申し訳ない。
>>924
書店ではもうVB.NETの本ばかりになってるからムリだ。
何をするためのオススメなのかによって変わってくると思うが
927924:04/01/10 04:41
>>926
入門書です。
さっきアマゾン少し見たんですが.netの本ばっかで、、、。


928924:04/01/10 04:43
余談ですが、Javaの経験が少しあります。
>>928
http://www.amazon.co.jp/exec/obidos/ASIN/4797307595/qid=1073678204/
とか入門にはいいかもしれませんね(シニア編しか読んだことないから適当ですが)
他言語経験者ならMSDN見るだけでも充分だと思うけど。
VBの入門書はハズレが多いから、逆に買わないほうがいいかも。
930924:04/01/10 05:33
>>929
はるひこかぁ・・・。
この人JavaとCも入門書出してるんですけど、評判悪くてハズレなんですよね。
MSDNインストしてから考えてみます。
他にも良書あったら教えてください。
良書というか、カタめの言語仕様本でいいんじゃ?
HowToなんざWebにいくらでも転がってるから本はほとんど無意味かと。
932デフォルトの名無しさん:04/01/10 12:11
すみませんが、教えてください。
チャットで一定時間内に発言せねば自動退室させられるところがありまして、
「待機中」など自分で設定した文字列を一定時間毎に自動でチャットウィンドウのテキストボックスに
ペースト+Enterさせるプログラムを組みたいのですが
「他のウィンドウのテキストボックスにペースト」させるやり方が分かりません。
「そのウィンドウをどうやって指定するか」も分かりません。
色々入門書など読みながら頑張っているのですがなにぶん素人なもので・・・
是非教えてください。お願い致します。
>>932
その程度ならマクロでやりなよ。
AppActivate SendKeys
FindWindow SetWindowText
Spy++ SendMessage WM_COMMAND
ShDocVw.ShellWindows
>>932
それ、迷惑にならないんだろうな?
936932:04/01/10 13:05
>>935
退席中のみ10分置き使い、自分がPCの前に居る時はなるべく使わず、
他の人に迷惑を掛けないよう心がけます
937301 ◆si65ga2MW6 :04/01/10 13:18
>>932-936
むしろVBじゃなくて、JavaScriptの方が簡単に手軽にできるのでは?と。
ローカルにhtmlを作成し、フレームで目的のチャットURLを開き、
JavaScriptで定期的に特定フォームにSUBMITを送るとか。
チャットログとフォームが別れているなら、フォームの方をローカルにコピーして
Scriptを加えると言うのもありかと。
※後者の場合、CGIの方で弾かれる可能性もあるけど。
938デフォルトの名無しさん:04/01/10 16:17
MSNメッセンジャーの最小化のアニメーションをVB6.0で実装する事は
可能でしょうか?
タスクトレイに格納する時にできればいいなと思いまして。
よろすく
939938:04/01/10 16:18
最小化じゃなくて閉じるボタンを押してタスクトレイに格納する時の処理でした。
スマソ
940デフォルトの名無しさん:04/01/10 16:48
クリックした点を中心として、そこからドラッグして離した点までの長さを半径とする星(☆)
の描画方法を教えてください。
式はこんな感じみたいなのですがよく分かりません。
x=(クリックした点)+(半径)×cos(k)
y=(クリックした点)-(半径)×sin(k)
sndPlaySoundでwavファイルを再生したのを中断する方法がわかりません
教えて皆々様
>>940
kを0から2πまで変化させる。
>>940

Option Explicit

Private cx As Single, cy As Single

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 cx = X
 cy = Y
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Const pi As Double = 3.14159265358979
 Dim r As Single, i As Integer, x1 As Single, y1 As Single, x2 As Single, y2 As Single
 r = Sqr((cx - X) ^ 2 + (cy - Y) ^ 2)
 'Circle (cx, cy), r
 x1 = cx
 y1 = cy - r
 For i = 2 To 10 Step 2
  x2 = cx + r * Cos(2 * pi / 5 * i)
  y2 = cy - r * Sin(2 * pi / 5 * i)
  Line (x1, y1)-(x2, y2)
  x1 = x2
  y1 = y2
 Next i
End Sub
944デフォルトの名無しさん:04/01/10 19:12
>>943
星にならんぞよ
最近、FTPクライアントを作ってます。
Win32APIを使って、FTPサーバへの接続、ファイル送信、
ファイルダウンロードなどはできるようにしました。
サーバ側のファイルも操作したいと思ったのですが、
(カレントディレクトリの変更、ファイル名の変更、ファイルの削除など)
どうやったらいいのかわからなくなって、途方に暮れています。

どなたか、ヒントか参考になるサイト、書籍などご教授ください。
946デフォルトの名無しさん:04/01/10 19:57
今、きれいな書式でテキストの出力を目指しているのですが、
AddSpace(str,10)
とかしたら、10文字分のスペースの先頭にstrに格納されている文字が
つまった文字列を出力する。という関数を作りたいんです。
|←10文字スペース → |
|ほにゃほにゃ       |  
|432lhds       |    ←のような感じ 
で、作ったんですが、漢字とアルファベットなどの大きさが違うために
うまくできません。どなたか、うまい方法を教えてください。
もしくは、そういった用途で便利な関数が載っているサイトがあったら
教えて下さい。
房な質問ですが、何とぞよろしく。(要望があれば、私の作ったクソ関数
のソースもさらします
947デフォルトの名無しさん:04/01/10 19:58
上でほにゃほにゃと432lhdsの入っているスペースはいっしょです。
(書き込んだら、ずれちゃいましたね)
948932:04/01/10 20:05
>>937
javaスクリプトは全く分からないので・・・
要はtextboxに入力したテキストをcommandをクリックすることによって、
textbox2に入力したアドレス、もしくはタイトルバーのウィンドウに
コピ&ペーストしたいな、と。
ヘルプを見てもコードの記述が分からなくて・・・
どなたか宜しくお願い致します・・・
>>948
VBスクリプトでもいいよ
>>945
FTPのrfcは理解できてますか?
>>946
テキストの出力とはファイルでいいのか?
閲覧するときのフォントは考慮しなくていいのか?
まあ文字が半角で何個分かをカウントしてスペース足せばいいだけだがな。
952932:04/01/10 20:39
>>951さん
いえ、そのウィンドウの持つテキストボックスです。
VBの入門書片っ端から読んだんですが、こういったことのやり方書いてるのが
なくて・・・何卒宜しくお願いいたします
LenB(StrConv("123あいう", vbFromUnicode))

iiiiii←
WWWWWW←
あああ←
ううう←
954932:04/01/10 21:17
Private Sub cmd1_Click()
Dim title As String
title = txt1.Text ' 1つ目のテキストボックスに、対象のウィンドウのタイトルを入れ
Clipboard.SetText txt2.SelText '2つ目のテキストボックスの内容をコピーし
AppActivate title ' そのウィンドウをアクティブにして
End Sub

そのウィンドウのテキストボックスに、2つ目のテキストボックスの内容を送信&エンターしたいわけです。
〜分置きに自動で・・はタイマーコントロールとloopで何とかするとして。
ほんとはそのウィンドウをアクティブにせずにやりたいんですけど。
恥ずかしくなるほど初心者でして・・・これが限界です。何卒ご教授を。
>>952
だからフォントは考慮しなくていいのかと聞いているんだよ
プロポーショナルだったら無理だしOSのバージョンによってもサイズがかわるので
スペースのキャラクタコード入れればいいってもんじゃない。
モナー板などで勉強しておいで
>>954
>934が丁寧に教えてくれているのに、もったいない。
957932:04/01/10 21:46
(T_T)
934さんのコードが解読できない・・・。
そのままコピペしても使えない・・・
初心者で申し訳ない・・・
デスクトップアクセサリを作りたいのですが
フォームを透明化する方法はありませんか?
>>958
Google フォーム 透過 リージョン VB
960デフォルトの名無しさん:04/01/10 23:49
とあるサイトでこういうコードを見つけてコピペして実行しようとしたけど
Findwindowのところでひっかかるんですがどうしたらいいですか?
電卓を起動して987と送るコードらしいのですが・・。

Private Sub cmd1_Click()
Const WM_CHAR = &H102
Dim hwindow As Long

hwindow = FindWindow("SciCalc", vbNullString)
If hwindow = 0 Then
On Local Error Resume Next
Shell "calc.exe", 1
On Local Error GoTo 0
hwindow = FindWindow("SciCalc", vbNullString)
End If
If hwindow <> 0 Then
PostMessage hwindow, WM_CHAR, Asc("9"), 0
PostMessage hwindow, WM_CHAR, Asc("8"), 0
PostMessage hwindow, WM_CHAR, Asc("7"), 0
MsgBox "OK"
Else
MsgBox "エラー"
End If

End Sub
>>960
API ビューア
>>930
林センセのVB本はいまいちで間違いないけど、大昔に出された、
Basicによるコーディングスタイルの本は名著だよ。当時まだVBは存在してなかった。
いまもオレの心のバイブル。そのくせ、正確なタイトルは失念(w
VBからISOイメージ作成って出来ないですかね?
linuxとかだと標準機能でついてたりするみたいだけど
Windowsでそれらしい解説サイトもないし・・・
>>963
> VBからISOイメージ作成って出来ないですかね?

できる。
ただし、お前が思っているように簡単にできるかどうかは知らん。
965822:04/01/12 12:20
>>963
mkisofsを導入していれば、コマンドを渡すフロントエンド代わりを
VBにやらせることは出来る。
VB6で非アクティブ状態のときに
○○をする〜、って言う処理をしようと思ったのですが
Private Sub Form_Deactivate()

End Sub
だと、どうもうまくいきません
誰か教えていただけませんか・・?
>>966
lostfocusは?
968967:04/01/13 03:42
安易にネーミングからLostFocusなどと適当に答えてしまったけど、
ヘルプを確認したら見事にちがっていた(汗
DeactivateもLostFocusも、アプリケーション内でのフォーカス移動しか監視しないみたい。

うそを教えた罪の意識にさいなまれつつ(汗、調べた結果、
GetForegroundWindowで監視するしかないような気がする。

もし、いわゆる「常に手前に表示」をやりたいのなら、もっと手軽に実現できるので、
検索してみたらどうだろう。これはすぐ見つかると思う。
>>966
サブクラス化して WM_ACTIVATE を処理
起動時、フォームにおいてあるText1に
クリップボードに保存されている文章を表示させるにはどうすればよいですか?
あ、できました。
スレ汚しスマソです。
972デフォルトの名無しさん:04/01/13 23:22
ディストリビュージョンウィザードって
同じOSに入れるときにしか使えないのでしょうか?
>>972
一応、配布するターゲットと開発OSをあわせるのが定説と言われていたけどな・・・
あのウイザードつかうよりはVSIのほうがいいと思う。
なるべく古いOSで作ったほうがいいんでない?
975デフォルトの名無しさん
>>972
そういうオカルトに頼るのはやめなはれ。最終的に *.cab に含まれるファイルが
どこから来るのか調べれば、どうすればいいのかわかるでしょう。