v(・∀-)b VBプログラマ質問スレ(6.0以前) Part29

このエントリーをはてなブックマークに追加
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/

【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の話題できるだけひかえる。

4デフォルトの名無しさん:03/10/07 18:50
VB6のDHTMLデザイナ、使いにくい。
外部のHTML読み込んだんですが、イメージが表示されません。
イメージ格納フォルダの場所はどこにすれば?

・・・XP,VB6で開発してるとエラー出まくるんですけど(涙
>1 乙VB
おっと、こっちか。
(*´д`*)の方が好みだが、
誰だよ、わざわざスレ立てなおした香具師は。
7デフォルトの名無しさん:03/10/07 22:50
重複スレすまそ

byte配列と文字列を結合させる方法を教えてください。

例えば
このような文字列と、
Dim myString As String
myString = "-----------------------------7d21cef303f8" & vbCrLf & _
"Content-Disposition: form-data; name=""file0"";" & " filename=" & """" & g_TMPFilePath & g_SysFile & """" & "" & vbCrLf & _
"Content-Type: image/pjpeg" & vbCrLf & _
vbCrLf

このようなファイルから取得した画像データ(bytwork:byte配列)
ReDim bytwork(FileLen("c:\imagedata.jpg") - 1) As Byte
Call ReadFile(hFile, bytwork(0), FileLen("c:\imagedata.jpg"), outFileSize, 0&)
Call CloseHandle(hFile)

を結合させて、HTTP送信をしたいのですが、
Stringとbyte配列の連結のやり方が良く分かりません。
どなたか教えてください。
>>7
Stringの文字数カウントして画像ファイルのサイズ足してDimして
先頭に文字を入れ込んで
Call ReadFile(hFile, bytwork(文字数+1),・・・
9デフォルトの名無しさん:03/10/07 23:14
つまり、
ReDim bytwork(Len(myString) + FileLen("c:\imagedata.jpg") - 1) As Byte
bytework = myString ←うそ臭い
Call ReadFile(hFile, bytwork(Len(myString) + 1), FileLen("c:\imagedata.jpg"), outFileSize, 0&)
こういうことですか?
>>9
>bytework = myString ←うそ臭い
1文字づつ入れていく
文字列とbyte配列は相互に代入可能だよ。
>>11
試してみた?
とっくの昔に試した。
>>13
ということは、UNICODEが入る事もDimで確保したらエラーが出るのも
わかってて書いているんですね。
15:03/10/07 23:38
7ですが、
bytework = myString
これやると、VBもろとも落ちてしまいます。

一文字ずつ入れていくやり方を教えてください。
>>15
for i = 0 to len(myStringi)-1
bytework(i) = mid(myStringi,1)
ねくすと
#適当なので自信なし
>>16
あ、まちがってる。まあいいや。
For i = 0 To Len(b) - 1
bytework(i) = Asc(Mid(myString , i + 1, 1))
Next
かな
書籍に載っている「簡易メモ帳」を打ち込んでいたのですがちょっと問題が発生しました。
よければアドバイスを。

いわゆるテキストファイルを読み込んで表示・編集・保存って奴です。
やや大きめのファイルを読み込むと「メモリ不足」と言われます。
ヘルプを見るとどうやら「Text1.Text」で表示できる容量が約32KBまでみたいです。
「Label1.Caption」に変更すると文字数の制限がないらしくうまくいきました。

となるとText1.Textでは表示できないと言うことになるのでしょうか?
以下にサンプルを明記します。
2019:03/10/08 00:36
Private Sub Command2_Click()

'変数の宣言
Dim openFile As String
Dim fileNum As Integer
Dim readData As String
Dim temp As String

'ファイルの読み込み
openFile = "D:\test.txt"
fileNum = FreeFile
readData = ""
Open openFile For Input As #fileNum
Do Until EOF(fileNum)

'データを一行ずつ読み込む
Line Input #fileNum, temp

'データの追加
readData = readData & temp & vbCrLf

Loop

Close #fileNum

'データの表示
Text1.Text = readData

End Sub
>>19
WIN9x系は制限がある。
リッチテキストでやるか、2000/XPでやるか、色々細工するか、
自作のコントロール作るか。
22デフォルトの名無しさん:03/10/08 00:51
自作のコントロールだと、どうやって作るの?
>>22
すべてグラフィックで書く。とても手間かかるけど。
>>15
落ちているのは次の行のはず。
バイト配列に文字列を代入すると配列は文字列の長さに調整されるからね。
2519:03/10/08 01:06
>>21
サンクス。
簡易メモ帳を作っていることからわかるように自作コントロールなんてまだまだ先です(笑
リッチテキストとはなんぞや?、で調べるのに時間がかかってました。
デフォルトでは表示されていないんですね。
上手くいきました。
2622:03/10/08 01:12
>>23
ドヒーーーー
>>22
ユーザーコントロールだな。ボタン2つとPictureBoxの組み合わせか。
クラスの勉強になるし。漏れはここからクラスに馴染んでいった。
ボタン二つよりも縦のスクロールバーだな。
29デフォルトの名無しさん:03/10/08 01:21
テキスト2個のユーザーコントロールのモノを、配列でForm上に配置する場合、
コントロール間の移動はどうやればいいの?
html文章からテキストを取り出す用途で文字を置換したいと思い
検索したところreplace関数に突き当たりました。
でもこの関数はワイルドカードが使えないですよね?

用はタグを空欄にしたいのですが
replace(変数、"<タグ>"、"")ですべてのタグを消去するのはどうかと。

replace関数を使わない方が良いのですか?
何かよい方法があればご教授を。
>>30
ヒント。正規表現
3230:03/10/08 08:57
>>31
ヒントありがとうございます。
replace関数内で正規表現が使えると言うことですか?
それは試してみたのですが上手くいきませんでした。

別に設定してreplaceで置換するのかな?
初歩的な質問させてください。

コンボボックスの内容を丸ごとリッチテキストボックスにコピーするには
どのようにすればいいでしょうか?
>>33
RichTextBox1.Text = Combo1.Text
>>34
ありがとうございます。
それは既に試したのですが、その書き方の場合は
コンボボックスに表示されている(一番上の)テキストだけが
リッチテキストボックスにコピーされました。
コンボボックスのすべての内容をコピーしたいのですが、
どのようにすればいいでしょうか?
>>35
For i = 0 To Combo1.ListCount - 1
RichTextBox1.Text = RichTextBox1.Text & Combo1.List(i) & vbCrLf
Next i
>>35
ぬぉぉ、ありがとうございます。
forで回すんじゃないか、とは思ってたんですが、
ListCountというのを知りませんでした。
知ってても思いつくまでに1日かかりそうですが^^;
大変助かりました。ありがとうございました。
大学の卒論でVBを使ってロボットをシミュレートする事になったんだが

1 プログラムを全然組んだことがない俺でもできるか?
2 そもそもVBでロボットをシミュレートできるのか?

なんでVBで作らねばならないかというと
http://www.sun-mitec.co.jp/roboabotto.html
を実際に動かすのが命題でこのロボがVBにしか対応していないだろうということから。

卒業がかかっているので死ぬ気でやるつもり。
アソバイス求む(マルチで貼らせてもらいましたすみません、必死なんで)

> 1 プログラムを全然組んだことがない俺でもできるか?
しるか。

> 2 そもそもVBでロボットをシミュレートできるのか?
できる。つーかそのロボがVBに対応してるんだろ。
「シミュレート」の使い方を間違ってるような気が。
あと付属サンプルプログラムはVB/VC/TCとあるようだが俺の目がおかしいのか?
そのロボットを使って何かをシミュレートするんだろうけど
(ロボットそのものなのに、ロボットをシミュレート、ってわけわかんね)
書いてないので言葉通り「そのロボットを動かすのが命題」とすると、
ソース付きサンプルプログラムが付いてるんだから、それで動くだろ。
プログラミングする必要なし。

>VBにしか対応していない
必死すぎてサイトを見る余裕すらないのか・・・
MAPI使うのが嫌で、winsocを利用してのメール送信プログラムを
作ってるんだけど、送信そのものは出来たんだけど、漢字をJISに変換して
送信しようとすると、受け取ったメールで文字化けしてしまう。
たぶん、String変数に無理やりJIS文字を入れてそのままsendしてるから
メール受信時に文字化けしてると思うんだけど
かといって、SMTPサーバーに対してどうやってsendしてやれば良いのかさっぱりで…。

どなたか、アドバイスください。

VBでロボット制御して加藤鷹の指テクシミュレートか。おめでてーな
4442:03/10/08 15:10
げ、winsoc→winsockです。
4538:03/10/08 15:13
レスthx

VBにこだわっている理由はもう一つ。
研究室にあるソフトがVBしかないからw(もちろんCとかC++はあるんだがVBはこれしかない)

説明不足スマソ。
具体的に書くと「PC上でこのロボを作って(ビジュアル面は無視して駆動システムなどが同じ)
命令させて動いたあかつきにそのプログラムでこのロボが動くか」という証明?見たいな事をする。

教授は教示システムをうんたらかんたらとか言ってた。
とりあえず本買ってやっているんだがグラフィックを動かすプログラムのやり方がなく不安。

VB,VC,TCのどれがやり易いのかそらわからん。今はVBでなんとか普通にプログラム組める
レベルになろうとがんばっている所。

どうなんでしょうか
4638:03/10/08 15:29
とりあえず基本的な事をやってみます。
ゲームが作れるのであればロボットも作れるのではないかと・・・

とりあえず質問するレベルがまだまだなんで・・・ここいらでお暇します。
スレ汚しスマソー
4747:03/10/08 15:33
タイマーをテキストボックスに表示させているのですが
セットしても表示が0になります。
EnabledはTrueでIntervalは1000.
フォームを開いて約1秒後にテキストボックスの中身が0になるので、インターバルは正常にうごいているようなのですが・・・。
MDBを最適化するルーチンで、中断する機能をつけたいのですが
JROのCompactDatabaseをどうやったら中断させられるのかわかりません
>47
何をしたいのかさっぱり。
もしかして、インターバルの残時間が減ってるのを見たいとか…?
5047:03/10/08 16:10
>>49
時間や分や秒を表示させたいのに値がすべて0になります。
Private Sub Timer_Timer()
 TXT.text = Hour(Timer) & ":" & Minute(Timer)
End Sub

こんな感じなんですが
>47
Timer?
Timeでなくて?
5251=49:03/10/08 16:17

Hour(Timer) & ":" & Minute(Timer)
此処の話ね。
5347:03/10/08 16:37
Hour(Timer)をHour(Now())のようにしたらうごきました。
CreateObject("Excel.Application")を使わない状態で
ADOを使用してEXCELからデータを取得したいのですが

この場合、データを取得するのにシート名で選択してもでーたをとってこれません
どうスレばいいのでしょうか

お願いします。
スレタイの顔がキモイのでヤダ。

(用紙名の取得)

VB6.0使ってます。
PrinterオブジェクトのPaperSizeプロパティで用紙の番号がかえってきますが、
用紙の名前を取得したいのです。(番号の用紙名)

調べても列挙とかばかりでよい方法がわかりません。
プリンタによっては番号が重複しているものもあります。
(MSDNのPaperSizeプロパティに載ってない番号とか)

どなたかお願いします。
57デフォルトの名無しさん:03/10/08 21:46
>>54
コード晒せ
58デフォルトの名無しさん:03/10/08 23:50
ここで書く質問かは良くわかりませんが...

VBからAccessのレポートを開く処理をしているのですが
Accessが入ってない客先のPCではエラーになってしまいます。

調べたら
確かにレポート機能はAccess入ってないと使えないという記述はありました。

でAccessのランタイム(正式名称忘れた)入れてみたのですが
まだエラーになります。

これはAccess入れるしか手が無いということでしょうか?
>>58
エラーの内容を書かないということは、質問する気が無いという事ですね。
6058:03/10/09 00:02
>59
そうです。解決しました。
61デフォルトの名無しさん:03/10/09 07:27
ネットで見つけた「ファイルを開く」ダイアログのAPIを呼び出すのを
やってみたのですが、ファイルを選択してString型の変数に取った時、
その変数の内容をみて見ると、
C:\aaaa.txt・・・・・
みたいにフルパスの後ろに「・・・・・」というのが入っています。

1)これは何でしょうか。
2)どうやったら取り除けますか。
>>61
文字化け。
ソースを直す。
>>61
Null文字でしょ。String変数をsとして
s = Left$(s, InStr(s, Chr$(0)) - 1)
で、Null文字から左だけ切り取りなされ。

>>62
( ´,_ゝ`)
64デフォルトの名無しさん:03/10/09 09:49
なんか固定長の変数から値とって可変長の変数に入れたときにでてくるよね。
>>64
違う。APIを使ったときに出てくる。
>>64-65
( ´,_ゝ`)
>>66>>62かな?

>>61
なぜ「・・・・・」が出るかというとAPIでは文字列の終わりは
大抵NULL文字(VBではvbNullCharやChr$(0))になる。
それに対してVBの場合は文字列のヘッダに文字数が書かれており
文字列にNULL文字も使えるようになっている。

そのため、APIがNULL文字で文字の終わりを示してもVB側の扱いが違うため
文字列の終わりより後のゴミが表示されているというわけ。
winxp、vb6.0、sp5です。
ActiveReportについて教えてください。
1つのcolumnを1ページに複数列表示したいのですが
可能なのでしょうか?
教えてください。。。
6968:03/10/09 20:06
すいません、自己解決しますた
7056:03/10/09 20:16
やっぱ厳しいですかね?
71デフォルトの名無しさん:03/10/09 23:27
おせーて下さい

プロシージャ内にstatic で宣言した変数を初期化する方法がわかりません
これじゃプロシージャ内でstatic宣言する意味がないんですが・・・
VBの仕様ですか?

>>71
仕様です
C++のstaticとも仕様が違うので、Singletonなんて洒落たものも作れません。
>>72
サンクスです
どうりで、調べても出てこないわけだ
プロシージャ内staticは諦めます

というか、宣言で独自に初期化できないVBの仕様っていったい・・・・
>>72
> Singletonなんて洒落たものも作れません。
C++やJavaの実装だけがすべてではありません。
Singletonの作り方はこれにのっているので馬鹿は勉強してください。
[プログラミング本]Visual Basic Design Patterns VB 6.0 and VB.NET(必読!VBでデザインパターン)(昔ネットで配布されていた書籍のβ版?)vbpatterns.zip 13,885,055 78b08f47ec082d19a6e39641a8c83f9f
>>73
プロシージャ内static変数は廃止される方向にある。
JavaとかDelphiとかC#とかVB.NETとか。
変わりにクラスのメンバ変数を使うべし。
76デフォルトの名無しさん:03/10/10 12:00
>>68
 Detail のColumnCountプロパティを必要な列数に変えてみなされ
 他のColumnが付くプロパティも見ておくように。
 詳細はヘルプ見れ
 
Winsockについて詳しく説明したページって無いですか?
InternetOpenUrlなどを使って、あるHPの入力系を自動的に行うようなアプリを作っています。
基本的には、InternetOpenUrlに送るURLを

strURL="http://test.cgi?aa=1000&bb=2000"

の様に加工して処理しています。大体のものはこれで問題なく動いていたのですが、

(前略)
<SCRIPT language="JavaScript"><!--
ChkSubmitFlg = false;
function SubChkSubmit()
{
if( ChkSubmitFlg ){ return false; }
ChkSubmitFlg = true;
return true;
}
//--></SCRIPT></head>
<form method="POST" action="test.cgi" onSubmit="return SubChkSubmit()">
(中略)
<input type=text name="text">
<input type=submit name="aa" value="実行">
<input type=hidden name="bb" value="2000">

という感じのHTML文のsubmit(実行ボタン押下)を処理するために

strURL="http://test.cgi?text=「入力されるべき値」&aa=「実行」&bb=2000"  
 ・「入力されるべき値」は、VBで設定します。例えばユーザーIDとか
 ・実際の処理では「実行」はコード変換しています。

というURLを作って送ったのですが上手く動きません。SubChkSubmit()が関係するのはわかっているの
ですが、どう処理したらいいのかわかりません。誰かわかる方がいたら教えてください。
79デフォルトの名無しさん:03/10/10 15:16
>>78
バケットモニターを使ってブラウザがどんな文字列をpostしているか確かめることから始めてはいかがでしょ?
で、それと同一のpostをするように調整すればよろしい
PictureBoxに画像ファイルをロードし、
例えば円画像でいうと、円上のある点をマウスで外側に
ドラッグ&ドロップするとその部分が伸びるというものを
作りたいのですが、どうすればよいのでしょうか。
補間はBスプラインを用います。
よろしくお願いします。
あ、環境はVB6です。
81デフォルトの名無しさん:03/10/10 17:05
ウイン98で動いていたVBアプリをXPにインストールすると
76の実行時エラーが出ます。
何が原因と考えられますでしょうか?
どうぞ宜しくお願いします。
>>74
んなこと知ってるっつーの
>>79
パケットモニターでも良いけど、InetSpyの方が見やすいと思う。
84 :03/10/10 19:37
VB6.0なんですが、
テキストボックスに数字を入力して、
それをデータとして保存して、
その後、別のフォームで開いてデータを読み込むには
どのようにすればいいのでしょうか?
>>84
VB6.0の入門書は置いているところが少なくなったから、
急いで買いに行ってください。
>>81
パスが見つからないんだろう。
>>86
お返事ありがとうございます。
多分そうだと思うんですが、どうやったら直りますかね?
厨質申し訳ありませんが、ググってもわからないんです。
宜しくお願いします。
>>87
あんたはアプリを作っている人なのか、それともタダの1ユーザなのか?
作っているのならバグを探してエラーになっているところを見つけて
正しいパスにでも修正してください。
89名無しさん@お腹いっぱい。:03/10/10 21:08
>>88
すみませんでした。
至急探してみます。
90名無しさん@お腹いっぱい。:03/10/10 21:12
>>88
ただ、プログラム自体が立ち上がらないもので・・・
VBは起動するだろ? デフォルトの設定ならエラー個所で止まるだろ?
そこらへんのソースを晒せ。
function 関数を学んでいるのですがアドバイスを

Dim kotaekakeru As Long
Dim kotaetasu As Long
kotaekakeru = KakeruTasu(2, 3, kotaetasu)

Function KakeruTasu(a As Long, b As Long, c As Long) As Long
KakeruTasu = a * b
c = a + b
End Function

上記にてkotaekakeruが6になるのは理解できますが
kotaetasuが5( c = a + b)になるのが理解できない。
C言語のポインタみたいなものですか?
>>92
ByValとByRefを調べてください。
まあポインタに近いけど、アドレス間違いで簡単に落ちるポインタとはちと違う。
C++の参照に最も近い。
95名無しさん@お腹いっぱい。:03/10/10 21:59
>>91
ライセンスの関係でXPにはNETしか入れてないんです。
しかも変換できない一番安い奴です。
>>95
あきらめろ。
97名無しさん@お腹いっぱい。:03/10/10 22:09
>>96
殺生なーーーーーーーー。
>>97
修正してコンパイルできないんだろ?無駄だ。
9992:03/10/10 22:14
>>93
即レスサンクス。
なんとなく入門書レベルには明記されていない理由がわかった気がする。
10092=99:03/10/10 23:03
いかん。理解したつもりがますますわからなくなってきた。
101名無しさん@お腹いっぱい。:03/10/10 23:09
>>98
私見捨てられたんですね・・・
10292=99:03/10/10 23:17
ちょっとこんがらがってきた。もう少しアドバイスを。
下のプログラムで「処理1、処理2」の時点では「iVal=ABCDEF」になる(確認済み)
でも何でこの処理だけで変数aが変化する訳?
ByVal、ByRefの設定により変数aに影響を与えているんだよね。
10392=99:03/10/10 23:17
Sub Test1(iVal As String)
  iVal = iVal & "DEF" ' 処理1
End Sub

Sub Test2(ByVal iVal As String)
  iVal = iVal & "DEF" ' 処理2
End Sub

Sub Main()

  Dim a As String

  a = "ABC"
  Test1 a
  MsgBox a    ' "ABCDEF" を表示する

  a = "ABC"
  Test2 a
  MsgBox a    ' "ABC" を表示する

End Sub
>>101
98とXPの環境晒してくれたら解決してあげるよ。
じゃなければ多分無理。

>>103
多分理解できてると思うよ。
10592=99:03/10/10 23:31
>>104
あまり理解できてません(汗

ByRefの場合、引数iValを変化させたら呼出元の変数aの値も変わってしまって
ByValの場合だと変化しない

と覚えたらいいのかな?
>>105
それでいい。
107名無しさん@お腹いっぱい。:03/10/11 00:15
>>104
98はVB6で、XPはNETです。
98で作ったVB6のアプリをXPで使おうと思って今回うまくいきませんでした。
VB6で作ったアプリをNETでシコシコ書いた方が良いんでしょうか?
しつこくてゴメンナサイ。
出来ればどちらでも使えるようにしたいんです。
宜しくお願します。
>>107
・.NETの高いほうを買う
・.NETに移植する
・6.0を手に入れる
・あきらめる
109名無しさん@お腹いっぱい。:03/10/11 00:24
>>108
キッツーイ条件ですね。
でも検討してみます。ありがとう。
あきらめるな。道はきっとある。(知らんけど。)
111デフォルトの名無しさん:03/10/11 09:17
>>105
その辺がVBの変なところのひとつ。VBやるときは

Private Function hogehoge (ByVal argHoge) As Long

みたいに、その関数のスコープと、引数渡しがByValかByRefか明記する癖をつけとくといいよ。
>105
それだと、結果の丸暗記になっちまうな。間違っちゃいないが・・・
なぜそういう結果になるのかを頭で理解しておいたほうがいいと思うぞ。

ByVal→呼び元の変数のコピーを渡す→呼び元の値は変化しない
ByRef→呼び元の変数への参照を渡す→呼び元の値が変わる

「値渡し 参照渡し」でぐぐると色々出てくるぞ。
ttp://www.h3.dion.ne.jp/~sakatsu/Excel_Tips01.htm
ttp://www.ttbeone.co.jp/~aasaga/school/ptr/ptr1.htm
初心者は値渡ししか使ってはいけません
>>111
何が変なんだろうか...。

ByVal か ByRef かを明記するより、引数の型をきちんと指定するほうが先だと思うが...。
>>114
その割に関数の戻り値はキチンの定義してあるから余計奇妙に見えるよ
11692=99=105:03/10/11 18:57
わ!いろいろレスがついていてどうもです。

>>111
癖をつけます。

>>112
わかりやすい説明でありがたいです。

>>113 >>114
引数がアドレスで渡されるので初心者には難しいです。
Byの意味を知らない人はプログラム以前の問題だ
11830:03/10/11 20:40
だめだ。html文書のタグを変換できない。
正規表現を使うのは理解できましたが実際にどう実行してよいのやら。
「文字列 置換 vb 正規表現、etc」で検索してもいまいち。

perlで言うところの~s/<.*?>//gs;みたいに簡単にはいかない。

vb6から使えるようになったreplace関数では駄目なんですか?
replaceはパターンマッチじゃないからな。
VBSで正規表現を使うためのモジュールはあったような気がするが
>>118
プログラムをさらしてみ。Replaceは正しく使えば便利だしみんなちゃんとその関数を使えてるし。
12130:03/10/12 00:12
>>120
レスサンクス。
ただプログラムを晒すも何も正規表現による変換が結局わからないのでreplace関数は使ってません。
118の書き込み後なんとか以下のような原始的なやり方でしのいでます。

temp1 = Text1.Text
prePlace = InStr(temp1, "<")
nextPlace = InStr(temp1, ">")

Text1.SelStart = prePlace - 1
Text1.SelLength = (nextPlace - prePlace) + 1
Text1.SelText = ""

"<>"の場所調べてその間の中身を消す。
処理も重く効率の悪いプログラムです。
122v5 ◆Rkxom1fHHc :03/10/12 02:27
Visual Basic 6.0 って、VBの仮想VM上で動いてるんだよね?
っていうことは、VBのEXEは完璧なアセンブルではないってこと?
VC++(MFC使わない)のEXEは機種依存アセンブルってこと?

んー、よく分かんないや。
123v5 ◆Rkxom1fHHc :03/10/12 02:28
>>122 訂正。
× Visual Basic 6.0 って
○ Visual Basic 6.0 でコンパイルしたEXEって
>>122
まったく違う。どっからそんな情報を。
P-CODEのことか?
125v5 ◆Rkxom1fHHc :03/10/12 02:56
>>124
まったく違うのか!?スマソ・・・
どこかのサイトに MSVBVM60.DLL の上で中間ファイルとして生成されたEXEファイル
を解析し実行と書いてあった。MSVBVM60 ってことはVB6.0だと思ったから。

処理速度に大きな違いがあるのはここが原因だと思ってた。
VM上で動いたりはしていないって事だよね?
P-CODE生成にすれば仮想VMで動いているようなもんだが、
デフォルトの設定では完璧なマシン語で動いている。
MSVBVM60はただのDLL(MFC32.DLLやKernel32.DLLの同じようなもん)と
考えた方がいい。

処理速度に大きな違いは無いし、違いがあったとしても原因は他にある。
たとえば配列の範囲チェックを厳密におこなっていたり、
数値がオーバーフローしてもマイナスにならないでエラーになったり。
動的にメモリサイズを変更する文字列を使っていたり。

一部は設定で安全性を犠牲にして無効にすることで
パフォーマンスを上げることも出来る。
あなたたちにはJAVAが向いています
VBの入門書を終えて応用編や中級編の本をネットで探していたときに思ったのですが
これらの本を学び終えた場合、
(用途によるでしょうが)今後はVBを覚えると言うよりもAPIなどの
windowsの仕様を覚えると言った感じになるのでしょうか?
なんかVBだけではオフィス関連のアプリしか作れないような気がしてきたので。
> なんかVBだけではオフィス関連のアプリしか作れないような気がしてきたので。
それは想像力が足りないだろ。
作りづらいとかはあるがほとんどのジャンルはVBだけで作れるぞ。
130デフォルトの名無しさん:03/10/12 12:55
VBのInetについて3個ほど教えて下さい。

@RequestTimeout=1にして
getするのに10秒かかる場合エラーになってしまうのでしょうか?
AInet1.Execute , "xxx"と実行して
そのまま返ってこないことがありますが
回避できませんでしょうか?
BDo While Inet1.StillExecuting
DoEvents ' 前の処理が終わるまで待機
Loop
ここで無限ループにはまってしまうことがあるのですが
回避できませんでしょうか?

よろしくお願いします。
@ためせ
AB情報が足り無すぎ
VBで作ったEXEを実行するときに実行引数を与えたいのですが、与える方法を教えて下さい。
プロジェクトのプロパティをよく見る。
コマンドライン引数の部分に

com as String,PBcount as boolean

こんな風に記載すればいいのでしょうか?
135デフォルトの名無しさん:03/10/12 16:55
134>>
 ぞんぞん違う

 ヘルプで Command 見る
列挙型の中に列挙型を持たす事って出来ますか?
例えば、SuperConst.SubConst.Hoge
みたいな事をしたいのですが…。
>>136
できない。
何かを中に持てるってことはは構造体に他ならない。

欲しいのは、ローカルスコープを持った列挙型か ?
それなら俺も欲しい。
>>136
別に列挙型の中じゃなくてもいいだろ
SuperConst と SubConst をユーザー定義型で作ればいいだけじゃないのか?
固定値に構造体をつけたいという考え方がまずおかしい
>>134-135
135が書いてるようにCommandを使うのが正解だけど、
134のようなアプローチができたらいいなと思ってるひとは、きっと多いよね。

Sub Mainからはじまるプログラムで、Sub Main(com as String, PBcount as Boolean)
みたいな感じで。
140デフォルトの名無しさん:03/10/12 19:27
MSFlexGridで指定したセルでEnterキーを押したら
 その内容を取得して textに表示させたいのですが、
やり方がわかりません。
教えてください
オブジェクト変数を参照する時Withを使うのと使わないのとの速度について教えて下さい。
いったん、変数に格納したオブジェクトを参照するのに、連続で変数名を書いたら
遅くなるなんてことは無いですよねぇ?

例としてExcel(おかしなコードでごめんなさい)。
1)
Dim objXlApp As Object
Set objXlApp = CreateObject("Excel.Application")
objXlApp.Workbooks.Add
objXlApp.Workbooks(1).Worksheets.Add

2)
Dim objXlApp As Object
Set objXlApp = CreateObject("Excel.Application")
With objXlApp
 .Workbooks.Add
 .Workbooks(1).Worksheets.Add
End With

速度に差はありますか?
>>141
Withを使ったほうが(ほんのわずかに)早くなるらしい。
143141:03/10/12 20:57
>>142
あ、一回で書けずすみません。
オブジェクト変数への参照ってNothingされるまで保持されるんじゃないのですか?
例えば、
Worksheets(1).Range("A1") = "セルA1"
Worksheets(1).Range("A2") = "セルA2"
Worksheets(1).Range("A3") = "セルA3"

これはWithを使った方が早いってのは分かるんですが。
いったん変数に入れてしまえば…ってのが疑問なのです。
14430 = 118:03/10/12 22:12
正規表現による変換できたーーーー!!!!

Dim str1 As String
str1 = Text1.Text
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "<[^<]*>"
re.Global = True
Text2.Text = re.Replace(str1, "")

本屋で読んできたけど(笑)帰ってきたら度忘れしてしまって苦労した。
ただ意味をこれから理解しないと。
VBSとはなんぞや?状態ですから。
タグを取り除くのならIEやHTML関連のコンポーネントを
使ったほうが良いかもしれない。
なんたらオブジェクトのInnerTextでテキストだけ取り出せると思うし。
146144:03/10/12 22:20
>>145
ガーーーーン
そんないい手があったのか。

実は144のプログラムは不完全。
タグ以外で<>使用していたら当然消される(笑
>>146
タグ以外で<>は使われない。          正しいHTMLなら。
148FMani ◆8u6xtERGZg :03/10/12 22:36
>>147
Javascript
>>130
Inetは無効なアドレスやタイアウト時にはエラーを発するので
On Error Resume Next

If Err.Number<>0 Then
をうまくつかい、エラーが出てもきちんと動作する設計にすること。
そうすればInetを使ってインターネット上のあらゆるファイルを集めることに成功する。
>>146
ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200306_03060027.html
ここでも不完全な議論で終わってるが。
15130 = 118:03/10/13 00:52
>>149
>そうすればInetを使ってインターネット上のあらゆるファイルを集めることに成功する。
あ、そうかhtml文書自体をネットから取れるわけだ、ずっとファイルから読み込んでいた。
正規表現で頭がいっぱいで思いつかなかった。

Inetをこれから覚える段階ですが貴重なアドバイスありがとうございます。

>>150
まさに149のサンプルですね。サンクス。
>>143
単純に、プロパティ(それかメソッド)の呼び出し回数が減るから速くなる、
というのではないかと。

>>141の場合はほとんどメリット無いけど、階層が深くなれば効果は
出るはずです。。
一旦変数に入れてしまえば・・、と言っている内容は正確に理解はできませんが、
オブジェクトへの参照を変数に保持しとけば、次からそれ経由でアクセスすれば
速くなる、という意味でしたらそうだと思います。

'例1
result = a(1).b(1).c(1).Value
result = a(1).b(1).c(1).Caption

’例2
With a(1).b(1).c(1)
result = .Value
result = .Caption
End With

'例3
Set objWidth = a(1).b(1).c(1)
result = objWith.Value
result = objWith.Caption

上記の例の場合、例1の動作が一番遅く、例2・例3の動作が(たぶん)同じ速度
だと思います。
例2と例3は、 a(1).b(1).c(1) を毎回呼び出す手間を省いているので、その分速く
なっているはずです。
わたしのちんこは可変長です。あなたたちのは固定長だそうですからふべんですね。
私のはLongです。
>>148
Javascriptでも<>は使われない。          正しいHTML無いのJavaScriptなら。
>>155
if(a < b) って書くの ? (藁
いかんいかん、変換されるんだった。

>>155
if(a &lt; b) って書くの ? (藁
Microsoft HTML Object Libraryを使ったタグの消し方。

・Microsoft HTML Object Libraryを参照設定。
Dim h As New HTMLDocument
Dim htmlstring As String
htmlstring = "<HTML><HEAD><title>タイトル</title></HEAD><BODY>" & vbCrLf & _
"ボディ<BR>" & vbCrLf & _
"<B>太</B><BR>" & vbCrLf & _
"<a href=www.yahoo.co.jp>ヤフーへのリンク</a>" & vbCrLf & _
"</BODY></HTML>"
MsgBox htmlstring
h.body.innerHTML = htmlstring
MsgBox h.documentElement.innerText

IEのHTML解釈エンジンを使用するので変なHTML(タグ以外の用途で<>が使用されたり)でもIEと同じように解釈される。
DOMが構築されるのでリンクを取り出したりと自由自在。
本当はh.body.innerHTMLじゃなくてh.documentElement.innerHTMLに書き込みたいがエラーになる。
body.innerHTMLに書き込んだため、<title>などは無効。今回はたいして問題にならないだろうけど。
ファイルを作らずに完全にHTMLドキュメントを作成する方法は無いのかな?
159デフォルトの名無しさん:03/10/13 14:44
自作のOCXを作っています。
Valueプロパティ(True,False)を付けたので、OptionButtonのように排他で
値を設定できるようにしたいと考えていますが、うまくいかないんです。
どうやったらOptionButton的な動きが出来るのでしょうか。
どなたか教えてくださいm(_ _)m
>158
VBではやった事無いんで外してるかも知れないけど、h.body.parentElement.outerHTMLに書く。
>>159
クリックしたら一回全部Falseにして、
クリックしたものだけTrueにすればいいのでは
>>161
多分その処理をカプセル化したいんでしょ。
漏れも良く分かんね。
For Each ctl In ParentControls
  If ctl Is UserControl1 Then
「技術評論社のかんたんプログラミングVBコントロール関数編」を読んでいます。
とある例題でエラーが発生。「組み込み可能なISAMドライバは見つかりません。」とのこと。

Excelのデータをデータコントロールを使ってVB上で扱う例題なんだけど
例題ではExcel97で自分の環境はExcel2002。
データコントロールのConnectプロパティをExcel8.0にしているからだと思うのだけど
Excel2002でExcel8.0でいいのかな?
165159:03/10/14 00:06
>>161-163
レスありがとうございます!お蔭様でそれっぽいことが出来てきました。
が、配置したフレーム毎ではなく、フォーム上のコントロールが全て対象になってしまいます。
もうちょっとがんばってみます。
166デフォルトの名無しさん:03/10/14 00:12
皆様のお力をお借りしてもらえないでしょうか。
現在、DataReportを使用し、伝票を打ち出すPGを作っています。
DataReportのデフォルトのサイズではA4縦幅で設定されるのですが、
同PG内でA4横にした際に「用紙サイズが広すぎる」といったエラーが出てしまいます。
DataReportをA4の横幅にして打ち出す方法をご存知で無いでしょうか。

PGを起動する前にデフォルトで横幅にすれば一応できるのですが、どうしても
同PG内で組まないといけないとのことなので。。
よろしくお願いいたします。
OS:Win2000
VB6.0 Enterprise Edition
です。
For Each ctl In ParentControls
  If ctl.Container Is Me.Container And _
    TypeOf ctl Is UserControl1 Then
168デフォルトの名無しさん:03/10/14 18:10
ガイシュツダタラスマソ
"Winsock"コントロールを動的追加したいんだけど、

Set Winsock1 = Form.Controls.Add("VB.Winsock", "xxx")

の"xxx"の部分ってなに?
無理やり実行すると、

-------------------- msgbox --------------------
実行時エラー '711':

クラスの文字列が不正です。
ProgID VB.Winsock のオブジェクトを参照してください。
-------------------- msgbox --------------------

クラスの文字列ってなんだー!!
ヘルプ見てもワカラナーイ

いろいろ調べてコマンドボタンの例はのってたんです。
こんな感じでした。

Set Command1 = Form.Controls.Add("VB.CommandButton", "cmdobj")

ついでに、"MSComm"も教えてもらえるとチョトシアワセ
>168
Loadを使う。
MSDNに複数使用のサンプルソース載ってるよ。
>>168
MSWinsock.Winsock.1

Winsockを参照設定して、F2を押してオブジェクトブラウザの左上の
<すべてのライブラリ>を変更でライブラリ名がMSWinsockLibとわかったから、
Controls.Add("MSWinsockLib.winsock", "xxx")とするとエラー内容に
正しいProgIDが表示される・・・。激しく無駄なことしている気がする(w
171164:03/10/14 20:25
164です。困ったことに未だにわからん。
access2002で製作したファイルはデータコントロールのプロパティconnectを
「access2000」にすればいけるけどExcelはうまくいかん。
「組み込み可能なISAMドライバ」で検索したら「VB6がOfficeXP以前のソフトだからドライバがいる」みたいな
事を書いてあったけど一応サービスパックも当てているんだが。
どなたかアドバイスをお願いします。
172デフォルトの名無しさん:03/10/14 20:26
関数は再帰呼び出しできないの?
>>172
できるけど。
174デフォルトの名無しさん:03/10/14 21:22
教えてください。
VB6でWordのファイル扱えますか?
Wordで作成した原稿フォーマットの内容を書き換えたいのですが。
例)Word文書内→ ○○様
    ↓ VB6プログラムで・・・
  ○○様→   山田太郎様  って書き換えたいんですが・・・
175デフォルトの名無しさん:03/10/14 21:39
初心者向けのVB6のおすすめの書籍を教えてください。
176168:03/10/14 21:43
私はなにか勘違いをしていたみたいで・・・
"xxx"の部分が間違っていると思ったら、
"VB.Winsock"の方がダメだったんですねぇ。
いや勉強になりました。

>>169
ご助言ありがとうございます。
ですが今回はコントロールの削除も動的に行ってみたいので
"Add"で頑張ってみます。

>>170
ありがとうございます。
こんな方法があったとは・・・
というよりオブジェクトブラウザって初めて使いました。
よく間違えて開いちゃうことはあったんですけど。
177デフォルトの名無しさん:03/10/14 21:55
VBソフトだって↓
http://www.h6.dion.ne.jp/~tt.com/
178159:03/10/14 22:08
>>167
ありがとうございます。
MeにContainerプロパティが無いみたいですね・・・
UserControl.Containerとやっても駄目でした。
引き続き調べてみます。
179デフォルトの名無しさん:03/10/15 00:02
VB6 SP5でdir関数を利用しているのですが、
「ファイル数が多すぎます」って実行時エラーが発生します...
どなたか、回避方法をご存知の方、いらっしゃいますか?
ファイル数はどんどん増えていくので、どうしても回避したいのですが...
180179:03/10/15 00:04
すいません、自己解決しました
181デフォルトの名無しさん:03/10/15 01:34
標準EXEからCreateObjectしたActiveX EXEのクラスで、
Public で定義したユーザー定義型を標準EXEから渡したいのだが、
エラーが表示される。
なんで?
>>178
Me.Extender.Container
リストビューコントロールのヘッダー背景色
の色を変える方法ってありますか?
SendMessage()使うんだろうけど、、、
アドヴァイスお願いします。
>>183
自己解決しました。
VB リストビュー サブアイテム 背景
で検索したらHitした。
185159:03/10/15 20:08
>>182
やりたかったことがお蔭様で出来ましたです。
ここで教えて貰わなかったら、多分諦めていたと思います。
本当にありがとうましたm(_ _)m
APIの呼び出しについて質問なのですが、ユーザー定義型を参照渡ししている
ところにNULL値を指定したいのですが、定義を変えないでやるにはどうすれば
いいでしょうか?
たとえば、
Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE) As Long
の4つ目の引数にNULL値を渡したいのです。
検索したら、
ByVal lpInitData As Long

lpInitData As Any
のように定義を変えて実現しているのはいくつか見つかったのですが、
こういう方法しかないんでしょうか?
コマンドプロンプトで、netstat -an > c:\a.txt とか打つと
接続状況とかファイルに書き込むことができますが
これをコマンドプロンプトを表示させずに
vbからファイルに結果を書き込むにはどうしたらよいのでしょうか?

shell "netstat -an > c:\a.txt"

とやってみましたが、うまくいきませんでした。
よろしくおねがいします。
Shell Environ("COMSPEC") & " /C " & "netstat -an > c:\a.txt", vbHide
>>188
ありがとうございました、すんなり成功しました。
ちなみに、COMSPEC と /C にはどういう意味があるのでしょうか?
意味などない。
>>189
> や | などの機能はシェルがおこなっている。
シェルはWin9x系ではcommand.com、WinNT系ではcmd.exe
このプログラム名を環境変数COMSPECから取得できる。

cmd /?より
/C "文字列" に指定されたコマンドを実行した後、終了します。
192189じゃないけど:03/10/16 19:25
>>191
( ・∀・)つ〃∩ ヘェー
そんな環境変数あったんだ
193VBAの資格:03/10/16 20:24
こっちのスレ(VBAエキスパートについて)もよろしく
http://school2.2ch.net/test/read.cgi/lic/1066275292/l50
194すご〜く迷い人:03/10/16 21:46
どなたか教えて下さい。
データベースでコネクション接続後、指定したSQL文でレコードを開き、
RecordCountにて該当するレコード数を収集する事が出来ますが、
この方法ですとレコード数がサーバによって正しく収集出来ない場合があると
マイクロソフトのサイトに掲載があったのですが、
RecordCount以外で、正確にレコード数が収集出来る方法ってあるのでしょうか?
ちなみに環境はWindowsServer2000のWebサーバと、SQLServer2000のデータベースの2台構成です。
現在、私の環境にて実際にSQL文に該当するレコードが3件あるのに、
RecordCountをResponse.writeで表示すると「-1」が設定されてしまっています・・・。
(同条件で別のマシンで動作させるとRecordCountには3が設定されています・・・。)
皆様のご指摘やアドバイス等、よろしくお願い致します。
select countとかeof=falseの間で数えるとかじゃ駄目すか?
recordsetを一回movelastすると、rowcountで取れたりしないですか?
ヘタレなもんで的外れな事言ってたらスマソ
196すご〜く迷い人(194カキコ):03/10/16 22:32
>>195
レスありがとうございます。
的外れでは無いですよ。
大変参考になりました。
私自身、まだ勉強し始めたばかりの初心者ですので、
皆さんにとって当たり前でも、私には凄く勉強になる事ばかりです。
感謝致します。
Textout(API)を使用して、ピクチャーボックス上に文字列を
表示させています(ゲームのシナリオ表示部です)
ttp://www.alpha-net.ne.jp/users2/ei9711/vbkouza/kouza23.html
こちらを参考に画像の縮小プログラムを作ったのですが、一つ
どうしても思い浮かばない処理があります。

巨大なフォントサイズでテキストを描画し、それを縮小して文字に
アンチエイリアスをかけたいのですが、描画したテキストの背景が、
描画したオブジェクトの背景色や画像で塗り潰されてしまいます。

縮小し、アンチエイリアスのかかった文字の背景を、と言うかぼかしの
かかった部分を透明化するには、どのようにすればよいでしょうか?
198166:03/10/17 01:23
やはりDataReportでは無理なのでしょうか?
いろいろなサイトで検索しましたがいまいちやり方がわからないです。。
なんでこんなに使い勝手がわるいんだろう…
>>194
何を使ってるかによるけど、DAOならカウントの仕様です。

DAOの場合、そのあたりのプロパティは、取得したレコードではなく、
それまでにフェッチしたレコード数と言う、使い道がないような値を返してくれます。

200デフォルトの名無しさん:03/10/17 11:39

C/C++ でいう unsigned short 型(USHORT型)のプロパティを取得する
ActiveXオブジェクトがあるのですが、VB でそのプロパティにアクセスしようとすると
以下のコンパイルエラーが発生します。

 関数またはインターフェイスが予約されているか、
 または Visual Basic でサポートされていないオートメーション タイプが
 関数で使用されています

VB で unsigned short 型(USHORT型)のプロパティにアクセスするには
どうすればいいのでしょうか?
>>197
なんかあんまVBと関係ないような気もするが。。。まあいいや。

まず、そもそもTextOut、つーかFontを作成するAPIの指定で
アンチエイリアスが指定できたと思う。TrueTypeフォントならね。

次に、それによる直接描画が何らかの理由で使えないなら、
その便宜上拡大フォントを描画する時に、背景も最終的に
かぶさるものを拡大して描画しておけばいいのではないか?
202デフォルトの名無しさん:03/10/17 12:10
教えてください。
ASPでなんですけどスレ無いしVBでも同じだと思うので
こちらに書き込みしてみました。

変数に入ってる文字列の中に機種依存文字が入ってるかどうかのチェックを
正規表現オブジェクトを利用してのパターンマッチングを行うにはどうすればいいんでしょうか?

なんとなくは書いてみたんですけどパターンをどう書いても駄目で...

strPtn = "\x8E[\xA0-\xDF]|[\xAD\xAE\xF9\xFA\xFB\xFC][\xA1-\xFE]"
strPtn = "[\u00A0-\u00FF]|[\u2921-\u2F7E]|[\u7521-\u7E7E]"

マッチングしたいのは特殊文字(8540-889E)・縦文字(EB40-EFFC)・外字(F040-)です。

わかられる方おられましたらよろしくお願いします。
203202:03/10/17 12:51
>>194
カーソルタイプはどうなってますか?
adOpenKeysetやadOpenStaticならRecordCount使えますけど
それ以外の場合はRecordCountには-1が入るはずです。

DAOならMoveLastしてMoveFirstしてからRecordCountとか
してた気がするなあ...
204すご〜く迷い人(194,196カキコ)→解決!:03/10/17 15:05
>>199
>>203
レスありがとうございます。
>>196カキコ後に自分自身でもいろいろと調べまして、
データベースサーバに関してはWebサーバとつながっているだけのローカルマシンということで、
レコードを開く前にCursorLocationにローカル指定を意味する3の値を設定したら、
正しいレコード数の値を収集する事が出来ました。
データベースサーバは外部公開しないので、とりあえず今回はこの方法で解決しました。
皆様、いろいろとご親切にアドバイスありがとうございました。
205デフォルトの名無しさん:03/10/17 15:22
入力した文字列(全角ひらがな等)から半角カナ文字を取得することって
できますか?
例えばあいうえおという文字列からアイウエオを取得することとか。。
APIについてもいろいろググってみましたがわかりませんでした。
参考サイトやサンプルプログラムがある場所を知っていましたら
お願いします。
>>205
全角ひらがな”等”の”等”がなにを指しているのかしらんが、
全角ひらがなからはできる。strconvを調べてみれ。
207デフォルトの名無しさん:03/10/17 15:51
EXEファイルを作るためにコンパイルしたいのですが、
どうすればいいんでしょうか?
コンパイルというボタンとかあるんですか?
超初心者ですいません!
あからさますぎるので気が乗らない
やりなおし
>>207
メニューの「ファイル」-「〜.EXEの作成」
コマンドラインからを知りたいとか?w
nmakeでもできたっけ?
関連付けによると、
C:\Program Files\Microsoft Visual Studio\VB98\vb6.exe "%1" /make
だそうです。
もうね、あ(ry
(*´д`*)アハァ?

質問です。

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

drive1でCドライブやDドライブを選ばせてフォルダ構造をツリー状に
表示する代表的なやり方なんですが

どうもCドライブを選択したらルートじゃなくて
C:\Program Files\Microsoft Visual Studio\VB98になってしまいます。
VBをインストールしているからだと思うのですがルートを選ばせる方法を教えてください
>>214
Form_Load で「ChDir "C:\"」
>>214
\付けれ
217デフォルトの名無しさん:03/10/18 22:04
フォームの数を動的に増やせますか?
例えば、Form1からForm2を複数個表示するようなことは出来るのでしょうか?
>>217
無理に決まってるだろ。

mnuEditCopyに切り取りのコマンドを書きたいのですが

どうやってかくの?Clipboardの後がわからん。教えてくれ
>>217-218
Dim Forms(...) as Form2
Set Forms(1) = New Form2
Forms(1).Show vbModeless
Set Forms(2) = New Form2
Forms(2).Show vbModeless
...
とやるだけじゃないの ?
221217:03/10/18 22:50
>>220
うおっ!出来ました。
かなり検索してたけど、見つからなかった・・・
ありがとうございましたm(_ _)m
質問です。
VBEでマウスのスクロールをできるようにするにはどうすればよいのでしょうか?
お願いします。
223デフォルトの名無しさん:03/10/19 00:05
>>222
どこでもホイール
http://www.vector.co.jp/soft/win95/util/se044875.html

他に良いのがあったら教えてホスイ
224222:03/10/19 00:27
>>223
早速ありがとうございます。
これがあるとないとでは大違いです。
>>223
マウス付属のユーティリティ。
マウスが限定されるがMicrosoftのマウスなら
付属しているIntelliPointで動く。
2261 ◆ExGQrDul2E :03/10/19 11:16
マイクロソフトと親しいオレはインテリマウスを
マイクロソフトからプレゼントされたな。
インテリマウスけっこうでかいよね。
ピクチャーボックスに読み込んだ画像中の線を
マウスでD&Dすると、線が伸縮(補間もしたいです)するようにってできますか?
画像処理っぽいのですが、さっぱりです・・。
どなたかよろしくお願いします
>>227
かなり難しいよ?
>>228
かなりですか・・。
よろしければ、参考になるWebページ等ありましたら
教えていただけませんか?
よろしくお願いします。
>>229
「ビットマップからベクトル」 へ変換して処理する事となりそうな。
詳しくはGoogleに一度聞いてからどうぞ。
>>230
ありがとうございます。
少し勉強してきます。
「visual basic 画像処理プログラミング」風工舎、Rod Steaphens

これがお奨め
フォームの背景の画像をそのまま
ピクチャボックスに持って行きたいのですが、
  Picture1.Picture = Form1.Picture
とやってもうまくいきません。
何かもっと別のことをしなくてはいけないのでしょうか。
教えてください。
>>233おれの VB6.0 SP5 だとちゃん動作したぞ
Picture1.Picture = Form1.Picture
235233:03/10/20 01:51
なんででしょう?
とか思ってもう一回やったらちゃんとできました。
何がおかしかったのでしょうか・・・??
いろいろ、ScaleModeとかいじってたのですが、それが悪かったのですかね・・・?

とりあえず、>>234さんお手数おかけしました。
VB.NETとVB6.0を両方インストールするハードディスク容量がなく、
VB6.0の方を選んだオレ
237デフォルトの名無しさん:03/10/20 08:10
数日前か行き詰まっています。どなたか教えて頂けると幸いです。

Private Sub Command1_Click()
Dim isSucess
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp"
With objIE.Document
.getElementsByName("login").Item(0).Value = "yahooid" ' Yahoo ID
.getElementsByName("passwd").Item(0).Value = "yahoopass" ' パスワード
isSucess = .Forms(0).submit()
End With
End Sub

だと、ユーザーIDとパスワードが入力できて、ログインできるんだけど、
WebBrouwserコントロールを貼り付けて、

Private Sub Command2_Click()
Dim URLocation As String
WebBrowser1.Navigate "http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp"
WebBrowser1.Document.getElementsByName("login").Item(0).Value = "yahooid" ' Yahoo ID
WebBrowser1.Document..getElementsByName("passwd").Item(0).Value = "yahoopass" ' パスワード
WebBrowser1.Forms(0).submit()
End Sub

と書くと、WebBrowser1.Document.getElementsByName("USER_NAME").Item(0).Value = "overrun"
のところで、「オブジェクト変数またはWithブロック変数が設定されていません。」とでて止まってしまいます。
WebBrowserコントロールの使い方が間違ってるんでしょうか?
238デフォルトの名無しさん:03/10/20 09:05
TCPでdoubleの数値を送るコンソールプログラムを作ってお
ります。ですが、send()はchar
*でないと遅れないらしく、double
をcharに変換できたら・・とおもっております。

そこで、doubleからcharに変換する方法、教えていただけます
か?

使用環境
OS:windows98
CPU:1.4GHz
ソフト:VC++6.0
>>238
スレタイトルを1000回くらい読んでからにしてくれ。
PDFファイルを表示するプログラムを作成しています。

今はacrobat readerないにある"pdf.ocx"をactive x コントロールとしてフォームに貼り付けて
次のコードを使って表示しています。

Private Sub Command1_Click()

dim filepath as string
filepath = C:\サンプル\REPORT\REPORT03.PDF"

Pdf_main.LoadFile (filepath)          ’コントロールにフルパスを渡してこの命令を行いとコントロールに表示
End Sub

このコードで表示までできるんですが、
再度表示し続けると、表示速度が遅くなります。
調べてみるとAcroRD32.exeがリソースから終了せず、
(つまりアクロバットリーダーが起動し続けている状態と同じ)
メモリから開放されていないようなのです(タスクマネージャーで見ました)
終了したときにAcroRD32.exeを終了させて常に表示する、
もしくはほかの方法で表示やプログラムを終了させても
速度を遅くならないようにするにはどうすればいいのでしょうか。

開発環境は
OS:win2000
VB6.0SP5
です。

初心者の長文質問ですみませんがご教授お願いします。
そのOCXの仕様がわからないから適当だけど、LoadFileの対の関数ってないの?
ファイルを開放するようなイメージの関数。

上記だけ見ると、ファイルオープンしっぱなしだからじゃないの?って感じが。
>>241さん
探してみましたが、それらしきものは見つかりませんでした。

ほかの方法としてこのようなことをしてみたんですが、
終了処理中に

Private Sub Form_Unload(Cancel As Integer)
dim obj as object

Set obj = pdf_ctrl.object
Set obj = Nothing

End

End Sub

PDFコントロール内にあるこのobjectという関数をobject宣言した変数に格納し、
それをメモリから開放したんですが、余計遅くなりました(メモリからAcroRD32.exeは終了しましたが。)
>>242です。間違えましたこっちでして見ました。

×set obj = pdf_ctrl.object

○set obj = pdf_ctrl.Parent

244デフォルトの名無しさん:03/10/20 16:07
>>237
質問しているところのコードがCommand2_Click内にないので、いまいち質問の意味がよく
わからん。よって、以下は推測で答えてみる。

WebBrowser1.Document.getElementsByName("USER_NAME").Item(0)

の、どのレベルでオブジェクトがないって言われているか調べてみ。WebBrowser1は多分ある
よね。以下、

1. WebBrowser1,Documentはあるか(つまり、XMLを読み込めているか、XMLはWell
Formedか、ちゃんとルートがあるか)
2, USER_NAME という要素(エレメント)はあるか

いまのコードの書き方だとかなり階層を辿っているので、どこでエラーが発生している
のかいまいち分かりにくい。XMLの(少なくともデバッグの時は)

Dim TestElement as Object

Set TestElement = WebBrowser1.Document
If (TestElement Is Nothing) Then
MsgBox "WebBrowser1.DocumentはNothingだ"
End If

とか言う風にするなり、もっとかっこ良くラッパークラス作るなりしてデバッグしやすくする方が
吉だと思う。
245デフォルトの名無しさん:03/10/20 17:04
VB6でOLEでExcel2000を操作しています。その中の処理で、
「あるシートの中の数式を全部消したい(値はそのまま残したい)」というのが
あるんですが、現在は

・範囲を選択
・クリップボードにコピー
・値だけ貼り付け

という手順を踏んでいます。
これでも動作しているのですが、何百、何千というExcelファイルに対して
このような処理を行っていると、クリップボードがしじゅう書き換えられているために、
バックグラウンドでこの処理を動かしておいて、他の作業を行うということができずに
困っています。
そこで、クリップボードを介さずに、Excelシートの式の部分を削除するはないものか と
思ったのですが、ご存知の方、ご教示ください。

下のが現在の処理の抜粋です

' データ選択
Call sheetData.Rows("10:" & CStr(GetMaxRows)).Select

' クリップボードへコピー&値だけにして貼り付け (式の削除)
Call xls.Selection.Copy
Call xls.Selection.PasteSpecial(Paste:=xlValues)
>>242
連続処理をするならば、イメージ的には・・・。

1.PDFの起動
2.ファイルの起動
3.印刷
4.まだあるなら2へ
5.PDFの終了

とすればいいと思うんだけど。
(クロスしてスレに出てるるEXCELの処理と同じような感じなんだけどね)
>>237 DocumentCompleteイベントが来るまで待て。
248245:03/10/20 17:31
>>245の件ですが、発想の転換で、Excel Applicationの
自動計算をオフにすることで解決しました。というか、むしろ
こっちのほうが正常・スマートなやり方ですね・・・・

xls.Calculation = xlCalculationManual

でも、一気に式を消すような方法があるようでしたら、ものはついで?
なので、今後のためにご教示願います。
┌┬┐
├┼┤→□
└┴┘
一枚の画像の中に複数の絵が描いてあり、その中から絵の一枚を取り出すコントロールはなんというやつですか?
>>249
もしかしてレイヤーをイメージしているのか?
単純な絵の中から一枚を取り出すのは難しいと思うが。
>>250
単純なひとつのレイヤーしかない一層の絵です。今日古本屋で立ち読みした本に載ってたんですけど、また見てきてからここに報告してきます。
BitBlt
>>252
自作のプログラムならそうなるところですが、別売のコントロールだとすごく簡単にできちゃうのがわかったんですけど、立ち読みだったのでうろ覚え・・・
BitBltとUserControlで自作すれば?
その別売りのコントロールってなに?
>>254-255
APIはまだ使ったことないのでしばらくはBitBlt保留で。
また本屋行って調べてくるので、コントロール名についてはまたのちほど。
257237:03/10/20 22:15
>Dim TestElement as Object
>
>Set TestElement = WebBrowser1.Document
>If (TestElement Is Nothing) Then
>MsgBox "WebBrowser1.DocumentはNothingだ"
>End If
>
>とか言う風にするなり、もっとかっこ良くラッパークラス作るなりしてデバッグしやすくする方が
>吉だと思う。

やってみたところ、
WebBrowser1.Document.getElementsByName("login") はOKで。
WebBrowser1.Document.getElementsByName("login").Item(0) がだめだった。

ってことはItem(0)という指定方法が間違ってるのか・・・

>>257
ItemをItemsとしてコレクションにするのはどうだ?
初めまして。
バーコードスキャナーの購入を計画しております。
目的はAccessとの連携で在庫管理にでもと。

そこでお聞きしたいのですが
VB上でバーコードスキャナーからのデータを簡単に扱えるのでしょうか?
そういったコントロールみたいな物があって容易に数値を取り出せればいいのですが。
260デフォルトの名無しさん:03/10/21 01:44
>>259
VB対応と書いてあるバーコードを買えば一発。
261259:03/10/21 02:20
レスどうも。
>>VB対応と書いてあるバーコードを買えば一発。
ということは付属のソフトを使えば楽だが、
自作では容易にはいかないと言うことでしょうか?

中古も検討しておりまして
付属品が「本体とドライバー」の場合はどうかと思いまして。
262237:03/10/21 07:33
少し解決しました。
ページの読み込みとフォームへの入力を別にすれば動きました。

Private Sub Command1_Click()
WebBrowser1.Navigate "http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp"
end sub
Private Sub Command2_Click()
WebBrowser1.Document.getElementsByName("login").Item(0).Value = "yahooid" ' Yahoo ID
WebBrowser1.Document..getElementsByName("passwd").Item(0).Value = "yahoopass" ' パスワード
WebBrowser1.Forms(0).submit()
End Sub

ページの読み込みが完了していないのに、入力しようとしているからだめだったんですかね。
これを一つのボタンでやりたいんですが、
読み込みが終わるまでウェイトをかけることのってどうやればいいんでしょうか?
>>261
製品(バーコードスキャナ+付属品)による。
VB用ライブラリがついていれば簡単にあつかえるし、
C用ライブラリがついていればたぶん使える。
ライブラリが無くて通信ポートでやり取りしろとマニュアルに
やり方が書いてあるかもしれないし、
なにもついていなくて四苦八苦しなければならないかもしれない。
>>262
WebBrowserのプロパティを調べれ
スキャナとのI/Fがキー入力のものを探せば、何もいらないと思うが。
つか最近主流のUSBバーコードリーダは殆どがキー入力
267デフォルトの名無しさん:03/10/21 10:34
>>261
263の言う通りだが、VB対応と書いてあれば259のようにコントロールがついていると言う
意味で付属ソフトを使うと言う意味ではない。
268デフォルトの名無しさん:03/10/21 11:47
APIかVBか迷いましたが、こちらにて質問させていただきます。

フォームにピクチャーボックスとタイマーを貼り付けて拡大鏡を作りました。
しかし、しばらくはうまく動いているようにみえるのですが時間がたつとStretchBltしたところで
「実行時エラー"AutoRedrawイメージを作成できません。"」とのエラーが出てしまいます。
これはメモリ不足?どこかでリリース洩れしてるってことなんでしょうか?

APIはAPIビューアの宣言のまま、ピクチャーボックスの設定は

AutoRedraw = True
hasDC = True
ScaleMode = ピクセル

としております。
どなたかよろしくお願いいたします。
269268:03/10/21 11:48
Private Sub Timer1_Timer()
Dim lhDc As Long
Dim lRes As Long
Dim lCur As Long
Dim po As POINTAPI
Dim icn As ICONINFO
' タイマーオフ
Timer1.Enabled = False
' カーソル情報取得
GetCursorPos po
' ピクチャボックス消去
Picture1.Cls
' デスクトップからピクチャボックスへ拡大表示
lhDc = GetDC(0&)
lRes = StretchBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, _
lhDc, po.x, po.y, Picture1.ScaleWidth / 2, Picture1.ScaleHeight / 2, SRCCOPY)
lRes = ReleaseDC(0&, lhDc)
' アイコンをピクチャボックスへ拡大表示
lCur = GetCursor
GetIconInfo lCur, icn
lRes = DrawIconEx(Picture1.hdc, -(icn.xHotspot * 2), -(icn.yHotspot * 2), lCur, 64, 64, 0&, 0&, DI_NORMAL)
' 表示
Picture1.Refresh
' タイマーオン
Timer1.Enabled = True
End Sub
270デフォルトの名無しさん:03/10/21 12:41
VBの実行時エラー63てどんなエラーなのでしょうか?
店で発生しているためオペレーションなどがわからず
このエラー番号だけ教えられ原因がわかららない状況です.
実行時エラーの一覧などあるのでしょうか?
ネット検索、過去ログでも見つからないので
わかる方いましたらよろしくお願いします.
271デフォルトの名無しさん:03/10/21 12:46
>>1の「六. VB情報募集中。」というのはVBについてであれば質問や回答でなくても書き込んでいいということ?
>>270
ヘルプで、1分でわかったが。。。

「レコード番号が不正です。(Error 63)」
GetDCしたもののお片づけは?
ごめん、してあったね。
275デフォルトの名無しさん:03/10/21 13:10
え・・・
ありがとうございました.
ヘルプにあるんですね。
いまだに見つからないです・・・
がこの内容で調べてみます.
本当にどうもでした
>>275
普通にErrのDescriptionを見るとか、Error関数にError番号を渡すとか。
277268:03/10/21 14:54
どうやらアイコンの描画でつまづいているようです。

' アイコンをピクチャボックスへ拡大表示
lCur = GetCursor
GetIconInfo lCur, icn
lRes = DrawIconEx(Picture1.hdc, -(icn.xHotspot * 2), -(icn.yHotspot * 2), lCur, 64, 64, 0&, 0&, DI_NORMAL)

この3行をコメントにするとエラーが発生しなくなりました。
う〜ん、DrawIconExの遣い方が間違ってるのでしょうか。。。

仕方がないので(カーソルの形が変わらないのが残念ですが)、
今回はマウスカーソルが差している場所さえわかればいいので
カーソル画像(Picture2)とマスク画像(Picture3)を用意しておいて

lRes = StretchBlt(Picture1.hdc, 0, 0, Picture3.ScaleWidth * 2, Picture3.ScaleHeight * 2, _
Picture3.hdc, 0, 0, Picture3.ScaleWidth, Picture3.ScaleHeight, SRCPAINT)
lRes = StretchBlt(Picture1.hdc, 0, 0, Picture2.ScaleWidth * 2, Picture2.ScaleHeight * 2, _
Picture2.hdc, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, SRCAND)

として対処したいと思います。
げっとかーそるでとったハンドルのお片づけとか。
279268:03/10/21 17:20
>>278

GetCursorで取ったハンドルもリリース(デリート?)しないと駄目だったのでしょうか?
ヘルプにはなにも書かれていなかったのでとくになにもしなかったのですが…

ただ、GetCursorのヘルプをよくみると

Windows 98 および Windows NT 4.0 SP3 以降:
グローバルカーソルに関する情報を取得するには、
たとえ現在のスレッドがそのカーソルを所有していない場合でも、
GetCursorInfo 関数を使います。

とあるので、他のウィンドウがカーソルを所有しているときには
GetCursorで取ったハンドルが無意味なものだったのかなと思い修正してみました。

' アイコンをピクチャボックスへ拡大表示
pci.cbSize = Len(pci)' pci は CURSORINFO構造体
GetCursorInfo pci
GetIconInfo pci.hCursor, icn
lRes = DrawIconEx(Picture1.hdc, -(icn.xHotspot * 2), -(icn.yHotspot * 2), pci.hCursor, 64, 64, 0&, 0&, DI_NORMAL)

これでちょっと様子を見てみます。
>>279
いや、書いてみただけ・・・、でもまあ、このあたりのAPIって借りたものは返すが基本だったから。
CloseHandleとかはちがうだろうし。
262はレスを無視する場合があるのでおしえな〜い
282259:03/10/21 22:14
バーコードスキャナーの件参考になりました。
283デフォルトの名無しさん:03/10/22 04:54
最近作ったツール(VB)ソースのみ(コンパイルは自己責任で)
コメントもないけれど中身は単純なもの。

使い勝手が良いので、うpさせてもらう。
(・∀・)イイ!!と思ったらお好みにカスタマイズして使ってやってくれ。
俺のデスクトップには4つしかアイコンが残らなくなった
http://up.isp.2ch.net/up/618cbe41eb16.lzh

概要:SUSIEみたいな感じで設定したショートカット郡を表示
及び、ショートカットの登録アプリ。いくつかのサンプル設定
探せば便利なフリーソフトぐらいあるかもしれないが
284デフォルトの名無しさん:03/10/22 14:47
DLLのバージョンを調べるコードなのですが、XPでコンパイルしたEXEを98SE上で走らせると「実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません」
エラーが発生、EXEが落ちる、という現象が起こってしまいます。
コーディングでFSOを使用していて、scrrun.dllの場所が98系とNT系で違うのでこの現象が起こってしまうのではないか、
と睨んでいますが、回避方法がわかりません。調べてみたところ、
「VBScriptで標準入出力を処理するには、Windows Script Hostのバージョンが5.1以降の必要があります」
とありまして、困っています。
そこで、クライアントマシンの環境は変更しないとして、
1:FSO使用でコーディング上にて回避可能?またその方法?
2:1は無理でAPI使用にて回避
3:もっといい手がある
のどれにあたりますでしょうか?
また、どういった方法で実現可能でしょうか?
よろしくお願いします。
環境:[クライアント]
Windows98SE,VB6標準ランタイム
scrrun.dll[ver:5,0,0,3715 , c\windows\system]
[コーディング]
WindowsXPSP1(フルパッチ),VB6SP5
ソース内でFSOを使用
[ソースの一部]
Dim Fso As New FileSystemObject
Dim FsoFile As File
Dim sMyFile As String

Set myFile = Fso.CreateTextFile(sFilePass)
myFile.WriteLine (Now & " : " & sWriteMes)
myFile.Close
Set myFile = Nothing
CreateObjectでFileSystemObjectを生成してみるとかは?
全部Object型でやる。
286284:03/10/22 17:03
>285さん

Dim Fso As Object
Dim FsoFile As File
Set Fso = CreateObject("Scripting.FileSystemObject")

とやってみたのですが、結果は一諸でした(;´Д`)
文字列の限られた範囲だけを表示するのってどうすればいいんでしょうか?
たとえば「DARS」という文字列があったとして、真ん中二文字「AR」のみを他の変数に置き換えたいときとか。
OCXを作成していて、
コントロールモジュールでは UserControl のプロパティを参照したりセットできるのですが、
UserControl.AutoRedraw = True ←こんな感じで
しかし新しくクラスを作成しその中で、UserControl のプロパティやメソッドを参照の
しかたが解りません教えてください。
今のコード書いておきます。

Public pPaints As cls
Public ParentForm As Form

Private Sub UserControl_Resize()
Set pPaints = New cls
Set ParentForm = UserControl.Parent
pPaints.PicHei = UserControl.ScaleHeight ←コントロールモジュールなら参照できる
pPaints.PicWid = UserControl.ScaleWidth           '// スケール取得
UserControl.Scale (0, pPaints.PicHei)-(pPaints.PicWid, 0) '// Y方向を逆にする
pPaints.TrgetObj = ParentForm ←ここでいろいろしてみたけどできませんでした。現時点では
                         OCXを貼り付けたフォームを参照してるだけ
  pPaints.適当な処理 '// メソッド呼び出し
End Sub

'// クラス側 //
Private mTrgetObj As Object

Property Let TrgetObj(ByRef Obj As Object)
Set mTrgetObj = Obj
End Property

Public Sub 適当な処理
mTrgetObj.DrawMode = 7 ここでエラー
End Sub
>>287
strResult = Mid("DARS",2,2)

斜め読みでもいいから、入門書読んだようがいいかも。
290284:03/10/22 20:42
>287

ARを必ず何かに置き換えるのなら replace
今回のみ抜き出すのなら mid
毎回なにかするなら 正規表現

外してたらスマソ
291デフォルトの名無しさん:03/10/22 21:02
Commandボタンで画像を左に表示することってできるんですか?
無理なら画像に文字を入れてやろうと思ってるんですが・・・
>>289
>>290
ありがとうございます。VB、midで検索したところまさしく自分のやりたかったことを教授してくれているページが見つかりました。やはりコード集のようなものを買わなければいけないなと思いました。
293デフォルトの名無しさん:03/10/22 21:29
コード集?ハァ?
VBスレは良く煽り厨が出てくるねw
295デフォルトの名無しさん:03/10/22 22:36
今日はドットネットでプログラムつくったさっ!わっはっはっはっは

オマエラ知ってるか?ドットネットではDLL使うとき、DLLのファイル名も指定しないとなんないんだぞ!

ところでポケットPCでサーバー/クライアントのシステムって作れるの?

ぽけっとPCのODBCとか0040とか聞いたこと無いんだけど
296デフォルトの名無しさん:03/10/22 22:49
氏ね
297デフォルトの名無しさん:03/10/22 22:51
( ´,_ゝ`)...シルカヨ

>>291
サブクラス化すればできるはず。
面倒ならDelphiかBCBのコントロールを
適当にかっぱらってきて再利用w
299デフォルトの名無しさん:03/10/22 23:18
ピクチャーボックスにUnicodeの文字を表示させようとしたのですが、
殆どの文字では正常に表示できるのですがいくつか表示できなかったり別の
文字に置き換わって表示されてしまいます。
例えば、U+5DEE(「差」という文字)を指定すると何故か「移」が表示されてしまいます。
これはどういうことなのでしょうか?
原因が分かる方教えてくだされば幸いです。

Private Sub Command1_Click()
Dim hOldFont As Long

Picture1.Cls
hOldFont = SetFont(Me.hWnd, Picture1.hDC, 26, "SimSun")
Call ExtTextOut(Picture1.hDC, 0, 0, 2, ByVal 0&, StrConv(ChrW$(&H5DEE), vbUnicode), 2, 0)
Call DeleteObject(SelectObject(hDC, hOldFont)) ' 新しいのを破棄
End Sub

Private Function SetFont(ByVal hWnd As Long, ByVal hDC As Long, ByVal nPoint As Long, ByVal lpFontName As String) As Long
Dim hFont As Long

Call SetMapMode(hDC, 1)
hFont = CreateFont(-nPoint * 20 \ Screen.TwipsPerPixelX, 0, 0, 0, 400, 0, 0, 0, 1, 0, 0, 0, 0, lpFontName)
Call SelectObject(hDC, hFont)
SetFont = SelectObject(hDC, hFont) ' 一つ前のフォントを返す
Call SendMessage(hWnd, &H30, hFont, 1)
End Function
.NET使えよバーカ。
今まで手動でしていたHP上の複数のhtml文書の結合を自動化しようと思いました。
(主にライバル店舗の商品一覧です(笑)
WebBrowserコントロールを使っているのですがうまくいきません。

最初にページを表示してからボタンにより結合処理をすると上手くいくのですが(サンプル1)
ページの表示とともに結合処理をすると失敗します。(サンプル2)

なんでですかね?
表示より先に結合してしまいます。
スレ見ていたら262当たりのことが関連している気がするのですが…

結合する文書が多数になる場合もあるので、その文書分のコントロールを用意するわけにもいきませんし。
アドバイスを。
302301:03/10/22 23:43
(サンプル1)
Private Sub Command1_Click()

WebBrowser1.Navigate HtmlURL(0).Text 'HP表示
WebBrowser2.Navigate HtmlURL(1).Text

End Sub

Private Sub Command2_Click()

Dim HtmlURLString As String
HtmlURLString = WebBrowser1.Document.body.innerHTML & WebBrowser2.Document.body.innerHTML
RTextBox1.Text = HtmlURLString 'リッチテキストにhtml文書を表示

End Sub


(サンプル2)
Private Sub Command2_Click()

Dim HtmlURLString As String
WebBrowser1.Navigate HtmlURL(0).Text
WebBrowser2.Navigate HtmlURL(1).Text
HtmlURLString = WebBrowser1.Document.body.innerHTML & WebBrowser2.Document.body.innerHTML
RTextBox1.Text = HtmlURLString 'リッチテキストにhtml文書を表示

End Sub
DoEvents入れてみたら?
304288:03/10/22 23:58
まだ問題解決できません。だれか答えられる方いませんか?
305284:03/10/23 00:03
結局API使用にて解決しましたm(._.)m ペコッ
306デフォルトの名無しさん:03/10/23 00:16
VBでDAOを使ってデータベースにアクセスしているのですが、
ユニークなIDの取得方法が

ID Field1
1 a
2 b
3 c
5 d
6 e

というテーブルがあったとき、次のIDは"7"ではなく、
"4"を取得したいのですが、方法がありますでしょうか?
つまりIDは、数値をどんどん増やすのではなく、削除などで
飛び飛びになってしまった所を埋めていく形にしたいのです。
>>288
なにを言っているのか理解できないのですが・・そうですかアホですか俺は
308307:03/10/23 00:40
自己解決 >>288 Property Get
309288:03/10/23 00:46
>>308 自分でも Property Get プロシ−ジャを追加したのですが
うまくいかないです。よろしければコード教えてもらえますか?  
310307@長くてすまん:03/10/23 01:01
こういうこととちゃうんかな。どこでどういうエラーが出るか書いてくれ
[class1]
Private o As Object
Public Property Get obuje() As Object
obuje = o
End Property
Public Property Let obuje(ByVal vNewValue As Object)
Set o = vNewValue
End Property
Public Sub sub1(s As String)
o.Caption = s
End Sub
[form2](別にform1)
Private a As Class1
Private b As Class1
Private Sub Command1_Click()
a.obuje.Caption = 1
End Sub
Private Sub Command2_Click()
b.obuje.Caption = 2
End Sub
Private Sub Form_Load()
Set a = New Class1
Set b = New Class1
a.obuje = Form1
b.obuje = Form1
End Sub
311307:03/10/23 01:02
ミスッた。Getがエラー確認のままだ
Public Property Get obuje() As Object
Set obuje = o
End Property
312301:03/10/23 01:07
DoEventsって処理を一時中断する関数ですよね。
時間がかかるのは表示の方なのですが…。
WebBrowser1.ReadyStateやWebBrowser1.DocumentCompleteとかを
使ってページがすべて読み込まれるまで待機したら。
301は表示しながら裏で結合したいのだろう
がんばれ、時空を歪めれば可能だ
315309:03/10/23 01:41
>>310
普通はそれでいけるんです。 オブジェクト型に Obj = Form1.Picture1 
みたいにすればクラス内だろうがどこだろうが、 Obj.プロパティ で ピクチャボックスの
プロパティを参照したりセットできたりするのですが、
通常のEXE作成ではなく ActiveX作成でのことなんです。
ユーザーコントロールというものが与えられますよね?
そのユーザーコントロールモジュールの中で、
UserControl.プロパティ  はもちろん参照できます。
問題はここからで
ユーザーコントロールモジュールでクラスを生成します。
Set A = クラス

A.ClsObj = UserControl ←ここでユーザーコントロールを代入したいわけです。
                     310さんの a.obuje = Form1 と同じことです。

<クラス内部>

Property Let ClsObj(ByRef Obj As Object)
  Set ClsObj = Obj
End Property

Public Sub メソッド()
ClsObj.プロパティ  ←ここでメソッドやプロパティがないみたいなこと言われたり
                します
End Sub

ようは クラス内でユーザーコントロールを参照したいのに、フォームやピクチャーボックスみたいに
オブジェクト型変数=Form1
オブジェクト型変数.プロパティ みたいに参照できないということなんですが 
この説明でなんとなくわかりましたでしょうか?
>>314
処理を早くするために次ページを読ませながら
HTMLを加工したことならあるけどね。
317299:03/10/23 01:56
環境変えれってのは勘弁で…
318301:03/10/23 02:14
>WebBrowser1.ReadyStateやWebBrowser1.DocumentCompleteとかを
>使ってページがすべて読み込まれるまで待機したら。
アドバイスありがとうございます。
WebBrowserでヘルプ見たのに見逃しておりました。
何となく形になってきたので明日にでも試してみます。
319307:03/10/23 02:37
>>315
言いたいことは解った。やりたいことは判らん。
文にしようとするとゲルニカのようになる要望というものはあるものだし
どいつが実体を持ってて、どいつがどいつの親でと・・俺はお手上げだ。
不都合がなければソースを丸めてうp。
でなければ、その分野の達人を待ちつつ、独自に色々試すよりないか

第一感 可能。なんか見落としがあるんだろう
320デフォルトの名無しさん:03/10/23 02:37
format("0.0", 0.05)
でPCによって返ってくる値が
0か0.1なんですが、なぜでしょう?

開発はVB6 SP5です。
ちなみに
winxp => 0
win2k => 0.1
win98SE => 0

でした。仕様かな?
format(expression,[format],... (XP)
?format("0.0",0.05) & " : " & format(0.05,"0.0")
0.05 : 0.1
>>320
仕様です。数値処理の四捨五入に文字列編集用のFormatを使うなと。

Windows XP 上での Format 関数の動作について
http://support.microsoft.com/default.aspx?scid=kb;ja;JP418691
323322:03/10/23 02:46
あれ? 仕様です。となっていたと思ったけどSP1で修正されました。になっているね。
324320:03/10/23 09:09
>321
delphiとごっちゃになってた須磨祖

>322
さんきゅ
今まで書いたFormat文は、無かったことにします。
>>286
解決したみたいだからあれだけど、それでは片手落ちだよ。
全てのFileSystemObject関連をObject型にしないと。=参照設定を外す。
326デフォルトの名無しさん:03/10/23 13:43
VB6.0で現在時刻を正確に(ミリ秒まで)取得するのはどうすれば良いんでしょうか?
>>326
API使わないとムリ。GetLocalTimeだと思われ。
そのものズバリのサンプルも、ググれば出てくるよ。
328デフォルトの名無しさん:03/10/23 15:49

質問です。
MSHFlexGridコントロールを使っているのですが、
マウス左クリック→ドラッグで、グリッドがスクロールしてしまいます。
これをスクロールさせない方法はあるでしょうか?

いちおうScrollイベントやMouseMoveイベントを拾って、TopRowを設定するということをしたんですが、
これだと、マウスの動かし方によっては、動いて戻ってる様子がチラッチラッと見えるときがあるんです。
できればチラチラせずにスクロールさせないようにしたいのですが。
ここでReDrawもつかってみましたが、チラチラはしないものの、表示行の先頭行や最後行の残像が、
表示行全体に移ってしまうみたいな結果になってしまいました。
なんとかうまいことやる方法はないでしょうか。
329デフォルトの名無しさん:03/10/23 17:44
VB6.0でWinNTやWin2000のサービスプログラムって作れますか?

作れるのでしたら、プログラムのサービスへの登録方法を教えて下さい。
>>329
オレは別に社員じゃないが、
ttp://www.grapecity.com/japan/support/database/P1_105_9320_News.htm
他にも探せばあった気がする。
MSDNにサービスとして登録する方法かツールがあった気がする。
>>331
リソースキットのSRVANYですな。
「桜時計を サービス化」などでぐぐると色々でてくるけど、VBアプリにも
使えるのかしらん。人柱きぼん
333301:03/10/23 21:35
WebBrowserコントロールを使ったhtml文書の結合なんですが
DocumentCompleteを使うことで上手くいきました。

と思ったのですが新たな問題が…
一度保存して終了した後に再度読み込んで起動すると
「実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません。」
といったエラーが。
何故??
以下に結合処理などをのぞいたサンプルを。
334301:03/10/23 21:35
Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.google.co.jp/"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Text1.Text = WebBrowser1.Document.body.innerHTML
End Sub

-----
Command1_Click()ではなくてForm_Load()にすると問題ないのですが…
>>306
ID全件検索直後にRecordsetを渡せば、最小空き番号を返す関数を作ってみた。

Private Function GetAvailableMinNum(RS As DAO.Recordset) As Long
  Dim lngCnt As Long
  lngCnt = 1
  Do Until RS.EOF
    If RS!ID > intCnt Then Exit Do
    lngCnt = lngCnt + 1
    RS.MoveNext
  Next
  RS.MoveFirst
  GetAvailableMinNum = lngCnt
End Function
>>334
回答じゃないけど、Microsoft HTML Object Libraryを参照設定して
Dim html As IHTMLDocument3
Set html = WebBrowser1.Document
とかやるとアーリーバインディングになってコード補完も使えるから便利だよ。
>>335
それだとデータが多くなって大きなIDが削除されると検索に時間がかかるから
削除IDを入れるテーブルを作ったほうが良いかも。

あと思いただけで詳しいアルゴリズムは考えてないけど、
二分探索の応用っぽいやりかたで高速に空きIDを探索できるかも。
データが全部埋まっていればデータ数と最後のIDは同じ。
そうでなければ半分の位置を調べてそのIDが半分かどうか、
そうでなければ・・・みたいに。
338335:03/10/23 22:10
修正・・・
Private Function GetAvailableMinNum(RS As DAO.Recordset) As Long
  Dim lngCnt As Long
  lngCnt = 1
  Do Until RS.EOF
    If CLng(RS!ID) > lngCnt Then Exit Do
    lngCnt = lngCnt + 1
    RS.MoveNext
  Loop
  RS.MoveFirst
  GetAvailableMinNum = lngCnt
End Function
339335:03/10/23 22:13
>>337
読まずに>>338を書いてしまいましたm(_ _)m
「二分探索」について勉強してみます。
>>333
うろ覚えだけどDocumentCompleteは読み込みエラー時とかにも発生したと思う。
んで、Webbrowser1.DocumentがNothingになっていてとか。
どこのオブジェクトがないのか、そのときのWebbroserの各プロパティは
どうなっているのかとか調べてください。
341337:03/10/23 22:22
>>339
でもカーソルを前後にちょこちょこ移動しなくちゃならないから
逆に遅くなるかもね。削除IDテーブルを作る方が簡単で速度も速いと思う。
http://www.afis.to/~start/java/Gazou/Graphics/curveLine.html

ここにあるスクリプトなんですが、(3次スプライン曲線)
VB6の場合どのように書けばよいのでしょうか?
用意したPictureBoxに描きたいのですがさっぱりです・・。
どなたかよろしければお願いします。
343デフォルトの名無しさん:03/10/24 00:16
Javaスレでも聞いたのですが
OLE/COM以外のアプリケーションに対して
バックグラウンドでsendkeysのような処理をしたいのですが
これを実現するメソッドを所持している言語ってありますか?
PictureBoxに二次曲線が書けるようになれば、すぐできるようになるとおもふ
二分探索とかクイックソートとか。
プログラマの基礎項目からは外れてしまったのですか?

プログラマ入門は プログラミング+アルゴリズム+専門語学力(設計書の理解)
プログラミング入門は 標準入出力>ファイル操作>ポインタ(参照と実体)の理解
アルゴリズム入門は 順検索>泡ソート>二分探索>Qソート
346262:03/10/24 01:20
プロパティ見たけどわからなかった・・・

Do While WebBrowser1.Busy
DoEvents
Loop

よくわからないけどこれでいけた。
347301:03/10/24 04:14
木陰様で何とか形にはなりました。
ただHPのページによってはフレームを使っていないにもかかわらず
二度以上取得していたりしてまだまだ課題が多い状態です。(いったいなぜ?)

>うろ覚えだけどDocumentCompleteは読み込みエラー時とかにも発生したと思う。
>んで、Webbrowser1.DocumentがNothingになっていてとか。
>どこのオブジェクトがないのか、そのときのWebbroserの各プロパティは
>どうなっているのかとか調べてください。

どうも私もそんな気がして最初はabout:blankにして回避しております。
各プロパティの状況はどうやって調べれるのでしょうか?
まだ入門書レベルの知識なため理解できておりません。
よければアドバイスを。
ちなみにつたないサンプルで恐縮ですがこんな感じでプログラムしました。
348301:03/10/24 04:17
Private Sub Command1_Click()
WebBrowser1.Navigate URLName(URLNum)
'Command1.Enabled = False
End Sub

Private Sub Form_Load()
URLNum = 0
URLName(0) = "about:blank"
URLName(1) = "http://www.yahoo.co.jp"
URLName(2) = "http://www.google.co.jp"
URLName(3) = "http://www.infoseek.co.jp"
WebBrowser1.Navigate URLName(URLNum)
RText1.Text = ""
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
URLData = URLData & WebBrowser1.Document.body.innerHTML
If URLNum = 0 Then
URLNum = URLNum + 1
Exit Sub
ElseIf URLNum >= 3 Then
RText1.Text = "<html>" & vbCrLf & "<body>" & vbCrLf & URLData & vbCrLf & _
"</body>" & vbCrLf & "</html>"
Exit Sub
Else
URLNum = URLNum + 1
WebBrowser1.Navigate URLName(URLNum)
End If
End Sub
一部字数の関係上削除しております。
> 各プロパティの状況はどうやって調べれるのでしょうか?
素直に、Debug.Print Webbrowser1.プロパティでもしたら?
よくわからんけどDoEventsでOKというのは、地雷の可能性大だな。
DoEventsってのが、どういうものかを考えれば、ほんとにそれでいいか、代替があるか判断できると思うけど。
>345
探索もソートもDBにお任せで実装はおろかアルゴリズムも
知らないプログラマはそうとう多いんじゃないかな。
.NETに厨房が移ったおかげか
ずいぶんまともなスレになってきたな
>>351
最近はどの言語もSTLとか探索やソートのライブラリがついているからねぇ。
354309:03/10/24 09:52
自己解決しました。
やはりユーザーコントロールはプロパティ、メソッドを
マッピングしなければいけないみたいです。
OCXを使う側に公開する為にマッピングするものと思っていたらけど、
OCX作成の段階でマッピング(外部に公開)しないと、クラスはおろか標準モジュール
からも呼べないみたいです。お騒がせしました。
>>342
VBのリファレンス、APIリファレンスとともにアルゴリズムの入門書を
買ってくれといいたい。VBのリファレンス、APIリファレンスは買うがアルゴリズム本は
かわない人多い。
3次スプラインなら結構のってる本多いよ。
といいつつ
http://www5d.biglobe.ne.jp/~tomoya03/index.html
このあたりを参考にしてみたら?VBで補間を書いてあるのはここしか知らない。
あとは3次スプラインをググって頑張ってくれ。
>>353
でも、DBの場合は、素直に提供されている機能つかったほうがいいと思うなぁ。
もちろん、アルゴリズムなどは分かった上でだけど。
357307:03/10/24 14:45
>>354(>>309) 解決したようで
個人的にマッピングどうのって言葉知らずで解らないが。
exe+actx+ocxのスパゲッティを造ってみたので一応うp
ちょっとやそっとの客の要望なら作り方しだいで解決できるだろう

「Project1.exeを2〜3重に実行するとあっちやらこっちやら参照するアプリ」
ttp://up.isp.2ch.net/up/2d5578f8d682.lzh
(当然ながらレジストリに登録されないと動かせない、
 あとでゴミを消す手段を知らない場合はactxやocxはお勧めできない)
358288=309=315=354:03/10/24 15:35
>>309
サンプル作成どーも。
目を通して、参考にしてみます。
マッピングは、ようはユーザーコントロールにプロパティやメソッドを追加することです。
ユーザーコントロールにコマンドボタンを貼り付けたとして、そのボタンのプロパティを
ユーザーコントロールのプロパティとして外部に公開することをマッピングというそうです。
ActiveX作成なんてやったことなかったから困惑しましたがなんとかいけそうです。
359288=309=315=354:03/10/24 15:37
>>309 じゃなくて >>357でした・・・
自分に宛ててどうする・・・
連夜の徹夜明けで頭がアフォになってました。
すいません。
360デフォルトの名無しさん:03/10/24 17:44
typeでConstしたいんですが、どう記述すればいいのか教えてください。

イメージはこんな感じです。
Private Type XXX
Const AAA As String = "A"
Const BBB As String = "B"
End Type
Public YYY As XXX

Enum
enumは大文字小文字が固定されないので、
ダミーの関数を作成し、dim で同じ名称を定義するのをお勧めする
素直にクラスモジュルー使っとけ!!
vb6はどこでDLできますか?
windowsダウンロードコーナーに行ってもリンク切れてました(泣
切れてたページってどこ? MSDNに入ればダウンロードできるのかな?
366>364:03/10/24 19:27
Visual Basic .NET 2003
をDLしたが意味なかった
MSDNいっても似たような奴がいっぱいありすぎぃ

似たようなのってなんだ?
369デフォルトの名無しさん:03/10/25 05:27
教えてください〜(泣

VB6使ってます。
デザイナモジュールファイルをプロジェクトに取り込むにはDoしたらいいですか?

クラス {XXXXX-XXXXX}(コントロール XXXXX) はロードされていません。

というエラーが出ます。
よろしくお願いします。
370デフォルトの名無しさん:03/10/25 10:49
質問なんですが、

コマンドボタンの文字の色とか変えるのにはどうすればいいのですか?
371デフォルトの名無しさん:03/10/25 12:14
IEのインターネットオプションの設定内容を変更するプログラムを
作りたいんですが、どんなAPIを使ったらいいか分かりません。
知ってる人がいたら教えてください。
>>371
インターネットオプションのどこ?
場所によってAPIを使ったりレジストリを使ったり。
セキュリティとかを変えるのはCOM使ってと面倒だったような。
資料少ないし。
悪巧み?
>>373 は?
設定勝手に変えられたらこまるじゃん?
376372:03/10/25 12:33
いや、画像表示をON/OFFしたいだけなんで。
インターネットオプションの「詳細設定」の中のパラメータを変える方法が
分かりません。
InternetSetOption()というwininet.dllのAPIはインターネットオプションの
一部のパラメータを変えられるんですが、画像のON/OFFはできません。
>>375 レジストリのアクセス方法聞いたら悪巧みになるのか?
378371:03/10/25 12:35
>>376の372は間違い。371でした。
>>376
画像のON/OFFはレジストリを変えるしかない予感。

レジストリへのアクセスをモニタする方法
http://www.atmarkit.co.jp/fwin2k/win2ktips/111regmon/111regmon.html
380デフォルトの名無しさん:03/10/25 12:39
>>379
ありがとう。RegMonもいいけど、レジストリ差分取得ソフトがあるので
そっちでやってみます。
おまけ。読んでないし参考にならないだろうけど見つかっちゃったんでメモ

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnie60/htm/whatsnewpublicpreview.asp
> Internet Explorer をアプリケーションの一部として使用する開発者に対しては、
> アプリケーションからプライバシー設定を制御する API を提供しています。
> 詳細については、 Internet Explorer 6 のプライバシー機能を参照してください。
   ↑この詳細は↓
http://www.microsoft.com/japan/msdn/library/ja/jpdnie60/htm/ie6privacyfeature.asp
レコードセットに排他ロックをかけるのはLockType=2とするだけなので簡単ですが、
Access.mdbというmdbファイル自身に排他ロックをかけるにはどのようなプログラムにすればよいのでしょうか?
>>382
OpenDatabase時の引数
384382:03/10/25 14:47
>>383
当方ADOしかできないのでADOのヘルプをみてそのキーワードを調べてみます。
385382:03/10/25 14:54
>>383
ADOで排他ロックをかけながらデータベースに接続するにはどうしたらいいんでしょうかね・・
ADOのconn.open の引数には
conn.open 接続文字列、ユーザID、パスワード、同期・非同期
という引数しかなく排他ロックを指定してopenできないみたいです。
386382:03/10/25 15:24
ファイルシステムオブジェクトにも
排他ロックをかけるメソッドがなかったし・・
違うディレクトリに移してから接続して、終了したら元に戻せば排他。
388382:03/10/25 15:58
>>387
それも考えましたが、最終手段にしてみます。
今現在ASPのサーバサードスクリプトでVB Scriptを使っていて、
多数がアクセスするデータベースにアクセスのmdbファイルを使っていて、
ある一人がアクセスしている間はロックをかけてしまえばほかの人がmdbにアクセスできないので
mdbが壊れないというわけです。
ADO.NETやSQL Serverをつかわないで、ファイルにロックをかける方法を模索しています。
389382:03/10/25 16:00
ADOのStreamオブジェクトにModeプロパティがあり、
それには排他できる設定がありますが、
でもそれはOpenしたメモリ内のStreamにロックをかけるという意味で
Open元のファイルにロックをかけるという意味ではないようなのですがどうでしょうか?
DB板のURLはっとく
http://pc2.2ch.net/db/
391382:03/10/25 16:14
>>390
ありがとうございます。
ファイルシステムオブジェクトに排他ロックをかけるメソッドがあったら
どんなファイルでも1人しかアクセスできないようにできてよかったのにな。
ファイルをゴミ箱に送るにはどうすればいいでしょうか?
393デフォルトの名無しさん:03/10/26 01:35
>>392
APIにある。
SHFileOperation
悪いが後は調べてくれ。
394392:03/10/26 06:15
>>393
了解です。
395デフォルトの名無しさん:03/10/26 11:29
教えてください。

1.常に最大化でサイズ変更は不可にしたい。
2.最小化ボタンをつけて、使わないときはそれで小さくする。

Borderスタイルで、「固定」で、WindowStyleで、「最大化」とやると
起動時は最大化になるが、タイトルバーをダブルクリックすると、元のサイズに
戻っちゃいますよね?これがちょっと困るので・・・

一応過去ログ探しましたが、該当の質問が見当たらなかったので、
質問させてください。すいませんが、よろしくお願いします。
396デフォルトの名無しさん:03/10/26 12:39
テキストボックスから、10進数若しくは16進数を入力し、
10進数を16進数に、16進数を10進数に変換したいのですが、
どうすればよいでしょうか?
397デフォルトの名無しさん:03/10/26 13:37
398396:03/10/26 14:08
>>397
解決しました。ありがとうございます
399299:03/10/26 14:47
すみません、分かる方はいらっしゃいませんか…?
>>299
400デフォルトの名無しさん:03/10/26 16:29
質問です。

限られた範囲内で、イメージを表示して、はみ出した部分はスクロール
で見れるようにしたいんです。
(例えば、外枠は640*480でイメージが1024*768の場合とか。)
で前にも似たようなコトをやったんだが、
ピクチャコントロールを2つ重ねて、外側のピクチャ〜の範囲内で、
イメージを表示させたもう1つのピクチャ〜をスクロールさせて表示
させるって方法で上手くいったんだけど、

今回は、拡大・縮小も入れたくて、ピクチャ〜よりイメージコントロールが
よさげだと思ったので、外枠をピクチャ〜で、実際のイメージの表示は
イメージコントロールを使ったわけなんだけど、イメージの表示で、

Set imgScanImg.Picture = LoadPicture(ファイル名)

で、コントロールに表示されないんです。
フォームに直接イメージコントロールを貼り付けてやってみたら
表示できるんで、ピクチャ〜の中にコントロールをセットしているのが
間違っているのかな?と思うんですが・・・

わかりづらくて、ごめんなさい。
どなたかわかる人いたら教えてください。
401デフォルトの名無しさん:03/10/26 20:12
VB6.0を使っているのですが、
command1を押したときにText1.Textに入力した数字を
Val関数で数値化して、その数値を1000で割って、
その余剰を求めたいのですが、どうやって余剰を出すのかわかりません。

初歩的な質問かと思いますが、漏れの持ってるテキストに載ってませんでした。
ググってもみたのですが、載っているサイトはみつかりませんでした。

Val(Text1.Text)のあとから一文字も進みません
お願いします
あまりはMOD
403デフォルトの名無しさん :03/10/26 20:23
Val(Text1.Text)

   を変数に置き換える
型はstring意外なら何でもいいよ。
404401:03/10/26 20:24
訂正:
余剰じゃなくって剰余みたいです

123456の場合
1000で割って
123.456になりますが、
456を取り出したいです


>>402
MODってどうやって使えばいいのでしょうか?
>>404
氏ね!MSDN読破して氏ね!
406デフォルトの名無しさん:03/10/26 20:29
名に作ろうとしてるんすか。
> 余剰じゃなくって剰余みたいです
どっちも正しい。

関数とかじゃなくて+-/*と同じ演算子なので
123456 MOD 1000で456になる。
408デフォルトの名無しさん:03/10/26 20:30
ちなみ
O=mod(text1.text)
form1.caption=○
>>404
プログラムの問題じゃないので、
紙と鉛筆を使って考えてください。
初心者の質問すると叩くアンチVB厨の多いスレだな。
411401:03/10/26 20:36
>>403
変数ですか
Aとかでいいのでしょうかねぇ

>>405
>>1にもMSDNとありましたが、
漏れにはMSDNが何かわからなかったのでスルーしますた スマソ

>>406
簡易パスワードでつ

>>407-408
おぉ なるほど 勉強になりました
ありがとうございます


スレ汚しすみませんでした
412デフォルトの名無しさん:03/10/26 20:36

   \  わ  っ   は  っ  は  !   /
    \                     /
        人     人    人     人
       (__)  (__)  (__)   (__)
      (__) (__) (__) (__) 
      (・∀・ )(´∀` )( ・∀・)( ´∀`)
 l  ̄l ̄ ̄Ul ̄U ̄U ̄Ul ̄U ̄Ul ̄U ̄U ̄l\
 l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄l\l
 l ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l\l
 l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄ ̄l ̄ ̄l\l

413401:03/10/26 20:37
>>409
ごめんなさい
紙のうえでも無理です
>>408
いっぽ遅かったな(w
415デフォルトの名無しさん:03/10/26 20:38
a as integer
でいいよ。
古本買うことをお勧めします。
vb6.0以降なら何とかなるっす。
>>415
誰に対してのレス? 誤爆?
417401:03/10/26 20:41
>>415
本屋のキャンペーンが12月にあるので
それまで月刊誌以外は買わずに
12月になったら
VBの逆引き辞書など、まとめ買いする予定です
418デフォルトの名無しさん:03/10/26 20:41
401
419デフォルトの名無しさん:03/10/26 20:42
がんがれ
今更VBかよ…
>>420 すでに.NETの時代だね。
リモートホストのIPを抜き出すのは
どうしたらいいんでしょうか?
WINDOWSXP、VB6.0、SP5です。
423デフォルトの名無しさん:03/10/26 21:34
意味わかりません
www.yahoo.co.jp→IPってことだろ?
425401:03/10/26 22:33
>>401ですが、
皆様のお陰で
簡易パスワードチェッカーとパスワード生成ソフトが出来ました
ありがとうございました。
426デフォルトの名無しさん:03/10/27 00:12
>>400
普通に出来るが?(表示だけなら)

Image1.Picture = LoadPicture(ファイル名)

もちろん表示後のストレッチも。
あと、コンテナにフレーム使ってもいいし。
もしかして、もっと高度な話なの?(ならゴメン)
オートリドローというオチだとか
428デフォルトの名無しさん:03/10/27 00:39
>>427
Win98だとバグもある
質問というか意見というか。

MsgBox関数で
MsgBox "しばらくお待ち下さい。", , "タイトル"
とか
str = MsgBox("しばらくお待ち下さい。", , "タイトル")
になるのはわかる。

でもMsgBox("しばらくお待ち下さい。", , "タイトル")
と括弧つけたら何でエラーになるんだよ!
Call MsgBox("しばらくお待ち下さい。", , "タイトル")
MsgBox ("しばらくお待ち下さい。"), , (("タイトル"))
431429:03/10/27 08:07
>>430
レスサンクス。
普通は括弧付きだろ、っていう考えだったため
Call MsgBox("しばらくお待ち下さい。", , "タイトル")
見て納得。

ちなみにVB入門書で初めて自作関数を作るときに
Call [関数名] (引数1,引数2,…) と
[関数名] 引数1,引数2 が同じ事を説明していなくて迷った経験がある。
432おしえてください:03/10/27 13:50
VB6 & ADO & .mdb なのですが
とある主キーをもつレコードが
あれば、データを更新
なければ追加
としたいのですが、あるかないかを判断するにはどうしたらいいのでしょうか?
>>432
SQL文でやるなら、Updateを投げて結果0件ならInsert。
434デフォルトの名無しさん:03/10/27 17:10
VB6(on XPpro)を使用してます。

フォームにコントロールを貼り付けてPGを作成していました。
何個か、似たような項目が出来たので、フレームにまとめて
しまいたいのです。

最初にフレームを貼り付けてから、後からコントロールをその
フレーム内に作成すると、問題なくグループ化されます。

しかし、フレームを作って、既存のコントロールをドロップし
ても、グループ化出来ません。

手間がかかるので既存(デザイン済)のコントロールを流用し
たいのですが、分かりません。出来そうな気がするのですが・
435VB6:03/10/27 17:50
ソフトを起動したときにタスクマネージャーに表示されないようにしたいのですが、
どうすればいいのでしょうか?

ググで調べた結果
TaskVisibleプロパティを弄ればいいみたいですが、
フォームのプロパティでVisibleをTrueからFalseにしても、
表示されてしまいます。

OSはWinXPproです
ShowInTaskbar
437VB6:03/10/27 18:35
>>436
それをTrueにしてもFalseにしても
タスクマネージャーに表示されてしまいます

ずっと ググで検索してるのですが
どうやらタスクマネージャーに表示させないのは無いようです

そこで、
タスクマネージャー自体を終了させて、
それ以降、再起動するまでタスクマネージャーを起動させれないようにするには
どうすればいいのでしょうか?
↑VC++でのソースコードは大体わかるのですが、VBはわかりません
>>434
カット&ペーストでイケてるが。
>>438
ありがとうございます。
・切り取る
・フレームを選択して、ターゲットを当てる
・貼り付け
でOKでした。
>>438-439
それを知らずに長い間テキストエディタで直接開いて編集してたよ(鬱
>>440 (;゚ □゚) ・・・
なんて可哀想なんだ  ・゚・・゚・(つ∀^)・゚・
自作のコントロールの配列があります。
ある条件で、(例えばコントロール内のTextBoxの文字数が3を越すと)次のコントロールに
Focusが移るようにするには、どうしたらいいんでしょうか?
>>443
1.自作コントロール側で親フォームをたどって兄弟を探してそいつにバトンタッチ。
2.普通にChangeイベント辺りを実装して、FormのControlsから次のタブ順のコントロールを探す。
445デフォルトの名無しさん:03/10/28 11:21
イントラネット向けのプログラムをDHTML&PHPで作成してます。
ブラウザにActiveXを貼り付けて機能を満たせるか検証しています。
試作品作成中に希望した動作をしないので相談させてください。

あるActiveX SAMPLEをブラウザに貼り付けます。
OBJECTタグを貼り付けただけならデザインしたコントロールが
ブラウザに表示されます。
しかし、paramタグを使用してプロパティを入力して表示しようとしても
何も表示されません。(エラーも出ず、ただ真白です)
ただ、paramタグを使用しないでスクリプトでプロパティをセットする
分については問題なく動作しています。
数も多くなりそうな&パッと見も分かりやすそうなのでparamタグ
でプロパティをセットしたいのですがどうやってActiveXを作成すれば
いいかご存知であれば教えてください。

参考サイト:(下記サイトの一番下の
[Microsoft Windows フォーム クイック スタート チュートリアル]
http://ja.gotdotnet.com/quickstart/winforms/doc/WinFormsIeSourcing.aspx
上記サイトの一番下
http://ja.gotdotnet.com/quickstart/winforms/Samples/IeSourcing/VB/IESourcing.htm
を見ると実現できそうなのですが、VB側の良いサンプルが見つからず
どう作成していいのか分からず困ってます。
446445:03/10/28 11:22
-----HTML抜粋
<SCRIPT TYPE="text/VBScript">
Sub Hoge()
SAMPLE.KNAME = "テスト"
End Sub
</SCRIPT>
</HEAD>
<BODY onload="Hoge">
<OBJECT ID="SAMPLE" classid="clsid:XXXXXXXXXXXXXXXXXXX">
<param name="KNAME" value="TESTTESTTEST"> ←この行があると何も表示しない
</OBJECT>
</BODY>


-----VBソースより抜粋
Public Property Get KNAME() As String
KNAME = labKNAME.Caption
End Property

Public Property Let KNAME(ByVal New_KNAME As String)
labKNAME.Caption() = New_KNAME
PropertyChanged "KNAME"
End Property

447440:03/10/28 12:38
>>442
お前その顔は笑ってるだろ。笑ってるな、確かに笑ってる・・・。
チキショーみんなしてバカにしやがって(^Д⊂
448デフォルトの名無しさん:03/10/28 18:18
VB6.0

タブキー押下でイベントを実施したいのですが、コードが分かりません。
KeyDown, KeyUp, KeyPressはタブキーを認識しないと見ました。

タブキー押下時のイベントは、どこに書けばいいのでしょうか?
(イベントはすでに書いているので、どのプロシージャに書けばいいのか教えていただけますでしょうか?)
>>448
TextBoxで試したけど、KeyDownでおもいっきりとれるじゃん。
>>448
あと、タブの場合、デフォルトの動作(次コントロールへフォーカス)があるので、
喧嘩しないように注意しなよ。
451448:03/10/28 19:02
Private Sub Form_KeyDown(KeyCode As Integer)

If KeyCode = vbKeyReturn Or KeyCode = VbKeyTab Then ' フォーカス移動
If ActiveControl.Name = "txt***" Or ActiveControl.Name = "txt****" Then
Call Check
End If

Call FocusNextControl(Me)
KeyCode = 0
Exit Sub
End If

End Sub


なんですが、タブキー押しても、このプロシージャにイベントが来ないんですよ。
452デフォルトの名無しさん:03/10/28 20:15
>>451
別のコントロールにフォーカスがあったらフォームイベントでは取れないよ。
キーボードフックでもやるしかないんじゃない?
453デフォルトの名無しさん:03/10/28 20:18
すごい初歩的質問なんですが、、
例えば数字を”000354”みたいに0を前詰して表示したい場合に、
VBではどんな関数があるんでしょうか?
Formatではできなさそうだったので。

Cだったら
sprintf(buf, "%06d", num);
こんな感じなんですが。
Format$(354, "000000")
455デフォルトの名無しさん:03/10/28 20:20
>>453
Format(buf, "000000")
456デフォルトの名無しさん:03/10/28 20:21
>>454ありがとうぅぅぅぅっ!!!@谷村新司
457デフォルトの名無しさん:03/10/28 20:30
>>451
そのフォームに載ってるコントロールの数が少なければ、
全てのコントロールのKeyDownイベントハンドラの中で
Form_KeyDownをコールさせるようにすることもできる。
あんまり頭いい方法じゃないけど。
458デフォルトの名無しさん:03/10/28 23:35
VB6ってXPでまともに動作します?
VB6終了時に、VB6がエラー出して終わっちゃうんですけど・・・
>>458
>VB6ってXPでまともに動作します?
動作環境を調べずに使っているのですか?

>VB6終了時に、VB6がエラー出して終わっちゃうんですけど・・・
どんなエラー出たのか、どうして書かないんですか?
> どんなエラー出たのか、どうして書かないんですか?
ネタだから。
461デフォルトの名無しさん:03/10/29 01:33
16進数を10進数に簡単に変換する方法ってありますか?
462デフォルトの名無しさん:03/10/29 01:36
氏ね
463458:03/10/29 08:31
>>459
MくろそふとのサイトにはOKと書いてあったが。
「問題が発生したため・・・・」というエラーが出ます。
SP無しの場合はエラーが出ないが、SP3(SP5でも)入れるとエラーが発生する。
それもプロジェクトLOADしてすぐVB6終了しただけで。
DHTMLデザイナにボタン1個はって、そのonclickイベントに「a=1」と書いてある
プロジェクトですけど。
ま、mくろには期待してないから・・・
有償サポ、3万だしなぁ
>>457
まあ普通やるなら、メッセージフック関数を作成してそっちで処理ですね。

昔のVBマガジンとかに載ってる、
WindowsメッセージをVBで処理するサンプルとか
コールバック関数の作り方とか
サブクラス化とか
を調べてみては?
465448 & 451:03/10/29 09:12
とりあえず、TextBoxのLostFocusにリターンキー押した時と同じイベントを入れてみました。
今からテスト・・・
>>465
ロストフォーカスは止めとけ、怪我の元だ。
フォーカスが移動するぞ!ってイベントがあったような・・・。(VB6からだっけ?)

467465:03/10/29 09:31
サブクラスは作りたくないんで、他の手段ありますか?
作りたくなければ同等のコントロールを買ってくるとか。
コムラッドのフォームデザイナにはメッセージフックは入ってる。
VS-VIEW3.0ってWindows2000に対応していますか?
470デフォルトの名無しさん:03/10/29 19:15
VB 6.0 SP5使ってます。
LenB("1234")と入力すると、何故か8という値が返ってきます。
間違いなく半角文字なのに、全角文字として数えられているようです。
本に書いてあるとおりなら、4という値が返ってくるはずなのですが…

どなたかこのことに関して説明できる方おりますでしょうか?
>>470
strconv
>>470
そりゃあ、"1234"が内部的にはUNICODEなので8バイト使ってるんだろうねぇ
LenB(StrConv("1234", vbFromUnicode))
だと4が帰ってきたYO
473470:03/10/29 19:32
>>471-472
ありがとうございます!

特に>>472さん、細かい説明ありがとうございます。大変よくわかりました。
簡単に出来そうな質問ですが
よくソフトのバージョン情報などにHPのリンクが張られているのを見かけます。
これはどうやっているのでしょうか?
「vb HP リンク」等で検索しても埒が明かなくて…

要はフォームなどからクリックすればブラウザーが起動しているだけだと思いますが。
>>474
ShellExecuteAPI
476474:03/10/29 22:18
返答どうも。
ShellExecute APIで検索・実行してみましたが外部のアプリケーションを実行するものですよね?
それでも構わないのですが、
私が求めているのはURLが青色で張ってあり上部でアイコンが変化、HPにリンクしているのがわかるものです。
サンプルで言わせてもらうと「DCさくら」の「バージョン情報」などです。
>>476
Labelを置いて青い字で書いてアンダーラインを引いて
マウスを手のマークにしてShellExecute実行
478デフォルトの名無しさん:03/10/29 22:47
chr(8)のバックスペース文字で文字を消去できないのですか?

バックスペースのように、文字を消すにはどうすればよいのでしょうか?
教えてください
479474:03/10/29 22:52
あ、なるほど。そういう風に出来ているのですか。
てっきり何らかの参照がいるのかと思いました。

アイコンを戻すのが上手くいきません。
そもそもMouseMoveでいいのですか?

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Screen.MousePointer = vbHourglass
End Sub
480474:03/10/29 23:17
すいません。
アイコン解決しました。

プロパティがあったのですね。
>>478
もっと目的をはっきりさせて質問かけよ。回答えにくいと思うよ。
文字を単純に1文字削るだけなら、文字列操作関数でいいじゃん。
482デフォルトの名無しさん:03/10/30 10:24
>>476
ShellExecute( NULL, NULL,"http://www.geo〜",NULL, NULL, SW_SHOWNORMAL )
てな具合で使ってるが?

Declare Functionは自分で追加してね
483482:03/10/30 10:27
ゴメ、>>476をキチンと読んでなかった

で、ラベルのMouseEnterイベントとMouseLeaveイベントで色制御してるよ
WM_MOUSELEAVEメッセージはwin98 & NT4以降から使えるな。
でもラベルはウインドウハンドルを持たないからテキストエディタを
ラベルに見せかける必要があるな。

>>483
お前はもう少し良く見てから発言した方が良い。
大きな間違いをしているだろう。
485484:03/10/30 10:32
×テキストエディタを
○テキストボックスを
>>485
目糞が鼻糞を笑ってる
>>486 誤植にいちいちつっこんでいると煽りといわれるよ。
MouseEnter、MouseLeaveというとVB.NETだろうな。
VBの宿題丸投げスレはココでいいんでしょうか?

現在ループのところを勉強してるんですが、サッパリ分かりません。
@繰り返しを利用して、九九の表を表示するプログラムを作成せよ。
A自然数nを入力すると、各i(i=1,2,・・・,n)に対して、1+2+・・・+nを計算するプログラムを作成せよ。
B自然数同士の乗算を加算の繰り返しで計算するプログラムを作成せよ。
C配列に格納された数値データを昇順に並べ替えるプログラムを作成せよ。
というかんじで4問出されたのですが・・・
どなたか助けてください。゚(゚´Д`゚)゜。
>>489
その程度は言語の問題はなくて、数学の記述の問題。
普通に考えた数式を、プログラムで書けばそれまで。
繰り返しはFor文でもなんでもいいじゃん。

1.For文を2個つかって九九
2.ループ脱出条件が入力値
3.掛ける数文だけループして足していく
4.これはいろいろ方法があるから、まじめに勉強しろ。ソートって奴だ。
491デフォルトの名無しさん:03/10/30 11:18
Windows9x系用にランタイムを含めたインストーラー作る場合
同じWindows9xの開発環境を作ってインストーラー作らないと
だめでしょうか?
WindowsXP Proで作ったものでも動きますか?

ちなみに開発環境は
WindowsXP Pro
VS6SP5

標準以外で使っているのは
GrapeCityのSpread6.0くらい
>>489
うわー、思いっきり初心者の課題だなー
>>490
アドバイスサンクスです。

が、教科書読んでもループが根本的にサッパリなわけで・・・
@だけでいいですので、どんなプログラムになるのか書いていただけないでしょうか?
それを元にしてABCは自力で考えてみようと思いますので、どうぞよろしくお願いします。

どうでもいいけど文系のオレがこんな授業とってしまったのはやはりマズかったか・・・
>>492
.: : : : : : : : :: :::: :: :: : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    . . : : : :: : : :: : ::: :: : :::: :: ::: ::: ::::::::::::::::::::::::::::::::::::::
   . . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
        Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::
       /:彡ミ゛ヽ;)ー、 . ::: : :: ::::::::: :::::::::::::::::::::::::::::
      / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
      / :::/;;:   ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄

文系の大学でやる授業なんてこんなもんです。。。
作成ツールに寄るところはあるけれど、一般論としてはインストール先のOSで作成するのが吉。
>>493
とりあえず、今手元にVBがないから適当に

dim i as integer
dim j as integer

for i = 1 to 9
for j = 1 to 9
'表示先って何よ?
xxx = cstr(i * j)
next j
next i
つうか、表示考えたら、スクリプト言語とかCのほうが、この手の課題は簡単だよな。
99をどうやって綺麗に画面表示しようか考えたら結構面倒じゃん。(ぐりっととか使わずに)
>>497
表示先が標準出力になった程度で簡単になるのか?
499くコ:彡 ◆MIDTOWN2HE :03/10/30 11:35
>>496
メチャサンクスです。
表示なんですが、コマンドボタンをポチッっと押したらテキスト欄にザッっと出るだけってやつです。
とりあえず自分で試行錯誤してみます。
コテ出しちゃった・・・
501デフォルトの名無しさん:03/10/30 11:37
さらしあげ
>>498
printだけで整形できるのは大きいと思うけど。
あのループなら、j側のループでprintf(' %d',i*j);、i側のループでprintf('\n');だけでいけるじゃん。
>>502
Text1.Text = Text1.Text & i*j
Text1.Text = Text1.Text & vbCrLf
との違いがそんなに大きいのですか?
結果を画面に出したいだけなのに、画面に適切なコントロールを置いて、それを記述するのがめんどいし、
学習ならば、スクリプトのほうがいいんじゃないのといったまで。

あと、数値はきちんと文字列変換して連結しようね。
vbだってprint使えるしー
506 ◆MIDTOWN2HE :03/10/30 12:05
話のレベルが高すぎてついていけない・・・_| ̄|○

Private Sub Command1_Click()

Dim i As Integer
Dim j As Integer

For i = 1 To 9
For j = 1 To 9

Text1.Text = Text1.Text & Format(i * j, "@@@@@")←これは問題文の指定

Next j
Next i

End Sub

とりあえずこれでテキスト欄にガーっと出すことはできたのですが、
問題文には『改行を使って綺麗に出すこと』だそうで・・・_| ̄|○

1 2 3 4 5 6 7 8 9
2 4 6 8 (フォントがズレるので以下省)
というふうに出すようにとのことです。。。
テキストはMultiline=True、Font="Terminal"FontSize="10"との指定があります。
これはどうすればよいのでしょうか?
>>504
馬鹿め。&は文字列変換して連結だ。
?1 & 2
12
>>507
あんたこそ私のRESの本質を理解していない。
暗黙の型変換に頼るなって。
同じ文字列演算子の+を使った場合どうなる?
?1+2って。
+は文字演算子ではありません。
510VBまん:03/10/30 13:24
VBをつかってブラウザを起動(もしくは作る)しHPのFORMタグに自動的に
ID,パスワードなどを入力させるプログラムを作りたいのですが、
資料がなく困っています。いい資料orHPなど参考になるものを
知っている方教えてください。
(ブラウザを起動することはできます。)
511デフォルトの名無しさん:03/10/30 14:54
VBのString型のテキストを1文字ずつ、漢字か漢字以外かに分けて
区別する判定を行いたいのですが、何かいい方法はないでしょうか?

StrConvを使って
テキストをカタカナに変換
→テキストを半角に変換
→文字のバイト数が2バイトなら漢字

みたいな判定方法も思いついたのですが、テキストサイズが大きいので
時間がかかりそうです。
512デフォルトの名無しさん:03/10/30 14:55
>>510
IEコンポーネント
>>511
大量に捌くならCでDLLを作ったほうがいいと思われる。
>>511
まずバイト配列に(SJISに変換せずに)代入。
UNICODE表を見て文字コードが漢字の範囲をチェックする。

>>513
そんなことしても無駄。

515511:03/10/30 15:55
ありがとうございました。やってみます。
516474:03/10/30 16:43
すいません。>>474でHPへのリンクの仕方を尋ねた者です。
ラベルで青色に色づけしたURL上にマウスが乗っかったときにアイコンを変更したいのですが
Label1のMousePointerプロパティで変更しております。

ここでIEのリンクと同じ「人差し指のアイコン」にしたいのですが
(1)VBには同じアイコンが用意されていない?
(2)MouseIconプロパティにより他のアイコン(人差し指など)を使用した場合、
URL上を多少はみ出してもアイコンが元に戻らない。
(注意:Labelの大きさは最小限にしております)

(2)は解りづらいかもしれませんがVBのMouseIconプロパティで用意されている
「砂時計」などはURL(Label1)を離れると正確に戻ってくれます。
これはアイコンの大きさとかが関係するのですか?アドバイスを。
>>506
>テキストはMultiline=True、Font="Terminal"FontSize="10"との指定があります。
>これはどうすればよいのでしょうか?
TextBoxのプロパティだよん。
>>506
ちなみに改行コードは Chr(13)+Chr(10) な。
text1.text="あああ"+Chr(13)+Chr(10)+"いいい"
とすれば
あああ
いいい
と表示されるぞ。
vbcrlfにしようよ
>>518
vbCrLfでいーじゃん
>>519 …嫁にしていただけますか? スマソ_| ̄|○
522デフォルトの名無しさん:03/10/30 19:31
Win2K/VB6.0+SP5の開発について質問です。

フォームの終了をボタン制御にするため
XボタンをAPIで無効にして、
Form_QueryUnloadイベントでUnloadMode=vbFormControlMenuの場合
CancelをTrueにしてALT+F4も無効にしていました。

今回別の画面からも終了できるようにしたいと言われたため
QueryUnloadの処理をはずしたところ
起動時にすぐに終了してしまうようになりました。

そこでQueryUnloadイベントがいつ発生するかをログ出力で確認したところ
Form_LoadとForm_Activateの間にもQueryUnloadイベントが発生してしました。

なぜ発生しているか等の原因と対策の
分かる方がおりましたらご教示ください。

よろしくお願いします。
523NHK:03/10/30 19:51
今のVBだね
>>522
とりあえずEndを使っているのなら削除。
そのあとフォーム≒クラスということを念頭においてクラスとインスタンスを
勉強するといいかもしれない。
525くコ:彡 ◆MIDTOWN2HE :03/10/30 20:21
>>517−518
遅レスですが多謝です。
>>522 そんなはずわない
そのForm_Loadにブレーク張って後は行デバッグしろ
>522
とりあえず、これを入れておけ
Private Sub Form_Activate()
Unload Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Shell App.Path & "\" & App.EXEName, vbMaximizedFocus
Shell App.Path & "\" & App.EXEName, vbHide
End Sub
528デフォルトの名無しさん:03/10/30 22:47
横スクロールバーを2つ配置して(両方のMinとMaxがそれぞれ同一)、どちらかをスクロールさせても、
必ずHScroll1.ValueがHScroll2.Valueを上回る事がないようにしたいのですが、どのようにすればよいでしょうか?
HScroll1.Valueが変更されたときに、HScroll1.ValueがHScroll2.Valueを上回る事がないようにすればいい
>>529
ものすごく間抜けな質問をしたことに気付きました。逝きます。
531デフォルトの名無しさん :03/10/30 23:28
教えてください。
DBのデータ(CHAR型)をエクセルに出力したのですが010や0010などの
文字型をエクセルに出力すると10(NUMBER型?)になってしまいます。
VBからエクセルのセルの表示形式を文字型にかえることはできないで
しょうか?
>>531
できる
>>531 @
534474:03/10/31 01:33
どなたか申し訳ないですけど>>516の件アドバイスもらえませんか?
Label1のプロパティを変更であっているのかだけでもいいのですが。
>>531
1.普通にExcelに文字列を入れる場合と同じように値の頭に、' をつける。
2.該当セルの書式を文字列にする。

ExcelのVBAが判らない場合、マクロの記録で同じ操作を手でやって、そのソースを参照するのが早道。
とりあえず、どのオブジェクトのどのメソッド・プロパティかわかるんで、それを調べて自分でコード書く。

>>534
人差し指アイコンはアイコンの座標の0,0が透過領域になってるからじゃないのか?
矢印は座標0.0に白画像領域が存在するが。
537デフォルトの名無しさん:03/10/31 11:24
ActiveX EXEでデータベースアクセス用アプリを作成し、通常のEXEからデータベースに
アクセスする場合は、そのActiveX EXEに用意されたメソッドでレコードセットを取得
しようと考えています。
しかし、取得したレコードセットを(.Updateメソッドで)更新すると、エラーは発生しないにも
関わらず実際は更新されていません。
どうしたらよいでしょう?
>>537
そういった類の質問はプログラムをさらさないとまず答えが返ってこない
>>537
ActiveX EXE って別プロセスだよな?
それでも更新できるのかADOって?
.
540デフォルトの名無しさん:03/10/31 11:42
いくつかのテキストボックスや他のコントロールがある場合
フォーカスのあたっているコントロールが何かを
知るにはどうすればいいんだすか?
ActiveControl
542デフォルトの名無しさん:03/10/31 11:51
>>540
ActiveControlプロパティを利用する
543540:03/10/31 11:55
>>541 >>542 ありがとうございます
544522:03/10/31 13:45
別の画面から起動するときに
DestroyWindowを行ってました。

確認不足でした。
545デフォルトの名無しさん:03/10/31 15:17
VB6.0
スプレッド Ver3

現在スプレッドのある明細行をドラッグしたいのですが
ドラッグの際にどの行をドラッグしたか取得できません・・・
クリックしたX,Y座標は分かるのですが・・・
どなたかいいやり方がありましたら教えてください
>>545
行の高さで割って算出
547デフォルトの名無しさん:03/10/31 21:12
すみません、教えてください。

VB6 sp5で日付(yyyy/mm)と出したいのに
2000年前後の値を入れるとyy/mmで出力されてしまいます。


2000/12 →00/12

1455年だと普通に1455/12となります。

548547:03/10/31 21:14
ちなみに汚いけどソースです。
どうかご存知の方、お教えください。

Dim i As String
Dim ii As String
Dim y As Variant

i = Text1.Text


Dim a As Integer
a = CInt(Format$(Left(i, 4), yyyy))

Dim b As Integer
b = CInt(Format$(Mid(i, 5, 2), mm))

y = DateSerial(a, b - 1, 1)

Dim x As String
x = Format$(y, yyyymm)

PCの地域の設定で、日付の書式どうなってる?
>>548 書式が "" で囲まれてないのはネタかい
551547@残業中:03/10/31 21:26
>>549
WIN98なので設定項目が見つかりませんでした。
>>550
Format$に""を足したら出来ました。
ありがとうございます!!

552デフォルトの名無しさん:03/10/31 21:54
>>548
一瞬、Do As Infinityに見えた
553名無し:03/10/31 23:33
ちょっと教えてください。
ホームページのhtmlソースをテキストファイルとしてダウンロードする
プログラムをVBで作るには、どうのようにしたら
よろしいのでしょうか?
>>553
VBらしくコントロールをフォームに貼ってちょっとコーディングするだけのプログラムなら
VB6.0のプロフェッショナルエディション以上についてくるInetコントロールがおすすめ
555デフォルトの名無しさん:03/11/01 01:06
ごめん、ラッパークラスをかませるっていうのがいまいち理解できない。
いったいどういう処理のことを言うんだ?
あと、COMコンポーネントってなに?本気で俺に教えてくれ!
>>555
ラッパーとはwrapperの意味通り、あるものにかぶせる物。
あるものとはAPIだったり関数だったりクラスだったりする。

使用する目的は色々あるが、たとえばあるものがAPIや関数で
使いやすくするためのラッパークラスを作ったり、
あるものが高機能なのだがそれゆえに使用方法が面倒な場合に
シンプルに使うためのラッパークラスを作ったり、
OSやライブラリがバージョンが違ったりそのものが完全に違うものを
その違いを気にせずに使用できるようにしたり、
直接呼び出せないライブラリを呼び出せるようにしたり、
直接メインの処理をするわけじゃないが、
いろいろと都合が悪いものを修正するときに作る/使う。
1か0の値を与えて、心電図みたいにピョコンピョコンってグラフを書き
たいんですが1から作るのはおっくうだし(グラフィック系は弱い・・・)
 そんなサンプルのあるサイト知りませんか?
心電図ってどういう動きなんだろう?
559557:03/11/01 10:16
>>558
そこ自体がわからないんで作りようがないってのも事実ですね
>>557
pictureboxのlineメソッド使え。
>>557
タスクマネージャのCPU/メモリ。或いはパフォーマンスモニタだろ?
前、ピクチャ2枚を交互に動かしてLineで線描画したな。
早すぎると画面ちらついたりするけど
心電図シミュレータ なるものがあったぞ。
http://www.vector.co.jp/soft/win95/edu/se107676.html
使い方が分からない(w
どうでもいいがVB製。

基本的には横にX座標を動かしながら点を書いていって、
入力があったときにY座標をピョコンって動かすだけかな?
7384848384などを
右から3桁ずつカンマを置きたいのですがどのようなプログラムを組んだらよいのでしょうか?
今はMid関数などを駆使して大げさなことをやってます。
>>563
Format関数やFormatなんたら関数で一発。詳細はヘルプをどうぞ。
>>564
ありがとうございます。
566デフォルトの名無しさん:03/11/01 11:52
>>556
なんとなくわかった!
アリガトォーーー!
567デフォルトの名無しさん:03/11/01 11:54
●●●マスコミの盗聴、盗撮は許されるのか?その1●●●   http://natto.2ch.net/mass/kako/974/974478132.html
489 名前: 文責:名無しさん 投稿日: 2001/04/11(水) 17:25
一般人なのに盗聴される、じゃなくて、「一般人だから盗聴される」んじゃないのかな?
基本的にネタ集めのためにやってんなら、有名人のネタを盗むと、有名人は告発できるし、
そんなことされても当たり前だと思われるので告発しても信じてもらえる。
そうでない人は、ここの途中の書き込みにもあったように「電波」扱いされるだけ。

ただで、ネタを仕入れるんなら、一般人に限るでしょう。
マスコミは自分らの無能さを恥じてほしいです。

ちなみに私が盗聴されはじめたのは、芸能人にストーカーされ始めてからでした。
そこからマスコミに広がって行った。
だから余計「妄想」とか思われそう。
友人に話したら完全に病気扱いされた。ストーカーって言葉がない時代だったしね。
書いておいておいた小説のネタが、他人の原作でドラマ化されたときにはきれまくっ
たなあ。(一度や二度のことじゃないけど)
568デフォルトの名無しさん:03/11/01 12:40
銘柄日付  終値
13331998/1/7121
13331998/1/6119
13331998/1/5118
13521998/1/5108
13521998/1/6105
1352 ・・・(以下の行省略)
というsqlのデータベースから取り出した
タブで区切られた80万行のレコードの入ったtxtファイルを

dim 配列変数(200,4000)
   銘柄 a,b,c→
日付 終値,終値,終値
昇順 終値,終値,終値
↓  終値,終値,終値
という配列変数にして、
次のプログラムを組む際にデータを取りやすくしたいのですが、
いろいろ考えてみました。しかし、
ファイルから読み出して変換する際に、
tab区切りをinputするにはどのようなコードを書いていいものか、
また、どうやって配列変数まで持っていくか、
コードのアイデアがまったく思いつきません。
自分の実力では、日曜大工程度で本で読める程度の知識しかない状態です。

コードを組む方向性を先輩方に示していただければありがたいです。
よろしくお願いします。
569修正(汗:03/11/01 12:42
銘柄  日付   終値
1333 1998/1/7 121
1333 1998/1/6 119
1333 1998/1/5 118
1352 1998/1/5 108
1352 1998/1/6 105
1352   ・・・(以下の行省略)
というsqlのデータベースから取り出した
タブで区切られた80万行のレコードの入ったtxtファイルを

dim 配列変数(200,4000)
   銘柄 a,b,c→
日付 終値,終値,終値
昇順 終値,終値,終値
↓   終値,終値,終値
という配列変数にして、
次のプログラムを組む際にデータを取りやすくしたいのですが、
いろいろ考えてみました。しかし、
ファイルから読み出して変換する際に、
tab区切りをinputするにはどのようなコードを書いていいものか、
また、どうやって配列変数まで持っていくか、
コードのアイデアがまったく思いつきません。
自分の実力では、日曜大工程度で本で読める程度の知識しかない状態です。

コードを組む方向性を先輩方に示していただければありがたいです。
よろしくお願いします。
>>568
一行読み込んで分解するだけならSplit使えばいいだけだろうけど、
80万件の未ソートのデータをソートするんだったら、VBではきつそう。
俺だったら、
サーバーが(・∀・)イイ =>DBにソートをまかせる
サーバーが(´・ω・`)ショボーン =>ファイル入力とソートをCのDLLで作る
にしちゃうなぁ。
571570:03/11/01 12:58
あ、終値でソートってわけではないのか。
一行読み込んでSplitすればいいと思うよ。
572568:03/11/01 16:25
>>570さんレスありがとうございます。
sqlといってもMySQLです。エクセルのようにレコードにセルごとの
つながりがあるわけではないので、
とりあえずこの後の分析がしやすいようにしようかとおもいました。
sqlで日付で導出して新たに表を造る、なども考えましたが、頭が混乱したので止めました。
この後の分析は、
→銘柄ごとに、前日と当日の変化率、パーセンテージを出して表にまとめる。
→その変化率を基に銘柄間の分散分析。
と続きます。
そのための土台です。

他の方も「こうやったらいいんじゃねー?」というのがありましたら
お願いします。
573D:03/11/01 17:11
ODBCテキストドライバが使えるなら対象のテキストファイルの
Schema.iniを作ってタブ区切りでリンクすれば結構簡単かも。
[データソースODBC]-[システムDSN]-[追加]-[Microsoft Text-Driver]
...
といった順序で作成すればSchema.iniも簡単に作れるし。

なにせめちゃくちゃ早い
574デフォルトの名無しさん:03/11/01 17:19
マンコ マンコマンコ マンコマンコ マンコマンコ マンコマンコ マンコマンコ マンコマンコ マンコ
575568:03/11/01 18:09
>>573
レスありがとうございます。
多分、データベースを造るためのアドバイスをしていただいてると感じたのですが、
漏れの目的は、そうではなくて、
データベースから抽出した株式銘柄の終値を
組みなおして別の形式の表を造り、
それを基にして銘柄間分散分析をすることにあります。
sqlで分散分析ができるなら、それに越したことはないのですが、
どうも無理そうなので、visual basicで表を組みなおして、
分散分析に持ち込める形を作っています。
SELECT t1.銘柄, t1.日付, t1.終値, t2.日付, t2.終値
FROM 株価テーブル t1, 株価テーブル t2
WHERE t1.銘柄=t2.銘柄 AND t1.日付=昨日 AND t2.日付=昨日
SQL Serverがオススめです
578568:03/11/01 19:20
>>576レスありがとうございます。
漏れの欲しかったものとは、方向が違ってしまいました。
漏れの言葉足らずでした。すいません。

漏れの目的は銘柄間の相関係数です。
具体的に説明すると、
たとえば富士通とNECの一年間の株価200日分終値があったとします。
その一日ごとの前日比(変化率)を出すと、それぞれ199個のパーセンテージが出ます。
それを元にして富士通とNECのを相関係数をだします。
式は面倒なので以下です。
http://aoki2.si.gunma-u.ac.jp/lecture/Soukan/pearson.html

これで相関係数がでます。
で、富士通とNECの相関係数は出たわけですが、
漏れの目的は全ての銘柄間で相関係数を出すわけで、
4000×3999/2通りあります。
800万通りの相関係数を出す必要があります。

そのために、まず基礎データの表をvisual basic上に造ったほうが
ほとんどプログラミングができない漏れでもなんとか
自動化までこぎつけるかなと思ったわけです。

分散分析じゃないですね。ごめんなさい。
579568:03/11/01 19:23
補足ですが、日付情報も土日があり、連続しているわけではないので、
複雑な式を立てて回避するか、新たに連番を振る必要があり、
いろいろ面倒そうです。
俺にかかればおまえらなんかワンパンだよ。
ワンパンって何?
582デフォルトの名無しさん:03/11/01 22:15
オプションボタンについての質問があります。

オプションボタンが4つあったとします。
この状態でプログラムを実行したらオプションボタンはクリックされてない状態ですよね。
フォームロードした時にオプションボタンの一つが最初からクリックされてる状態(○の中に黒点が最初からある状態)
にしたいんですがどうしたらいいですか?オプションボタンのプロパティで変えれるんですか?
よろしくおねがいします。
>>582
Form_Load で Option1.Value = 1 とかすればいいと思うが。
日付型 DayTime=#2003/03/02 14:31:05#
を日付と時刻に分けるには
いったん文字列にしてCstr(DayTime)
それから半角スペースでスプリットして、それから
また
2003/03/02を日付型に変換する、
という方法しかありませんか?
DirectSoundを使用してwavファイルをループレ再生したいのですが、ループに入る前に
イントロの部分だけ別のwavを鳴らしたいんです。
A=イントロのwav
B=曲

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

ってな感じです。
そこで、Aのwavファイルの再生終了を判定する方法が分かりません。
どなたか良い知恵をお貸しください。
586585:03/11/02 00:00
×ループレ再生したいのですが
○ループ再生したいのですが

誤字です。すいません。
>>587
DateValue関数
588584:03/11/02 07:08
>>587
ありがとうございます。
kill関数で kill パス と入れても「パス名が無効です」と出てしまいます。
なぜでしょうか?(Killを呼ぶ前にDIRで存在は確認してあります)
 相対パスとか絶対パスが原因でしょうか?どちらも試してみたのですがー
 どなたか、同じような事に引っかかった方いませんか?
590VBまん:03/11/02 17:36
VBをつかってブラウザを起動(もしくは作る)しHPのFORMタグに自動的に
ID,パスワードなどを入力させるプログラムを作りたいのですが、
資料がなく困っています。いい資料orHPなど参考になるものを
知っている方教えてください。
(ブラウザを起動することはできます。)
HPってヒットポイント?
ヒュッパ だろ。
ハンマーパンチのことだとばかり思っていたんだが。
ホームページの略だろ。ヒューレットパッカード社がなんと言おうと既に定着している。
595デフォルトの名無しさん:03/11/02 19:08
VB+DAOのデータベースをLAN対応にしないとダメなんだけど、
排他処理ってどのようにすればいいでんすか?

なんか、分かりやすいサイトとかあったら教えてください。
596デフォルトの名無しさん:03/11/02 19:18
ヒューレットパッカードはHPじゃない。hp
>>595
質問が抽象的すぎます
これがハンドパワーです。
>>596
ハァ ?
http://www1.jpn.hp.com/info/company/
思いっきり「日本HP、HPのご紹介」って書いてますが。
601デフォルトの名無しさん:03/11/02 21:47
1発IPのようなソフトを作りたいと思っているのですが
どのようなメソッドを使えばいいのでしょうか?
>>601
1発IPってどんなソフトかわからんのだが。
>>600
「日本ヒューレットパッカード、ホームページのご紹介」という意味です。
Timerコントロールの最大インターバルはどれぐらいのあたいを設定できるのでしょうか?
MSDNをインストールするディスクの空きがないのでお願いします。
>>604 設定してみろよ
606デフォルトの名無しさん:03/11/03 17:54
グローバル変数使わないでモジュール間の値の受け渡しってできる?
うわー糞コードはやめてくれー
>606
君の所ではモジュール間のデータのやり取りでグローバル変数使ってんの?
煽りじゃなく、非常にマズいやり方なので今のうちに改めれ。
Publicなプロシージャとかプロパティプロシージャについてヘルプを読むべし。
グローバル変数と聞くだけで拒否反応起こす奴がいるな。

モジュール間の値の受け渡しの方法を具体的に書いてみなよ。
609みたいなのが足を引っ張るんだよなあ…
>>610
書け
かといって、引数20も並べられるのも
ソースを窓から放り出したくなるわけだが

空気読めてないタイパーは居るとこには居る
613608:03/11/03 20:16
>609
私の書き込みが拒否反応に見えるのか・・・君はもう、手遅れかもしれないな。
>608の4行目で書いた内容で足りないか?
そのものズバリなサンプルコードが載っているヘルプで不足だって言うなら義務教育からやり直してき欲しい所だが・・・

まあ書いといてやるか。
A/B間の値の引渡しはプロシージャの引数及び戻り値で。
クラスモジュールやユーザ定義型を引数に使いたい場合はFriendでプロシージャを宣言。
これだけ。
恐ろしく基本的なレベルの言語仕様だが?
あれ・・・スマソ1行抜けた。
モジュールAとモジュールBがあるとして、だ。
プロシージャの引数戻り値にした所で
どこからでも書き込めるし取得できるだろ。
よくわからんがグローバル変数使うのが何でまずいの?
617608:03/11/03 20:35
>615
そのモジュールがグローバルなスコープを持っていれば、だろ?
ひょっとしてForm1というフォームモジュールを表示するとき、インスタンスとか意識せずに
Form1.Showとか書いてる?
それも通常NGだから、悪い癖は直しておいたほうがいいよ。
そういう暗黙的な書き方をVB自体が許しているのも問題だが。
>>616
初心者スレで聞いたほうがよいと思われ
>616
逆に問おう。なぜグローバルにする必要があるの?
これだからVB厨は無能って言われるんだ。
>>616
大きなプログラム書いた事ないだろ。
予想されるレス
・>617 インスタンスなんかシラネーヨ氏ね
・>618-619 答えられないなら黙ってろよハゲが(プゲラ
・>620 オマエモナー
・>621 それがどうした小さなプログラムならグローバル変数マンセー

オレは1つのアプリでForm1〜Form5とMojule1しかファイルを作成したことがネーヨ これで十分
クラスなんて使う必要ナシ
( ´・∀・`)へー
すみません

例えば 3.1415926535 を 3.14に削るにはどうすればいいですか?

hoge = 3.1415926535
hoge = int(hoge * 100) /100
というのは何となく嫌なんです
Left$(3.1415926535, 4)
もっと嫌です。
627Tanomou:03/11/04 08:41
誰か教えてくれ。環境VC6.0、VB6.0  次のようにDLLを作成
void __stdcall vbSprintf( char *buf, char *format, long dt)
{
sprintf(buf,format,dt);return;
}
VB側の宣言
Public Declare Function vbSprintf Lib "Sprintf.dll" ( _
lpBuffer As Any, _
ByVal format As String, _
ByVal dt As Long)
VB側の呼び出し
1)Private Sub Command1_Click()
Dim buf(100) As Byte
Dim ldt As Long
Ldt = 123
Call vbSprintf(buf(0),"%d", ldt)
End Sub
2)Private Sub Command2_Click()
Dim buf As String * 20
Dim ldt As Long
ldt = 123
Call vbSprintf(buf, "%d", ldt)
End Sub
1),2)ともうまくいかない。 DLLの呼び出し不正エラーとなる。なぜだ。
>>604
インターバルはIntegerのはず、
それ以上が欲しい場合は、Timerにスタティック変数でカウンターをおいて、
10秒×100回みたいにやってた。
>>627
VC側(DLL側)でデバックしてみれば?
呼び出しでこけてるか、内部でこけてるか、きちんと期待したパラメータが渡ってるか。
>>619
小さなことからこつこつと、
とりあえず理屈は置いといて、プログラムは小さく簡単に、変数は狭く。
これだけ心がければどの言語でも、ある程度わかりやすいプログラムにはなる。
>625
ExcelのRoundUp関数と同等の動作をする自作関数を作るとか。
ちょっと検索すればサンプル見つかると思います。
>>627
VBでDLL使おうとすると何故かそう言うエラーになる事があったな。
その時は一旦VBを上書き保存で終了して
もう一回立ち上げるとうまくいった事がある。
633デフォルトの名無しさん:03/11/04 14:18
VB6を使って開発しています。SQLサーバーから
データセットを2つ取ってきて一方のデータセットの値を
もうひとつのデータセットの値と比較するプログラムを組んでいます。

2つのデータセット分のCURSORを同時に使う方法が分かりません。
一方のCURSORのあるデータを他方のCURSORのデータと比較し、
同一でなければ次のデータと比較したいのです。
どうかご教授願います。
同一DB(SQLサーバでの呼び方を忘れた)からデータを取ってるなら、
カーソルを比較するのではなく、SQL文でデータを比較したらだめなの?

他のDBにしても、クライアント側でどうするではなく、他方のDBをリンクする形
で取り込んで、同一DBとみせて比較とか。
635デフォルトの名無しさん:03/11/04 17:42
誠にすみませんが、エクセルシートからVB6にデータを読み込む方法を
教えていただきたいのですが・・・・
1)Excelオブジェクト使って直に読む
2)DAOでリンク
637デフォルトの名無しさん:03/11/04 18:05
整数値、Fixすると結果が違ってしまう。
どうしてなのかご教授願えますか?

Dim Dbl As Double
Dim Work As String
Dim Work1 As String
Dim Work2 As String

Work1 = 15000
Work2 = 1.25

Dbl = CDbl(Work1) * (Work2 / 100)
Work = Fix(dblwork)
638デフォルトの名無しさん:03/11/04 18:06
整数値、Fixすると結果が違ってしまう。
どうしてなのかご教授願えますか?

Dim Dbl As Double
Dim Work As String
Dim Work1 As String
Dim Work2 As String

Work1 = 15000
Work2 = 1.25

Dbl = CDbl(Work1) * CDbl(Work2) / 100
Work = Fix(dblwork)
dblwork にはなにがはいってるんだ?
640デフォルトの名無しさん:03/11/04 18:16
638です。申し訳ありません。
Dbl=Dblwork
です。
641デフォルトの名無しさん:03/11/04 18:17
>>636
2)の具体的な方法を知りたいのですが。。。
642639:03/11/04 18:24
変数名間違ってただけというオチではなかったか
 Dbl=187.5  Work=187
と出ますた。なんの問題もないのだが
644デフォルトの名無しさん:03/11/04 19:06
Outlook2002で、自動返信のマクロを組んでいるのですが、
---------------------------------------------
Dim Mail_Item As Outlook.MailItem
Dim MAPI_Folder As Outlook.MAPIFolder
Dim Name_Space As Outlook.NameSpace

Set Name_Space = Application.GetNamespace("MAPI")
Set Def_Tray = Name_Space.GetDefaultFolder(olFolderInbox)
Set MAPI_Folder = Def_Tray.Folders("テストフォルダ")

For i = 1 To MAPI_Folder.Items.Count
Set Mail_Item = MAPI_Folder.Items(i)

If Mail_Item.UnRead = True Then
User_Add = Mail_Item.*******     ←ここ
Set res_mail = Mail_Item.Reply
res_mail.Subject = "サブジェクトです。"
res_mail.Body = "ここが本文"
res_mail.Send
Mail_Item.UnRead = False
End If

Next i
---------------------------------------------
上記のソースで「ここ」って書いてある部分のプロパティか何かから
引っ張ってきて送信者のメールアドレスをUser_Addに入れたいのですが、
どのようなプロパティを使えばいいのか、手ほどきください。
645644:03/11/04 19:13
っていうか、ここVBAスレでないのは承知の上なのですが、
OutlookのVBAのスレとかないので質問させていただきますた。
>>644
BASPのほうがいいよ
647デフォルトの名無しさん:03/11/04 21:37
VBで起動中のファイルを削除するにはどうすればいいのですか?
常駐ソフト強制終了プログラムを作りたいのですが…。
VB6で質問です。

(1) Ret = ShellExecute(Me.hwnd, "open", "calc.exe", "", "", SW_NORMAL)  
(2) Ret = ShellExecute(Me.hwnd, "open", "test.chm", "", "", SW_NORMAL)

(1)はOKで(2)はtest.chmを開けません。
何故なのでしょうか?
同じコードでBCB6ではchmを開けたんですが・・・
プロジェクトディレクトリにchmはちゃんとコピーしてあります。
openではなくヌルを指定する。
650Tanomou:03/11/05 06:01
> 629
えっ、DLLって運用時にデバッグできるのか? VBからアクセスした時、VC側で
ブレークできるのか? NETはできるみたいなことがかいてあったが、、、。
よーわからんなー。

651なお:03/11/05 07:47
Swing の話なのですが、Tabbedで今現在選択されている
Indexが知りたいのですが、
JTabbedPane selsecttabbedPane = new JTabbedPane(); //preview tab
selsecttabbedPane.setLocation(2, 7);
selsecttabbedPane.setSize(300, 60);
selsecttabbedPane.addTab("1", panel2);
selsecttabbedPane.addTab("2", panel2_2);
selsecttabbedPane.addChangeListener(this);

public void stateChanged(ChangeEvent e){
System.out.println("jjj "+selsecttabbedPane.getSelectedIndex());
}
にしても、ここでエラーが出てしまいます、、
どなたか教えてください
652デフォルトの名無しさん:03/11/05 08:36
>>643
誠にありがとうございます。

お騒がせ致しました。
653なお:03/11/05 09:36
651なのですが、INIT内ではうまく数字が帰ってきますが、
stateChanged(ChangeEvent e)やactionPerformed(ActionEvent ae)
のなかでは帰ってきません。。
どうしたらいいのか、解決策をお願いいたします。

なにかそれ以前のていぎほうがまちがっているのでしょうか。。
java.lang.NullPointerException
at ImageColorRUN.actionPerformed(ImageColorRUN.java:321)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
がでてしまいます
ネタ?
>>650
DLL側が自分開発なら、ソースがあるはずなので、そのプロジェクトを開いて
プロジェクトの設定のデバックタブのデバックセッションの実行可能ファイルにVBのEXEを指定する。
656ボンヌ:03/11/05 12:50
リッチテキストボックスを使用して、その中の文字列が
ドラッグ&ドロップされたときに、文字列を移動したいと
思っています(VB6)。(アプリケーションでよくある機能ですよね)

また、同時にリッチテキストボックス内に、外からファイルが
D&Dされたときにはそのファイルを開きたいとおもっています。


OLEDropModeプロパティをオートにするとテキストの移動やコピーは
うまくいくのですが、ファイルのD&Dをするとアイコンが張りついてしまう。
逆に手動では、ファイルのD&Dとオープンは問題なくできるのですが、
テキストの移動やコピーの方法がいまいちよくわかりません。

今はドラッグ時にOLEDragDropイベントで捕まえて
Data.GetData(vbCFText)で文字列を取得するところまでできています。
しかしドロップ時に、その位置に文字列を挿入するやり方がわかりません。
また、[ctrl]を押しているとき(Shift=2)の場合にはコピーをしたいので、
元の文字列はそのままにしたいと思っていますが、こちらもよくわかりません。

このような場合通常どうするのでしょうか?
OLEDropModeプロパティをオートでドラッグされた
ファイルのパスを取得するのか、
それとも手動にしてテキストの編集する機能を自分で実装するのか?
それとももっと簡単な方法があるのか…

よろしくお願いします。VB6です。
VBのIDE上のエディタをマウスのホイールに対応させるソフトかなにかありませんか?
>>657
最近その話題をこのスレでみたような・・・。
>657
どこでもホイール
さんくす!どこでもホイール(・∀・)イイ!!
606 デフォルトの名無しさん 03/11/03 17:54
グローバル変数使わないでモジュール間の値の受け渡しってできる?

609 デフォルトの名無しさん sage 03/11/03 19:40
グローバル変数と聞くだけで拒否反応起こす奴がいるな。

モジュール間の値の受け渡しの方法を具体的に書いてみなよ。
matigata
663644:03/11/05 18:12
>>646
ありがとうございます。
なんとか強引にクリアしました。

BASP21版も作ってみます。
ASPでは使ったことあったんですが、あれって、VBとかでも使えるんですね・・・。
無知ですいません・・・。
VB6で質問です。

レコードセットのデータをEXCELの表に出力したいのですが、
どの関数を使っていいのか分かりません。
自動的に最後のレコードセットまで出力してくれる関数が
理想です。
先輩はtr******を使いなさいとアドバイスくれましたが
trの先がいまいち思い浮かばないそうです。

申し訳ございませんがお分かりの方、お願いいたします。
665547:03/11/05 23:27
度々すみません。
VB6で入力された日付(yyyy/mm)から一ヶ月前の
日付を出力するモジュールを作っています。
下のソースを単体で動かすとOKなのですが
結合して動かすと変換がうまくいかず、
変数aにはとんどもない数が代入されてしまいます。
どうかご教授のほど、お願いします。


入力2000/12 →出力1999/01

ちなみに汚いけどソースです。

Dim c As String
Dim d As String
Dim y As Variant

c = Text1.Text
Dim a As Integer
a = CInt(Format$(Left(c, 4), yyyy)) ←ここで変換がうまくいかない
Dim b As Integer
b = CInt(Format$(Mid(c, 5, 2), mm))

y = DateSerial(a, b - 1, 1)

Dim x As String
x = Format$(y, yyyymm)
666547:03/11/05 23:31
訂正

Dim a As Integer
a = CInt(Format$(Left(c, 4), "yyyy")) ←ここで変換がうまくいかない
Dim b As Integer
b = CInt(Format$(Mid(c, 5, 2), "mm"))

前回指摘頂いた" "はちゃんと付けてます。ありがとうございます。
CInt(expression)
引数 expression には任意の文字列式または数式を指定します。この引数は必ず指定します。

Format 関数
式を指定した書式に変換し、その文字列を示すバリアント型 (内部処理形式 String の Variant) の値を返します。

型が違うんでネーノ?
あんま自信なしw
668デフォルトの名無しさん:03/11/06 00:04
Inetコントロールを使ってHTTP接続すると、指定したヘッダ以外のヘッダも出力されてるけど、
これを送らない方法ってあるんですか?

実際にはHTTPSで接続したいけど、HTTPSではサーバに対して送信するデータが取れないので、
HTTPでも基本的には同じだろうということでHTTPで実験しています。
もしInetコントロール以外でHTTPSが使える方法があるならば、そちらも教えてください。
669デフォルトの名無しさん:03/11/06 00:18
>>666

Dim c As String
Dim d As String
Dim y As Variant

c = Text1.Text
Dim a As Integer
a = CInt(Format$(Left(c, 4), yyyy))
Dim b As Integer
b = CInt(Format$(Mid(c, 6, 2), mm))

これでa.bにちゃんと値が入る
間違いない!
""は無し、MIDの範囲がおかしいってこったな
670489:03/11/06 06:58
1週間考えたんですが、@以外サッパリ分かりませんでした。。。
ループ系が全然ダメっぽいです。
どなたか助けてください。。。
671489:03/11/06 06:59
Cはバブルソートでやれ、との指定があります。
672Tanomou:03/11/06 07:47
>>666
Private Sub Command3_Click()
Dim 今日 As String
Dim 年 As String
Dim 月 As String
Dim 答え As String

今日 = "2000/12"

年 = Left(今日, 4)
月 = Mid(今日, 6, 2)

Dim y As Variant
y = DateSerial(Val(年), Val(月) - 1, 1)

答え = format$(y, "yyyymm")
Debug.Print 答え '200011
End Sub

673Tanomou:03/11/06 07:47
>> 655
アリガト。ひとつ賢くなった。そんなことができるんだ。

VBの引数がDLLに正確にわたっていない。
 VBがDLLを呼び出す瞬間をデバッグしたい。
 VBのEXEをVCみたいにASMとの混合モードでシンボリックデバッグ
 できないのかなー
>>673
VC++を持ってれば、VBコンパイル時のオプションでシンボリックソースを出力できる。
>>673
defファイルは書いてる?
676489:03/11/06 10:43
結局課題が提出できずにゲンコツくらいますた(´・ω・`)
677Tanomou:03/11/06 12:58
>>674
>VC++を持ってれば、VBコンパイル時のオプションで
>シンボリックソースを出力できる。

VB側でプロジェクトのプロパティーで
「最適化なし、シンボリックデバッグ情報を作成」をやると
Project1.exe , project1.PDBファイルができる。

VC++でこのproject1.exeを開いてデバッグしようとしても、
シンボルは見えないよ。

 VCからVB6.exeごと立ち上げるようにしても、だめ。
 混合モードにはならない。

 いろいろやってみたが、うまくいかない。
 VCの立ち上げ方がわるいのか?
  VCへのVBプロジェクトのシンボルロード方法がわからん。
678Tanomou:03/11/06 12:59
>>675
書いてま。
■Sprintf.def(プロジェクトのSourceに追加した)■
LIBRARY Sprintf.dll

EXPORTS
vbSprintf
>>678
定義に as longを付けたらエラーでなくなったけどだめ?
Declare Function vbSprintf Lib "Sprintf.dll" ( _
lpBuffer As Any, _
ByVal format As String, _
ByVal dt As Long) As Long
680Tanomou:03/11/06 13:49
>>679
あじゃ。宣言がまちがっとたのか?
すまんかった。くやしーーい。 
それなら、DLL側の戻りもきちんとしとけば。
VOIDじゃなくてLONGで返しておく。
void なら Declare Sub
683デフォルトの名無しさん:03/11/06 17:36
コントロール配列をプログラム上でコピーする方法はないですか?
Load control(1)
control(1) = control(0)
とかやってもできないので。。
684デフォルトの名無しさん:03/11/06 17:45
>677
CV 使え。
685デフォルトの名無しさん:03/11/06 18:10
コモン ダイアログ (CommonDialog) コントロールで
複数のファイルを選択して開けるようにするには
どーしたらいいのでしょうか?
686Tanomou:03/11/06 19:34
>それなら、DLL側の戻りもきちんとしとけば。
>VOIDじゃなくてLONGで返しておく。

>void なら Declare Sub

ごもっともです。両方ともうまくいきました。
ただストリングの渡しはできますが、返しは暴走します。
おそらく仕様でしょう。その辺りはおおめに見ます。
超初心者的質問で申し訳ないです。
VB5Proで、MSCommを使おうとツールバーに登録するところまでは
うまくいくんですが、それをフォームに貼り付けて使おうとすると
「このコンポーネントのライセンス情報が見つかりません。デザイン環境で
この機能を使うために必要なライセンスがありません。」
とメッセージがでて、使うことができません。
どのようにすれば使うことができるようになりますでしょうか?
>>689
VBより先にVB製アプリを入れましてね!
入れてないっす。
バタースティックでも食って落ち着け
691デフォルトの名無しさん:03/11/06 20:06
*.lic ファイルってあるっけかっかかksd:
692デフォルトの名無しさん:03/11/06 22:29
今までMS-DOS上のMS-Cで開発していたのですが、今からVB6の勉強を
始めています。そこでお尋ねですが、単なる関数やSUBプロシージャを
ライブラリ化するにはどのようにしたらよいのでしょうか。

画面インターフェースを持たないクラスライブラリは、ActiveX DLLや
EXEにて構築すればよいというのはわかるのですが、解説書を読んでも
MSDNを調べても、あくまでもメソッドやプロパティを持ったオブジェクトの
ライブラリ構築方法ばかりです。

Public Function Sum(a As Integer, b As Integer) as Integer
sum = a + b
End Function

こんな関数をDLL化して各プログラムで共有したいのですが、そのライブラリ
作成方法と、そのライブラリの使用方法を教えていただければありがたいです。

よろしくお願いします。
>>692
その考え方を変えるか、CでDLLを書きましょ。
VBはCじゃないんだよ。こう考えないとやってけないよw
694692です:03/11/06 22:38
書き込んだ文章を読み返してみると、最後の段落の文章が、何から何まで
教えてくれ、と言ってるようでちょっと恥ずかしいですね。

ヒントが書いてある参考書とかウェブページをご紹介いただければ
ありがたいです。よろしく。
695692です:03/11/06 22:47
>>693 ご指摘ありがとうございます。

ということは、そもそもVB6の仕様として関数・SUBプロシージャの
ライブラリを作成するのは無理なのでしょうか。

標準モジュールに共通関数をベタベタ書いていくのは、すごくダサイと
感じているのです。メンテナンスの点からしても、CでDLLを書くよりは
VBでライブラリを書きたいと思っていますが、考え方そのものが間違って
いるのでしょうか。

お教えいただければ幸いです。
VBはJavaと同じくクラスライブラリしか作れません。
共通関数って考え方がCだね。
今はクラスライブラリの時代だよ
クラスライブラリつくって参照設定から使用。

dim hoge as mylib
set hoge = new mylib
hoge.func()
set hoge = nothing

こんな感じでしたか?VBの先輩方?
699692です:03/11/06 23:54
>>696,697
教えいただきありがとうございます。VBでは仕様として関数ライブラリ的な
ものは構築できないのですね。了解しました。

クラスライブラリの時代、ってのは頭ではわかるのですが、例示したような
単純なものまでクラス化、カプセル化する意味があるのかなぁ、なんて
思ってます。ま、私の頭が古いだけかもしれませんが。

ところで、企業内でVBだけで開発している状況では、ビジネスロジックは
全部クラスライブラリ化しているんでしょうかねぇ。関数ライブラリ、って
考えが古いのは承知ですが、それでカバーできる範囲はそこそこ大きいと
思うのは時代遅れ?
ビジネスロジックはすべてクラスに詰め込みますね。
フォーム上には画面制御用のロジックしかいれないのが
今のやりかたです。
701692です:03/11/07 00:05
>>698 クラスライブラリを作ると、こういう使い方になるんでしょうね。

ただ、実体として関数ではなくプロパティとメソッドを持つ
インスタンスですから、ans = hoge.func(a,b) と書けるものではなく、

hoge.a = 100 ←プロパティの設定(関数の引数に相当)
hoge.b = 200 ← 〃
hoge.calc ←計算メソッドの実行
ans = hoge.sum ←プロパティから計算結果の取得

と記述する必要があると思うんですが、私のこの理解は間違っているでしょうか?
その辺はデザインパターンの本を読んだほうがいいね
てか、書けなくは無い
704692です:03/11/07 00:17
>>700 キリ番ですね。

おっしゃるように、フォーム上には画面制御用のロジックしか書き込まない、
というのはその通りだと思うのですが、そもそもビジネスロジックの全部を
クラス化する必要はあるのだろうか、ってのが私の疑問です。関数やサブ
ルーチンを格納したレガシーなライブラリでいいじゃん、と頭の中身が
obsoleteな私は感じたわけです。

たとえば、アルバイトの時給計算を例にすると、関数の引数に時給と
就業時間と社員コードを与えると、関数の値として支給金額を戻す、
という単純な関数があったとして、これはクラス化しなくても関数の
ままでいいんじゃないか、という考えです。うーん、考えがobsolete?
705692です:03/11/07 00:22
>>702
いや、実はクラスライブラリ化するためにはクラスのデザインのセンスが
必要だと感じ、ここは勉強せずにすませたいと思ったので、関数ライブラリ的
なものに固執したのですよ。やっぱり、クラスのデザインの勉強ですかね。

>>703
おお、ありがとうございます。よろしければ、VBでその手法が実現できる
資料のポインターを教えていただければありがたいです。
706デフォルトの名無しさん:03/11/07 00:26
厨な質問ですいません。
FormにTextboxがいくつかあるとして、
Formが開いた時に、例えばText1(1)にForcusをあてたい場合、
どうすればいいのでしょうか?
707ボンヌ:03/11/07 00:40

リッチテキストボックスを使用して、その中の文字列が
ドラッグ&ドロップされたときに、文字列を移動したいと
思っています(VB6)。(アプリケーションでよくある機能ですよね)

また、同時にリッチテキストボックス内に、外からファイルが
D&Dされたときにはそのファイルを開きたいとおもっています。


OLEDropModeプロパティをオートにするとテキストの移動やコピーは
うまくいくのですが、ファイルのD&Dをするとアイコンが張りついてしまう。
逆に手動では、ファイルのD&Dとオープンは問題なくできるのですが、
テキストの移動やコピーの方法がいまいちよくわかりません。

今はドラッグ時にOLEDragDropイベントで捕まえて
Data.GetData(vbCFText)で文字列を取得するところまでできています。
しかしドロップ時に、その位置に文字列を挿入するやり方がわかりません。
また、[ctrl]を押しているとき(Shift=2)の場合にはコピーをしたいので、
元の文字列はそのままにしたいと思っていますが、こちらもよくわかりません。

このような場合通常どうするのでしょうか?
OLEDropModeプロパティをオートでドラッグされた
ファイルのパスを取得するのか、
それとも手動にしてテキストの編集する機能を自分で実装するのか?
それとももっと簡単な方法があるのか…

よろしくお願いします。VB6です。
>>692
ActiveX.DLLでプロジェクトを作って
Instancing=6(GlobalMultiUse)にしたクラス中に関数を書くってのダメ?
見た目上は関数呼び出しみたいになるよ。
709692です:03/11/07 01:43
今、何気なく「VisualBasicプログラミングべし・べからず集」矢沢久雄著と
いう本を眺めていたら、まさしく>>708さんの通りのことが書いてありました。

一部引用すると、「〜ActiveX DLLとActiveX EXEを作成して両者を比較してみよう。
ここでは簡単のため、オブジェクトではなく、グローバル関数(他のモジュール
から呼び出すことのできる関数)を作成することにする。」とあって、まさに
私の692の例と同じ合計関数が例示されてました。

なんだ、VB6でも関数ライブラリを構築できて、使い方もモジュールに記述した
関数と全く同じに使えるようですね。

しかし、「VB6ではクラスライブラリしか作れない」と教えていただきましたから、
それも正しいと考えると、「VB6ではクラスライブラリしか作れないが、その
クラスライブラリにはメソッドやプロパティを持ったクラス以外に、それらを
持たない単なる関数やSUBプロシージャも格納することができる」と理解しました。

今日はこれで回線切ります。
>>701
いや、全然そんなことはないんじゃない・・・?設計方法の話になるんだと思うが・・・。
dim ret as long

ret=hoge(x,y)

でいいんじゃない?
単純に関数呼び出すだけなら、わざわざプロパティつくる必要ないとおもわれ。
げ、709で結論でてた。漏れも回線切ろう
と思ったが
>>706
setfocusでいいんじゃない?
714デフォルトの名無しさん:03/11/07 11:24
>>713
ありがとうございます。
Load時にsetfocusしていたのが原因だったようです。
715デフォルトの名無しさん:03/11/07 11:37
Form上に配列のテキストボックスがある場合、
現在フォーカスがあたっているテキストボックスの
例えば、indexの値を知るにはどうしたらいいんですか?
716デフォルトの名無しさん:03/11/07 11:40
VC++6.0で動作確認済みのDLLを
VC++.netで作ったらVB6.0のIDEでエラーがでた。
EXEにしたら動いてる。(様な感じ)
何でだろ?
それはVCの問題では?
>715
ActiveControl.Index
配列でないコントロールの時はエラーになるから注意せよ
719デフォルトの名無しさん:03/11/07 11:52
>>718
ありがとうございます
720デフォルトの名無しさん:03/11/07 14:11
bmpの画像処理をしたいのですが
手始めに画像のロード&セーブをやろうとしたところ
ロードはできてセーブができません。
画像の保存はどうやればいいですか?
>>720
LoadPicture
SavePicture
722デフォルトの名無しさん:03/11/07 16:17
さっそくのレスありがとうございました。
できました。
723デフォルトの名無しさん:03/11/07 16:27
Win32APIをVBから呼び出した時最初の呼び出しでLoadModuleされるけど
解放されるのは、いつなんでしょう。
関数から返って来た時?、呼び出したオブジェクトが削除された時?
VB6で「RegisterDeviceNotification」を使用する時のサンプルは何処かに無いでしょうか?

>>725
それってSysInfoコントロールで取得できるやつとは違うの?
すいません、基本的な事ですが、
C→VBび型変換で悩んでいます。

int→long
unsigned int → unsigned long?

VB6で符号無しの変数はどう宣言すれば良いのでしょうか?
>>727
無いのさ。longで我慢したまえ。
729デフォルトの名無しさん:03/11/07 23:24
>>727
符号なし・ありの差はないのでバイト長だけ見て変換するしかない。
1->byte
2->integer
4->long
気をつけないと四則演算でオーバーフローを起こす。
javaにもないよ
731デフォルトの名無しさん:03/11/08 15:09
インストーラーでも作ろうと思ったんだが、
DLLとかって、絶対にレジストリに登録せな
あかんもんなん?
登録の必要あるのとないのがあるの?
どこに登録すればいいか教えて欲しいぽ
>>731
VB付属のウィザードでセットアップファイルを作って、できたファイルを解析。
infだかiniファイルだかを開けば、レジストリへの登録が必要なものがわかるよ。
共通モジュールとそうでないものは、明確にしないと、
アンインストールしたとき、他のアプリに迷惑かけるよ(w
733727:03/11/08 18:43
アドバイス有り難うございました。

VBって普段Cを使っている人からみると非常に使いにくいですね。
なんでこんなのが使われ続けるのか理解し難いです。
>>733
なんだと?(怒)
735デフォルトの名無しさん:03/11/08 18:51
>>733
なんだと?(笑)
「使いにくい」の意味が曖昧で、プログラマとしての適正を疑う。
737733:03/11/08 18:54
釣れた(藁
「釣れた」の意味が曖昧で、釣り師としての適正を疑う。
http://java-house.jp/ml/archive/j-h-b/026819.htmlより

>> # 因みに、なぜ、unsignedがサポートされていないのでしょうか?

> Cでは、unsignedをsignedで受け取ったり、その逆のケースがあっても、コンパ
>イル時に警告を出すのが
>せいぜいで、明示的にキャストしてしまえば通ってしまいます。
> そうすると、リンク時には検出できないバグの原因になるからです。

たしかにそうですね。
# ただ、Cだと、桁溢れすることを利用して計算していたのが、
# そこも気をつけないといけないというのは、不便と感じる場合もあります。
Spread6.0Jの再配布可能なランタイムパッケージってないのですか?
発売元のgrapecityのHPに行ったんですけど、見当たらなくて。
もしかして、Spreadって、開発ライセンスをクライアント用に買わなきゃ駄目
なんですか?
741デフォルトの名無しさん:03/11/09 03:30
えっ。なんでEXcel使わんの? excelなんてただみたいに転がってるし。
excelじゃ問題あるの? そういえばVBからEXCEL立ち上げようとすると
何となくギクシャクしたような記憶があるが。
 そんときは「先にexcel立ち上げておいてください」って
ごまかしちゃったけど。
742デフォルトの名無しさん:03/11/09 05:16
現在通信のプログラムを組んでいるのですがうまくいかず困っています。
動的なByte型配列をファイルマッピングオブジェクトにコピーして送信
する処理を作っているのですががうまくいきません。
バイト型配列は一度構造体(バイト型データのみ)にコピーしてファイル
マッピングオブジェクトにコピーするという手順を踏んでいます。

type test
data() as byte
end type
public testdata as test

のような構造体を使用しています。
処理の流れとしては
ファイルマッピングオブジェクトの作成しハンドル、アドレスの取得後に
RtlMoveMemoryを使ってアドレスに構造体をコピー
例) CopyMemory(dest, testdata, len(tesetdata))
して送信といった感じです。
固定長のバイト型配列の構造体を宣言して使用するとうまくいく
のですが、動的な配列にするとどのようなデータであっても4バイト
しか送信できていません。
データ長がよくないのかと思い
CopyMemory(dest, testdata, Ubound(testdata.data))
とやってみてもダメでした。
送信自体は単純にUDPで投げているだけです。
固定長で宣言できればよいのですが、送信するたびにデータ長が変わる
ためそうもいきません。
動的配列をファイルマッピングオブジェクトにうまくコピーする方法があれば
教えてください。
タスクマネージャの「アプリケーション」のようなものを作りたい
(「タスク」を列挙したい)のですが
どのようなAPIやオブジェクトを使用したらいいのでしょうか?

いろいろ検索しましたが「ウィンドウ」や「プロセス」列挙の例ばかりで
見つかりませんでした。よろしくお願いします。
744デフォルトの名無しさん:03/11/09 09:48
VBの1スレッドとしてWINXPの全プローセスを動かしたいのだが、
どうやったらいい?
なぜ、そんなに、偉そうなの?
>>743
GetWindowTextLength(hWnd) > 0
かつ,
IsWindowVisible(hWnd) != FALSE
かつ,
GetParent(hWnd) != NULL
かつ,
(GetWindowLong(hWnd, GWL_STYLE) & WS_CAPTION) != 0
で列挙できるらしいです
>>740
それは持ってないので、正確なことは分からないけど、
たぶんヘルプに書いてある。
748デフォルトの名無しさん:03/11/09 16:39
>>742
testdataを渡すときにByvalを付ければいいかも。
749デフォルトの名無しさん:03/11/09 21:40
OCXやDLLはレジストリのどこに登録すればいいのですか?
共有ファイルとして登録の仕方も教えて欲しいです。
お願いいたします。
750デフォルトの名無しさん:03/11/09 22:37
  ε ⌒ヘ⌒ヽフ
 (   (  ・ω・) VB?
  しー し─J
MSFlexGridってので
得点表を作らなくてはいけないのですが
80点以上のセルに色をつけるのってどうすればよいのでしょうか?
Caseを使って組んでいるのですが一個しか色が変わらない…(激痛)
もう頭痛いです。まいった…
>>752
イブプロフェンの入った頭痛薬は眠くなりにくくていいですよ。
>>753
ありがとう、頭痛止んだ。
755デフォルトの名無しさん:03/11/10 01:48
既存テキストファイルの、行数を取得するにはどうすればいいですか?
>>755
改行文字をカウントする。
757デフォルトの名無しさん:03/11/10 08:21
>>752
正直、どんな変な勘違いしてればそんな変なことに悩めるのか、そっちの方が頭痛いよ。

フレキシブルグリッドってそんな難しいか?ただセル選んで(RowとCol設定して)
ForeColor設定するだけだと思うけど。
1セルずつ色つけるのが納得いかないんでない?
おおきめのプログラムに挑戦したいと思うのですが、
どこかにわりと大きめなVBのソースを公開している場所はありませんか?
公開してるところは知らないけど、大きい物を作るときは、小さいものの集合体になるように心がければOK。
変数のスコープ、関数のスコープを安易に大きくしない。
オブジェクトの生息を適切にコントロールする。
んと、テキストエディタっぽいのを作りたいんですけど、
特定の単語を強調するのってありますよね。

VBでもコメントや宣言部は色が変わりますよね。あんな感じにしたいのです。
リッチテキストボックスでやろうかと思ったんですが、あれは文字修飾を
変更するもので少し違うような気がするんですよね。

よくやる処理のような気がするのですが、どのように処理をするのが適当ですか?

ピクチャボックスコントロール内にオブジェクト(Line、Shapeなど)を
貼り付けています。
このピクチャボックスをイメージ保存(ビットマップ化)したいのですが
なにかいい方法はありますでしょうか。

>>762

重要なことを書き忘れてました。

追加条件:
ピクチャボックスコントロールは画面の外に出ています。
ピクチャボックスコントロール内のオブジェクトをイメージ
保存すること自体はできたのですが画面の外のオブジェ
クトは描画されません。
画面の外に出ているオブジェクトも描画される方法があり
ましたらご教示ください。

VB6のソケットオブジェクトって不安定って本当でつか?
>>764
不安定っていうより、使い物にならない。
WinSock APIを使えばよし。
767764:03/11/10 17:29
>>765,766
具体的にどうだめなのか教えてもらえませんか?
768デフォルトの名無しさん:03/11/10 17:32
ログのテキストファイルをVBのフレーム上で表示したいのですが
どのような方法が最適でしょうか?
769デフォルトの名無しさん:03/11/10 17:35
↑間違えました。フレームではなくフォームです。
770547@残業中:03/11/10 19:50
すみません、質問です。
SQLの結果をレコードに格納してローカルに保存し、ループで何回も処理する
のですが一回目はOKでループ2回目以降エラーで落ちてしまいます。
どなたかご助言ください。

Set ADO2_rs = ADO2_cmd.Execute

'ローカルに保存
strSaveFile2 = FcAdrstSave(ADO2_rs, "ADO2_rs")
'変数の初期化
Set ADO2_rs = Nothing
Set ADO2_cmd = Nothing
'Connection 切断
FcCutting

'ローカルの RecordSet Open
ADO2_rs.Open strSaveFile2

cntYM = strUsedYM
End With
With ADO2_rs
cntKikan = 0
.MoveFirst ←ここで落ちる
771547@残業中:03/11/10 19:57
ちなみにエラーメッセージです。

実行エラー3021

BOFとEOFのいずれかがtrueになっているか、または現在のレコードが削除されています。要求された操作には現在のレコードが必要です。
772!=764:03/11/10 22:54
>>765
漏れも知りたい。どのあたりが?
単純にテキスト送ったりしてるくらいしか使ってないんだが。
773!=764:03/11/10 22:57
>>771
ゴメン、ソースよくわかんないw
「ここで落ちる」ってそれ1回目じゃないの?レコードはあるの?
774!=764:03/11/10 23:03
if ADO2_rs.recordcount then
 Do
 〜処理
 ADO2.rs.MoveNext
 loop until ADO2_rs.EOF
else
 ’レコードはありません
end if

む?一つのレコードを何回もループで処理するのでつか??
775742:03/11/10 23:54
>>748
返事が遅れて申し訳ありません。
おかげさまでうまくいきました。ありがとうございました。
すみません、お尋ねしたいのですが、
この間VB6.0をインストールしたところ
PCを立ち上げるたびにmicrosoft visual studio内のCommonフォルダが
勝手に開くようになってしまいました。
こんな状態を治す方法をご存知の方はいらっしゃいませんか?
OSはXPのsp1です。
初心者な質問で申し訳ありません。よろしくお願いします。
777デフォルトの名無しさん:03/11/11 09:49
質問です。
二次元の座標で3点の(X,Y)が分かっているとき
その3点で作られる角度を求めたいのですが
こういった問題には、やはり余弦定理などを使うしかないのでしょうか?
もっと手間数の少ない単純な方法が無いか探しています。
知っている方、よろしくお願いします。
>>777
まあ、普通そうでしょ?精度に注意してがんばってね。

茶々としては、画面に描画して分度器(Windowで透ける奴を作る)ってのもあるけど。w
>>770さんに便乗。
MDBファイルにつないでるんですが、空のテーブル(?)のRecordsetはEOFとBOF
ともにTrueになるんですよね?

では、そこにAddNewやSQLでフィールドを追加しようとしてるんですが、
うまくいきません。どなたか手ほどきいただけないでしょうか・・・。
>>779
「そこに」ってどこか分からないけど、テーブルに列を追加したいなら
ALTER TABLE テーブル ADD 新列名 型
をExecute
781デフォルトの名無しさん:03/11/11 20:05
RmDirで日本語名のディレクトリを削除しようとしているのですが、
できません。もちろんディレクトリの中身は空です。
英数字のみのディレクトリは削除できますが、日本語だとダメです。
そういう経験ないですか?
そのディレクトリ名何よ?
783781:03/11/11 20:16
あ、今消せました、すみません。
784779:03/11/11 20:30
>>780
ありがとうございます。やってみます。
そこ=空のテーブルのRecordset(?)のつもりです。
言葉足らずですいません。
空のテーブルにデータを入れたい、ってことです。テーブルはすでにあります。
根本的に考え方が間違ってるのでしょうか?
>>784
であればaddnewで平気なはずだけど・・・
recordset とるときにロックかけたりしてなければ
rs.AddNew
rs("key") = Key
rs("data") = Data
rs.Update
でいけない?
教えてください。
今お仕事でVBで超簡単なDDEサーバを作らなきゃ行けないんだけど、Win32APIの
  DdeNameService(idInst, hsz1, hsz2, afCmd)
hsz2に0を指定して(MSDNライブラリで0Lを指定しろとなってるので)コンパイルし
ようとすると、
「"0x00000000"の命令が"0x00000000"のメモリを参照しました。メモリが"read"にな
ることはできませんでした。」
のエラーダイアログが出てきて開発環境ごとアボーンしてしまいます。
状況としては、idInst, hsz1共にDdeCreateStringHandleを用いて取得したハンドル
を、afCmdにはDNS_REGISTERを指定しています。
ググってみても、問題は解決せず。

パトラッシュ、僕はもう疲れたよ…。
>>786
他のマシンでコンパイルしても出るか確認しる。
出なければ該当マシンのメモリ不良かも。
>>786
たぶんByVal 0
789779:03/11/12 09:19
>>785
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=C:\Outlook_Logs\Logs.mdb"
Set cm = New ADODB.Command
cm.ActiveConnection = cn
cm.CommandText = "SELECT * FROM Users"
Set rs = New ADODB.Recordset
Set rs = cm.Execute
cm.CommandText = "SELECT * FROM Exception_User"
Set Exrs = New ADODB.Recordset
Set Exrs = cm.Execute
         〜(略)〜
rs.AddNew
 rs("ID") = rs("ID") + 1
 rs("Date") = Now
 rs("User_Add") = User_Add
rs.Update
というふうにやってるんですが、rs.updateの後でブレーク入れてrsのところに
マウスを持っていくと黄色い枠で出てくる中で「BOFとEOFのいずれかが……」
となります。
rsのロックとかを指定してないのがいけないのでしょうか?
以前ASPで書いたときはこれで動いたのですが・・・・。
ちなみにASPでrsを作成するときは
rs.Open SQL,cn
でRecordsetに放り込みました。
commandってのを使ったことないのでcmの使い方がまちっがているのでしょうか?
MSDNを見ても、785さんと同じ事を書いてありましたが・・・。
790hama- ◆DSCCo.c9U6 :03/11/12 09:36
VB6.0でwebブラウザを作っているのですが、
メニューでIEのお気に入りの参照の仕方を教えていただけませんか。
お願いいたします。
791785:03/11/12 09:48
>>789
試してないのでなんとも言えないけどとりあえず
>Set rs = New ADODB.Recordset
>Set Exrs = New ADODB.Recordset
この2つはいらないんじゃないかと、ちなみにCommandって使う必要あるの?
Dim sSql As String
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=C:\Outlook_Logs\Logs.mdb"
sSql = "SELECT * FROM Users"
Set rs = cn.Execute(sSql)
sSql = "SELECT * FROM Exception_User"
Set Exrs = cn.Execute(sSql)
     〜(略)〜
if rs.EOF = true Then
 rs.AddNew
 rs("ID") = rs("ID") + 1
 rs("Date") = Now
 rs("User_Add") = User_Add
Else
 rs.Edit
 rs("ID") = rs("ID") + 1
 rs("Date") = Now
 rs("User_Add") = User_Add
End If
rs.Update
じゃだめ?
792デフォルトの名無しさん:03/11/12 13:16
クラス内から自分自身のプロパティプロシージャを呼び出したいのですが
C++でいうthisみたいなものってありますか?
Me
>>793
ありがとうございます!助かりました。
>>791
試してみましたが、ダメでした。rsのLocktypeの指定がなかったのと
rs.Fieldsでの指定が抜けてたのが良くなかったみたいです。
あと、
rs("ID") = rs("ID") + 1   →  Next_ID = rs("ID") + 1
とするとちゃんと動きました。ありがとうございます。
やっぱりASPの感覚で書いてたらダメなんですかね?(^^;
>>791
>>795>>779です。
追記。
Commandは使う必要はやっぱりなかったみたいです。
助かりました。ありがとうございます。

ちなみにCommandってどんなときに使うんですか?
すみません、よくありそうな質問で申し訳ないのですが

ReDim前の配列に
UBound を使うとエラーになりますが
これを検知することは可能でしょうか?
>>797
1.そんな造りは危険だから、とりあえず0でRedimしとくとか、で使うときは0の場合はデータ未存在扱い。
2.チェック関数を作成、関数内は配列にアクセスして例外を見る。
799797:03/11/12 16:01
>>798
配列の要素数を取る関数をつくって
その中で例外で判断することにしました

ReDim Preserve xxx(myArrCount(xxx))
xxx(myArrCount(xxx) - 1) = hogehoge

ありがとうございました!
テキストボックスのheightを変えた場合、heightがフォントの影響を受けるのは分かるんですが
実行時に変更が出来ない理由は他に考えられますか?
>>800
変更ができない=エラー?
変更ができない=見た目が変わらない?

理由はわからんけど、ある程度の値がしきい値になって段階的に変わっていくみたいですね。

Private Sub Command1_Click()
Text1.Height = Text1.Height + 1
End Sub

ボタン連打すると、かくかくとText1が大きくなる。
802785:03/11/12 18:56
>>779
>ちなみにCommandってどんなときに使うんですか?
ごめん、俺も使ったことがないからちとわからんm(_ _)m
>>800
理由は初心者への親切心だろ
気に入らんのなら SetWindowPos とか使え
804デフォルトの名無しさん:03/11/12 21:21
>>790
favoritesディレクトリの中を見て見れ。
>>796
ストアド使うときとか。
最近新しいノートパソコンを買うことになったので
家に余っている【ThinkPad A20m】を3台(一台は汚れていますが・・
MDコンポ1台を無料で譲ります。欲しい方居ましたら貰ってやって下さい

http://www.ka3.koalanet.ne.jp/~magic32/muryou.html
807hama- ◆DSCCo.c9U6 :03/11/13 09:34
>>804
返レスアリガトウございました!!
ですが、favoritesの中は見たのですが
どのように参照したらいいのか分かりませんTT
どなたかご教授いただけませんでしょうか。
m(__)m
お尋ねしたいことがあるのですが、
VB6.0SP5にて、SQL Server 2000内のデータを
Excel 2000へ書き出すツールを作成し、動作させたところ、
書出し処理が開始してから、マウスなど何も触れない状態で
スクリーンセーバーの待ち時間に設定した時間が経過すると
Beep音が一秒間隔で鳴ります。
スクリーンセーバーを「なし」にしても現象は発生します。
どなた様か解決手段をご教授願えませんでしょうか?
ちなみに参照設定は、
Visual Basic For Applications
Visual Basic runtime objects and procedures
Visual Basic objects and procedures
Microsoft ActiveX Data Objects 2.8 Library
Microsoft Excel 9.0 Object Library
にチェックを入れています。
何卒宜しくお願い致します。
Set WSH = CreateObject("WScript.Shell")
rc = SHGetSpecialFolderPath(0&, strFavorites, CSIDL_FAVORITES, 0&)
...

hFind = FindFirstFile(strFavorites & "\*", udtFindData)
...
Do
...
listbox1.additem strFileName
Set sc = WSH.CreateShortCut(strFavorites & "\" & strFileName)
listbox2.additem sc.TargetPath
Loop While FindNextFile(hFind, udtFindData)
call findclose(hfind)
810デフォルトの名無しさん:03/11/13 11:41
GetPrivateProfileStringでiniファイルから英語と日本語の混合した
一つの文字列を読み出してみました。
戻り値でバッファに格納されたバイトがわかるので
LeftBで取得しましたがサイズが合いません。
これは戻り値はANSI形式のサイズを返しているのに対し
LeftBはunicode形式のバイト数を指定して読み出すことによる問題、
と解釈しましたがこの認識でよろしいでしょうか?
宜しくお願いします。
>>810
そうだよ
正確には LenB に指定する文字列が Unicode なわけだが
だからこうしる
LenB(StrConv(*, vbFromUnicode))

こうでもいいが
lstrlen(*)
labelオブジェクトのCaptionに外部ファイルの内容を表示させることは出来ますか?
出来るのならやり方を教えてください。
よろしくおねがいします。
813810:03/11/13 15:33
>>811
なるほど。
すこぶる納得できました。
ありがとうございます。

>>812
>外部ファイルの内容
とは?
OpenしてLine Inputしてそれをlabelオブジェクト.Captionに代入すればいいだけでは?
普通にできないか?
どの部分で問題になってるの?
815デフォルトの名無しさん:03/11/13 16:01
>>807
エディタでFavoritesの中のファイル開いてみた?
816デフォルトの名無しさん:03/11/13 16:07
MAPIコントロール(session & messages)を使ってVBでメーラを作ろうと
しているのですが、MAPIは基本的に「受信フォルダ」の中のメールしか
扱えないんですかね?
Outlookで振り分けしたフォルダのメールをMAPIメーラでは取り出せない
んでしょうか?
>>816
Set Name_Space = Application.GetNamespace("MAPI") 'Outlookの基本情報の取得・接続
Set Def_Tray = Name_Space.GetDefaultFolder(olFolderInbox) '受信トレイ(デフォルトフォルダ)の取得。
Set MAPI_Folder = Def_Tray.Folders("テストフォルダ") '受信トレイの下の「テストフォルダ」を取得。

これでどうでしょうか?
818デフォルトの名無しさん:03/11/13 16:50
あるプロシージャで宣言した変数とその中身をプロジェクト内のどのモジュールでも
もってまわれるようにするにはどのようにすればいいんでしょうか?
819デフォルトの名無しさん:03/11/13 17:17
>>817
ありがとうございます。

しかし、MAPI_Folderというオブジェクトはどうやって使えばいいんでしょうか?
ここからメールメッセージを取り出したいんですが。
>818
public とか付けるんじゃないカナ?
821リア厨:03/11/13 17:21
すみません教えてください

6桁の数字 "123456"を
ばらばらにしてLabelにだしたいのです。
"1"  "2"  "3"  "4"  "5"  "6"
どうかよろしくおねがいします。
822808:03/11/13 17:23
とりあえずの対策として、APIを用いて、
スクリーンセーバーを無効にすることで、
現象を回避しましたが、根本的な原因が不明です。
何か、ご存知の方がおられましたら、
ご教授の程、宜しくお願い致します。
>818
フォームやモジュールにある関数(xxx)なら
aaa.xxx で使用できたはず
824デフォルトの名無しさん:03/11/13 17:24
>>821
数字を文字列に変換して、Midで1文字ずつ取り出す。
825リア厨:03/11/13 17:27
>>824
Mid 関数というのを使うのですか
ありがとうございます
>>825
ほかにも文字列操作関数
Left(LeftB)
Right(RightB)
があるから覚えとけ

それとヘルプ見る癖つけろよ
1つ目のラベルには値を10000で割った商を文字列化。
2つ目のラベルには・・・・・
>827
Σ(°Д°)ソレダッ!
829デフォルトの名無しさん:03/11/13 17:40
>>819
For n = 1 To MAPI_Folder.items.Count 'iが1から全アイテム数になるまでループ
Set Mail_Item = MAPI_Folder.items(n) 'i番目のアイテムを取得。

'あとは Mail_Itemを煮るなり焼くなり好きにしてちょ★

Next n
830818:03/11/13 17:44
>>820
>>818
少し説明不足だったかもしれません。プロジェクトがロードされたときに
レコードセットを取得してそれを全フォームとモジュール内で使えるように
したいのです。
Publicで宣言しましたがなぜかダメでした。

最悪、レコードセットを作るルーチンを毎回呼び出してもよいのですが・・・。
831デフォルトの名無しさん:03/11/13 17:44
>>829
ありがとうございました!
>>830
標準モジュールに書きな
でもclassを作った方がいいな
>>827
自動販売機の金種計算を書けってな試験があったの思い出したーよ。
おつりを最小枚数で出力するときに、似たようなことやってた。
>>834
むかしの自動販売機は、硬貨の投入順番によって、最小枚数かどうかを選択できた。
公衆電話で10円玉が必要なときは、それを利用して増やしてたものだけど、
最近は、どんな順序で投入しても、最小枚数になるので不便。
どんなアルゴリズムなのか、当時、子どもながらにいろいろ考えたのが懐かしい。
いまはもう、10円玉が必要なシチュエーションが少ないわけだけど。
ちなみに、自動販売機のアルゴリズムが変わったのは、消費税導入のころ。
おつりに対する意識が高まったんだろうね。
すんません、ぐぐったりMSDNで探してみたけど見つからなかったので…。
Cで言うところの「continue」はVBにはなかったりするんでしょうか?
If文で囲んで階層が深くなるのがいやなので、出来れば囲まずにroopの先頭に
いきたいんですけど…。
>>836
gotoがあるよ
838836:03/11/13 20:54
>837
gotoですか…実はあんまり好きじゃないので、出来れば使いたくないんですが(w
それしか方法はなさそうですね。ありがとうございました。

…っつーか、continueないのかよヽ(`Д´)ノ ウワァァァン
まぁ、代わりの方法はあるにはあるけど、お薦めできないかな。
continue:
:
:
goto continue

ってすればcontinueみたいでしょ?
Errorを意図的に発生させてトラップしたら?
>>838
グダグダ言うなよ、roop 野郎が。
843デフォルトの名無しさん:03/11/13 23:23
windows xpでcpu負荷率を取得する方法を教えて下さい。
おながいします。
VBでデータベースに文字列を登録するときにSQLのインサート句をつかいますが、
'コロンは''のように2個重ねて使えばSQL文で扱えますが、
カンマはどのようにすればSQL文で扱えるのでしょうか?
845843:03/11/13 23:50
解決しますた。
>844
SQLといえどもVBの中で組み立てている状態では単なる文字列でしかない。
847デフォルトの名無しさん:03/11/14 09:11
アポストロフィとかシングルクウォートと呼ばれているものとコロンを混同するのは( ゚Д゚)マズー
コロンって:だよ
849hama- ◆DSCCo.c9U6 :03/11/14 09:39
>>815
エディタで開くとアクセスが拒否されるんですよ。
一様管理者の権限でログインしているのですが・・・
どうすればいいのでしょう?
申し訳ありませんがお教えいただけませんか
850デフォルトの名無しさん:03/11/14 10:59
>>849
俺Win2kだけど、何の問題もなくnotepadにドロップして開けるが。
第一、同じユーザが作ったファイルを開くのにアドミン権限は必要ないし。

ちなみにFavoritesの中のファイルを右クリック→プロパティで
セキュリティの項目を見ると、ユーザやアクセス許可の属性は
どうなってるの?
851デフォルトの名無しさん:03/11/14 13:17
>>829
あのすいません。
この方法は、Expressじゃない方のOutlookのOLEオートメーションを使った
方法ですよね。
Outlookは全てのWindowsユーザがインストールしているとは限らないので
この方法は使えないんですよ。

やっぱりMAPIコントロールだけじゃ”受信トレイ”以外のサブフォルダの
中身は参照できないんでしょうか?
そうだとすると「MAPIコントロール使えねー」なんですが。。
852hama- ◆DSCCo.c9U6 :03/11/14 13:34
>>850
アクセス権限がおかしかったようで
無事にショートカットの中身を見ることができました。
これから参照させて見ます。
アリガトウございました!!
853デフォルトの名無しさん:03/11/14 17:08
コモンダイアログボックスコントロールの
ファイルを開くダイアログボックスで
ファイルを複数選択すると、

CommonDialog1.FileNameに選択ファイル名が
羅列されますよね。この変数を元にファイルを
一つずつ開きたいのですが、どうやったらいいのでしょうか?
>>853
開く、とはどういう状態?
>>853
SplitしてShell
856デフォルトの名無しさん:03/11/14 17:49
>>853
splitでファイル名を分割する。
857デフォルトの名無しさん:03/11/14 18:02
>>854-856
サンクスコ!
858デフォルトの名無しさん:03/11/14 18:08
質問です。
GetLocalTime関数で得たSYSTEMTIME値をDate型に
変換する方法として、SystemTimeToVariantTime関数が
用意されているのはわかったんですが、WIN32API.txtから
探しても、宣言が見つからないんです…。
もしかしてVBでは、SystemTimeToVariantTime関数は
使えないのでしょうか?
今は応急処置として、SYSTEMTIMEの各値をFormat変換
してCDateにかけているんですが、関数があるならそっちを
使いたいので。
>>858
で、そもそも何をしたいの?
書き方が少し冷たかったかとちょっと反省して。w

nowじゃだめなの?
要素ごとにHourとかつかってパーツを取得。

使用用途がわからないから、なぜわざわざAPIを呼ぶかが理解できん・
861858:03/11/14 18:58
ああ、ごめんなさい。
APIを使う理由は、現在日時をミリ秒単位で取得したかったからなんです。
やりたいことは、コントロールのダブルクリックイベントを使わずに
APIを使用してダブルクリックチェックをしたいんですね。
なので、GetDoubleCliclTime関数でダブルクリック時間を取得して、
一つ前のクリック時間と発生したクリック時間の差分と比較して
ダブルクリックか否かをチェックしたかったんです。
Now関数だとミリ秒は取得できなかったので…。
SYSTEMTIME構造体の年から秒までの値をDate型に変換して、
DateDiff関数で秒数の差分を取得、それをミリ秒単位に直してものを
一つ前のクリック時間と発生したクリック時間(SYSTEMTIME.wMillisecondsのみ
使用)の差分に加えて、クリック時間間隔を求めようかと思ってたんですが…。
862hama- ◆DSCCo.c9U6 :03/11/14 19:27
う〜
うまく参照できないTT
参照させるとDLになってしまいました。
なんでだろう
マイクロソフトはいつまでVB6.0を新品として発売しつづけるのだろうか。Windows用の自分用ツールを作ることに関してはすごく名作だけにまだまだVB6.0は活躍してほしいが。
864779:03/11/14 20:01
>>851
うーん・・・。
基本的には同じなんぢゃなかったっけ?OEとOutolookの違いってそこまで
あるとは思えないのだが・・・。確か参照してるメールの保存先って一緒
じゃなかったっけ?
一連のレスはへたれな779が書いているのでそこまではわかりません。スマソ。
オレはOutlookのVBA使ってるだけだから・・・(^^;

亀ですが、>>805の意味がよくわかりません。とりあえず、今は動いているので
いいのですが・・・。
>>863
まだ売ってんの?もう.NET出てから売ってないのかと思ってた。
.NETも触ってみたいが。
866デフォルトの名無しさん:03/11/14 20:45
VB4-16Bitアプリっていつまで使えますか?
>>866
VBに限らず16ビットアプリは一応XPやLonghornで動く。
稀に動かないこともあると思うが、作り方などによるので一概には言えない。

Longhornでもそのままで動くが、内蔵される予定のVirtualPCを使って
LonghornにWin3.1をインストールすることでさらに高確率で動く。
868デフォルトの名無しさん:03/11/14 21:34
>>864
OEとOutlookは全く別物と認識したほうがいいよ。

>>861
とりあえず、ラップするDLLを自作してしまうってのが一番早いのでは?
869866:03/11/14 22:08
>>867
どうもありがとうございました。
>> 858
単にミリ秒単位の「差」を得たいなら
GetTickCount()APIあたりの差でいいんでないの?

っていうか
「コントロールのダブルクリックイベントを使わずに
APIを使用してダブルクリックチェック」ってのが
いまいち「何をしたいのか」がわからん。
>>870
多分、高橋名人か毛利名人に対応できるシングルクリック検出をしたいんだよ。
872851:03/11/14 23:13
>>864
Outlookがインストールされてないと、Outlook.Applicationのオブジェクトが
使えないんです。OEとは別のコンポ−ネントを使ってるみたいです。

結局MAPIコンポーネントは糞コンポーネントということで、
フリーのBSMTP.dllを使うことにしました。
873863:03/11/15 07:58
>>863
サービスパック5がすでに適用されているVB6.0が売ってたらまた買いなおしたいと思ってさ。
今はVB6.0をインストールしたらさらにSP5を別途インスコだし。
>>867
うーむ。Longhornは過去との互換を残すのか。マイクロソフトもユーザにやさしいところもあるなぁ。
874デフォルトの名無しさん:03/11/15 12:18
VBSでjpegとかpngとかのサイズ(高さと幅)を取得する素敵な方法はありませんか?
javaなら簡単
Dim 1 As Integer
For l = 0 To 1000

Next

ここでエラーがでるんですけど、本とか調べても間違ってないし・・・
>>876
> Dim 1 As Integer
↑の宣言でエラーがでるだろうが。
>>876
質問する時は出たエラーメッセージくらい書け。
879876:03/11/15 15:47
>>877-
うっかりしてました。
ヤベ
ワラタ
ちなみに、0から1000をくり返したら1001回実行するぞ。
へぇー
1ooo
1∽1
885デフォルトの名無しさん:03/11/15 22:41
VB6です。コレクションをプロパティとして持つクラスを作ったのですが、
値の設定がうまくいきません。

collectionAをclassAのコレクションとしてクラスビルダで作成し、
classBのプロパティAにcollectionAを設定しました。

つまり、
classA
プロパティ
proA as integer

collectionA
proAのコレクション

classB
プロパティ
proB as collectionA

という状況です。ここまではエラーもなくできました。
しかし、値を設定するところで困っています。例えば、

dim B as new classB
しといて、
B.proB.addとかしようとすると、そこで
 実行時エラー91 オブジェクト変数またはWithブロック変数が設定さえれていません。
が発生します。
コレクションをプロパティとして持つクラスなんてそもそもできないのでしょうか?
それとも、値の設定の仕方がまずいのでしょうか?
どなたかご教授ください。よろしくお願いします。

>> 885
よくわからんが、
ClassB中のClassAコレクションのインスタンスは
きちんと作ってあるのかい?
再現するコードを載せてみ。
887786:03/11/16 02:11
>>787-788
レスthx!
原因がわかりました。
 DdeNameService()
を指定する前に宣言する関数の記述方法を間違えていたのが原因でした。

DdeInitialize()関数の宣言なんだけど、
lRet = DdeInitialize(lPidInst, _
DdeCallbackProc(0, 0, 0, 0, 0, 0, 0, 0), _
CBF_SKIP_CONNECT_CONFIRMS Or APPCLASS_STANDARD, _
0)
↑なカンジに記述してました。
どうぞ罵ってくれい
888山太郎:03/11/16 02:18
>885
文面からするとClassBに
Property Get proB() As CollectionA
とプロシージャを宣言して、外部からこのCollectionAを操作したいって事?
プロパティの宣言等を省略して書いちゃってるからワケワカメ。
>886さんの書いているように中身を晒したほうが良いかも。
889885:03/11/16 12:44
886さん 山太郎さん
レスありがとうございます。質問が仕方が悪かったです。
すみません。
886さんの書かれていることがエラーの原因っぽいのですが、
どこでどうインスタンス化するのか分かりません。
やりたいことは山太郎さんの書かれている通りなんですが。
コードはこんな感じです。
---------------------------------------------ClassA.cls
Private mvarPropertyA As Integer

Public Property Let PropertyA(ByVal vData As Integer)
mvarPropertyA = vData
End Property

Public Property Get PropertyA() As Integer
PropertyA = mvarPropertyA
End Property

890885 続き:03/11/16 12:46
---------------------------------------------CollectionA.cls
Private mCol As Collection

Public Function Add(PropertyA As Integer, Optional sKey As String) As ClassA
Dim objNewMember As ClassA
Set objNewMember = New ClassA

objNewMember.PropertyA = PropertyA
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If

Set Add = objNewMember
Set objNewMember = Nothing
End Function

Public Property Get Item(vntIndexKey As Variant) As ClassA
Set Item = mCol(vntIndexKey)
End Property

Private Sub Class_Initialize()
Set mCol = New Collection
End Sub

Private Sub Class_Terminate()
Set mCol = Nothing
End Sub
891885 続き:03/11/16 12:47
---------------------------------------------ClassB.cls
Private mvarPropertyB As CollectionA

Public Property Set PropertyB(ByVal vData As CollectionA)
Set mvarPropertyB = vData
End Property

Public Property Get PropertyB() As CollectionA
Set PropertyB = mvarPropertyB
End Property
---------------------------------------------Module1.bas
Sub main()
Dim B As ClassB
B.PropertyB.Add 1 'エラー
End Sub

'エラー91 オブジェクト変数またはWithブロック変数が設定さえれていません。
892デフォルトの名無しさん:03/11/16 13:34
>>885
エラーメッセージまんまだと思いますよ。
つまり「Bってオブジェクト変数はオブジェクトを参照してない(つまり=Nothing)よ」
ってことでしょう。(New忘れてませんか?)

ついでに、いくら問題を提示するためのサンプルコードといっても可読性悪すぎませんか?
目的不明のクラスAだのコレクションAだのが出てくるコードって
読んでると頭痛くなってくるのは私だけ?
893885 続き:03/11/16 16:08
>>892
レスありがとうございます。頭痛くさせて申し訳ありません。
コードはクラスビルダで自動生成したまんまで、見にくくてすみません。
コレクションAはクラスAのコレクションで、クラスBのプロパティとして
コレクションAを設定したい、という質問でした。
さて、891の最後、ClassBに関して、Newを書くのを忘れていました。実際は、
Dim B as New ClassB
としたのですが、やはり、891で書いたようなエラーが出ます。
しつこくて申し訳ありませんが、よろしくお願いします。
>>891
Private mvarPropertyB As CollectionA

Private mvarPropertyB As New CollectionA
にしないとまずいような。
ステップ実行とか使えるようになったほうがいいかもしれんね。
895885:03/11/16 20:08
>>894
ご指摘の通りでした。確かにNewしとかないと
mvarPropertyBがどこも参照しないですね。
ステップ実行ちゃんと活用するようにします。勉強になりました。
ありがとうございました。
他のレスを下さった方々も、ありがとうございました。
896デフォルトの名無しさん:03/11/16 20:51
ウインドウのサイズを800×600に固定したいのですが
どうすればいいでしょうか。
>>896
サイズを変更したいの? サイズを変更できないようにしたいの?
どちらにしても、ヘルプを参照すればわかるレベルだと思うけど(汗
898896:03/11/16 20:56
>>897
すいません。
フォームのサイズでした。
800×600から変更できないようにしたいんです。
>>898
フォームのプロパティのBorderStyleを、固定に。固定にも種類があるけど、用途による。
900896:03/11/16 21:05
>>899
どうもです。
MDIフォームにBorderStyleがないんです。。。
>>900
MDIは固定にできないよ。無理にやるならAPIで。
902デフォルトの名無しさん:03/11/17 00:04
VB6で作成したプログラムをWin98のマシンに入れたら、インターネットエクスプローラの動作がおかしくなりました。
(別ウインドウを開く様なときにエラーになってしまう)
どのような事が原因として考えられるでしょうか?
VB6製のプログラムが複数立ち上がってたときに、ウインドウクラス名やウインドウキャプション以外で確実に見分ける方法ってありますか?
例えば多アプリのウインドウを子ウインドウ化して取り込むプログラムで、

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub MDIForm_Load()
Dim TargethWnd As Long
Dim OldParent_hWnd As Long

TargethWnd = FindWindow("ThunderRT6Main", vbNullString)
OldParent_hWnd = SetParent(TargethWnd, MDIForm1.hWnd)
End Sub

って書いた場合とか。
クラス名が "ThunderRT6Main" 固定である以上、複数立ち上がってた時にどう挙動するのか疑問なんですが。
904896:03/11/17 07:47
>>901
APIを教えてもらえないでしょうか。
WM_SIZEイベントを拾ってキャンセルすればいいね
質問です。ランダムアクセスでファイルを扱うために、構造体(そう言わないの
かな?)を宣言しますよね。
その中で固定長文字列をString*100みたいに宣言するじゃないですか、
その*100で100文字保持できる変数という事になるのでしょうか?
全角文字とか半角文字とかでやはり変わるのでしょうか?
私が試してみたら100文字は保持できず、何文字入るか試してみても
よくわからん中途半端な文字数になってしまいました。
 どなたか分かりやすく教えていただけると有難いです。
 よろしくおねがいします。
>>906
そこって判りにくい仕様の部分だったような。
VB内部はUNICODEで1文字1Stringなんだけど、ファイルIOとかはバイト換算だったような。
pictureプロパティに独自形式の画像をぶち込む方法ってありますか?
pictureboxにpsetで1ピクセルづつ描くのはあまりに原始的で。
独自形式とは画像とそれに関するデータを加えたフォーマットにする予定なので
結果的にpictureプロパティには256色bmpが入ってる状態と同じであれば良いです。
bitblt
実行してform1が開いた五秒後にform1が閉じて
form2が自動的に開くプログラムわかりますか?
教えてください
911908:03/11/17 23:41
>>909
bitbltでファイル読み込みできますか?
>>911
ファイルの読込みから解らんのかい(笑
それぐらい自分でやろうよ。

適当な配列にビットマップを入れたら
SetDIBitsToDevice()あたりを使えばPSetでやるよりめちゃくちゃ速く
画像をPictureBoxに表示できるよ。
913908:03/11/18 00:50
>>912
レスサンクスです。
いつもLoadPicture使ってたもので、
こういうのにはめちゃくちゃ弱くて。
>>910
timer使いんね
>>910
Form1のアンロードに Form2.Show を入れよう
Form2のアンロードには Form1.Show を入れよう
VB6.0製アプリで最新のPCが処理速度速すぎで
フリーズするなんてことありますか?
基本的にはない。
ただ、トリッキーにタイミング依存するプログラムを書いてるとしたらあるかもしれないけど。

って、VB6で時間とるのにループ回して勘定してるプログラムとかあったら見てみたい。
何十万回ループすれば1秒だ?w
やっぱりないですよねー
不思議だ
CPUのせいじゃなくて、OSとか環境差じゃないの?
920デフォルトの名無しさん:03/11/18 11:44
DoEventsを多用すると、タイミング依存の問題が発生しやすい。
921916:03/11/18 11:48
OSかも!
っていうかDoEventsを使ってます!これ?
でも、Doeventsは単にOSに処理をお返しします!だけだから。
副作用はあるけど、フリーズはしにくいとは思う、というかこれでフリーズするなら、
現状動いているものでもフリーズするはず。
VBが戦士たちに犯された
http://nyannyan.minidns.net/2ch001/001.html
VB6.0で.NETのクラスライブラリをインポートする方法を教えてください。
インポートしたあとはそのクラスのメソッドなども使えますよね?
>>924
普通に使えないと考えるのが当たり前だろ?
なぜ使えると思えるの?
926924:03/11/18 12:56
>>925
たとえばFileSystemObjectはVBのものじゃないがVBに組み込んで使えるじゃないか
VB6でリストビューのlvwReportで履歴を表示するものを作っています。
日付けの列見出し項目をクリックしたときに、日付けを昇順・降順で
並び替えるようにしたいのですが、コントロールパネルの日付け表示指定が
一桁表示の場合、データがきちんと並び替えをしません。テキストで並び替えを
しているのだから仕方ないとは思うのですが、何か方法はあるのでしょうか?
できれば表示する日付けは、コントロールパネルに沿った書式にしたいので、
Format関数で強制的に2桁表示するのは、嫌なのですよ…。
928デフォルトの名無しさん:03/11/18 15:24
VBScriptでちょっとしたWebの巡回ツールを作りたいのですが、
下記のようなボタンが2つあるときにA_Buttonの方をクリックさせるには
どのようにしたらいいのですか?".Submit"が使えなくて立ち往生しました。

<input type="image" name="A_SUBMIT" src="./A_SUBMIT.gif" alt="ログイン">
<input type="image" name="B_CANCEL" src="./B_CANCEL.gif" alt="やめる">

枯れた質問なのかもしれませんがお願いします。
>>927
日付表示列とは別に、ソート用の2桁日付列(非表示)を作ればよい。
930デフォルトの名無しさん:03/11/18 17:42
自分自身(Appオブジェクト)以外のプログラム(xxx.exe実行可能ファイル)が実行されているかどうかを調べるにはどうすればよいのでしょうか?
タイピングをつくるためのプログラムって
どうやって作ればいいんですか?
一文字ずつ比較させていくの?
932927:03/11/18 18:05
>929
いろいろ試していましたが、非表示にする方法がさっぱりです…。


>930
GetWindowAPIとGetNextWindowAPIを使えば何とかなるかも?
933デフォルトの名無しさん:03/11/18 18:25
>932
レスをありがとうございます。しかし、むずかしそうですね。GetWindowAPIは、僕のMSDNではグレーアウトされていて使えないみたいです。
>933
>僕のMSDNではグレーアウトされていて使えないみたいです。

MSDNのアクティブサブセットをプラットフォームSDKや全てのトピックを
選択しても見れないのか?
というより、オンラインで見れるだろうよ……。
935デフォルトの名無しさん:03/11/18 18:53
フォーム上に lstvListView というリストビューがあるとして、
Sub Main()
Debug.Print pstrListItem(lstvListView.ListItems(1), "node")
End Sub

Function pstrListItem(lsti as listItem, ByVal strKey as String)
pstrListItem = lsti.SubItems(lsti.Parent.ColumnHeaders(strKey).Index - 1)
End Function

とゆーよーな関数を作りたいのですが、ListItem から親の ListView(Parent)
を得る方法が判りません。
過去ログは一応参照してみたのですが。
誰か教えて……。

#そんな方法はない!?
スライダーコントロールのBackColorを変更する方法ってあります?
naiyo
そうなんですか。
そこだけ、灰色になっちゃって、かっこ悪いのに。。。
939デフォルトの名無しさん:03/11/18 21:17
WebBrowserで開いたURLがフレーム使ってるとき、
フレーム内の(子の)HTMLのフォームに対してSendKeysしたいんだけど
どうやっても子にフォーカスが行かないんですが
何かいい方法ありませんか?
WebBrowserを使っているのなら、
DOMを操作したほうがいいよ。
942デフォルトの名無しさん:03/11/18 22:58
DOMっすか?
手でIE操作する代わりにちょこちょこっとドロップダウンを操作して
フォームを実行したいだけなのに、、、
943デフォルトの名無しさん:03/11/18 23:19
VBScriptを使って、そのwebページにアクセスしてきた人の
MACアドレスを取得することはできるのでしょうか?

VBScriptからWindows Script Hostを使って
コンピューター名を取得することは出来たのですが…
コンピューター名はすぐ変えることが出来てしまうので
MACアドレスが取得できればと思っています

またMACアドレス以外でも各コンピューターで
一意の簡単に変えられない値が取得できればいいので
なにかお知恵をお貸しいただけませんか?
944PG1.75年生:03/11/18 23:26
お疲れ様です。
ここ1年Delphiも使ってるんですけど、
DelphiのFor文にある、Continueにあたるものって、
VBに存在するのでしょうか?
初心者過ぎて申し訳ないのですが、有無だけ教えてください。

>>943
目的は?
イントラ?
ルータを越えるようならMACアドレス取得しても意味ないし。
>>944
GOTO
>>943
やる気とネタさえあればMACアドレスも詐称できまつ。
948デフォルトの名無しさん:03/11/19 00:50
>>945
仕事しないでいたずらをしてるアルバイトさんの特定です
ルーターを越えるんですが…VBScriptでMACアドレスを取得して
それをクッキーに入れて(クッキーが有効でないと仕事ができなくなってます)
それを使って何をしたかをログに取ろうかと思っているのですが…

>>947
MACアドレスが変更できることは知っています
ただ…コンピューター名を変えることほどは手軽にできないかなぁと思って
何か他にコンピューターを特定する一意の値はありませんか?
>>948
まあネットワーク越しのデータに信憑性を求めるのは酷ってもんだし。
そういう要望なら各クライアントに「一定時間毎にスクリーンショッ
トを撮って、鯖に送る」みたいなスパイウェア組んでもいいんでない?
950デフォルトの名無しさん:03/11/19 01:13
>>949
スパイウェアですか
実はプログラムはphpとPerlぐらいしか書けないので
JavaScriptかVBScriptで何とかならないものかなと考えていたのですが

どなたか何かよいアイディアいただけないでしょうか
>>950
掲示板の荒らし対策か何かか?
>>951
>>948に書いてあるとおりじゃないの?
キーロガーを仕込めば
954デフォルトの名無しさん:03/11/19 08:48
>>953
キーロガーですか
アルバイトさんが使っているPCには
できれば何も入れずに済ませたいなと思っています
そこでアクセスしてくるHTMLにVBScriptで
何かを書いて実現できないかなと思った次第です
>>954
いったいどんなアルバイトなんだい?
話が見えない。
>>954
推測ですが、HTMLを常に開いていて、そのHTMLに対して入力をするアルバイトですか?
957デフォルトの名無しさん:03/11/19 09:28
質問です。
VB6.0、スプレッドシート3.0という環境なのですが、
スプレッドのセルを、エクセルのセルみたく結合したいのですが、
スプレッド3.0ではできないのでしょうか?
6.0の試供品版ではできるんですけど・・・
958デフォルトの名無しさん:03/11/19 11:32
>>948
MACアドレスが欲しいIPアドレスを指定してarp発行
それをログにとればすむだろ。
959929:03/11/19 11:41
レス多いね。
>>932
非表示にできないんだ。俺は全然使わないんで知らんかった。すまん。
列幅をゼロにすればとりあえず見えなくなる。
でもそれだとマウス操作で列幅を変えられるので、それが嫌なら
オンデマンドでソート用の列を追加・ソート後削除だな。
事前にVisible、SortedをFalseにするのも忘れずに。
960PG1.75年生:03/11/19 12:22
>>946
レス遅れました。すみません。
やはりContinueは無いようですね・・・
GOTOか、エラートラップを使うしか無いっスね。
ありがとうございました。
HTMLにActiveXコントロールを埋め込めば、どんな恐ろしいことでもできる。
うーん仕事でVBやるってんで昨日から勉強始めたんだが
Cと比べると危険なニオイがぷんぷんする言語だなぁ・・・
代入と比較演算子が同じだったり、関数へ引数渡すのがデフォで参照渡し
になるとか・・・なんかバグがわらわら出そうだ
963932:03/11/19 16:04
>959
再びレスどうもです。
まったく同じことを考えたんですよ。>見出しwidth値0
ただ、仰っているとおりドラッグで幅変更してしまうので、
イベント毎に強制的に値0を代入していこうかとも思ったんですが、
どうやらListViewにはLVN_COLUMNCLICKイベントしかないらしく、
スタイル属性にもよさげなものはなかったのです…。
仕方がないので、人間の心理をついて隠し見出しをTOPにもってこようかと
思ってます。
>オンデマンドでソート用の列を追加・ソート後削除だな。
>事前にVisible、SortedをFalseにするのも忘れずに。
↑のやりかたも面白そうですが、見た目が悪くなりそうなので
やめておきます。ご教授感謝します。
>962
C→VBプログラマで一番きついのは、インクリメントがないことだ。
965959:03/11/19 17:14
>>963
パフォーマンスに影響するorコード書きが面倒だからってならわかるけど、
見た目重視ならむしろ後者じゃないかと思うのだが・・・。
結論出した後に悪いが、誤解があるかもなので一応レス。
966963:03/11/19 17:40
>965
どうやら自分が理解していないっぽいんので、もう少しお付き合いください。
visibleプロパティはListViewのでいいんですか? ColumnHeaderには
visibleプロパティはないですし。
日付け項目のクリック時に、新規に2桁表示の日付け項目を追加、
新規日付項目をSortKeyに設定、並べ替え後、新規日付項目を削除…と
思っていたんですが、SortedとVisibleをFalseにする理由がわからないのです…。
お馬鹿ですみません。
リストボックスコントロールに表示する内容を、右クリックですべて選択
し、コピーしてクリップボードに遅れる(普通の右クリックコピー)ように
するにはどうすればよいでしょうか?
 そういう事ができるようになるプロパティとかありましたっけ?
 調べたんですけどなかなか出てこないので、どなたかしっていたら
教えて下さい。
>967
MouseDownで右クリック判定→ListBox.ListCount-1を
最大値としてForループ→ListBox.Selected(i) = trueで
全て選択→Clipboardオブジェクトに、選択したテキストを
追加でいいんじゃないだろうか?
DTPicker.MinDateに値を設定しても、ドロップダウン カレンダーで
MinDateに指定した日付よりも前の日付が指定できてしまいます。
なにか他に設定するところがあるのでしょうか?
そろそろ次スレ?
イノベイションとはどういう意味ですか?
VBScriptの質問です
Response.addheader("Content-Disposition","filename=" & filename)
Basp21.BinaryRead(FilePath)
Response.BinaryWrite file
のようにファイルを出力しています。(主にPDF)
このプログラムへのアンカーで右クリックして保存すると
ファイル名は「filename」で指定したとおりになります。
しかし、PDFファイルのとき、左クリックしすると
AcrobatReaderでファイルが開かれるのですが、そこから
保存するとファイル名がソースファイル名になってししまいます。
何かよい方法ありませんか?
>>973
Part
_| ̄|○
976FO:03/11/19 22:34
こんばんは
最近までVBAをやっていましたが、卒業してVBを勉強したいと思っています。
そこでマイクロソフトのVisual Basicをオークションで買おうと思いますが、
時々ユーザー登録できないものなど海賊版らしきものがちらちら目に付きますが、
ユーザー登録できないと何かデメリットがあるのですうか?
>>954
具体的な仕事内容が見えないと的確な助言は望めないでつ。
つーか、フリーのスパイなりスニッファなり使った方が効果的だよ。
この手のソフトはよっぽど綿密に作らないと帯域を無駄使いするっぽい。

>>976
フリーでダウンロードできるVB5 Control Creation SP2で、しばらく
練習しつつ安い出物を見つけたまい。少なくとも海賊版や登録移譲がで
きないのはやめとけ。
978FO:03/11/19 22:55
>>977

フリーでダウンロードできるVB5 Control Creation SP2で、しばらく
練習しつつ安い出物を見つけたまい。少なくとも海賊版や登録移譲がで
きないのはやめとけ。

何故ですか?
1000取り開始?
>>978
趣味にしろ実益にしろプログラマとして活動するんなら、きちんと対価
と敬意を払って正規版ソフトウェアを手に入れようって意味だったんだ
が。こういう考えはハードボイルドでつか?(´・ω・`)
>>917
きょうびのコンパイラでは、空ループは最適化されて、なにもやらないんじゃないかな(汗
>>981
半分正解。VBでも空ループは最適化されて何もしない。
ただし、整数の桁あふれチェックを削除している場合。
デフォルトでは、空ループでもループに使用するインデックスが
桁あふれする可能性があり、それをチェックするために削除されない。

VB.NETやC#でも桁あふれをチェックしていると思うけどどうなっているのかな?
初期値と終了値のみのチェックになっているのかな?
さすがに某言語のように桁あふれをおこすと急にマイナスの値になって
無限ループということにはならないと思うけど。
イノベーションって???
984965:03/11/20 09:54
>>966
ListViewに限らず、リスト系コントロールの値を複数変更する時、
変更処理の間Visible=Falseにしておくと高速化&ちらつき防止になる。
変更処理の直前にFalseにすれば、大概見ため上Visible=Falseにならずに済む。
(間にRefresh、DoEventsを入れなければ)
Sorted=Falseも高速化のため。
985リア厨:03/11/20 10:46
あの・・・
Formにコントロール貼り付け為の点々って
消せないのでしょうか?
>>985
消せるよ?
987リア厨:03/11/20 12:55
えー
どうやって?
つーる、おぷしょん、ぜんぱん、ぐりっどのせってい、ぐりっとのひょうじ
989リア厨
ありがとうございます