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

このエントリーをはてなブックマークに追加
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパック
何がしたくでどうしたけどどう困っているのかを明確に書きましょう。

○関連スレッド
VB.NETは別物なので、基本的に質問はこちらへ
VB.NET質問スレ (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1078134703/

API関連の質問はこちらへ
Win32API質問箱 Build19
http://pc5.2ch.net/test/read.cgi/tech/1084697545/

MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
API 技術関連 - VBでのWin32APIのサンプル
http://homepage1.nifty.com/MADIA/vb/VBKANREN.htm
Google
http://www.google.co.jp/
※「まず自分で調べる」を身につけよう。

○VB以外の質問スレ
C++相談室 Part31
http://pc5.2ch.net/test/read.cgi/tech/1086185282/
C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/
★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/
4デフォルトの名無しさん:04/06/18 11:12
Outlookのメール(〜.msg)をOutlookExpressのメール(〜.eml)に
変換するにはどうしたらよいでしょうか?
OutlookからOutlookExpressにメールする。
>>4
*.msg の仕様と *.eml の仕様を自分で調べてコンバートする。
自分でコンバートできなかった場合は、自分でやったソフトのどこが悪くてコンバートできなかったのかを晒す。
>>5
あったまい〜い!
>>5
ヘッダ情報も変換したいのならぜんぜんだめだな。
9デフォルトの名無しさん:04/06/18 13:56
>>4
OutlookExpress でインポートする。
10:04/06/18 14:43
いろいろありがとうございます。
とりあえず、バイナリーファイルの〜.msgを調べてみます。
なんか、難しそう(´・ω・`)
参考になるページとか知りませんか?
11デフォルトの名無しさん:04/06/18 15:27
立方メートルの m3
ていうのを使おうとすると ?になってしまいます。
どうしたらいいのでしょうか?
メモ帳やExcelでは使えてる。
13デフォルトの名無しさん:04/06/18 17:51
ある文字列に 指定した文字が 何番目にあるか というのを
調べる関数を 教えてください。
どわすれしちゃいました。
instr
>>11
OS、VBが日本語版か確認する。
正しく表示できないオブジェクトの Fontプロパティを調べ、適切なフォント、文字サイズ、キャラセットを設定する。
>>11
JISコードには立方メートルを表すフォントは存在しない。
ビットマップファイルで書くかリッチテキストで"3"を上付きに設定するしかない。
Webぶらうざこんとろーるでもできたような
18はちみつ六郎:04/06/19 00:43
メニューのショートカットに「Tab」や「Shift+Tab」などを割り当てるには
どうすればよいでしょうか。
もともと割り当て可能な文字以外はキャプションに入れるしかないんでしょうか。
そうするとほかのショートカットと文字がずれてしまうんで、何とかしたいんですが…。
19デフォルトの名無しさん:04/06/19 00:50
どうしてウィンドウクラス名がThunder〜なのですか?
>>18
そんな使いにくいソフト、誰が使うんだ?
21はちみつ六郎:04/06/19 03:06
>>20
使いにくいでしょうか。。
エディタにインデントとそれを戻す機能をつけたんで
VBとかの開発環境と同じショートカットにしようと思っただけなんですが…
>>18
Menu.caption = "ポリデント" & vbTab & "Tab"

ただしキーを広う処理は自前になる。
23デフォルトの名無しさん:04/06/19 09:50
呼び出した側のformの値を取得したい時に、コードでそのform名を直接指定しなく
ても値とってくる方法ってありますか?自分が作ってるformを汎用にしたいので。
WEBで何と検索かけたらいいかわからなかった
24はちみつ六郎:04/06/19 11:21
>>22
ありがとうございます、きれいにそろいました!!
>>23
何やりたいか分からん。
直接指定すると汎用にできないの?
XPでバルーンメッセージってありますよね?
アレってどうやって表示させてるんでしょう?
これってトリビアに(略
>>26
ワラタ
28デフォルトの名無しさん:04/06/19 12:58
>>25
各formが必ず持っている値を取得したいのです。いろんなformで自作のformを
開けるようにしようとしています。
親フォームに[人code]というコントロールがついていて、自作のformが開かれ
た時に、人codeからその人の詳細データを表示しようとしています。ただ詳細デ
ータを表示する時が決まっているわけではなく、いろんなformから呼び出せる
ようにしたいと思っています。
>>28
いちばん親になるフォームに、public でフォームへの参照変数でも
保持したらいかんの?
30デフォルトの名無しさん:04/06/19 13:25
>>29
レスさんくす。それ考えたんだけど、その方法以外になんかあるんじゃないか?
と思ってみました。

・親フォームA に [人Code]コントロールが付いている。
・AからポップアップされたフォームBで[人Code]コントロールの保持している
データを使いたい。

こういう理解でいいの?
>>28
それならば自分で ActiveXコントロール(*.ocx) を作った方が良い。
ActiveXコントロール に設定させたいプロパティを Propertyステートメント で追加し、
プロジェクトに表示用フォームを追加して *.ocx を作成し、
各オーナーフォームで「プロジェクト」-「コンポーネント」で追加してやれば良い。
33デフォルトの名無しさん:04/06/19 13:58
>>31
そうです。上手い説明が思いつかなくて、やろうとしてることそのまま書いちゃい
ました。
>>31
俺は子画面に親フォームへの参照を埋め込んで、
それを使って、親フォームのコントロールにアクセスしてる。
親フォームからも操作できるように、親フォームにも
子フォームへの参照を保持してます。

If Not frmChild Is Nothing Then

End If

これで子フォームが存在するかどうかもチェックできるし。

汎用というのが良く分からんのだが、これじゃダメなのかな?


指定の時刻になると処理を実行するようにプログラムするにはどうしたらよいでしょうか。
10分置きに処理したいデータがあるのですがDo〜Loopで処理すると重くなってしまいます。。

このようなプログラムを想定しています。
9:10(処理)
9:20(処理)
9:30(処理)
 ・
 ・
 ・
5:00(終了)

何かいい方法がありますでしょうか・・
>>35
Timerオブジェクト使ったら?
時刻に応じた動作なら、Timerオブジェクトで発生したイベントで
時刻を監視する形になる。
Sub Main()
  MsgBox "09:10になったら[OK]をクリックしてください", vbOKOnly
  Call Execute0910
  MsgBox "09:20になったら[OK]をクリックしてください", vbOKOnly
  Call Execute0920




ゴメソ...
>>36
Timerは試してみて結構うまくいったのですが
最初にずれてしまうとあとの時間もずれていくので使おうか迷っています。。
途中でなんらかのエラーで終了してしまった場合を考えると頭が痛くなりますた。

>>37
漢でつね!!!
>>38
VBにこだわらず、タスクマネージャー使えば?
>>38
タイマーで、たとえば0.5秒ごとに時間をチェックして、などの考えは浮かばないものなのか
4138:04/06/19 19:33
Timerで時間を監視というのはそう意味なんですね。
解決しました。

自分が馬鹿すぎて鬱だ・・・
42somebody help!:04/06/19 19:40
VBでフォーム一覧をリストアップする方法ってどうすればよいのでしょうか?
String変数にフォーム名が入っているので、それを利用してフォームオブジェクトを捕まえたいのです。
43はちみつ六郎:04/06/19 20:35
>>42
Formsコレクションで、こういうのはよくやるね。

Dim objForm As Object

For Each objForm In Forms
If objForm.Name = strFormName Then
'処理
End If
Next objForm
44還暦VBおじさん:04/06/19 20:38
確か、前には動いていたのに!
ME事故って、VB入れ直したら
マウスの中央ボタンでコード画面が動きません!
誰か助けてください!
>>44
「どこでもホイール」などのソフト入れりゃいい
>>42
form.controlsプロパティではいかんの?
47還暦VBおじさん:04/06/19 21:11
ドーモ^2
ありがとう、やってみます
48還暦VBおじさん:04/06/19 21:36
>>45
「どこでもホイール」で上手くいきました。
お世話になりました。
49somebody help!:04/06/19 22:01
>>43
助かりました、Formsコレクションデフォルトで存在するのですね。
Thanks!
VB6.0を使って常駐しているシステムプロセスの再起動ってできますか?
Windows Meを使っていてMsgsrv32.exeがよく応答なしになるのでこれを再起動したいと思うんですが、
こんなプログラムって作れないんでしょうか?

OS Windows Me
VB 6.0 プロフェッショナル SP6
>>50
とりあえず、環境を見直してみたらどうよ?
Msgsrv32の応答なしはMeで発生しやすい現象だが、
あまりに頻繁な場合は、環境に問題があるかもしれないし。
5250:04/06/20 00:38
>>51
確かにそうなんですけど、応答なしになったときの対処で
Msgsrv32の再起動が有効ならその手のツールを使うことで解決できるかも、と思ったので。
VBでは、というよりこんな事はやはり無理なんでしょうか。
2000かXPにしようよ。
5451:04/06/20 03:49
>>50=52
プロセス系詳しくないんで間違ってるかもしれんが、
TerminateProcessで終了させてCreateProcessとかShellExecuteExで起動かと。
ま、仮に正解だったとしても、
システム絡みのMsgsrv32がこの方法で正常動作するのかはわからんガナー。
55デフォルトの名無しさん:04/06/20 08:50
ディレクトリのリストを取得したいのですが、
どしたらいいでしょうか?

DirListBoxを使わない条件でおながいします。
56デフォルトの名無しさん:04/06/20 08:52
opendirとreaddir
5750:04/06/20 08:57
>>53
いろんな理由から9x系を使わなければならないので無理なのです。

>>54
なるほど。
やっぱりシステム関係は無理っぽいですよね。
どうもありがとうございました。
58デフォルトの名無しさん:04/06/20 12:34
数学で出てくるようなx−y軸の
グラフを描きたいのですが、
どのようなコマンドがひつようですか?
>>58
Line と Pset、RGB も調べれば問題ないでしょう。
セクシーコマンドー
61デフォルトの名無しさん:04/06/20 12:51
>>59
わかりました。
62デフォルトの名無しさん:04/06/20 14:15
描いたグラフをexcel形式にすることはできますか?
63デフォルトの名無しさん:04/06/20 18:24
ttp://cgi.2chan.net/m/src/1087723293382.jpg
こういうの使いたいんですけど、なんていうコントロール使えばできますか?
VB6でwindowsXPです。
よろしくおねがいします。
VB初心者という訳ではないのですが、困ってますので助けて貰えるとありがたいです。
やりたいことは単純です。

ローカルのドライブにあるファイルをCD-R(W)にコピーしたいのです。
普通にFileCopyステートメントやAPIのCopyFile関数を使用してもエラーになってしまいます。

何か特別な処理が必要なのですか?
環境はWindowsXPのプロフェッショナルです。
>>63
ListViewコントロールというやつです。

プロジェクト -> コンポーネントで
Microsoft Windows Common Controls
Microsoft Windows Common Controls2
この2つを選択すると、左側のデザイナにListViewが
表示されます。

WindowsのAPIレベルで提供されているコントロールです。
>>62
描いたグラフをExcel形式にするのはできないと思います。
簡単なのはグラフの基になるデータをCSVファイル形式で出力し、Excelで取り込む事ですが、
OLEを使用してVB上からExcelを操作しグラフを描かせる事もできたと思います。
ネット上で「Excel VB OLE」で検索してみるか、本屋で関連書物を読んでみるのも良いと思います。
>>64
IMAPI
6864:04/06/20 22:35
>>67
サンクス!
ググったらそれらしいのが出てきた。

しかし、当方にはタイプライブラリを作成する技量も、英語のリファレンスを解読する知識が無いのが問題だ・・・。
サンプルとか落ちてないですか?
と、一応自分でも探してみるです。
>>64
興味持ったのでググってみた。
試してないけど、たぶん↓の633が参考になると思う。
http://www.momo-lab.net/kibidango/cbbs.cgi?mode=all&namber=600&type=0&space=0&no=0
70デフォルトの名無しさん:04/06/21 00:07
画面外にあるに実行したプロうグラムの画面全体の
スクリーンショットを取ることは出来ますか?
7163:04/06/21 00:11
>>65
ありがとうございます。
Is is possible to take screen-shots of the whole screen of the
launched program which is out of the screen ? :-)
>>69
>burning files into your disc
英語でも「焼く」って表現するんだね、知らんかった。
>>73
Nero の正式名は Nero Burning ROM
>>70
ほかのアプリのデバイスコンテキストを横取りするってこと?
7664:04/06/21 09:34
>>69
そのコードをそのまま使用してCD-R(W)に書込み準備(?)するところまではできたんだけど、
そこから先がうまくいかない。

全自動でできれば言うことないんですが、
せめてWriting Wizardが立ち上げるとこまでやりたいです。

自分の技術力の無さが情けなくなってくる。
VB6(SP6)にて
1.TabStripの背景色(タブの背景)を変更する方法
2.TreeViewのアイコン上でマウス右ボタン->メニュー->追加選択->子ノード新規作成
以上2点
2ちゃんのにーちゃんたち教えてみそ
78デフォルトの名無しさん:04/06/21 11:36
全然分からないので、教えてください。
お願いします。
Visual Basic を使って、
y=ax+bの係数a,bを求めるには、どのようにプログラムを書けばいいんでしょうか?
y,x(yi,xi)は、それぞれ10個ずつ値があります。
>>78
yをxで割った商をa、余りをbにしる。
80デフォルトの名無しさん:04/06/21 11:56
comboboxのスピン機能を止めたい時はどうしたらよかですか?
8178:04/06/21 12:18
>>79
すいません。
a,bだけじゃなくて、
d^2 = Σ(i=1 10) {f(a,b,xi) - yi / yi}^2(最小二乗法)
f(a,b,x) = ax + b
の d^2も求めたいんです。
あと、For  Next 文を使って求めたいんですが、
誰か分かる方、教えてください。
お願いします。
>>78
学校の課題臭いな。それぐらい自分で解決しろよ。
ていうか、君問題自体をまず正確に理解してないと思う。
8378:04/06/21 13:12
>>82
最小二乗法による回帰直線ですよね。
aとbの値がそれぞれ与えられてれる場合は分かるんですが、
aとbが未知数の時(そういう問題なんですが)、
どのようにプログラムを組めばいいか分からないんです。
8480:04/06/21 13:16
説明がおかしかったとです。formに複数いろんなコントロールを貼り付けていて
KeyDownプロシージャを利用して次のコントロールにフォーカスを移すようにし
ています。コンボボックスでも同じようにフォーカスを移していきたいんですが
、次のコントロールに行く時に値が変わってしまいます。どうか知恵を貸してく
ださい
>>83
回帰分析の説明で回帰直線係数の式が定義されてないか?
a=nΣxiyi-(Σxi)(Σyi)/nΣxi^2-(Σxi)^2とb=Σyi/n-aΣxi/nとか。

具体的なデータが与えられてるなら、それを代入してaの近似値が求めら
れるから、そこからbも出るんで回帰直線式の傾き(a)と切片(b)はOK。

相関係数も同じ。
分母にルートを取るΣ(i=1...n)(xi-x平均)^2(yi-y平均)^2と、
分子にΣ(i=1...n)(xi-x平均)(yi-y平均)みたいな式が教科書に書いてない?
式の構成に必要な元データを配列に入れて、それを公式どおりに組み上げ
た代入式をループの中に入れる。

つか、公式の展開をここで聞くのはスレ違いっぽいと思うよ。
教科書通りの式で理解しにくかったなら、同様の解を得られる別の公式を
探してみそ。
>>84
面倒だから試してないけど KeyCode = 0 とかやってもだめか?
87デフォルトの名無しさん:04/06/21 17:40
VB6.0sp3/Win2000を使用しています。
動的にコントロールを、
Me.Controls.Add("VB.CommandButton", sNewButtonName)
として作成しています。
このように動的にコントロールを作成した後、
styleプロパティを「1 - グラフィックス」に変更したいのですが、
可能でしょうか?SendMessageLong()等で変更できるのでしょうか?

宜しくお願い致します。
単なるレイアウト上の都合によるコンテナコントロールを使いたい場合
PictureBoxとFrameのどちらのほうが軽いのでしょうか?
89デフォルトの名無しさん:04/06/21 18:01
>>88
どっちも一緒じゃないの。UserControlをコンテナにするのは、重たそうだけど。
VB6で16進表記をビット文字列に変換する関数とかない?

例えば

&h0 -> "00000000"

とか
>>90
Hex関数じゃダメなのかな?
>>90
ない
自分で作ったほうがいい
>>80
Windowsアプリケーションの設計上、ComboBoxで上下キーを使えなくするのはオススメできない。
フォーカスの移動はTabIndexで順番を決めた方が良い。

>>87
予め作成するコントロールのプロパティが .Style=1 固定の場合、
Loadステートメントを使用してインスタンスを作成するという手もある。

' 予め Command1 を作成し、Indexプロパティ = 0、Styleプロパティ = 1 に設定しておく。
Private Sub Command1_Click(Index As Integer)
  Select Case Index
  Case 0
  ...
  Case 1
  ...
  End Select
End Sub

Private Sub Form_Load()
Const ButtonCount As Integer = 2
  Select Case ButtonCount
  Case 0
    Command(0).Visible = False
  Case 2
    Load Command(1)
    Command(1).Visible = True
  End Select
End Sub
94デフォルトの名無しさん:04/06/21 20:28
>>88
PictureBoxのほうが断然軽い
Frame使ってる奴はバカ
95デフォルトの名無しさん:04/06/21 21:00
小数点を含んだ値、例えば10.25、201.22、555555.55
など、小数点以下を取得したいのですが、どのような
関数を使って取得すればよいでしょうか?

10.25 - Fix(10.25)
>>94
「軽い」って意味不明だが、より資源食わないって意味なら逆だよ。

>>95
そんなのVBの関数眺めてりゃ小学校6年生でも思いつく。
演算の誤差の問題を除けばね。
マジで聞いてるなら、絶望的にプログラミングのセンスがない。
プログラミングなんて止めとけ。
98デフォルトの名無しさん:04/06/21 21:27
ここはVB6しかできない負け犬の集まりですか?
報知新聞
レコードセットで
recordcountプロパティが-1になるのはなぜ?
aspの中ではADOが使えないのか?
(データは必ずあるのに)
>>98
なんでVBしか使えないと思ったんだい?
>>101
電波を受信できるタイプなんだろ。
>>100
http://support.microsoft.com/default.aspx?scid=kb;JA;194973
とか読んで、あとはぐぐって。

必要ならSQLの集計関数使うといいと思う。
104デフォルトの名無しさん:04/06/21 21:57
釣られちゃいましたね
>>103
ありがとう
フォルダオプション>ファイルの種類>登録されているファイルの一覧
のようなリストを扱いたいのですが
どのコントロールを使用すればいいのでしょうか
ListViewだと何か違うような
10787:04/06/21 23:42
>>93
仰せの通り、コントロール配列にて対処することにしました。
どうも有難うございました。
108デフォルトの名無しさん:04/06/21 23:54
Commandを押すとa,b,c,d,e,f,gという7つのアルファベットをランダムで
Labelに表示させたいのですが、どのように書いたらよいのでしょうか?
どなたかご指南していただけると幸いです。
>>108
アルファベットを配列に入れる→Rnd関数で添字を生成。
>>108
また、学校の課題ですか?
そろそろ自分で考えましょう。
111108:04/06/22 00:10
いや、自分で必要になったので組もうと思ったんですが
最後にBasicをやってから6年以上経っており
6年前もそれほど知識を修得したわけじゃないので全く分からずです・・・。
どなたか丸々ソースを書いてくれると助かるのですがw
112109:04/06/22 00:19
>>111
それは甘え過ぎでないかと。
ここがわかりやすいから、復習してみれ。
ttp://www.g.dendai.ac.jp/lecture/vbasic/index.html
(;゚д゚) Rndと配列でググれよ・・・
>>111

asc(chr(a)に0〜6を足す)

文字コードマジック。
chr("a")だな。
116108:04/06/22 00:21
ありがとうございます。
現在C++の課題をやっていてそっちの方に手一杯だったのでw

自分で探してみます。
答え:
コマンドボタンのイベントハンドらに次のコードを書く。

Label1.Caption = Choose(Rnd * 7 + 1, "a", "b", .... ,"g")
>>106
自己解決しました
IEをHTMLファイルのプレビューに使おうと思い、IEでメニューバー以外の
バーを非表示にして起動し、HTMLファイルを表示させたいと思っています。

Microsoft Internet Controlsを参照設定し、

Dim IE As InternetExplorer

 Set IE = New InternetExplorer

With IE
.AddressBar = False
.StatusBar = False
.MenuBar = True
.ToolBar = 1
.Navigate http://www.hogehoge.local
.Visible = True
End With

と書いて実行すると、メニューバー以外にもツールバーの「標準のボタン」
と、Googleツールバーが表示されてしまいます。

そこで、ToolBarプロパティを0に設定したら、ツールバーは非表示に出来た
のですが、何故かメニューバーも非表示になってしまいました。

メニューバーを表示させた状態で、ツールバーを非表示にするには、ツール
バーのプロパティに何を設定すればいいのでしょう?

12078:04/06/22 08:14
a,bを求めるとレスしてましたが、違ってました。
a,bを -10〜10の間で、0.1ずつ変化させて(For a = -10 To 10 Step 0.1) 、
d^2を出すという物です。
それで、出した物をファイル出力させるという感じでした。
で、For a = -10 To 10 Step 0.1 を
プログラムのどこに組み込めばいいかよく分からないです。
ヒントをください。
お願いします。
>>120
他の部分はわかっているのか?
わかってないだろ。そんな奴にどこに組み込むかなんて
教えて理解できるとは思えないんだが。
12278:04/06/22 08:30
>>121
他の部分というか、a,bの値がそれぞれ限定されてれば、
分かるんですが、a,bを変化させていくとなると、
分からないんです。
>>122
わかっているとはとても思えないんだが。
わかっているつもりなんじゃないの?

ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k03.htm
ここでも読んでみたら?
12478:04/06/22 09:07
>>123
ありがとうございます。
125109:04/06/22 09:22
>>120
前に書いてたd^2 = Σ(i=1 10) {f(a,b,xi) - yi / yi}^2(最小二乗法)の
式を見て、a,bだけの要素で解けると思いますか? xiとyiはまったく与え
られていないのに、a,bの値を変化させるだけでd^2をプログラムが勝手
に求めてくれると?

仮にa,bをそれぞれ+1と置いて、手計算してみた?
12678:04/06/22 10:01
>>125 
xiとyi(10個ずつあります)は分かってますよ。
あと、a,bをそれぞれ+2と置いて、手計算しましたし、
プログラムも組めました。
127109:04/06/22 10:06
>>126
ああ、最初の発言に書いてたね。すまん。
じゃ、組んだプログラムを晒してみたら?
12878:04/06/22 10:19
Private Sub Command1_ Click()
Dim x (10) As Double
Dim y (10) As Double
x(1) = -5.0 : y(1) = 1.0

    省略

x(10) = 4.0 : y(10) = 12.0
Wa = 0
For i = 1 To 10
d = {(2*n + 2 - m) / m }^2
Wa = Wa + d
n = xi
m = yi
Next i
Picture 1. Print Wa
End Sub

a,b がそれぞれ2の場合のやつです。
129デフォルトの名無しさん:04/06/22 10:54
TextBoxに数値しか入力できないようにしたいのですが、どうすればいいでしょうか?

あ、でも ショートカットキーや カーソル、タブキーなどは 有効にしたいのです。
KEYDOWNイベントで該当コントロールでは無効にしたいキーコードを
クリアするようにしたらいいんじゃないの?

後はそういうコントロールを買うかだな。
>>130
Ctrl+Vやマウスでのペーストが駄目じゃないか?
>>131
Clipboard.GetText で判定すればオケ。
133デフォルトの名無しさん:04/06/22 11:47
MouseDown や MouseUp をコンテナ側で先に処理する方法はありませんか?
キーボード処理の KeyPreview = True みたいな感じで。
134デフォルトの名無しさん:04/06/22 12:23
>>133
ない。
135109:04/06/22 14:16
>>128
xi,yiなんかの変化しない値は定数としてプロシージャ外に置くべき。
a,bを等差数列として扱えるなら、現在のループの外側にもうひとつルー
プを作って、開始値に増分値を加算していくように操作すれば?

もしくはa,bを二次元配列として、Form_Load時にあらかじめ読み込み。
外側ループで添字を指定してから、内側ループで計算とか。
>>131-132
おいらはKeyPressイベントとValidateイベントでチェック掛ける。
137デフォルトの名無しさん:04/06/22 15:47
>>133
メッセージフック
138133:04/06/22 16:29
>>134
VBの文法としては無いから、
>>137
でやれと言うことですね。

ありがとうございました。
139デフォルトの名無しさん:04/06/22 16:45
ある Object 変数が、特定のクラスまたはそのサブクラスのインスタンスかを判断するときにはどう書けばよいでしょうか?
140デフォルトの名無しさん:04/06/22 16:50
>>97
はぁ?
141デフォルトの名無しさん:04/06/22 16:51
>>139
if typename(obj) = "clsHoge" then
142139:04/06/22 16:57
>>141
早速の回答ありがとうございます。
obj がclsHogeの時は確かにこれでOKなのですが、
clsHogeのサブクラスだったときも真にしたいのです。
If Typeof obj Is clsHoge Then
144139:04/06/22 17:59
>>143
Typeof 〜 Is でしたか。
コレ、ヘルプに載ってないんですね。
ありがとうございました <(_ _)>
>>144
「If...Then...Else ステートメント」のヘルプには載っていたりして。
146デフォルトの名無しさん:04/06/22 23:02
コマンドボタンを押すと、違うフォームに遷移する
VBの関数ってありますか?

ACCESSなら、docmd.openform"フォーム名"ですけど。
簡単なのはわかってるんですが、どうしても書籍とかで
見つからないです。 簡単すぎて載っていないのでしょうか?
お願い致します
Dim WS As Workspace
Dim DB As Database
Dim RS As Recordset

Private Sub Form_Load()

Set WS = DBEngine.Workspaces(0)
Set DB = WS.OpenDatabase("データベース名") '使用するデータベースファイル
Set RS = DB.OpenRecordset("テーブル名", dbOpenTable) '使用するテーブル

RS.MoveFirst '最初のレコードへ移動
DBGrid1.DataSource = RS 

End Sub

Accessで開いたテーブルをDBGridに表示させたいのですが表示できません。
助けて・・・
>>146
Showメソッドか SetFocusメソッドのこと?
VBでイベント発生時、テキストボックスを作成する事は可能でしょうか。
非表示→表示でもいいのですが、項目がどれだけ増えていくかわからないので
テキストボックスの名前をtextbox01から増やしてその都度作成していきたいんです。

環境はVB6です。
>>149
set objTextBox = New TextBox でいけるんとちゃう?
>>149
それよりその糞みたいな仕様を考え直せ。
>>151
やだよ。クズ
> 項目がどれだけ増えていくかわからないので

馬鹿丸出し。FORMからはみ出すぐらい増えるのか?
糞みたいな仕様を見直せよ。それかプログラマやめろ。
>>150
ありがとうございます。できました。
>>151>>153
いや、確かにバカ丸出しですよね・・・
でも仕様に口出しはできないので会社を辞める方向で考えていきます。
はみ出さないようにスクロールさせる変更を進言するの面倒なのでそのまま作っておきます。
>>154
口出せよ。クソ仕様で困るのは使うユーザなんだよ。クソソフト撒き散らすな。
いくつ作られるかわからんならコントロール配列にすべし。Loadで作成。
しかし糞仕様とか叫んでるやつはなんであんなに興奮してるんだ?
157デフォルトの名無しさん:04/06/23 11:36
pictureboxを別formに渡したいときには、どのような処理をしたらいいですか?
グローバル変数でデータ型PictureBoxの変数を宣言して、そこに代入しようと思
っていたのですが、その変数への渡し方がよくわからないので教えてください。
pictureboxはデフォでグローバル。なので
form1.pictureboxなどとすればどこからでも参照できる。
159デフォルトの名無しさん:04/06/23 12:00
ocxの終了処理ってどういう風にやればいいんでしょうか?

vbで作ったocxをC#に持ってった所、終了際に毎回エラーメッセージを吐きます。
使ってる変数にはNothing入れてるんですが・・・・
Nothing 入れるのは参照アドレスをクリアしてるだけ。
実態はメモリに残っているのでエラーを吐く。
>>159
エラーメッセージも書かない無神経さから治すべきだ
>>161
それぐらい予測つかない?素人は黙っててね。
>>162
フププ゚。
じゃあ出たメッセージを言ってみろよ。
>>163
シラネーヨ
165デフォルトの名無しさん:04/06/23 13:40
>>158
サンクス。やってみます。
166デフォルトの名無しさん:04/06/23 14:07
Formが Loadされたかどうかを 調べるには どうしたらいいのでしょうか?
167デフォルトの名無しさん:04/06/23 14:08
166
isLoad(Form)==True
>166
IsLoaded
169デフォルトの名無しさん:04/06/23 14:24
>>166
Function IsLoaded(FormName As String) As Boolean
Dim Form As Form
For Each Form In Forms
If Form.Name = FormName Then
IsLoaded = True
Exit Function
End If
Next
IsLoaded = False
End Function
>>169
デザインビュー
171デフォルトの名無しさん:04/06/23 15:19
VB6.0 のソースコードを難読化するツールがあれば教えて下さい。
172デフォルトの名無しさん:04/06/23 15:19
VB6で 作成した EXEをインストーラー形式にするには
どうすれば いいのでしょうか?
>>171のソースならそのままでも難読(ry
>>172
DOBON.NET
http://dobon.net/
VBに適したインストーラーを探そう
http://dobon.net/vb/installer/index.html
>>174
172じゃないけどそこ知らなかった。
感謝。
176デフォルトの名無しさん:04/06/23 16:44
「セットアップまたはトランスレータライブラリを読み込めません。」

VBのセットアップでインストーラーを作れたのですが、
それをインストールしようとすると 上記のエラーが出ます。

どうしたらいいのでしょうか?
>>176
ユーザ名が全角ってなオチ?
179デフォルトの名無しさん:04/06/23 17:07
>>178
それは 質問する前に見たんだけど さっぱしわかんないから質問した。

OSによって 入れるソフトが違うのか?
なんかたくさんあって、どれをDLしたらいいのか さっぱしわからん。

>>179
じゃ、あきらめろ。
>>180
冷たい言い方だな。

>>179
残念だが、あきらめろ。
>>180-181
そう言うなよ。

>>179
オレ達はぐぐったページより親切に教えられない。
だから理解できるようがんばれ。
>182
言い方がひどすぎるな。

>179
あきらめなくていいから、氏ね。
>>175
おいらはVisual Studio Installerを使ってる。
msi形式になるのが(・∀・)イイ!

微妙に使い難いけどな(´・ω・`)
>>176のような奴が使いこなすのは無理ぽ。
VBでファイルアップローダーを作っているのですが
URLでファイルをアップロードしたいのです。
掲示板の書き込みはURLで行えますよね?.....cgi?id=xxxcomments=xxx
のようにパラメータをcgiの後ろに持たせると。
しかしファイルアップロードはさっぱりなのです。掲示板と
同じようにパラメータを持たせURLからファイルをアップロード
するにはどうすればよいのでしょう。よろしくお願いします。
>>185
色々勘違いしていると思う。
ファイルアップロードプログラムを組みたいなら、
TCP/IP HTMLプロトコル 辺りを勉強した方が後々面倒が無くて良い。
>>185
あのさあ、「アップロード」って、そのアップロードする相手は何なんだよ。
ひょっとしてサーバーつうのは何処の馬の骨からのどんな糞みたいなファイルでも
受け付けるとでも思ってんの?

FTPのこと言ってるなら基本的に他人のサーバーに勝手にファイルをうぷなんてできねえよ。
こんなの小学生でもちょっと考えれば分かることだと思うけど。

サーバ上のいわゆる「アプロダ」に対してファイルアップデートしたいなら、
そのCGIのクエリの仕様がわからなきゃどうにもならないわけで、
そんなもの具体的なCGIの名前も挙げずに聞いたって誰もこたえられない。

ていうか、どっちにしろ激しく板違い。

ていうか>>186も勘違いしてない?
なんか興奮しやすい香具師が混じってるなぁ。梅雨厨か?
VBに戻りたいような・・


戻りたくないような・・・
190デフォルトの名無しさん:04/06/24 01:44
友達のキーボードが壊れてしまったのでVBで
あ〜ん、が〜ぽのボタンを配置して押すとテキストボックスに入力されていき
コピーして貼り付けるのが楽になるプログラムを作ったのですが
テキストボックスに入力した言葉を変換することができません。
どうすれば変換ができるようになるでしょうか?
>>190
IME関連ので作れるが、キーボード買ってきたほうがラクだよ
192190:04/06/24 01:59
それが友達のPCはノートじゃないんですが本体、モニタ、キーボード一体になってまして・・・
とりあえず修理なり新しいのを買うなりするまでの繋ぎとして作ったんです。
だからそんな機能までつける必要はないのですが、ちょっといいとこみせたいなと思っちゃいまして。
VBを初めて(プログラム自体)二ヶ月程度しかたっていないのですが、
IME関連の事はその程度でも扱えるものでしょうか?
193190:04/06/24 02:02
それが友達のPCはノートじゃないんですが本体、モニタ、キーボード一体になってまして・・・
とりあえず修理なり新しいのを買うなりするまでの繋ぎとして作ったんです。
だからそんな機能までつける必要はないのですが、ちょっといいとこみせたいなと思っちゃいまして。
VBを初めて(プログラム自体)二ヶ月程度しかたっていないのですが、
IME関連の事はその程度でも扱えるものでしょうか?
>>193
あなたのレベルなんて知ったことではないので、やってみることだ。
IME APIとかIMM APIとかで検索するといい
一体型でもノートでも、
安物のUSBのキーボードでも買ってきて繋げば、
キーボード二つになるけど動くよ。
196190:04/06/24 02:35
あ、そういえばそうですね・・・
USBがありましたか
でもとりあえず変換できるようにしてみたいです。
検索してみても全くわからなかったのですががんばります。
とりあえずVBのコードをいじるだけでできるのですよね?
他に何か必要な物があったりしますか?
197デフォルトの名無しさん:04/06/24 05:48
検索能力?
test
199デフォルトの名無しさん:04/06/24 10:15
>>193
わかった 昔の 8ビット機の PC−8001みたいな
イメージだな?(w
200デフォルトの名無しさん:04/06/24 10:17
フレームで そのフレームのイネーブルにあわせて、
そのフレームに貼りつけてあるコントロールのイネーブルを
フレームのイネーブルと同じにするには、どうしたらいいのでしょうか?
フレームがたくさんあるので、みんな共通して使えるように
したいんです。
>>200
それらのフレームを大きいフレームに入れろ。
VisualBasic6.0 SP4
サードパーティツール Grape City (旧文化オリエント)Spread Ocx 3.0J

上記のスプレッドシートでセルの結合(っぽくみえる)を実現したことのある方、
アドバイスをいただけると助かります。

スプレッドの6.0以降はセル結合機能があるのですが、3.0での開発と制限がついており、
なんとかそれっぽく見せようとしていますがなかなかいい方法がうかびません。
やりたいことは3列10行のシートで一番下の行だけ1列目と2列目を結合してテキストを入れたいのです。
203850:04/06/24 11:41
>>885さん

 レス遅れてすいません。

 その方法は試していた様でした。
 もう一度やったけど、だめだったとの事でした。
OSは日本語XPです。

 プロパティウインドウのCaptionやTextなどにはちゃんと表示されるけど、コントロールには化けて表示されるらしいです。
まだやってたのか。

プロパティウィンドウに直接書き込むのをやめて、リソースとして持った方がいいんじゃないかなぁ。リソースだとUNICODEで保存されるし。

取り敢えずOSがXPなら、[コントロールパネル]→[地域と言語のオプション]→[詳細設定][Unicode対応でないプログラムの言語]を「中国語(台湾)」で再起動する。

Visual Basicを起動して、フォームにラベル2個貼り付けて、次のコードを書く。

Private Sub Form_Load()
With Label1
.Caption = LoadResString(101)
With .Font
.Charset = 136
.Name = "NMingLi"
End With
End With

With Label2
.Caption = LoadResString(102)
With .Font
.Charset = 136
.Name = "MS P Gothic"
End With
End With
End Sub

んで、リソースエディタ立ち上げて、

101…台湾語でhogehoge
102…日本語でhogehoge

って書いて保存して実行してみそ。
>>202
オーナードローでそれっぽく見せる。

最下行だけなら問題ないと思うけど、
スクロールとかの場合に再描画できないときがあったりなかったりした気がする。
VB6で使えるプログラムアイコンって32×32ドット、256色までですか?
それともOS依存ですか?
NT4だと48ドットやフルカラーはエラーが出ました。
207デフォルトの名無しさん:04/06/24 21:33
現在、VBでVCのReleaseから作成した、.dllを読み込み実行して、
テキストファイルを出力しているのですが、設定でvbのexeを指定しているので、
その度に出力先を変更しています。
できたら、フォルダを変えても現在のフォルダ上に出したいのです。
何か良い方法はありませんでしょうか?
>>187
板違いすいません。どこが適切化おしえていただけないでしょうか?
自分の行ってるのはファイルアップローダーにURLでアップロードする方法です。
たとえばhttp://49uper.com/up2/index.php?mode=listなどですかね・・・
>>208
そのURLにあるアップローダへVBから手動/自動的にデータをUPしたい、と言うことか?
>>207
親切なエスパーさん通訳キボンヌ
212210:04/06/24 22:33
>>211
ありがとうございます。
213デフォルトの名無しさん:04/06/25 00:35
VBで、wordやexcelを操作できるのはよく本に載っていますが
powerpinterを操作することはできるでしょうか?
(あるボタンを押したらこのテンポで表示するとか)
よろしくお願いいたします。
プログラミングを始めたいと思ってる右も左もわからない初心者なんですが、
VisualBasicって買わないといけないんですか?
それとも、フリーでネットからダウンロードできるんですか?

・・・なんか場違いっぽいな・・・
スレ違いな質問でしたらすみません・・・
>>214
MicrosoftからVB5 CCEがダウンロードできる
216VB5CCE:04/06/25 00:49
>>214
"Visual Basic"で検索したか?
>>214
明日(6/25)、学生証を持ってPCソフトショップへ逝ってきなさい

4830円で買えるVisual Studio.NET theSpoke 2003
http://pc5.2ch.net/test/read.cgi/tech/1087654860/
218鳥取の風:04/06/25 01:47
VB6.0でMSCommを使用し,RS232C経由でデータを受信するプログラムを作成
しておりますが,3バイトのデータ(12,AA,FF等)を受信し,その内容を
テキストボックスに 12AAFF と表示させるにはどのようにしたらよいでしょうか。

1バイトの時は,バイト型の動的配列を作り

Dim Buffer() as byte
Buffer = MSComm1.Input
Text1.text = Hex(Buffer(0))

でできるんですが・・2バイト以上の時はどのようにするのかが分かりません。
お力をおかし頂けませんでしょうか。よろしくおねがいいたします。
>>218
Text1.text = Hex(Buffer(0)) & Hex(Buffer(1)) & Hex(Buffer(2))

ループまわしてもいいが。
220鳥取の風:04/06/25 03:06
>>219
できました。ありがとうございました。
221デフォルトの名無しさん:04/06/25 07:57
csvのファイルをvbで読み込みたいんですけど、参考になるサイトとかありますか?
検索したんですけど4000件とか出てきて…
お願いします。
>>221
4000件もヒットしたなら片っ端から眺めて行って理解出来る
ページを探せばいいのにと思うんだけどな(´・ω・`)

5件もヒットせずに全部見ても収穫なしで終わってしまう事
に比べれば遥かにマシだと思うけど(´・ω・`)
>>221
Line Input # と Split関数 を調べれば?
224デフォルトの名無しさん:04/06/25 09:04
フレームに貼りつけてあるコントロールが、どれのフレームなのか 調べるには
どうしたらいいのでしょうか?

つまり、コントロールから それが どのフレームに貼りついてるのか調べたい。

逆に、フレームにどのコントロールがあるか 調べられないでしょうか?
parentプロパティで出来たと思う。
226デフォルトの名無しさん:04/06/25 09:42
Containerでいけるのかな?
でもFrameのCaptionが すべて "" の場合は、見分けがつかないかな?
227デフォルトの名無しさん:04/06/25 09:43
parentプロパティでわかるのってFormだろ?
228デフォルトの名無しさん:04/06/25 09:58
>>225
Name でOK

Frame が Controls 持って無いのナンデダロ?
.Net は持ってる。
Form.Controls 列挙して、.Container チェックしないとダメだよね。

229228:04/06/25 10:00
>>226
だった、ゴメソ
230SMI:04/06/25 10:51
フォームにテキストボックス(Text1)を貼り付けて、値を取得するときは
Dim a as string
a=Text1.Text
のような形で取得しますよね。
この.Textの部分を変数でおきかえることはできるのでしょうか?
たとえば
Dim a as string
Dim b as string
b=".Text"
a=Text1 & b
のような形(これではエラーがでました)取得できるのでしょうか?
>>230
CallByName
あとそのエラーの原因は後学のために別途考えれ
232デフォルトの名無しさん:04/06/25 11:03
if b=".Text" then a=Text1.Text
としてやる。
233デフォルトの名無しさん:04/06/25 11:09
>>228
>Name でOK

これってどうすればいいのでしょうか?
234SMI:04/06/25 11:26
>>231
>>232
ありがとうございます。
早速試してみたいと思います。
235228:04/06/25 11:39
>>233

コントロールの親フレーム
Command1.Container.Name

フレームの子コントロール
Function Controls(Frame As Frame) As Collection
Dim Control As Control

Set Controls = New Collection
For Each Control In Frame.Parent
If Control.Container Is Frame Then
Controls.Add Control
End If
Next
End Function

使い方
Dim Control As Control
For Each Control In Controls(Form1.Frame1)
Debug.Print Control.Name
Next
236デフォルトの名無しさん:04/06/25 11:42
"オートメーションエラーです。
アプリケーションがinput-synchronousコールをディスパッチしているので、
outgoingコールは呼び出せません"

って、エラーが出たんですけど、どういうことか
わかる方、教えてください。
237デフォルトの名無しさん:04/06/25 11:51
>>235
サンクス
Container.Name
っていう意味だったのか。わかったよ。
>>230
ふつうにコントロール配列使うほうがいいと思うけど。
239236:04/06/25 14:08
だれか、>>236 のエラーメッセージについて
教えてエロい人!
>>239
アプリケーションがinput-synchronousコールをディスパッチしちゃってるから
outgoingコールは呼び出せねぇよってことじゃね?
241239:04/06/25 14:46
>>240
レスありがと。
教えてチャンでごめん。

input-synchronousコール、outgoingコール
って、何なんですか?
>>241
Shell32.dll の必殺技。
Win95 や WinNT の Shell32.dll だと、たまに発動を失敗する。
243デフォルトの名無しさん:04/06/25 14:52
>>205
遅くなりましたが、貴重な意見ありがとうございました。
244デフォルトの名無しさん:04/06/25 14:53
>>241
シラネーヨ
246239:04/06/25 15:30
>>242
なるほど。

>>245
ありがと。
これはおれもググッてみつけてますた。

NTで、3ヶ月ぐらい連続稼動させてるマシンで
このメッセージとワトンソ博士が発生したんすよ。
原因調査しないといけないのですが、
ワカランのですよ…。
>Win95 や WinNT の Shell32.dll だと、たまに発動を失敗する。
これで、納得してくれないかなぁ…。



>>246
>>245に原因と解決方法が書いてるような気がするが・・・まあ、気のせいかな。
248デフォルトの名無しさん:04/06/25 15:59
Formに貼り付けたコントロールのEnabledをfalseにすると値が薄い字で表示
されるようになってしまうんですが、これを回避する方法ありますか?ACCES
Sだとlockedプロパティで回避できるのですがVBで同じことをしようとすると
プロパティエラーになってしまうので困っています。初歩すぎるのかWEBでも解
決方法をみつけられなかったので知っている方がいたら教えてください。
249239:04/06/25 16:11
>>247
たしかに。

"Microsoft Windows のシステムファイルの一つに Shell32.dll というものがあり、そのバージョンに依存する問題です。"

って、ところですよね?
解決方法はバージョンアップでいいのかも
しれないんですが、発生したモジュールが
せいれつ君じゃないので原因が…。

レスくれた皆さん、ありがとう。
ここからは自分でナントカしてみます。
250デフォルトの名無しさん:04/06/25 16:26
>>248
フレームに貼りつけて、そのフレームをイネーブルにする。
251デフォルトの名無しさん:04/06/25 16:54
App.EXENameの値は、どこを変えると変わるの?
EXEの名前だと言うのはわかるのだけど、
VisualStudioの中で実行した場合は、
プロジェクトの名前になってしまうの?

252デフォルトの名無しさん:04/06/25 16:57
プロジェクトのファイル名になってしまうのかなぁ?
回避策はあるのでしょうか?
何か問題でも?
254デフォルトの名無しさん:04/06/25 19:28
>> 253
ファイル名のプリフィックスにprjをつけてしまうと、
EXE名と異なってしまうものですから・・・
何か問題でも?
256デフォルトの名無しさん:04/06/25 20:48
>>254
.Exe の作成で名前指定できなかった?
>>254
んなもんつける方がおかしい
258デフォルトの名無しさん:04/06/25 21:16
ユーザーコントロールの Initializeイベントが、プログラムの終了時にも発生してる気がするんですが、これって仕様ですか?
259258:04/06/25 21:44
>>258
VB6.0はフツーだ・・・。
VB5.0の問題かぁ
それにしたって、Terminate の後に発生する Initialize ってどうよ。
(T^T)o
VBでiniファイルをつくってそこへ読み書きをしたいです。

なにかいいサイトはありませんか?
>>260
いいサイトがありますよ。内緒だけど、お教えします。
http://www.google.co.jp/
262221:04/06/26 05:14
>>223
返事おくれてすいません

ありがとうございます、今から調べてみます
>>261
いいサイトだな!
264デフォルトの名無しさん:04/06/26 07:50
VBでListBox使っているんですけど、
最大化したときやウインドウを大きくしたときなどに
ListBoxnoサイズも変更したいんですけど、どうやればいいんですけ?
move何とかって言うのを使うみたいな所までは調べたのですが。
VisualBasic6.0でWindowsXPです
よろしくお願いします
>>264
フォームのサイズが変更されたときに
リストボックスの幅と高さを変更するだけじゃないか
>>258-259
ダメな人ほど過剰にすぐにMSに責任転嫁したがる。
VB5で何度もコントロール作っているが、そんな現象に遭遇したことはない。

コントロールを使用するアプリが、いわゆる「暗黙の変数宣言」をする糞コードに
なっているだけの予感がして仕方がない。
>>264
あと、formのリサイズイベントも捕まえろ。
268デフォルトの名無しさん :04/06/26 17:42
NBASICしか経験の無い超初心者です、
NBASICのメインルーチンに相当するプログラムはどのような形にするのでしょうか
また立ち上げ時に数値を初期設定しておきたいのですがどうしたらよいのでしょうか
くだらない質問で申し訳ありません、宜しくお願いします。

>>268
・メインルーチンに相当するプログラム
今のプログラミングスタイルではそんなものは無い

・立ち上げ時に数値を初期設定
Initializeイベント等で設定するが、そのまえに入門書を買ってきましょう
>>268
プロジェクトウィンドウのプロジェクトにマウスカーソルを合わせて、右クリックで「プロパティ」を開くと、
「スタートアップの設定」というのが在り、ここでメインとなる「フォーム」を決めます。
フォームの他にも「Sub Main」というのが在り、「標準モジュール」に書かれた「Main」というサブルーチンをメインにする事もできます。
まぁ、後はそこ等辺を適当に調べれば良いと思いますよ。
>>268
フォームがないプログラムを作るつもり?
数値の初期設定って代入すればいいだけじゃん。
もっと具体的に書かないと回答できないよ。
CGIに大量のクエリ(主に<select>)を送りたいのですが、
手入力だと面倒で、
htmlを自動生成する方法だとrefererが変わってしまうので別の問題が発生してしまうんですよ。

IEコンポーネントを操作して、
VBからHTMLの中のフォームを選択したり、書き込んだり出来ますか?
>>272
直接socketでやりとりすれば好き放題じゃん?
274272:04/06/27 01:32
うう、めんどくさいのです。
できれば、ある中で一番簡単な方法でやりたかったもので。
http勉強してきます。
275はちみつ六郎:04/06/27 10:37
テキストエディタを作っています。
テキストボックス(リッチテキストではなく普通の)で、
左半分の縦方向に選択したりというのはどうやるんでしょうか。
既存のエディタでたしか「短形選択」という名前の機能だったと思いますが…
新しい2ch語誕生の瞬間に立ち会えた記念かきこ
短形選択じゃなくて矩形選択だと思う。

矩形選択ってVBのテキストボックスでは無理じゃないかなあ。
すくなくとも標準の機能にはない。
>>275
俺もVB標準のテキストボックスでは無理と思う。
自作するしかない。
(・∀・)タンケイ!!
クケイなんだよね。俺も二十歳まで間違えてたなぁ。
>>279
俺は、ノリガタって読んでますた。。。orz
コナミ矩形波倶楽部
>>275
テキストボックスじゃ縦方向に反転させるのが無理。
内部処理もUnicodeだと不利。
二次元のバイト配列にシフトJISで格納するのかな。
すごい頭の体操になる。
ひととおりの機能がちゃんと作れたら一人前と言っていいかも。
split関数について質問です
3,2,1の文字列を切り出すとき
v=split("3,2,1",",")
v(0),v(1),v(2)で値が3,2,1と入るのですが
文字列が3,2だけのときてどうしてます?
,の数を調べる?エレガントな方法ないですかね
>>283
意味がわからない

Splitの返り値に、要素数を明示して宣言されていない動的配列を用意してあげれば自動的に要素が確保されるよ
3,2,1の場合ではsplit関数で
dim v as variant
v=split("3,2,1",":")
debug.print v(0)
debug.print v(1)
debug.print v(2)
はOKですが
3,2のデータだと
debug.print v(2)はエラーになるのでなんかいい方法がないかと。
セミコロンを数える関数を作ります、
>>285
横着者にPGとしての今日を生きる資格はない。
んーなもの普通MSDN眺めてりゃ(っていうか、一ヶ月もVBやってりゃ)
自ずと解決するでしょ。

ヒントは上方境界を英訳して短縮すると.....。
Uboundですね
さっきわかりました。
少し疲れてるので許してください(w
288デフォルトの名無しさん:04/06/27 16:42
"短形選択"ってググると108件もヒットしてびっくり。
ひょっとして本当に短形選択って用語は存在するのか?
単に矩形選択のつもりで誤用されてるにしては多すぎる気がするんだけど。
108件ならそんなもんだろ。間違いだと思われ。
>>290
3年程前に47氏がバカにされてますね。
http://pc3.2ch.net/software/kako/1000/10000/1000014866.html
292はちみつ六郎:04/06/27 17:03
>>276-282
レスありがとうございます
矩形選択ですか…いやーはずかしいw

やはり実現するとなると難しいようですね…
同僚がPictureBoxで作るのはどうかと言ってました。
たしかにピクチャーなら矩形選択も思いのままでしょうが、
基本的な機能は網羅したんで今から作り直すとなるとかなりだるいです。。

>>288
あらためて「矩形選択」でぐぐってみるとしますw

293デフォルトの名無しさん:04/06/27 17:09
ホットキープログラムの質問です。
DirectXを使ったフルスクリーンネットゲームで
先に実行してあるVBプログラムのホットキーを使いたいんですけど
なぜか使えません。普通の画面で使う分には何処からでもどのアプリ
からでもホットキーが有効になってるんですけど、フルクリーンゲーム
だけはどうにもなりません。Win98se,vb6.0です。よろよろ
どうもVBの配列は苦手だ。
添え字が1からはじまるらしいが、境界越えるアクセスも
エラーにならなかったり、Cと勝手が違う。
VBScriptの質問もここでいいですか?
>>295
とりあえず言ってみれば
プログラムを作ったんですが、「完全コンパイル後に開始」して、プログラムを終了。
VisualBasic6.0を終了しようとすると、

vb6.exe - アプリケーションエラー

0x0049949e の命令が 0x00000038 のメモリを参照しました。メモリが readになることはできませんでした。

って、エラーが必ず発生するようになってしまいました。
exeを作っても普通に動いてるんですけど、どうしてもわからないんです。
よろしくお願いします。

環境は、VB6+MDB(Access2000)+Spread6.0+ActiveThreeDPlus3.0です。
298297:04/06/27 18:02
MDBはDataEnvironmentで接続しています。
OSから入れなおし
300295:04/06/27 18:19
VBScriptに関する質問ですが、exeファイルを実行させるにはどうすればよいですか?
>>297
Win32API使ってる所か、自前のDLL使ってる所が怪しいね。
動的にメモリ確保してるところで範囲外にアクセスしたりすると、
終了時にそんなのが出る。
>>293
それはたぶんフルスクリーンにしているアプリケーションがホットキーをマスクしてるんだと思うんで、
そのアプリケーションが自分で作成したものじゃないなら諦めれ。
303293:04/06/27 19:33
>302
がびーん!そうですか・・・
ハードウェアレベルで制御したらいけるんですかw
うーむ
304297:04/06/27 19:34
>>301
自前のDLLはまだ作る技量がないんで(苦笑)
Win32APIですか。
頑張って探してみます。
ありがとうございました。 <(_ _)>
>>295
「VBScript アプリケーションの実行」でググれ、それぐらい。
>>294
ちょっとまて。

VBの配列って添え字は基本的には0からだろ?宣言時に
確保される配列の要素数は違うけどな。

Cの int hoge[5]; は、hoge[0]〜hoge[4]だけど、
VBの Dim hoge(5) As Integer は、hoge(0)〜hoge(5)になる。

あと、VBの場合は、Dim hogehoge( 5 To 10) As Longなんて
宣言も出来る。この場合は、hogehoge(5)〜hogehoge(10)になる。

ちなみにOption Base 1が宣言されている場合は、要素は1から始まる。
>>306
ども。

Dim hoge(5) As Long で宣言して
hoge(10) = 1000
なんてのも言語的にOKなんですかね?

ReDim とか Preserve とかあるけど、きちんと
使うべきなんでしょうか?
>>306
すんません。試したらエラーになりますた。
やっぱ明示的に拡張しないとダメみたいですね。
>>>307
てか、Cでもそんな事やってたのか?
テキストファイルに設定等々を記録して於いて
そこから読み込ませる、そこへ書き込ませるよ
うにしたいのですが、どうしたらいいのでしょうか?

だいたい10行ほど使いたいのですg
>>310
iniファイルを扱うAPI使うか、自分で作るかだ
>>299
市ね!
>>309
Cだと>>307のコードが動いてしまいそうなところが怖いよな。
314297:04/06/28 08:56
>>301
見てみたんですけど、全くわからないです。。。
exeがきちんと動作してるんで、ほっといてもいいですか?
エラー個所の発見の仕方を教えてください。
お願いします。 <(_ _)>
315デフォルトの名無しさん:04/06/28 09:42
横着者だからPGが必要なのさ。
いかに簡単に手抜きしてできるかがPGの基本だ。
316デフォルトの名無しさん:04/06/28 10:56
IEのSubmitイベントをIE上で動作しているActiveXコントロール(VB)で
受け取ることはできるんでしょうか?
どなたか教えてください。お願いします。m(_ _)m
317297:04/06/28 11:41
DataEnvironmentってややこしいですね。
ちょっといじったら、エラーがでなくなりました。
わけわからん。 OTZ
水金地火(ry の惑星モデルができねえよ〜〜
だめだ・・・・OTZ
開発関連全ファイルを別のPCに持っていって同じことをしたら
エラーが発生しました。。。
環境は同じなんですけど。(T▽T)
access2000を使っていて、コマンドボタンクリックのイベント中に
クエリで得たレコードをテーブルに追加したいのですが、いい方法がありますでしょうか?

テーブル1:項目1、項目2、項目3
クエリ:項目A、項目B
で、項目1にはVB上で特定の数値、項目2=項目A、項目3=項目Bに
という感じです。
321花鳥:04/06/28 13:01
すいません。VB初心者ですが誰か教えて下さいm(_ _)m

★テキストボックスにフォーカスが移ったときに、
(そこへ既に入力されてる)文字列が選択状態に
したいのです。

簡単なんでしょうか・・・?

是非お願いします。
>>321

Private Sub Text1_GotFocus()

  With Me.Text1
    .SelStart = 0
    .SelLength = Len(.Text)
  End With

End Sub
323258:04/06/28 13:23
>>266
VB5.0は、ユーザーコントロールを載せたフォームがデザインビューで、
開かれていると、プログラム終了時にユーザーコントロールの Initialize
が呼ばれる。
同じソースをVB6.0で試してもそうはならない。
これって、マイクロソフトも「どうよ」と思ったからだと思うのだが、どうよ?
>>323
さぁ?
325デフォルトの名無しさん:04/06/28 13:53
>>320

.Fields(0).Valueとか使えないか?
326297:04/06/28 15:07
Access2000でパスワード付のMDBを作って、Data Environmentで
接続しています。
固定だったら接続できるのですが、インストールディレクトリを
自由に変更しても大丈夫なように、プログラムで設定したいと
思っています。どのようにすればいいのでしょうか。
よろしくお願いします。 <(_ _)>
>>326
VB の App.Path に相当するものを探せ。
328297:04/06/28 15:26
>>327
そんなこといわずに教えてくださいよ〜。(^▽^)/
>>328
キモイ
ていうか、ほとんど答えじゃん
331デフォルトの名無しさん:04/06/28 15:46
>>326
で、
>環境は、VB6+MDB(Access2000)
なら、
App.Path が答えそのものだと思うんだが。
332297:04/06/28 15:56
>>331
appは2重起動のチェックにもつかってるからわかるんですけど
Data Environmentの設定の仕方がわからないんですよ。
333デフォルトの名無しさん:04/06/28 16:19
よろしくお願いします。
VB6ではじめてDDEを使ってみたのですが、テキストボックスなどのオブジェクトを使って
DDEのリンクを張る所まではわかりました。
しかし、テキストボックス等のオブジェクトを使わずにたとえば変数等をDDEでリンクさせる方法
がなんともわかりません。
簡単なサンプル等、無いでしょうか?
334331:04/06/28 16:25
>>332
DataEnvironment1.Connection1.ConnectionString
は?
335297:04/06/28 16:33
>>334
msgboxで値を表示して設定の仕方がわかりました。
ありがとうございました。
また、よろしくお願いします。 <(_ _)>
>>333
DDEはVB.NETからサポートされなくなります
今のうち、DDEは無かった事にしておくと幸せになれます
337花鳥:04/06/28 17:00
>>322

ありがとうございましたm(_ _)m助かりました
338333:04/06/28 18:37
>336
ご忠告ありがとうございます。.netの件は十分承知しています。
しかし、相手方がDDEでエクセル等にデータがジャンジャン取込めるコトを売りにしている
ソフトでして。
DDEは最近、そんな感じで冷遇されてて、どこもあまり取り上げず、いいサンプル等も
見つからない次第で。
339デフォルトの名無しさん:04/06/28 19:47
.hWnd プロパティを持たないコントロール(例えばOLEコントロール等)
のウィンドウハンドルを取得するにはどうしたら良いでしょうか?
>>338
MS的には時代遅れなDDEじゃなくてCOM使えって事になってるしな。
341デフォルトの名無しさん:04/06/28 20:30
すいません、テキストファイルを1行ずつ読んでテキストボックスにいれたいのですが
改行の時に、vbCrLfやchr$(13)&chr$(10)を使っても改行してくれません。
演算には & をつかっていて、改行されるべきところが ・・ と出て一行の文になってしまいます。。
342デフォルトの名無しさん:04/06/28 20:32
自己解決しました。すいません
343109:04/06/28 20:36
MultiLineプロパティを忘れるのは良くある話だ。
344333:04/06/28 22:40
DDEで値を値を、テキストボックスとか使わず変数に取り込むキーワードとしてLink_Excute
とかたどりつきましたが、まだイマイチよくわかりません。

手順てきには・・・
1.リンクイニシャライズでDDEリンクを作る。
2.リンクエクスキュート イベントが発生したら、バッファを読みに行く。

こんな感じに見えるのですが、あっていますか?
経験のあるかた、どうかヒントをお願いします。
>>339
そのコントロールがウインドウを持っているとは限らない。
あきらめるか座標からウインドウハンドルを取得するAPIを使ってみるか。
346339:04/06/29 10:18
>>345
Spyで見るとドキュメント読込み後にはウィンドウを持っているようです。

>座標からウインドウハンドルを取得するAPI
Spyが使っているのもこれでしょうか。
ウィンドウの親子関係を辿って行く方法はどうもうまく行きませんでしたので
これで試してみます。
347デフォルトの名無しさん:04/06/29 10:22
質問させていただきます。

VB6.0から、リナックスに接続し、
シェルを実行したいのだが、
どうやればいいですか?

コードの提示か、
参考URLを提示していただけると助かります。

よろしくおながいいたします。
rfc854
>>344
おおむねそんな感じだとおもいます。

LinkExecuteは任意の文字列を送りつけてソース側で構文解析して使う。
たとえばExcelは[open("%1")]という文字列を受け取るとファイルを開いてくれる。
つまり変数の中身を文字列で受け渡すことになるな。
構文解析は全部自前でやる。
受け取る文字列を限定してしまえば、たとえば昔ながらの電文形式で何桁目は
何とか決めてしまえば解析は楽。

ソース側はForm1.LinkMode=1にして、デスティネーションは
Text1.LinkTopic = "ソースのApp.Title|ソースのForm1.LinkTopic"にしてから
vbLinkManualでLinkExecute "文字列"すればソースでLinkExecuteが発生するので
処理しろ。

あとはMSDNオンラインをDDEで検索すればいろいろ出てくる。
たとえばLinkExeucuteのエラー285は無視しなければならない。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;408173

DDEはOLEの基礎技術になっている(んだよな?)ので、Longhorn化しても
しばらくはサポートされると思われ。
どこかにC#でゴリゴリ書いたDDEのサンプルがあった(見つからない)から
それをライブラリにすればVB.netからは使えるかもしれない。
>>347
あははは
351デフォルトの名無しさん:04/06/29 10:55
352351:04/06/29 11:08
353デフォルトの名無しさん:04/06/29 11:20
>>351さま
いろいろありです。
354デフォルトの名無しさん:04/06/29 11:30
こんにちは。formに10文字入力できるtextboxコントロールを貼り付けているの
ですが、実際には5文字分しか画面上では範囲が取れませんでした。そこでtext
boxをスクロールできるようにしたいと思うのですが、方法が見つかりませんで
した。何か方法をご存知の方がいたら是非教えてください。HScrollBarを使用
してみたのですが、Changeプロシージャにどういうコードを記述すればいいの
か悩みこんでしまいました。
355デフォルトの名無しさん:04/06/29 11:55
>>354
TextBoxの ScrollBar = 1 (水平) じゃだめなの?
AccessやExcelでVBを使っていて思ったのですが
Excelのセルの文字列を比較する問いにcells().velueで比較するとエラーが発生し
cells().textでエラーがなくなりました。
Accessのフォーム上に配置されたテキストボックスの値(文字列)を使用するときには
textbox.textでやるとエラー、.valueで正常動作でした。

.Textと.Valueってどういう概念で取得してくるんでしょうか?
使い分けがよくわかりません。よろしくお願いします。
>>356
Textは表示形式による処理が済んだ値、Valueはもともとのセルの値じゃないのか?

で、元の話。エラーが発生したのは何番のエラー?どういうメッセージが出たの?
>>357
ありがとうございます。
例えばAccessだと.Value時に
「コントロールがフォーカスを取得していないときに
コントロールのプロパティまたはメソッドを参照することはできません。」
というようなメッセージが出ます。

おっしゃる通り、表示処理後とそこに格納された値、という意味であれば
このエラーメッセージも納得できました。
Excelでは実行エラー13で形式が違うとかで怒られたのですが、今試してみたら
どちらでも動作しました。セルに入っていたデータそのものに問題があったのかもしれません。
ありがとうございました。
ローンの返済回数の計算を

                    月返済額
          log{―――――――――――――――}
                月返済額−借入総額×利率
      返済回数=――――――――――――――――――――
                 log(1+利率)

の式を使ってマクロで計算しようと思っています。
今、月返済額=TextMonth・借入総額=TextPrincipal・利率=Textterestとあてて
Private Sub BtnCalculate_Click()
TextBox1.Text = Log(Val(TextMonth.Text) / (Val(TextMonth.Text) - CCur(TextPrincipal.Text) * Val(Textterest.Text) / 12)) / Log(1 + Val(Textterest.Text) / 12)
End Sub

というふうにしてみたのですが "実行時エラー'424'オブジェクトが必要です。"とでて
うまく動いてくれません。どのように書き直せば動きますでしょうか?
環境はOS XP, Excel 2003, Visual Basic 6.0,です
360デフォルトの名無しさん:04/06/29 17:07
開いたファイルの任意のアドレスに入っている値を表示させるにはどうしたらいいんでしょうか?
>>359
そのままコピペしたらできました。Office2000環境ではありますが。
なのでBtnCalculateボタン、Textbox1、Textmonth、textprincipal、
textterest(?)のオブジェクト名が間違っていないかを確認したほうがいいと思います。

あと、Excel2003、VB6っていうのは?
VB6アプリからエクセルのフォームを読みに行ってるとかでしょうか?
だとしたらフォームが見えてないかもです。
>>360
binaryモードでファイルを開いてgetして表示する。
>>360
Excel?Access?バイナリファイルのアドレス?
>>363
書き込む場所がちがいますよ。↓へどうそ。
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
 VB6を使って、テキストファイルのデータをとAccess2000の.mdbファイルに
変換するアプリを作ろうとしています。
 いろいろ本を読んで、まずは簡単な方法として「ADOデータコントロール」を
使ってデータベース内のレコードを表示するところまでたどり着けました。
 次に、テキストコントロール内のデータを新しいレコードとして登録したいの
ですが、その本やヘルプを読んでも「Data Environment」を使った方法しか載
ってないのです。
 「ADOデータコントロール」から簡単にレコードの登録はできないのでしょうか?
もし、不可能であれば全てを「Data Environment」を使ったアクセス方法に変更
するしか仕方無いのでしょうか?
(この方法ではオブジェクト変数とかいろいろ難しい様に感じるのです・・)

 よろしくお願いいたします。
>>359
log Ccur 関数がぁゃしぃ
367デフォルトの名無しさん:04/06/29 19:24
ぬるぽ
ガッ
369359:04/06/29 21:24
>>361
今確認してみましたがオブジェクト名はどうやら間違ってなかったみたいです。
説明が足りずすみません、エクセルのVBediterからVBをたちあげてマクロを作ろうと
思ってやってみました。なので、フォームを読みに行っているわけではないです・・・たぶん。
レスありがとうございました。

>>366
どうおかしいでしょうか?正直どこをどう直せばいいかさっぱりなんです。
最初の数式はあってると思うんですが・・・。
>>359
1箇所だけCCur関数使ってるのはなんで?
特に理由が無いならためしにVal関数に変えてみ?
>>359
一つ一つつぶしていこうよ。
TextBox1.Text=1
から始めて、どの関数、オブジェクトを追加したときに
エラーが発生するか調べる。
これは誰かに頼むんじゃなくて自分で調べるもんだぜ。
その上でヘルプを見ても理由がわからなければ
同じ現象が発生する最低限のコードを示して質問する。
これが普通のやり方なんだよ。
372359:04/06/29 22:13
>>370
学校で配布されたテキストを元にいじりながらやっていたので
CCurのまま使っていました、変えてみます!

>>371
そうですよね、本当に教えて君ですみませんでした。
これからつぶしにかかってみます、その後いろいろ試してもわからなかったら
また質問させてもらってもいいでしょうか?
>>372
やることやってから書き込め。
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ    結局、宿題なの…
  | ____ /   U    :::::::::::U:\
  | |359 名前 // ___   \  ::::::::::::::|
  | | ローンの|  |   |     U :::::::::::::|
  | |       |U |   |      ::::::U::::|
  | |       | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::
.NETスレにもSpoke厨が大量発生するんだろうな。(´・ω・`)
376デフォルトの名無しさん:04/06/29 22:35
ていうか、VBに10底のlogってあったっけ?
確かe底のはずだから、底の変換もかます必要あると思うんだが。
>>376
底は(1+i/12)だから、Logの割り算になってるのでは?
初心者ですいません。初めてユーザーコントロールに挑戦して見ました。
といっても、テキストボックスが2つのってるだけのものです。
これらのコントロールがフォーム上に複数のっています。

教えて頂きたいのですが、このユーザーコントロール上のテキストボックス1に
数字が入力されると、同一コントロール上のテキストボックス2に進み
何も入力されていない場合には、
Returnキーが押されると、次のユーザーコントロールに進むようにしたいと思います。

この場合、コントロールに次の移動先を書くべきでしょうか?それともFormでコントロールすべきでしょうか?

分かりづらい説明で申し訳ありませんが、よろしくご教示ください。
>>378
ユーザコントロール内で処理するべき。
外部からの制御が必要ならコントロールにまとめる価値がない。
>>378
次のコントロールまでユーザーコントロールに書くと堅いコントロールになってしまうのでやめた方が良い。
「何も入力されていない場合にEnterキーが押された」条件でEventを発生させ、フォーム側で制御させた方が応用が利く。
381378:04/06/30 09:25
ありがとうございます

この場合、飛び先もコントロールに書くべきなんでしょうか?

なんか上手い方法があるような気もするんですが・・・
382381:04/06/30 09:31
>>380
あ、被った。すいません。ありがとうございます。ナルホド
383デフォルトの名無しさん:04/06/30 09:35
>>378
リターンキーが押されたら、タブキーが押されたことにする。
VB6にて、
ネットワーク上の共有フォルダを、
ユーザーとパスワードを指定して、
エクスプローラーを起動したいのですが、
どうすれば良いのでしょうか?

よろしくお願いします。
http://homepage2.nifty.com/orangepekoe/ura/ura.htm

を見る限り、UID/PWDを指定しての共有アクセスはExplorer自身に備わっていない。
なので、アプリからNETコマンド(だっけ?)で共有にアクセスできる状態にした上で、
上記ページのオプションでExplorerを起動。
386365:04/06/30 13:20
 >365ですが、どなたも御存じないでしょうか?
 2ch内なら、このスレッドと思ったのですが・・・
>>386
まず、質問内容が曖昧すぎ。
次に、ADOとかのサンプルを見たのかと。
あと、DBがらみでミドルウェアを使うなら、きちんと自分で理解してくれ。
>>386
お仕着せなADODCよりも、自分で最初から準備したほうがいいよ。
ttp://hp.vector.co.jp/authors/VA030421/prog201.htm
389デフォルトの名無しさん:04/06/30 20:24
質問があります。
以下のようなソースで、
コンボボックスに文字を入力し、入力値を自コンボボックスのリストと比較して、
存在すればコンボボックスのインデックスに設定したいのですが、
Combo1_Change のあと Command1_Click を行うと、
リストインデックスが-1になってしまいます。
どのようにしたら書き換わるのでしょうか?
(XP + VB6.0sp5)

Private Sub Combo1_Change()
Dim i As Integer
Dim strTmp As String
strTmp = Me.Combo1.Text

For i = 0 To Me.Combo1.ListCount - 1
If strTmp = Me.Combo1.List(i) Then
Me.Combo1.ListIndex = i
Call MsgBox("現在のインデックス = " & CStr(Me.Combo1.ListIndex))
Exit Sub
End If
Next i
End Sub

Private Sub Command1_Click()
Call MsgBox("現在のインデックス = " & CStr(Me.Combo1.ListIndex))
End Sub
390365:04/06/30 20:46
>388
 ありがとうございました。
 参考にさせていただきます。
391デフォルトの名無しさん:04/06/30 21:41
C言語で、
main(int argc,char *argv[])
の「argc」でコマンドライン(パラメータ?)引数の個数が分かるじゃないですか。
ではVBではどうやって引数の数を取得すればいいのでしょうか。
教えてください。

これって難しい質問なのか、超初心者の質問なのかも定かです。
392デフォルトの名無しさん:04/06/30 21:41
DirectInputを使ってキーボードの入力を簡単に取得することができたのですが
それとは反対にキーボードに出力するのはできるのでしょうか?
簡単に言えばソフトウェアキーボードみたいな感じに、フォーム内のボタンを押して
外部のテキストボックスに文字を入力していく、ってなやつです。
よろしくお願いします。
393デフォルトの名無しさん:04/06/30 23:21
VB6対応のリファクタリングツールってないのかな?
VBって、支援ツールが極端に少ないよね。
>>391
Command関数を解析
>>392
キーボードドライバーを作らないのであれば、Sendkeys等。
396379:04/07/01 00:31
>>380-381
飛び先はTabindexで指定のつもりだった。
380氏の構想の方が応用範囲は広いですね。
397デフォルトの名無しさん:04/07/01 01:44
テキストボックスの内容を一行ずつ取得するにはどうすればいいんですか
>>397
一文字づつ改行コードを探すか、Splitでバラバラにして読むか
>>398
ありございます
>>389
コンボボックスの Styleプロパティ が ドロップダウンコンボ 及び 標準コンボ の場合、何故か ListIndexプロパティ への書き込みが反映されません。
スマートな方法としては Public変数 に ListIndex値のコピー を持たせておく方法があります。
どうしても ListIndexプロパティを変えたい場合は、まず、PictureBoxを1つ設置し TabStop を Falseにして表示範囲外に置き、次のようにします。

Private Sub Combo1_Change()
Dim i As Integer
Dim strTmp As String
strTmp = Me.Combo1.Text
For i = 0 To Me.Combo1.ListCount - 1
If strTmp = Me.Combo1.List(i) Then
Me.Picture1.Tag = i
Me.Picture1.SetFocus
Exit Sub
End If
Next i
End Sub

Private Sub Picture1_GotFocus()
Me.Combo1.ListIndex = Me.Picture1.Tag
Call MsgBox("現在のインデックス = " & CStr(Me.Combo1.ListIndex))
Me.Combo1.SetFocus
End Sub

これでいけると思います。
401400:04/07/01 09:57
訂正:
ListIndexプロパティ への書き込みが反映されません。

ComboBoxがフォーカスを持っている間に変更された ListIndexプロパティ への書き込みが反映されません。
402デフォルトの名無しさん:04/07/01 13:35
「プロシジャーの宣言が、イベントまたはプロシジャーの定義と一致していません」
というエラーが出るんですが、考えられる原因を 教えてください。
403デフォルトの名無しさん:04/07/01 13:47
実行時エラー '424':
オブジェクトが必要です。

というエラーが出るんですが、考えられる原因を 教えてください。
>>402
タイプミス。

>>403
用意してない物を使おうとした。
405デフォルトの名無しさん:04/07/01 16:58
構造体をフォームのGENERALのところでPUBLICで宣言したら、
定義できませんといわれました。どうしたら構造体で使えますか
406デフォルトの名無しさん:04/07/01 17:13
>>405
漏れも昔VBでそういう事あったよ。
フォームモジュールが一種のクラスモジュールだから、多分、構造体を
定義できないんでは?って、考えたけどな。
SHBrowseForFolderで新しいフォルダを作成するときにできるデフォルトの
「新しいフォルダ」ってフォルダ名を変更することは出来ないのでしょうか?

「新しいフォルダの作成」ボタンを押すと日時とか連番とかのフォルダが
自動生成されるようには組めないでしょうか?
>>405
標準モジュールを追加して、そこに書く。
今時構造体かよ
>>405
Friendで定義すればできるかな。
>>405
>>408の言うとおりだなや。ちなみに、プロパティの引数を構造体にしたい
場合はPublicで宣言すると文法エラーになる。Friendで宣言しとくれ。

って事は、VBでは構造体を引数に持つDLLは作れないって事か・・・?

>>406
フォームモジュールは、Formクラスを継承したクラスって事かね。VB2の頃
からVB使ってたんで正直意識してなかったんだけど、この事に気付いてから
昔より綺麗なコードが書けるようになったと感じてる。

>>409
構造体って時代遅れなのかなぁ。プロパティにするってのはいい事なんだが、
関連性のある複数のデータを一気に設定、取得したいって場面では、プロパ
ティの引数を構造体にすると便利なんだけどなぁ。

COMポートの設定とか、設定項目を構造体にしてプロパティに渡してる。
Javaには構造体などない。
413デフォルトの名無しさん:04/07/01 19:27
VBで作ったactiveXコントロールから、
同じHTMLにのってるjavascript叩きたいんですが教えてください。
プログラムに日本地図を組み込みたいんですが、
そんな、ActiveXありますか?
415414:04/07/01 20:13
よろしくお願いします。 <(_ _)>
>>411
> って事は、VBでは構造体を引数に持つDLLは作れないって事か・・・?
作れるよ。

ただしVBのDLLはActiveX(COM)なんでCOMとして(レジストリに)登録された構造体しか使えない。
だから構造体をActiveXで定義して登録すれば、構造体を使える。

具体的にはActiveXプロジェクトのPublicクラスモジュールで
Public構造体を定義して、それを参照設定すれば使える。

> 構造体って時代遅れなのかなぁ。プロパティにするってのはいい事なんだが
そうじゃなくて、Javaみたいにクラスで代用しろと言うことでしょう。
>>414
単純に日本地図ってんならActiveXじゃなくてただの絵でいいんじゃねーの?
418414:04/07/01 20:37
>>417
いやあのー、会員分布を作ってるんですけど
会員のいる県といない県の色を変えたりとか
その県をクリックしたら、会員名簿を表示する
ようにしたいんです。
>>418
日本地図くらい書けよ
420デフォルトの名無しさん:04/07/01 20:57
>>418
"GIS"で検索してみれば?
421デフォルトの名無しさん:04/07/01 21:02
確か、マップオブジェクトってなかったっけ?
日本地図 ActiveXでぐぐれば
VBで作った日本地図・世界地図ソフトで
使われているコントロールに出会えるが・・・。
これは用途に対して高機能すぎる気がするな。
VBscriptの質問なんですけどON error gotoが使えないから
エラーメッセージをどのようにしていますか。
コミットしてロールバックするにはどうしてますかね?
On Error Resume Next使ってエラートラップすればいいだろ?
コミットしてロールバックするって意味分からんが
On Error Resume Nextして
逐一、errの番号を確認して行くってどうよ
登録失敗した場合ロールバックしたいからです。
VBみたいに自動的にエラーラベルに飛んでいってくれればと思っているんですけど
VBSCRITは機能が弱いか
>426
弱いのは機能じゃなくてお前のアルゴリズム力だ。
色々やってみりゃすぐに出来るだろそんなもん。
428デフォルトの名無しさん:04/07/02 00:43
文字列の中から、正確に「メールアドレス」だけを取得することってできますか?
ランダム文字列(文章)の中のどこかにメールアドレスが入ってるんですが。

一応、アドレス前後にスペースが入っているのですが、そこ以外にも
スペースは多様されているので、スペースを頼りにするのも
確実ではないです。

あと、@を頼りにやってみたのですが、アドレスの一部としてでなく
@が使われている場合もあり、これも確実ではありません。。

よろしくお願いします。
名簿屋かウィルス関係か・・・ってのが真っ先に浮かんで、勝手に嫌な気分になった・・・イッテクル
430428:04/07/02 01:09
>>429
そう思われても仕方ないですね。。スマソ。。
会社の支店のメール本文からアドレス抜きだすように言われたんですが、
いかんせん量が多くて、手動では取りきれないなと思ったもので…。
こちらこそ逝ってきます。
>>428
正規表現
432デフォルトの名無しさん:04/07/02 08:36
VBでUSBカメラの映像を表示しモニターしたいのですが
何か簡単な方法が有れば教えてください
宜しくお願いします。
433デフォルトの名無しさん:04/07/02 08:59
文字列内に@を含んで/を含まなければメアド。
>>428
1)@の両側スペースまでをアドレスとする。
2)半角文字以外が入っていたら除外
3)左右が空文字なら除外

これ以上は有効なアドレスかは試してみるしかないんじゃないの?
(システム判断は無理だから人判断)
Printerオブジェクトを使って、LANで共有されたレーザープリンタに出力すると文字化けします。
アプリケーションからRAW形式で印刷が指示された時は、プリンタのプロパティでEMFに設定しても
RAWでスプーリングされるようですが、この場合はどうしたらいいんでしょうか?
>>428
4)@以下のピリオドの数が2個までで、かつ連続しないこと
5)メアドの禁則文字が使われてないこと
6)国別コードや属性コードのデータと比較
437デフォルトの名無しさん:04/07/02 11:31
アロハPC1というCTIの装置をVBから使ってます

装置側に未対応分の着信履歴がある状態で新たに電話がかかってくると
VB側に送られてくる電話番号が現在かかってきているものではなく
未対応分の電話番号になってしまいます。

何か対策方法はあるでしょうか?
>>437
質問してる範囲はVBと関係ない。仕様書とFAQを熟読。
439デフォルトの名無しさん:04/07/02 14:05
あのう

いまさらこんなことを聞くのも恥ずかしいのですが
クラスモジュールにメソッドをたくさん追加すると
そのインスタンスオブジェクトは重くなるのでしょうか?
メモリサイズや動作速度です。

そのクラスにしか関係しない処理は、クラスモジュールにまとめてしまうべきだと思ったのですが、
一箇所でしか使わないものだからと、呼び出し元に書いたほうがいいと言われまして・・・
>>439
あんまり気にした事ないから知らないけど、気になるならベンチマークプログラム組んで回すのも手かと。
>>439
オブジェクト内のネストが深い場合は、単純に上から順番に辿ると遅くなる。
(あるオブジェクトが別のオブジェクトを内包し・・・の状態)

ただし、その場合でも連続処理する場合は、SETとかで参照を持っていればOK。

あなたがいっている部分では、重くなることより設計の綺麗さを優先させるべきでは?
1つのクラスが数百ものメソッドを持ってる段階でおかしいわけで。
>>441
> 1つのクラスが数百ものメソッドを持ってる段階でおかしいわけで。
だれも数百ものメソッドを持っているなんて言って無いと思うが?

>>439
クラスというものをちゃんと分かっていると仮定して言うが
クラスにあるべきものはクラスに書く、そうでないものはクラスに書かない。
一箇所でしか使わないかどうかは関係ない。
クラスと処理の内容がわからないからどっちにあるべきかは言えない。

インスタンスを複数生成してもメソッドのコード部分は
共有されるはずなので、クラス自体のメモリサイズは増えないはず。
逆にインスタンスを生成していない場合はコードで使用するメモリが
開放されて軽くなる可能性もある。

動作速度も実行しないのなら影響ないし実行したらしたで、
実行する部分がクラスか呼び出し元かに変わるだけなので問題にならない。

まあ本当に厳密に考えると、クラス(フォーム)は標準モジュールに比べて、
メソッド呼び出しテーブルのために数バイトメモリが必要だし、
インスタンスを判断するために、一回の呼出しごとに数クロック余計にかかると思うが、
数百Mhz〜数Ghz(一秒間に数億クロック実行)・メモリ数百Mバイトの時代だ。
影響はないといっていいだろう。
443デフォルトの名無しさん:04/07/03 18:19
簡単な質問ですがVBでブラウザを立ち上げる事が出来ましが
VB終了してもブラウザが終了しません、どのようにしたら
良いか、教えてくださいお願いします
>>443
ブラウザの起動方法を明記してね、話はそれから
445デフォルトの名無しさん:04/07/03 18:33
質問です。

Cで関数を組んで、APIのような形で使いたいのですが
うまく関数に値が渡せていません。
Cで組んだ関数は
struct HOGE{
int a1;
int a2;
};

HOGE fncSub(int p1,int p2,int p3);

という形になっていて

Public Type HOGE
a1 As Long
a2 As Long
End Type

Declare Function fncSub Lib "hoge.dll" (ByVal p1 As Long, _
ByVal p2 As Long,ByVal p3 As Long) As HOGE

で呼び出しているのですが。
どこを修正したらよいかお願いします。
俺分からんけど、たぶんCスレで訊いた方がいいと思う。
447デフォルトの名無しさん:04/07/03 19:00
>>446
そうですか。
ではCスレで聞いてきます。
>>446
なんでじゃい!わからんかったら丸投げかよ!それもCスレかよ!
>>447
うまく渡せてないってどんな状態だ
449447:04/07/03 19:06
>>448
パラメータp1をDLL内からMessageBoxで表示させて確認したら
呼び出すごとに変な値になってるんです。
3を渡しているんですが「・」、「ワ」、「ヘ」とかになります。
p1を割り算の分母の一部に使うので、とても困っています。
450デフォルトの名無しさん:04/07/03 19:12
>>444
Option Explicit

Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub cmdGO_Click()
'URLをブラウザで開く

ShellExecute Me.hwnd, "Open", "http://www.yahoo.co.jp", _
vbNullString, App.Path, 1

End Sub

こんなのですが、URL起動しますが、閉じ方が解りません
>>449
__stdcallは?
452449:04/07/03 19:16
>>451
DLL側にちゃんとあります。
確認しました。
>>450

Dim ie
Set ie = CreateObject("InternetExplorer.Application")
ie.visible = True
ie.Navigate "http://www.2ch.net/"

'-----

MsgBox "OKを押すとIEを閉じます"
ie.quit
Set ie = Nothing
>>452
CでのintはVBでのLongだっけ?
455452:04/07/03 19:28
>>454
そうみたいです。
調べたサイトではそうするように書いてありました。

ttp://www.angel.ne.jp/~mike/vb_dll/vb_dll04.html
456デフォルトの名無しさん:04/07/03 20:00
>>453
閉じました、有り難う御座います
>>450
シェル関数で起動した場合、ちょっと面倒だな

ちなみにブラウザをIE固定でいいなら、453のやり方が楽でいいんじゃないかな
登録されているブラウザってことになるなら、ウインドウを検索してWM_CLOSEを
メッセージを送るとかかな
一足遅かったか・・・
459デフォルトの名無しさん:04/07/03 20:34
ListView使ってるんですけど、

名前 タイム 距離 性別

見たいな項目があったとして、全部表示させた後に
距離だけ、項目(列)を消したいんですけど、どうやったらいいんですかね?
おねがいします。
460デフォルトの名無しさん:04/07/03 20:42
>>457
IE固定じゃないのですが
その方法ですが教えてもらえますか
>>445
その組み方じゃHOGEの実体が残らないんじゃないか?

// DLL
void funSub(int p1, int p2, int p3, HOGE far *pshoge) {
pshoge->a1 = ...;
pshoge->a2 = ...;
}

' VB
Declare Sub fncSub Lib "hoge.dll" (ByVal p1 As Long, ByVal p2 As Long,ByVal p3 As Long, ByRef pshoge As HOGE)

とすれば良い気がする。
実体はどうかしらんが、値は帰ってくるのでは?
463デフォルトの名無しさん:04/07/03 21:47
>>445
C板から来たんだけど。
Public Type HOGE
a1 As Integer
a2 As Integer
End Type
にしてみたら?
LongはVBがDLLに引数渡すときだけだと思う。
むかし作ったソースみたら、CとVB,全部Longでうまくいってたが。
どういうわけか戻り値に問題がシフトしているが(それはそれで問題だが・・・
449で言っているとおり、渡している引数がおかしくなっているようだよ
C書いてる環境にデバッガないの?
関数呼んだ直後に引数がちゃんと渡っているか見た方が
早くない?
簡略化したソースでもどっかにUpしてくれたら、試してやるよ。
ちょっと興味あったので、テストしてみた

c側
vbcalltest.cpp----------------
#include "stdafx.h"
DLLMain省略
void __stdcall HogeHoge( int x, int y, int* test )
{
*test = x + y;
}
-----------------------------
vbcalltest.def
LIBRARY VBCallTest
EXPORTS
HogeHoge@1
------------------------------
vb側は適当に
module1----------------------------
Declare Function HogeHoge Lib "VBCallTest.dll" (ByVal p1 As Long, _
ByVal p2 As Long, ByRef p3 As Long)
form1------------------------------
Option Explicit
Private Sub Command1_Click()
Dim back As Long
HogeHoge CLng(Text1.Text), CLng(Text2.Text), back
Text3.Text = CStr(back)
End Sub
環境はVB6とVC6 SP6ね
でこのようにすると落ちたね混合モードの結果
15: void __stdcall HogeHoge( int x, int y, int* test )
16: {
01BD1050 push ebp
01BD1051 mov ebp,esp
01BD1053 sub esp,40h
01BD1056 push ebx
01BD1057 push esi
01BD1058 push edi
01BD1059 lea edi,[ebp-40h]
01BD105C mov ecx,10h
01BD1061 mov eax,0CCCCCCCCh
01BD1066 rep stos dword ptr [edi]
17: *test = x + y;
01BD1068 mov eax,dword ptr [ebp+8]
01BD106B add eax,dword ptr [ebp+0Ch]
01BD106E mov ecx,dword ptr [ebp+10h]
01BD1071 mov dword ptr [ecx],eax
18: }
01BD1073 pop edi
01BD1074 pop esi
01BD1075 pop ebx
01BD1076 mov esp,ebp
01BD1078 pop ebp
01BD1079 ret 0Ch
で、フォームでは
text1 = 1
test2 = 2
って入れたのに
受け側のCでは
x=0x0012f5c0
y=1
test = 0x00000002
と入っていて、明らかに4バイトずれている
ためしに
VB側のDeclare文を以下のように変更してみた
Declare Function HogeHoge Lib "VBCallTest.dll" (ByVal p1 As Long, _
ByVal p2 As Long, ByRef p3 As Long) As Long
戻り値にlongをつけたわけだがこうするとなぜかうまくいった
470デフォルトの名無しさん:04/07/03 22:30
>>445
わあ、漏れも昔こうなったけど、こうやって急場しのぎで参照で誤魔化した。
-----------VB---------
Type DLLINT
i As Integer
End Type
Declare Function fncSub Lib "hoge.dll" (ByRef pp1 As DLLINT, _
ByRef pp2 As DLLINT,ByRef pp3 As DLLINT) As HOGE
---------C--------
struct DLLINT {
int i;
};
HOGE fncSub(DLLINT* pp1,DLLINT* pp2,DLLINT* pp3);
解決は pp1->i
ちなみにそのときのC側での変数は以下のとおり
x=1
y=2
test=0x0012f5e0
スタックの状態はこんな感じ
正常時
ebp = 0012f598
0012F598 F8 F5 12 00 82 21 40 00 01 00 00 ...!@....
0012F5A3 00 02 00 00 00 E0 F5 12 00 04 F6 .....瑾....
0012F5AE 12 00 D4 F6 12 00 01 00 00 00 01 ..ヤ........
0012F5B9 00 00 00 61 15 DF 77 91 04 01 01 ...a.゚w....

エラー時
ebp = 0x0012f584
0012F584 F8 F5 12 00 A9 21 40 00 C0 F5 12 ..ゥ!@.タ..
0012F58F 00 01 00 00 00 02 00 00 00 E0 F5 .........瑾
0012F59A 12 00 04 F6 12 00 D4 F6 12 00 01 ......ヤ....
0012F5A5 00 00 00 1A 12 01 18 20 A2 6B 00 ....... 「k.
くそ!なぜか、VB側のデバッグ情報が更新されない
ちょっとまっててね
474デフォルトの名無しさん:04/07/03 22:54
>>445
原因は簡単、C関数から構造体の値を返り値に取る、なんてイレギュラーなこと
やってるからだよ。

そういうことしたい場合は、C関数の方では構造体のポインタを引数に取るようにして、
VBの側では構造体(ユーザー定義型)をByRefで渡すようにしないと。
これが、VB側の呼び出し情報ね
正常時
67: HogeHoge a1, a2, back
0040218C mov ecx,dword ptr [a1]
0040218F lea eax,[back]
00402192 push eax
00402193 push edi
00402194 push ecx
00402195 call ___vba@001F19D0 (00401b00)
0040219A call dword ptr [__imp_@__vbaSetSystemError (00401014)]

エラー時
67: HogeHoge a1, a2, back
0040219F mov ecx,dword ptr [a1]
004021A2 lea eax,[back]
004021A5 push eax
004021A6 push edi
004021A7 lea edx,[unnamed_var1]
004021AA push ecx
004021AB push edx
004021AC call ___vba@0018F0F8 (00401b04)
004021B1 call dword ptr [__imp_@__vbaSetSystemError (00401018)]
004021B7 lea ecx,[unnamed_var1]
004021BA call dword ptr [__imp____vbaFreeVar (0040100c)]
voidだとFunctionではなくSubとか
>>476
その通りだね、今デバッグしていて気づいた・・・
やっと今から本題に入るか構造体を渡すとどうなるか
ちょっと待っててね
479デフォルトの名無しさん:04/07/03 23:13
>>470
まちごうた。漏れはC++でやったんで、参照渡したんだが。
HOGE fncSub(DLLINT& pp1,DLLINT& pp2,DLLINT& pp3);
480デフォルトの名無しさん:04/07/03 23:13
>>470
まちごうた。漏れはC++でやったんで、参照渡したんだが。
HOGE fncSub(DLLINT& pp1,DLLINT& pp2,DLLINT& pp3);
次のソース
C側
vbcalltest.cpp---------
typedef struct{int a;int b;}Hoge;
Hoge __stdcall HogeHoge( int x, int y, int* test )
{
*test = x + y;Hoge h;h.a = x;h.b = y;return h;
}
VB側--------------
module1
Type Hoge
x As Long
y As Long
End Type

Declare Function HogeHoge Lib "VBCallTest.dll" (ByVal p1 As Long, _
ByVal p2 As Long, ByRef p3 As Long) As Hoge
form1---------------
Private Sub Command1_Click()
Dim back As Long
Dim a1 As Long
Dim a2 As Long
a1 = CLng(Text1.Text)
a2 = CLng(Text2.Text)
HogeHoge a1, a2, back
Text3.Text = CStr(back)
End Sub




…うーん、ダメだ
なぜか、VB側のソースがデバッガで追うとおかしくなる
VBのデバッグはVCではうまく出来ないなぁ
ここのスレで聞くか迷ったんだけど…

Virtual PC 5.2 (ゲストWin2000)にインストールしようとすると
「Microsoft Virtual Machine for Java」の更新作業に入ってその後再起動。
でまた更新作業の繰り返しになっちゃう。

Javaがらみかと思ってSun版のJavaを入れたけど駄目だった。
どなたかVirtual PC上にインストールしている方おられません?
484デフォルトの名無しさん:04/07/04 04:47
>>445
Declare Function fncSub Lib "hoge.dll" Alias "_fncSub@12" _
(ByVal p1 As Long, ByVal p2 As Long,ByVal p3 As Long) As HOGE
485デフォルトの名無しさん:04/07/04 10:10
VBはまったく知らないのですけど、VBを使っての開発でオリジナルのコントロールが
必要な時は、わざわざActiveXコントロールを手に入れるかまたは、自分で作らないといけないのでしょうか?
VB以外のこともそれほど詳しくないのですが、他の環境では
必要なときはどこからか入手するか自分で作る以外に選択肢はあるのでしょうか?
487459:04/07/04 11:46
>>459
おねがいします
>>485-486
それ以外だとどういったものが予想されるかね?
>>483
俺は分からないんで答えられんが、なんでよりよってこのスレで聞こうと思ったの?
>>489
反応を観察してみたかったw
491455:04/07/04 21:36
レスをくれた皆様、ありがとうございました。
解決いたしました。

Cで組んだDLLを>>461さんや>>474さんの仰るとおりに
組みなおしたて、VB側で構造体をByRefで渡してやると
パラメータもしっかりわたって、結果もちゃんと返ってきました。
本当にありがとうございました。

ほかのレスをくれた方々も、原因を模索していただきありがとうございました。
>>488
ランダムなバイト列が偶然役に立つコントロールのコードになって記録媒体に保存されていた(自然発生説)
>>492
生命の誕生かよ(w。
>488
実はこの日の時の事を予測したバンネバー・ブッシュ(MJ12)が、
ロズウェルに墜落した地球上の物体ではない"何か"の中から
回収しており、それが>485の家に「デファレンシャル・エンジン」として届く説。
VBで作成したAPを、Win2000環境からWinXP環境に
載せかえると、グリッドがずれてしまいます。
どうやら、スクロールバーの太さが違うために
発生しているようなのですが、スクロールバーを
設定するAPIなどあるのでしょうか?
いろいろ調べたのですが、載っていないので…。
よろしくお願いいたします。
>>495
スクロールバーの大きさを変えるのではなく、大きさにあわせて
プログラムするのがふつう。
>>496
今まで、2000環境で作成していたのですが、
XPを使いたい!とおっしゃる人々もいて、
できればXPと2000どちらでもうまく動く
感じで〜みたいな感じなのです;;
>>497
だから、修正しようよ。プログラムを。
499デフォルトの名無しさん:04/07/05 01:29
>>495
ていうかさ、人に尋ねることによって問題解決を図りたいなら
まず最低限「問題」が他人に正確に伝わるように努力したらどう?

自分以外の他人はみんなエスパーだとでも(以下略

スクロールバーの太さが違うためにどんな問題が発生してるのか
さっぱり分からないんですが。「グリッドがずれる」とは?
500主任(デブ):04/07/05 01:40
すいません。初歩的なことを教えていただきたいのです。
最近ようやくVB6.0を使えるようになりました。

そして構造計算用のソフトをSDIで製作しました。

しかし「ファイルの保存」について、どの本を読んでも
txtファイルレベルの保存方法は書いてあるのですが、
それ以上のことが書いてありません。

例えばdocやxlsなど拡張子を好きに作ったアプリを製作できるのですか?
また出来るのであればMDIで作ることが必須になるのでしょうか?

どなたか詳しい方いらっしゃいましたら教えて下さい。

慣れない仕事で結構毎日必死なんですw
501主任(デブ):04/07/05 01:44
あと、ついでと言っては何ですが、画像を変化させたいときは
ピクチャークリップコントロールを使うと本に書いてあったのですが、
色々問題があるとかないとか・・・?マイクロソフトのVBサイトに
記されてました。

同じサイズのピクチャーコントロールを何枚も重ねてvisibleで変えるのが
一般的なのでしょうか?

教えて君ですいませんm(_ _)m
>>500
docやxlsで保存するときは、そのフォーマットで自分で出力しなくてはならない。
各データフォーマット仕様を理解して、書き込みましょう。
また、MDIとは関係無い。
>>501
サイトに書いていたならそのURLを書きましょう。人に聞く態度じゃありません。
ワードやエクセルの形式であれば、VBからコントロールすることは可能
質問がワード、エクセル限定なのかはわからぬが。
あと、画像を変化、という事が何をしたいのか、もう少し詳しく書くべし
504デフォルトの名無しさん:04/07/05 02:43
キャプションバーのないフォームだけでツールを作っているのですが、
実行中に[Win]+[D]を押すと非表示になってしまい、再表示させることが
できません。(タスクバーにはもともと表示させていない)。

ユーザが[Win]+[D]を押してもフォームが非表示にならない、
または[Win]+[D]が押されたことを捕捉して再表示させてやる方法が
多分あると思うのですが、もしわかる方いましたら教えて下さい。
505主任(デブ):04/07/05 03:11
>>501-502
色々ありがとうございます。

聞き方も至らぬようで本当に申し訳ないです。

1.ファイル保存っていうのは「独自の拡張子を作れるのか?」ってことです。

2.画像を変化っていうのは言うなればパラパラ漫画みたいなものですが、
同一箇所にイメージを何枚も重ね合わせて貼って表示・非表示でコントロール
するのは何となく原始的っぽくて聞いてみました。。。

ですから、もし、パラパラ漫画みたいなのを効率よく(?!)作成する方法があれば
教えていただけると何ともありがたいです。それにそのほうが的確っぽいですねw

ちなみにサイトは
http://www.microsoft.com/japan/msdn/vbasic/Downloads/picclip.asp
ここです。そもそもVB4.0が云々って書かれているので最近は使わない
コントロールなのかと疑問をもってみました。
>>505
1
拡張子は管理している団体も無いので独自の物を作ってもいいだろうけど、
拡張子辞典などのサイトやGoogleですぐひっかかるような名前はやめておくのがいい
VBとは関係無いが、Macの拡張子風に使うクリエイターは登録制だが。

2
WebBrowserコントロールでGIFを出すのもよし、タイマとloadpictureでするもよし。
効率とは、リソースを食わないやり方とかプログラムを作る効率とかわからないので具体的に。
サイトについては、書かれている通り。
507デフォルトの名無しさん:04/07/05 11:58

はじめまして。質問なのですが、

inetコントロールのexecuteを使用した際にそのinetを使用して作成したツールが
終了時に約1分程度応答がなくなってしまいます。
(フォームは消えるが、アプリケーションは残っている状態)

現在のプログラムの流れですが、
・.executeでgetコマンドを送信
・statechangeイベントで12が返ってくることを確認
・上記確認後、.cancelで接続解除(statechangeイベントで10が返ってきていることを確認済)
です。

上記流れを実行したのちにフォームは消えるのですが、アプリケーションが残ってしまいます。
form_unload関係の所ではinetコントロールには一切触れておりません。

どなたこの現象の回避方法がわかる方いませんでしょうか。
わかる方がいらっしゃればよろしくお願い致します。

508デフォルトの名無しさん:04/07/05 15:11
カーソルキーが 押されたら ラベルの位置を動かすようにしたいのですが
どうしたらいいのでしょうか?
Form_KeyDownやForm_KeyPressのイベントが発生しないんですけど。
>>508
Form_KeyDown等はフォームにフォーカスが在る場合じゃないと発生しないよ。
通常、コントロールが張ってある場合、フォーカスのあるコントロールでイベントが発生するから、
そのコントローラのKeyDownイベントで操作しないとダメ。
>>508
押した時点でフォーカスは誰が持っているのでしょうか?
FormのKeyPreviewプロパティの設定は?
>>508
ロットによってはそのイベントが発生しないものがある。
>>508
疲れてる場合などにイベントが発生しないことがある。
513508:04/07/05 15:24
フォームには、コマンドボタンとラベルが貼ってあり、
フォーカスは コマンドボタンにあります。
KeyPreviewは Trueにしてあります。
ちこっとためしたけど、ボタンがあると確かにその通りですね。

じゃあどうする?ってなったら、さぶクラス化してメッセージフックかな?
>>513
どのキー押下に対応させたいのでしょうか?
↑↓→←キーでは反応しません。
それ以外であれば
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
のイベントで発生すると思うのですが。
516514:04/07/05 15:41
どうも、ボタンのデフォルト処理として、カーソルキーでボタン同士のフォーカス移動がありますね。
なので、このボタンを使っている限りはメッセージフックでもしない限りできないと思われます。

Spyで見て、ボタンにフォーカスがある状態でメッセージを受けているのであれば、横取り可能です。
517508:04/07/05 15:44
わかりました。

テキストボックスにフォーカスがないと 発生しないようです。

なんかいまいちな仕様ですねぇ。
>>517
はたしてそうかな?(ニヤリ
519デフォルトの名無しさん:04/07/06 07:01
ボタンのキャプション文字列を途中で改行したいのですが
どうすれば良いのでしょうか。

スペースで調節したりもしてみたのですが、
ボタンが押されると文字列がずれてしまいますので
できればちゃんと改行がしたいな、と思っています。
Command1.Caption = "ボタンの" & vbCrLf & "キャプション"
改行を含むテキストをコピペ
>>507
再現しないな〜。普通に正常終了する。
とりあえずどっかにソースうpしてみ?
523デフォルトの名無しさん:04/07/06 14:50
ラジオボタンをいくつか使うのですが、それぞれ個別に
設定できるようにするには、どうしたらいいのでしょうか?

今は、ひとつを選択したら、他の選択したのが消えてしまいます。
複数選択できるようにしたいのです(ラジオボタンで)
>>523
そういうときは通常、チェックボックスを使うもんだ。

ttp://e-words.jp/w/E383A9E382B8E382AAE3839CE382BFE383B3.html
>>523
Radioボタンはオーナーコントロールが共通の他のラジオボタンのマークを消してしまう。

Form
 Radio1
 Radio2
 Radio3

Radio2をオンにするとRadio1とRadio3が自動的にオフになる。

Form
 PictureBox1
  Radio1
  Radio2
 PictureBox2
  Radio3

Radio2をオンにするとRadio1は自動的にオフになるが、Radio3の状態は変化しない。
OK?
526523:04/07/06 15:00
>>524

イメージとしては 2択なんですが、その2択が 複数あるので
困っているのです。
チェックボックスを使えばラクなのは わかっているのですが、
あえて ラジオボタンということで どうしたらいいでしょうか?
527523:04/07/06 15:02
あと グリッドの上に ひとつずつ ひとマスずつ ラジオボタンを配置するんです。
どうにかなるでしょうか?
>>527
Foamならば、>>525さんの回答通り。
コンテナになるもので選択肢をくくってあげるだけ。

グリッドって何を使っているのかによるけど、あれはコンテナにはなりえない。
なので、標準であなたが目的としているものを実現できるグリッドを探して買いましょう。
>>526
透明にしたFrameで囲めば、その範囲だけで処理が完結するよ。
>>525さんと同じような感じだけどね。

Gridにラジオボタンを配置するのは、サードパーティのを買う必要があっ
たはず。
530523:04/07/06 15:35
>>529
>透明にしたFrameで囲めば

どうすれば、Frameを透明にできるのでしょうか?
教えてください。
>>530
529じゃないけど・・・

Captionなし、Borderなし、バックカラーが背景と同じ色、を言いたいんじゃないのか?
532523:04/07/06 15:51
ラジオボタンをひとマスずつ配置するので 複数をひとつにする場合、
グリッドをまたいじゃうのです。透明ならばいいですが、透明でなければ
線が消えてしまいます。
>>532
つうか、人のレスをきちんと読め。
あなたが行っている作業は、GRIDにRADIOを割り付けているのではなく、その上にただ置いているだけです。
なので、スクロールしたりすると一発OUTですよ。

グリッドの升目にRADIOを割り付けるならば、それに該当するコントロールを買いなさい。

そうじゃなければ、最終的にどっかでボロが出て破綻しますよ。
(糞仕様だとは思うけど、それをきちんと理解して実現する能力ないんじゃないか?)
>>531
フォローさんくす。その通りでつ。
BorderStyleを無しにしたら、Captionもついでに消えて楽だしね。

>>532
透明というには語弊があったけど、もちっとやりたい状況や今試してる内
容を詳細に書いてくれるとありがたいな。実現したい表現を別の方法でで
きるかもしんないし。
そもそもRADIOボタンじゃないと駄目なのか?

特定のセルのクリックでマル(○)が出たり消えたりじゃ駄目なの?
>>535
白丸と黒丸の交互表示もいけるよね。
>>536
確かグリッドのセルにアイコンかBMPを出せるよね。
昔それでチェックもどきを作った覚えがある。
538523:04/07/06 16:05
>>533
グリッドは使うけど、スクロールはしないし、
スクロールしたとしても、その対処は 簡単です。

>そうじゃなければ、最終的にどっかでボロが出て破綻しますよ。
テストは、ちゃんとやりますよ。

>>536
オレはいつも☆と★を使ってる。
540523:04/07/06 16:06
ま、糞仕様というのは、正解だと思うが(w
>>523 は女。間違いない。
>>538
スクロールに対する対処が簡単だというレベルなら、こんなことは聞かないと思うんだが。

実際、私はコンテナに内包されないコントロールのスクロール処理なんて考えるだけで嫌になるけどね。
>>540
糞仕様だろうと、それが仕様になった時点で製造する側の責任だけどね。

実現性を考えないで仕様を決めたり、あと仕様に口出せない立場だったら、そういう立場を変える努力をしないと。
>>541
しかも英語教えてたりしてw
545523:04/07/06 16:11
最終的には、ひとつのセル内に フレームをひとつ貼り、その上にラジオボタンひとつ
貼る方法しかなさそうだ。

もう少し 簡単にできる方法が ないかと思って聞いただけなんだけどね。
546デフォルトの名無しさん:04/07/06 16:13
>実現性を考えないで仕様を決めたり、あと仕様に口出せない立場だったら、そういう立場を変える努力をしないと。
ま、そこは 派遣社員の弱いとこ。
新規参入で、すぐ これじゃあねぇ・・・。
>>545
簡単な方法は、少し上にある特定のセルに対するクリックで○なり絵なりのON/OFFだって。
そんな時こそMarlettフォントですよ。
そこで、PowerBuilderですよ
551デフォルトの名無しさん:04/07/06 16:53
PowerBuilderかぁ、昔 やったよ。
聞ける所が それを作った会社のHPだけという・・・。

552507:04/07/06 17:13
すみません誤爆でした・・・>>550
>>507
HPもサーバーアクセス権も持ってないからFTP試せないんでHTTPで試したんだが、普通に終了したよ。
違いと言えば、Protocolプロパティに入れている値と、RemoteHostプロパティの代わりにURLプロパティに代入しているくらい。
ひょっとしたらFTPは動作が独特なのかも?
554デフォルトの名無しさん:04/07/06 23:10
別のPCのフォルダからプロジェクトやフォームやらを、自分のPCへコピーして
持って来たりあるいは別のPCへ移動したとする。
その場合VB(VB6.0)でコードを書く続きをしようと思って開こうとすると
「パスがみつかりません。このままロードを続けますか?」と出る。
プロジェクトはプロジェクトで別名でコピー、フォーム類はフォーム類で
別名でコピーしてもだめ。
 EXEファイルを作って別のPCでやろうとしてもだめ。
これってどういうこと?

前任者の作ったソフトを改造してるのですが別のPCへコピーしてきて
まったく問題なく開けるのもあるのですがいくつかは上記のようになる。
どうしてこうなるのでしょう?
>>554
使用しているActiveXが他のPCにインストール&登録されてないんでしょ?
たしかエラーログに無いActiveX名が出力されたと思うけど。
>>554
.vbpファイルをメモ帳で開いて見てちょ
557554:04/07/06 23:16
納得。そういえばEXEを他のPCでやろうとしたとき
「OCX・・なんたらかんたら・・」とエラーが出たことがあったなあ。
558554:04/07/06 23:18
>557
 .vbpファイルをメモ帖で開くとわかるんですか?
559デフォルトの名無しさん:04/07/07 00:26
質問です。どなたか分かる方がいましたら教えていただけますか?
ホームページ中でBASIC認証をしたいと思っているのですが、設置方法が
分かりません。グーグルで調べたら「.htaccess」が必要だとわかったのですが、
その後はどうしたら良いのでしょうか?
板違いならば、申し訳ありませんが誘導お願いします。
失礼しました。
>>554
557じゃないけど、開いても解からないなら解からないかも。

たぶんプロジェクトで使用するファイルへのパスが、プロジェクトファイル(拡張子が.vbp
のファイル)からの相対パスじゃなくて、元のPCにおける絶対パスに
なってるんでしょう。

VBだとなぜか時々こういう問題が発生する。
どういう場合にこういう糞な事態に陥るのかは解からないけど、
561560:04/07/07 00:39
だからつまり、プロジェクトファイル内の各ファイルのパスを
相対パスに書き換えてやれば問題は解決する、ってことね。
だめだ・・・こりゃ
次いって・・・みよう
564デフォルトの名無しさん:04/07/07 08:46
232Cからのデータを受信して特定の文字を受信出来た時にフォームモジュール
を開いたり閉じたりしたいのですが、開くときは問題無いのですが、閉じるに
アプリケーションエラーで ”メモリがwrittenになることが出来ません” の
メッセージが出てきます、何か原因があれば教えてください

If  〜  Then
Unload Me
End If
 
  こんな感じで閉じていますが。。 
>>564
VBだけでそのエラーって出たっけ?
1.232C通信は何を使ってやってるのか?
親FoamにMSCOMM?

2.子Foam側で後始末が必要なAPIを呼んでおいて、やってねーんじゃないの?
>566
志村、スペルスペル!!
>>567
あっ・・・。まあわかるっしょ。w
>>567
昼下がりの眠たい時間にちょっぴりワラタ
>>559
おいおいBASIC認証はVisualBasicとは全く関係ねぇぞw
Webサーバ毎に設定方法は違うから自前のサーバならヘルプ等をみれ。
プロパイダ等のHPスペースならやり方や許可してるかどうかなどの
説明がユーザ向け説明のどっかに「必ず」あるからそこみてや。
>>566
>>528もあなただったのでしょうか?
>>571
い、いや・・。
573デフォルトの名無しさん:04/07/08 10:59
グリッドで セル毎にフォントを変えるには どうしたらいいのでしょうか?

セル毎ではなくて、列単位でもいいです。
574デフォルトの名無しさん:04/07/08 11:19
グリッドでセルの色を変えるとき
CellBackColor
というのを使いますが、これを使うとき、アクティブセルの位置を変更しないとダメです。
それだと 複数のセルの場合、時間がかかりそうなので、セル位置を変えずに
セルの色を変える方法があったら教えてください。
>>573
Cell.FontとかCellFontとかが存在すればできるんじゃないの?

>>574
RowBackColorとかColxxxは存在しなかったっけ?
そうじゃなければセルを範囲指定した場合は?
それでもあれなら、一旦非表示にすれば?(1セルずつの場合、それごとの再表示処理のコストがあるかもしれん)
576573:04/07/08 13:34
>>575

ぜんぜん違ったけど、参考になったぜ。
CellFontName を使えばいける。
577デフォルトの名無しさん:04/07/08 15:08
accessのVBAで質問です。
きっと内容はVBと同じだと思ったのでここで質問します。

指定されたフォルダの中にあるファイルを全て取得するには
どうしたら良いでしょうか?
サブフォルダも含む全てのファイルです。

色々調べてみたんですけどいまいち無くて...
>>577
Dirで再帰して巡ってくればいいんじゃないのか?
またはFileSystemObjectで回るとか。

APIならFindFirstFileがそのもの。
Application.FileSearchってなかった?
580よっぱらいFC:04/07/08 16:57
bitmap上に円を水平に動かしたいのですが、どうすればいいのですか?
>>580
書いては消し、書いては消し。
>>580
1番簡単にやるなら、
[円を描く予定位置のイメージを保存]→[円を描く]→[絵をRefresh]
→[円を描いた位置のイメージを元に戻す]→以下繰り返し
って感じ。
583フェルト:04/07/08 18:16
パソコンのゴミ箱アイコンで、ゴミ箱を空にするを選択したら、Dd121を削除できませんって出ます。
Dd121ってなんですか?
winsockコントロールを使ったアプリケーンを作ったのですが
通信中にフォームをアンロードするとプロセスが残ってしまうことがあります。
どういった対策ができるのでしょうか?
>>585
Set Form = Nothing で解放すればいいんじゃないかな。
UnloadするときにCloseするとどう?
588デフォルトの名無しさん:04/07/08 22:14
メモ帳を開くにはどうしたら良いのでしょうか
簡単な質問ですみません
Shell関数
590デフォルトの名無しさん:04/07/09 00:29
VB6 WinXPです。
(SP等のこれ以上の環境はわかりません。)

Global dbcon as Connection
・・・
Set dbcon = New ADODB.Connection
dbcon.Open "文字列" ←ここで落ちてしまいます。

ランタイムエラーで落ちています。
dll環境を変えると(他の端末で実行すると)データベース接続ができます。
ADODB.Connectionが参照しているdllを特定させたいと思い、
grepをかけましたが、いくつかのdllが引っかかります。
どのdllを参照しているのかを特定させるにはどうしたら良いのでしょうか?

条件が少なくて申し訳ありません。
MDAC入れなおしてみれば?
>>590
落ちるPCを”誤ってフォーマット”して
OSからインストールしWindowsUpdateを食らわせて再びそのソフトをインストールさせるがよい
>>590
プロジェクト→参照設定→参照可能なライブラリ ファイル→Microsoft ActiveX Date Objects 2.5,6,7 Library
を選択すると
場所: C:\〜\ado\msado--.dll
のようにdllのパスがわかる。
waveOut系のAPIを使ってVBからWAVEを鳴らすプログラムを作っています。
しかし変な雑音のようなものしか聞こえなくて困っています。
どなたか分かる方はいらっしゃいませんか?

コードを羅列するのもどうかと思うので、概要を書きたいと思います。

1.Binaryアクセスでバイト配列にWAVEファイルを読み込む
2.読み込んだWAVEファイルから音声データ部分を抜き取る (Right関数使用)
3.WAVEFORMATEX構造体に必要なデータを入力
4. waveOutOpen(hwave, -1, wft, 0, 0, 0) をCallする
5.WAVEHDR構造体にデータを入力

最後に
Call waveOutPrepareHeader(hwave, whdr, Len(whdr))
Call waveOutWrite(hwave, whdr, Len(whdr))

で出力という感じです。

waveOutOpen関数の引数hwaveにはポインタが返されてるので、関数の呼び出しには成功しているようです。
恐らくWAVEHDR構造体の.lpDataへのポインタ指定に問題がありそうな気がするのですが、どうでしょうか。
現在は読み込んだ音声データのバイト配列 WavData( )を直接指定しています。
これを VarPtr(Cstr(WavData())) などにしても結果は同じでした。

>>594
日本語版VBの場合、バイト配列を文字列に変換するとデータは化けると思う。
596デフォルトの名無しさん:04/07/09 14:40
処理中にイベントを発生させないようにするには、どうしたらいいのでしょうか?
メッセージをフックして、イベント要因となるメッセージを殺せばいいんじゃない?
>>596
基本的には597さんの通り。
今の処理が終了するときに、メッセージキューをお掃除してしまう。
(ただし、死ねといわれているのに、自決指令を無視したりしたらお行儀の悪いプログラムになってしまう)

単純なレベルでは、Form自身をDisableにしておけば、ある程度は防げるはず。
VB6でExcelを操作するにあたって色々調べているのですが、
情報が少なくてわかりません。もし分かる方は教えて下さい。

○イベント取得         
・ファイル表示イベント
・シート選択イベント
・セル選択イベント
・スクロールイベント
・グループ化イベント
・マウス移動イベント
・表示倍率変更イベント

○制御
・ファイル表示
・シート選択
・セル選択
・スクロール
・グループ化
・マウス移動
・表示倍率変更

             形式              戻り値  第一引数          第二引数

例 Classname::Method( int arg1, char* arg2 )  なし  取得したいデータの項番 取得データの格納場所


長文スマソ
Excelオブジェクトのヘルプ嫁。
っつーか氏ねよハゲ。
601599:04/07/09 17:16
MSDNをインストールするまえにCDを破損したので見れません。
どこかに載っているなら誘導おながいします。
ExcelオブジェクトモデルのリファレンスはExcelのヘルプに載ってるな。
>>602
>>603
なんとかなりそうです。
ありがとうございますた。
>>601
MSDNが見れないのは絶対そんな理由じゃないと思うのは俺だけ?
>>605
みんなそう思ってるよ。(´・ω・`)
>>599以外はね。
EXEと同じ層にある"SET.htm"というhtmファイルを起動させたいのですが、上手くいきません。
以下のように書いているのですが、何処が悪いのでしょう?

Shell App.Path & "\SET.htm", vbMaximizedFocus
Shell関数って、ファイルを指定すると関連付けられてるアプリに渡されるんだったっけ?
>>607
関連付けで開く場合は、APIのShellExecute
Shell "Explorer.exe " & App.Path & "\SET.htm", vbMaximizedFocus

とか?
>>610
それが手っ取り早いね。ただ、IE統合前のWin95だと
通らないかも知れないけど、環境無いんで分からないや。

orz
612はちみつ六郎:04/07/10 06:48
おはようございます。
Controls.addでメニューを生成するにはどうすればよいでしょうか。
既存のメニューの任意の位置に生成することってできるでしょうか…?
613デフォルトの名無しさん:04/07/10 11:38
すいません!
ビットマップファイルの画素データを直接BMPファイルから
取得したいんですがどうすればいけますか?

フルスクリーンのゲームの裏で動かしているので
loadpictureでBMPをロードすると減色された画素データに
なってしまいます・・・
そこでBMPファイルから直接画素データを所得したらいいんではないかと
思ったんですけど、なかなかできません。
よろしくお願いします。
>>613
BMPファイルのフォーマット調べればすむことじゃん。
VBの問題ではないね。
全部のBMPに対応しようとするとするとめっちゃ大変だけどなw
615607:04/07/10 12:51
>609-611
ありがとうございます。
今は手元に環境が無いので出来ませんが、今度やってみますね。
616bb:04/07/11 01:41

メールソフト作ってるんだけどDNSのMXレコードを引けなくて困っています

具体的には

nslookup -q=MX docomo.ne.jp

のようなことと同じことしたいんです


だれかVBでMXレコードを引っ張ってくるプログラム作成した人いませんか?
メールソフト作るのにMXレコード引く必要あったっけ?
618bb:04/07/11 03:09
直接相手のメール鯖にメール送信したいのよ
>>618
意味のない事するなよ
620bb:04/07/11 03:37
意味あるだろ
SPAM発射器キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
622名無しさん@そうだ選挙に行こう:04/07/11 17:12
>>594
ゲームなどの同期など特別な理由があるならしょうがないがVBからWavを鳴らしたいだけなら、
WindowsMediaPlayerを内部利用する簡単な方法があるよ。VBのツールボックスにコンポーネントで
WindowsMediaPlayerを追加しフォームに貼り付ければカスタムコントロールとして利用できる。
コントロールの具体的な使い方はオブジェクトブラウザ参照のこと。
以下は例。音楽ファイルの演奏とストップができる。
Private Sub Form_Load()
  WindowsMediaPlayer1.URL = "C:\WINDOWS\Media\town.mid" '←鳴らしたい音楽ファイルを指定
End Sub
Private Sub Command1_Click()
  WindowsMediaPlayer1.Controls.play 'プレイ
End Sub
Private Sub Command2_Click()
  WindowsMediaPlayer1.Controls.stop 'ストップ
End Sub
623名無しさん@そうだ選挙に行こう:04/07/11 17:13
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = vbFormControlMenu _
Then
MsgBox ("×ぼたんでは閉じれませんよん♪")
Cancel = True
End If

End Sub
>>618
そんなセキュの甘いサーバーあるのか?
あるわなそりゃ
625624:04/07/11 17:52
あぁ。smtp鯖のクライアント機能みたいなことするってことか。
>>616
やったことないからわからんけど
LDAP使ってもだめなん?
WindowsだとブラウザのHTTP://の部分をLDAPにかえてやるとたしかできたような
UDPつかったりして方法はあると思うんだけど・・・

あんまり役に立たんね。スマソ
627723:04/07/12 00:06
こんばんは。
「アプリケーションの追加と削除」に表示されているサイズ情報を
VB上で取得したいんですが、どんなに調べてもやり方がわかりません。
どなたか知恵を貸してください!!
お願いします!!
628デフォルトの名無しさん:04/07/12 00:19
DLLの使用方法で質問があります。

int hage(char*,char*,int,int)
(第1引数を戻り値として返す)

という関数を使う場合、標準モジュールでの宣言はどうすれば
よいのでしょうか。
よろしくお願いします。
>>628
引数がどのように使われているのか、使いたいのかによる。
そのDLL関数の内容がわからないと答えようがない。

char*がバイトの値を返すなら「ByRef a as Byte」だし、
領域へのポインタなら「ByRef a() as VBで使いたい型」とか。
ポインタを直接渡したいなら「ByVal a as Long」だってありだろ。
630デフォルトの名無しさん:04/07/12 01:01
>DLL関数の内容がわからないと答えようがない。
んなこた〜ない。

ていうか、>>628も少しは調べるとかしたら?
試し“vb 自作dll”で検索してみたけど、参考になりそうなところが
ザクザク引っかかるんですけど。
そうでなくても、Vbの解説してるサイトなんて腐るほどあるってのに。

私しゃ、君みたいな横着な奴にはマジで殺意抱くね。

【答え】
Public Declare Function hage Lib "dllの物理ファイル名" _
(ByRef a as byte, ByRef b as byte, ByVal c as Long, ByVal d as Long) as Long
VB6.0 Professionalの入ってるマシンにVB.NETアカデミックをインスコしたら
VB6.0のリッチテキストを使おうとするとライセンスがありませんと出るようになった。
両方ともProfessional以上で統一しないとダメなようだ。
VB6.0用の Doxygen みたいなツールないでしょうか?
有料だと Project Analyzer とか VB仕様書工房 とか
あるみたいなんですけど、無料のものを探してます。
>>590
しね
634デフォルトの名無しさん:04/07/12 10:27
>>606
なんだかんだ言われてもMSDNが見れないのは、事実。
635297:04/07/12 12:16
VB6を再インストールしたら、調子よくなりました。
どうやら、VB6のあとに.NET2003Proを入れたのが
悪かったようです。
DataEnvironmentをちょっといじっただけで症状が
再発したのには参りましたが勉強になりました。
>>634
>>603は?
2chに書けてもMSDNが見られないというのは、これ如何に?
もうそっとしといてやりなpgr
>>637
iモードでMSDNがみれるのか?おまえは
>>639
このスレから消えてください。
おながいします。
641デフォルトの名無しさん:04/07/12 21:03
便乗質問なのですが、

>>603
から辿って行って、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/odeopg/html/deovrworkingwithmicrosoftexcelobjects.asp
に、

>すべての Excel オブジェクト モデルは、『Microsoft Office 2000 オブジェクト モデル ガイド』で参照することができます。

とありますが、クリックすると、以下のJScriptエラーになります。

>エラー: 'hhobj_1' は宣言されていません。

これって、ウチだけですか?皆さんのところではどうですか?
見ることができる方法があったら教えて下さい。

>>641
マカーの漏れにはクリックすら効かなかったよ。(´・ω・`)
>>641
だから、iモードだって言ってるだろ!
そうか、それはたいへんだね。
もう来なくていいよ。
そこでTELNETの登場でつよ
ヴァリスは難しいよ。
それは日本テレネット。
>641
確かにJScriptは動かないがMSDNサイト内を探せばあるぞ。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/odeomg/html/deovrobjectmodelguide.asp
が表紙だ。

>646
古すぎて誰も分かんねぇよ!!(w
>>648
ここには知ってる奴ごろごろ居そうw
650デフォルトの名無しさん:04/07/13 00:54
VBからデータベースを読んで印刷するシステムを作ろうと思っています。
条件は
・VB6.0から制御できる
・縦書きレポートが出力できる
やりたいことは贈答用の「のし」を印刷したいのですが
なかなか縦書きできるソフトが見つからないのです。
お勧めのツールってありますかでしょうか?
よろしくお願いします。
>>650
Word
652650:04/07/13 00:59
本当にネタではなくWordでいいんでしょうか?
グレープシティのActiveReportかソフトウィングのWingReport
などを候補に入れていたのですが。
Word
654650:04/07/13 01:22
わかりました やはりWordなんですね。
挑戦してみます。(Wordで印刷というのは一般的なのでしょうか?)
ありがとうございました。
いや、ごめん。
製品としてよそに出すならダメだと思うよ。
自分や身内で使うのに動けばいいだけなら、いいと思うけど。

帳票作成用のコンポーネントなんかは、
縦書きサポートしていなさそうだけど、詳細は知らんから、
評価版ダウンロードして試せばどう?

どんなの印刷したいのか知らないけど、
ものによっては、自分で一文字ずつ位置を決めていって、
自力で印刷するだけで済むと思うけど、
そんなんじゃダメなら、帳票にこだわらないで縦書き印刷の
コンポーネントでも探せばどう?
>>650
小規模なシステムなら、VBからWordやExcelに出力して
「印刷ボタンを押してね」というのは現実的な選択。
大規模なら、きちんとしたコンポーネントなりを使った方が
いいんじゃない!?と思ったが・・・
「のし」の印刷は聞いたこと無いな・・・。
意外にWordというのはネタじゃないかもな。
絵柄なんかは固定でテンプレートにしとけばいいし。
印刷にWordやExcelを使うのは、ある意味非常に現実的な解だ。

>>655も書いてるが、プログラムを実行する環境にWordやExcel
があるのなら、それを使わない手はない。パッケージソフトと
して販売する予定なら現実的ではないが(販売してもいいけど、
売れないだろうね)印刷に納入先PCに入ってるWordを使う事と、
Word必須が動作条件になる事に対してのコンセンサスが納入先
と取れていれば何ら問題ない。

俺は最近IEを印刷に使ってる。ソフト側でHTML吐かせて、HTML
ファイルをNavigateメソッドで表示させて、ExecWBメソッドで
印刷プレビュー表示させる。

.Topプロパティと.Leftプロパティを充分画面外の座標に設定
すれば、印刷プレビューだげがデスクトップ上に表示されて
いい感じ。

IEならWordやExcel以上にPCに入ってる率が高いからね。
658デフォルトの名無しさん:04/07/13 09:18
文字だけの印刷ぐらいならば、何もツールは使わずVBだけでできるはず。
659デフォルトの名無しさん:04/07/13 09:19
なんでもかんでもツールに頼るのはよくない。
Click DblClik イベントでマウスのどっちのボタンが押されたかを知るにはどうしたらいいのでしょうか?
661MSDNライブラリ:04/07/13 09:29
メモ マウスの左ボタン、右ボタン、中央ボタンを区別する必要があるときは、
MouseDown イベントおよび MouseUp イベントを使います。
>>661
ガーン DblClickじゃできないのかぁ。
>>662
直前にダウンされたボタンをグローバルで覚えておいても駄目かな?

(っていうか、まんなかみぎをだぶるくりっくするなんて、糞仕様なような)
>>660
Private MouseButton As Integer
Private Sub Form_Click()
Select Case MouseButton
Case vbLeftButton
Debug.Print "左ボタンクリック"
Case vbRightButton
Debug.Print "右ボタンクリック"
End Select
End Sub
Private Sub Form_DblClick()
Select Case MouseButton
Case vbLeftButton
Debug.Print "左ボタンダブルクリック"
Case vbRightButton
Debug.Print "右ボタンダブルクリック"
End Select
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseButton = Button
End Sub

>>663
誰もが勘違いすることだけど、それだと同時押しに対応できないからMouseUpイベントで。
ダブルクリックの検出にはタイマーを使うんだよ
OS側がな
おいおいOS側ってなんだよ
さすがVB棒
http://www.doumo.jp/aon-java/jsp/postgretips/tips.jsp?tips=34
>>667
おいおい・・・バカにつける薬は無いな
>>667
?それはダブルクリック処理を行うときにシングルクリック処理を行わない場合のサンプルじゃないのか?
ごめんなさい。昨日2時間しか寝てないので・・・
まあ、イベント順の部分は確認できて参考になるじゃない。
テキストボックスの
水平スクロールバーの値を取得するにはどうすれば良いでしょうか?

> SendMessage(RichTextBox1.hwnd, EM_GETTHUMB, 0, 0)

これで、垂直スクロールバーの価は取得できるのですが。。。

よろしくお願いします。
673デフォルトの名無しさん:04/07/13 16:10
EXEを起動して、EXEの上にマウスポインタを表示させないようにするには
どうすればいいんですか?
教えて下さい。
>>672
HもVも同じサイズじゃないの?SysinfoコントロールにもScrollBarSizeしかないし。
>>673
Form上だけマウスを消すの?
Form1.MouseIconに透明なアイコンつっこんで
Form1.MousePointer=99でいくない?
676641:04/07/13 17:34
>>648
遅レスで申し訳ないですが、
ありがとうございました。
677はちみつ六郎:04/07/13 22:56
メニューエディタで割り当てたメニューのショートカットを
実行時に取得することはできないんでしょうか。
プロパティウインドウにはShortcutプロパティがあるのに、コードのエディタでは
プロパティの一覧に含まれていません…
取得とあと変更(カスタマイズ)がしたいんですが。。
678デフォルトの名無しさん:04/07/13 23:21
VBで作ったActiveXでcabファイルの中にファイルを追加して
Destdir=10や11としているのですが、ディスクにコピーされません。
なぜなのでしょうか?
679デフォルトの名無しさん:04/07/14 00:04
超素人で申し訳ありません。テキストファイルへの書き出しなのですが、
”末尾の位置を揃える”形で出力したいのですがなかなか出来ません。

a=2313,b=-1,c=114の場合、

2313
-1
114

という具合にしたいのですが、print #1, Format(a,######)とかやっても

2313
-1
114

という風に出力されてしまいます。お馬鹿な質問で申し訳ないのですが
お馬鹿とか言わずに教えてください。おながいします。
680679:04/07/14 00:13

s2313
sss-1
ss114

×
2313
-1
114

です、sは半角スペース1個のつもり
すんません。
>>679
数字の文字列の長さをだして
そこから幾つスペースを入れれば良いのか計算すれば?
len()とかspace()使えばできると思う。
682はちみつ六郎:04/07/14 00:28
>>679

RSetステートメントも使えるかも。

Dim BufAs String

Buf = Space$(5)
RSet Buf = Format$(a,######)
683はちみつ六郎:04/07/14 00:29
Format$(a,#####)はCStr(a)でいいね
684679:04/07/14 00:35
>>681-683 ありがたい。即やってみる。
685はちみつ六郎:04/07/14 00:42
そして>>677もよろしくお願いします。
686デフォルトの名無しさん:04/07/14 00:58
>>685
ショートカットって意味わかんないんだけど、
ひょっとしてショートカットキーのこと?

だとしたら出来ないんじゃないの?
ていうか、状況によってショートカットキーが変わるって
正直糞アプリとしか思えない。
687デフォルトの名無しさん:04/07/14 01:05
現在、文字列のSJISコードを返すのに

Dim strText as String
strText = "あ"
debug.Print Hex$(Asc(strText)

とやってます。(”あ”と入れたのはたとえです。)
この計算式で値を取得するのと、StrConv関数でSJISに文字を変換した後Byte型にデータを流し込んで取得する値とでは
どう違いますか?

もし採用するとしたらどちらがいいでしょうか。

Win2000Pro SP4
VB6 SP5です。
688はちみつ六郎:04/07/14 01:48
>>686
はいショートカットキーのことです。
「ショートカットキーのカスタマイズ機能」をつけたいんですよ。
これはユーザーの好きなキーを割り当てられるってことで有用な機能だとぼくは思ってます。
まあ人によるでしょうが。
>>679
もう回答出てるけど、古典的手法としてはこんなのも。
writestr = Right$(Space$(MAXWIDTH) + Str$(VALUE), MAXWIDTH)
>>687
自分で試せ。

結果が一緒で、かつ1文字1文字変換していって速度的に問題ないなら、Ascでいい。
どちらかかが駄目ならStrConvしかない。
>>687
あなたの例じゃ1バイト目のみが変換されるんじゃないの?

どの程度文字コードの知識があるかによるけど、きちんと勉強すればわかるし、
きちんと勉強しないでとりあえず作ると、あとで大体痛い目にあうよ。

多分だけど文字コード変換が必要なのって他システム連携じゃない。
問題発生したときにあやふやな知識だと大変だよ。
692デフォルトの名無しさん:04/07/14 10:17
グリッドで、Fixedの色と同じ状態にグリッド全体をしていのですが、
どのようにすればいいのでしょうか?

色は、灰色で、境が白と黒といった感じです。
693デフォルトの名無しさん:04/07/14 10:34
ど素人ですいません。
あるフォルダを、別のところにランダムな数字を付加したフォルダ名でコピーしたいと思い、

Option Explicit
Dim objFS
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")

randomize
x = int(rnd*50000)
dry = "C:\Documents and Settings\Administrator\Testfolder" & x & "testtest"
objFS.CopyFolder "C:\Documents and Settings\Administrator\Testfolder\testtest",dry, True

を実行しようとすると、
エラー: この変数は宣言されていません。 : 'x'
というエラーメッセージが出るのですが、文法的に間違っているのでしょうか?
何をしたいのか分からんが>>692の仕様を実現してみた。

Private Sub Form_Load()
 With Me.MSFlexGrid1
  .Rows = 5
  .FixedRows = 4
  .Cols = 6
  .FixedCols = 5
  .ColWidth(5) = 0
 End With
End Sub

>>693
間違っている。Option Explicitステートメントをヘルプで調べなさい。
695693:04/07/14 10:45
>>694
ありがとうございます。調べてみます。
EXCELのデータをCSVで書き出す処理で困っています。
時間(19:10等)がCSVファイルではシリアル値になってしまいます。
書き出しの方法はコードは以下のとおりです。
尚、シートの時間が入っているセルは書式設定で時刻にしています。
どなたか良い智恵をお貸しください<m(__)m>

For i = 1 To maxRow
myRecord = ""
For j = 1 To 9
If j = 1 Then
myRecord = Sheets("書き出しCSV").Cells(i, j)
Else
myRecord = myRecord & "," & Sheets("書き出しCSV").Cells(i, j)
End If
Next j
Print #1, myRecord
Next i
697デフォルトの名無しさん:04/07/14 10:52
Call MsgBox("テスト", vbCritical + vbOKOnly, AppName)

exe実行だとここんとこで実行時エラー91になるんですけど・・・
698693:04/07/14 10:54
>>694
ちゃんと動きました。
どうも、ありがとうございました。
699692:04/07/14 10:58
>>694
FixedRowsやFixedColsで指定したセルは、その色になるのは当然です。
つまり、それ以外のセルを Fixedで指定した色にしたいのです。
>>696
excel上でもデータはそのシリアル値で保持されててexcelの
機能的に書式していで時刻表示しているなら、csv出力も
formatで書式していした文字列を作ってそれを出力したらどうかと・・
701697:04/07/14 11:31
Form_Load内だとダメみたいです。なぜでしょう・・・
>>697
AppNameってのがとても気になる。

>>698
何をどう修正したら動いたのか気になるがまぁいいや。

取り敢えずあれだ、ヘルプで「変数、定数、およびデータ型」
って項目と、その関連項目を熟読するといいよ。
>>696
見たところCSVで保存するルーチンを自作しているみたい
だけど、単にCSVで保存したいだけなら、WorkBookオブ
ジェクトにあるSaveAsメソッドを使えばいいと思う。

SaveAsメソッドは、ファイルの保存形式を指定出来るか
ら、CSVで保存する事も出来るよ。
704697:04/07/14 12:26
>>702
AppNameってとこ"ABC"にしてもダメでした・・・
>>704
ホントにそれ原因か?
その行をコメントアウトしたらエラー出ないの?
706697:04/07/14 12:57
>>705
そう、コメントにしたら出ないのでこれです。
707デフォルトの名無しさん:04/07/14 13:17
>>696
×Cells(i, j)
〇Cells(i, j).Text
708デフォルトの名無しさん:04/07/14 13:18
TabStripの使い方を教えてください。
VB6のSP4です。
今、どのタブになっているかとか、何を見て判断すればいいのでしょうか?
>>706
まぁ、あれだ。VBを立ち上げて「標準EXE」を新規作成して、

Private Sub Form_Load()
Call MsgBox("テスト", vbCritical + vbOKOnly, "ABC")
End Sub

とだけ書いて、コンパイルして実行してみな。エラーが出なかったら、

Call MsgBox("テスト", vbCritical + vbOKOnly, "ABC")

には問題が無い、と言う事になる。

#エラーは常にエラーの発生している行にあるとは限らない。
710デフォルトの名無しさん:04/07/14 13:29
>>702
俺も気になる。

>>697
のやりたいことは、
Call MsgBox("テスト", vbCritical + vbOKOnly, App.EXEName)
じゃないのか?

>>708
どのタブが「選択」されているか知りたいんだよな?

ヘルプやオブジェクトブラウザで、TabStripコントロールの
プロパティを眺めてみよう。それらしきプロパティは唯一つ
だと思う。
712デフォルトの名無しさん:04/07/14 13:44
ListViewを使っているのですが、ボタンを押すとListViewが表示されるみたいな感じ
で、項目のサイズを決めてるのですが最大化したときにボタンを押すと
ListViewの項目のサイズが倍近く大きくなってしまいます。
どなたか知ってる方いたら教えてください。
お願いします。

WIndowsXP VisualBasic6.0です
713697:04/07/14 13:45
>>709
確かに、
Call MsgBox("テスト", vbCritical + vbOKOnly, "ABC")
だけのプログラムだとエラーはでません。
ですが、この部分を含んでいる大きなプログラムでは出ます。
私もなぜこんなところでエラーが出るのか、それもEXE実行の場合のみ、
しかもエラー91・・・意味不明です。
大体さ、>>697は何でそこでと断定できるんだ?
まず、メッセージボックスは出てエラーなのか、出ないでエラーなのか?
ファイルかなんかにログ吐かせて、どのステップまでいってるか確認してみたら?

なんか、実はその前の部分でこけてるんじゃないかと思ったりする。
715697:04/07/14 14:17
>>714

End ← 1回目
Call MsgBox("テスト", vbCritical + vbOKOnly, "ABC")
End ← 2回目

1回目…そのまま終了
2回目…エラー
http://www.gj.il24.net/~nakasima/vb/tips/
暗黙に作成されるフォームを(しか)使用できなくする

これじゃない?
717696:04/07/14 14:37
>>700
出来ました。有難うございました。
718696:04/07/14 14:43
見落としてました。すみません。
>>703 あるシートの一部のみCSVにするためあのような処理にしました。
>>707 この方法も試してみます。

みなさん、有難うございました<m(__)m>

前回sage損ねた・・・_| ̄|○
719デフォルトの名無しさん:04/07/14 14:47
作成したEXEを常に最前面に出すという処理なんですが、
最前面にも関わらず、マウスポインタは表示されてしまいます。
どうすればいいのかわからないので教えて下さい。
既存のVB6アプリにしたって、移行するタイミングは悩むよな。
VB6アプリではまともに動かない環境が出現するころには、
.NETの方も今とは相当変わってそうで・・・
722721:04/07/14 15:02
ごめん。誤爆した。
>>722
> ごめん。誤爆した。

こちらの私の書き込みへのRESでしょうか。w

【VBユーザー】あなたはVBを使い続けますか?@プログラマー
http://pc5.2ch.net/test/read.cgi/prog/1072332132/139
724デフォルトの名無しさん:04/07/14 15:09
グリッドで入力できるセルと入力できないセルの区別をしたいのですが、
どうすればいいのでしょうか?
>>724
何のグリッドを使ってるかによるけど。

まず、見た目で入力不可はグレーとかにしておく。
入力不可なんだから、当然そのセルでは入力モードにならないようにしておく。

これ以外にあるのか?
726デフォルトの名無しさん:04/07/14 15:16
グリッドのセルへの入力で、IMEの制御は、どのようにすればいいのでしょうか?

オフ固定とか、全角ひらがなにするとか・・・。
727726:04/07/14 15:17
行単位で、制御したいのですが・・・。
728697:04/07/14 15:26
>>716
確かにプログラム内でオブジェクト使ってますが、
Call MsgBox("テスト", vbCritical + vbOKOnly, "ABC")
では参照も何もしてませんので違うかと
>>727>>724と同じ人だと思うけど。
まず、何のグリッドを使っているかきちんと書いてくれ。

で、VB付属のグリッドは所詮おまけだ。
入力制御とか凝るのならば、市販のものを買う。
>>728
メッセージボックスって暗黙で親フォームのウィンドウズハンドルを参照してるのでは?
SystemModalだと違うかもしれないけど(APIの場合だと親をNULLにできるけど。)
include文の中で変数を使うにはどのように記述したらよいのでしょうか、
不躾な質問ですみません OTL
732デフォルトの名無しさん:04/07/14 15:38
マウスを動かす速度によってマウスポインタを表示するっていうことは可能ですか?
可能の場合、やり方も教えて頂きたいのですが…
733697:04/07/14 15:44
>>730
Form_Load時はMsgBoxがフォームを参照できないから落ちていると?
734デフォルトの名無しさん:04/07/14 15:48
>>725

>当然そのセルでは入力モードにならないようにしておく。

どうすれば、入力モードにならないのでしょうか?
735デフォルトの名無しさん:04/07/14 15:49
グリッドによってやり方が違うのならば、知っているグリッドで教えてください。
>>733
VBのフォームロードって、フォームのインスタンスが生成された後に呼び出しでしょ?
Initializeがインスタンスの生成時、でその後にフォームのロード。
737697:04/07/14 15:51
>>732
MouseMoveイベントで常にマウスの座標を取得して、
前回取得したX,Yと今回取得したのを比較して、
表示するかしないかを決めればよいのでは?
>>735
つうか、自分が使ってるものをまず書けと。

グレープシティーの奴とかで駄目なのか?
あそこぐらいは調べるのは常識の範疇だと思うんだけど。トライアルも落とせるし。
>>697
MsgBoxが原因とは思えないんだが、わからんね。

使っているActiveX DLLとかで怪しげなメモリアクセスをしていたりしない?
たまたま、MsgBoxを実行する際に発症するんじゃないかと
思うんだけど・・・
他に初期化しているオブジェクトとかがあれば、
その処理をいったん外してみるとか・・・
>>728
取り敢えずあれだ、F8キーでMsgBoxの行までステップ実行して
コードがどの順序で実行されているか調べろ。

んで、実行されている部分に1行毎に、ファイルに何か文字列を
出力するコードを埋め込め。記録する文字列は全部ユニークな
ものにしろ。(開発環境でもエラーが出るのなら、Debug.Print
を使えばいいのだが、今回のようにEXEだけで発生する場合には
使えないからなぁ。)

コンパイルして実行して、エラーが出たら、ログを見てどこま
で記録されてるか見ろ。

訳のわからんエラーの場合は、兎に角どこまで動いてて、どこ
から動いてないのかを逐一見るしかないよ。コードが>>728
手許にしかない以上、デバッグせなならんのは>>728なんだからな。

>>733
ちょっと待て。>>736の書いているとおりだぞ。

マジな話、ヘルプの「Visual Basic フォームの有効期間」を
熟読しといた方がいいよ。あと、>>716の書いてるサイトは
この辺の話を例を挙げながら分かりやすく書いてあるよ。
>>739
そうだよね、バグが再現する最小のプログラムと最小のオペレーションを詰めていくのがまず一歩目かと。
これ以上削ったら再現しないっていう線がわかれば、自動的に解決じゃないですか。
大変だけど。w
742697:04/07/14 16:15
>>739
オブジェクト(そのフォーム内のみ)を外してみたけどダメでした。
ActiveXもコールしますがMsgBoxより後です。
Form_Initializeではエラー出ませんでした。
743697:04/07/14 16:15
>>739
オブジェクト(そのフォーム内のみ)を外してみたけどダメでした。
ActiveXもコールしますがMsgBoxより後です。
Form_Initializeではエラー出ませんでした。
>>743
ActiveXを取るとどうなる?
745697:04/07/14 16:38
>>740
1行毎にテキストファイルに記録するしてみたところ、
MsgBoxより数行進んでました。
で、その行は、

  For i_Index = 0 To 8

でした。
ますますわかりません。(;つД`)
そのFor文の中が原因じゃないの?
>>745
つか何故泣く。真相に迫って来たではないか。
>>746の言うとおりForループの中が怪しげだな。
問題部分をとりあえずコメントアウトして動くか?
で、それを徐々に外していってどこでこけるか。

EXEでしか起こらない場合は、昔のデバックみたいだけどそういうやりかたしかない。
まあ、がんばってー。
749697:04/07/14 16:52
ForToNextの内容はこうです。

For i_Index = 0 To 8

Select Case mu_System.b_Menu(i_Index)

Case 0: btProcess(i_Index).Enabled = False
Case 1: btProcess(i_Index).Enabled = True

End Select

Next i_Index

ありえない・・・
>>749
msgboxの前の処理になんかあるんじゃないの?

なんか、その前の処理問題があって、たまたまmsgboxのところで出てるとか
単純に、そのmu_System.b_Menuってきちんと0から8まであるのか?
とか、少し前にも書いたけど、中身をコメントアウトしてFor文回してもエラー?
752697:04/07/14 17:01
>>751
ちゃんとあります、もしなかったら普通にエラーかと
mu_Systemってのはなんだろう?
btProcessってのはコマンドボタンかな?

何れもコントロール配列になってるっぽいねぇ。

ここのForループをコメントアウトすると
どうなるんだろう?
>>752
いや、だからその配列内に格納されているオブジェクトの実体が・・・。
エラーの内容がオブジェクトがないと言ってるわけなんで。

で、コメントアウトして回しても駄目なの?
755697:04/07/14 17:10
ForToNextを外してもエラーになります。
MsgBoxを外すとエラーになりません。
でも740さんのファイル記録だとForToNextの行でエラーなんです。
>>755
メッセージボックスの前で、
ファイルに、formhoge.hWndをCstrで変換したものを出力してみて、それが出る?
>>745
おかしいな・・・・
>1行毎にテキストファイルに記録するしてみたところ、
>MsgBoxより数行進んでました
MsgBoxの先?MsgBoxが表示されると止まるはずだけど・・・

因みに昔同じ現象食らった。
それ以来MsgBoxは結構怖くて(ワラ
そのときの対処法?自分でダイアログ作りますた。
テキストのキャレットの高さを調べたいのですが、
APIで実現できるのでしょうか?

よろしくお願いします。
MessageBox APIに置き換えて見るとか?w
>>758
キャレットの高さ=フォントの高さじゃない?
761758:04/07/14 18:53
>>760
フォントの高さというのは、どうすれば取得できるのでしょうか?
「GetTextExtentPointA」を使用するのでしょうか?

何度も申し訳ないです、よろしくお願いします。
>>758
GetGUIThreadInfo
763デフォルトの名無しさん:04/07/14 19:06
>>697
こんな条件なら言っているようなことが起こると思う。

1) 開発環境と実行環境でOSが異なる。(開発環境:9x系 / 実行環境:NT系)

2) フォームのロードイベントのMsgBoxの行以降で、何らかのオブジェクトの
  生成または初期化を行っている。

3) タイマを使っていて、タイマのイベントハンドラでその何らかのオブジェクトに
  アクセスしている。
>>761
フォントの高さならTextHeightもあるが?
今更だが・・・

>684
Format$(Cstr(HogeHoge), "@@@@@")
と言うのもある。
766デフォルトの名無しさん:04/07/14 20:26
はじめまして。
このスレがあるの知らずにEXCEL・VBAの勉強法を教えて?のスレにも
同じこと書いてしまったんですが・・・教えてほしいことがあります。

EXCELのVBAでセル内書の文字列からある特定の文字数をカウントする
命令をご存知でしょうか?

例えばセル内に「AABCAABC」という文字列が入力されていたとして、
この文字列中からBの出現回数=2という具合に出現回数を求めたいんです。

ご存知のかたよろしくお願いします。
767超適当:04/07/14 20:36
>>766
s = "AAABCAABC"
l = Len(s) - Len(Replace(s,"A",""))
768デフォルトの名無しさん:04/07/14 21:44
英語版windows xpで動作するVBプログラムを作りたいのですが、
日本語版windows xpと日本語版VB6.0しか持っていません。
日本語フォントを使わずにコンパイルすれば英語環境でも動くでしょうか?
>>768
動くか否かと問われれば動くが、色々注意する点があるし、お勧めできない。
770デフォルトの名無しさん:04/07/14 22:26
>>766
googleで「MOUG」を検索
771デフォルトの名無しさん:04/07/14 22:52
>>768
まず、ヘルプの多言語対応を読む。
基本的にはそこの記述を守れば動く・・・・はず。なにせMSのやることだから。

>>768
ANSIのデータのみ取り扱うと割り切るなら動くと思うよ。

XPなら、地域のオプションで、「UNICODE対応でない
プログラム言語」を英語(US)に設定して再起動すれば、
取り敢えず英語版Windowsに近い環境は得られるので、
VBで作ったEXEのデバッグも出来る。

ただ、英語(US)な環境で日本語版VBを起動するのは
他人にはお薦めしない。まぁ動く事は動くんだけどね。

正直言って、バイリンガルやマルチリンガルを真剣に
やるなら、VB.NET(と言うか.NET Framework)の方が
楽よ。あれで多国語なアプリを一度作ると、もう後戻り
出来ないねぇ。
773デフォルトの名無しさん:04/07/14 23:03
>>772

> ただ、英語(US)な環境で日本語版VBを起動するのは
> 他人にはお薦めしない。まぁ動く事は動くんだけどね。

なんでー?いつも、英語版 OS 上に日本語アプリをインストール
してるけど、別に問題起きたためしがないよ。
>>773
あなたはプログラマ?
少々VBやってれば何故かわかるはずだが。
>>773
英語版Windows上で日本語版VBを起動すれば分かる筈だが。
776デフォルトの名無しさん:04/07/14 23:18
私も少々VBやってるけど、問題ないほうに一票。
ただし、VBの開発環境入ってるPCに、言語バージョンが違うVBのアプリ
インストールする場合は除く。
昔はよく海外製のソフト入れるとDLLが英語版になったりしたよな
778772:04/07/14 23:24
>>768
あと、インストールパッケージは、ディストリビューション
ウィザードを使ってもいいけど、他言語ロケールに対応させる
のが結構鬱陶しい(やり方はMSのサイトに書いてあるし、必要な
ファイルも置いてあるんだけどね)

ので、Visual Studio InstallerをDLしてきてWindows Installer形式の
パッケージを作った方が遥かに楽だと思う。
>>776
確かVB6のランタイムって、英語版DLL+各国語リソースDLLって形
になってたよな。だもんで、過去のVBに比べればその辺は影響少な
いんじゃないかなと思ってたり。

VB2辺りの頃は、しょっちゅう>>777の状況に陥ったけどなぁ。VBだけ
じゃなかったけど。
あとはOCXだが、VSIがラクだよな
781768:04/07/14 23:37
皆さんありがとうございました。
おそらく動くだろうということで進めてみることにします。

OCXとかもがんがん使ってるんですけど、systemディレクトリじゃなくて、
アプリのディレクトリに入れとけば英語版windows環境を壊したり
することはないですよね?
>>781
MSに聞かないと、我々が大丈夫だと言ってもしかたがないだろ。
>768
お前がどういう物を作ってるのか詳しく説明しない以上、
自分でトライ&エラーしかないだろう?

それともこのスレの言質が欲しいのか?
んじゃオレが言ってやるよ。
だいじょーぶだ〜〜〜いじょうぶ!!も〜〜バッチリ!!!!キミって天才!!
言質
「げんち」って読むのか・・・

はじめて知る言葉だよ
785はちみつ六郎:04/07/15 02:47
>>766
たぶんそんな関数はないから自作。
Instr関数をループで回して簡単にカウントできるよ。
俺はこのスレで、VisualStudio6.0ProとVisualStudio.NET2003Proが
同じPCで共存できると聞いて喜んでインストールしたのに大失敗。

>>768

最後は自己責任ですよ。
mdb形式です。
メールのDBなんですが、フィールドが
 メール番号(数値型)
 件名(テキスト)
 投稿日(日付型)
 投稿時間(時間型)
 投稿者(テキスト)
 内容(メモ型)
ってふうになっています。

年間、月間、日毎の投稿数を調べる場合、
投稿日のフィールドを、年、月、日にわけるしか
ないのでしょうか?
>>787
投稿日から年、月、日を取得することは初歩的な関数で可能。
>>787
初めてのAccessとかSQL入門とか買って来い。
790デフォルトの名無しさん:04/07/15 10:39
マウスの移動範囲を設定したいのですが、やりかたがよく分かりません。
X、Y軸共に0〜500の間でしか移動できないようにしたいのですが、
どうしたらよいのでしょうか?
791デフォルトの名無しさん:04/07/15 11:20
はじめまして。
データベースのデータのリストを表示するためにBOC社のSpread Ver3.0Jを使って
みようと思っています。
各行にオプションボタンの代わりにチェックボックスを配置していて、一つのチェ
ックをつけた時に他の行のチェックを全て外すようなプログラムを作ろうとしてい
るのですがどのプロシージャにコードを書けばいいのか悩んでいます。GotFocusや
LostFocusかと思ったのですが違うようです。初めて使用するツールでわからない
事が多く苦労しています。ご存知の方がいましたら是非教えてください。
>>790
APIのClipCursor関数を使うのがいいかな。
参照↓
ttp://www.vbvbvb.com/jp/gtips/1001/gClipCursor.html
793デフォルトの名無しさん:04/07/15 11:51
>>792
ありがとうございます。参考にしてみます。
>>791
AfterCellChangeとかないのかか?
ヘルプのイベントを全て見た?
795697:04/07/15 12:32
>>763
解決しました!ありがとうございます!!
原因はBでした、MsgBox以降でタイマーのEnabled=Trueで発生しなくなりました。
796デフォルトの名無しさん:04/07/15 12:36
>>794
レスありがとうございます。付属の解説書には掲載していませんでした。
ButtonClickedプロシージャで
For i = 1 To Spread.MaxRows
Spread.Row = i
Spread.Value = "0"
Next i
を入れてみたのですが、値を変えると再び同じプロシージャに入ってしまい無限
ループになってしまいました。
>697
ここまで引っ張っといてヘラヘラ喜んでんじゃねぇ!!
たまたま>763が例をあげてくれたからいい様なものの、
お前タイマー使ってるなんて一言でも説明したか?
お前がオレの後輩だったらぶん殴ってるぞ。
>796
そのプロシージャには引数ないのか?
.MaxRowsというプロパティがある以上、各Rowの集合体はCollectionに
なってるんじゃないか?
出なけりゃお前がやりたい事以外でも、
Row単位での制御は何も出来ないという事になってしまうぞ。
そんなクソControl売ってる訳ないしな。

原点に立ち返って、標準のListBoxでもCheckBox出せるんだから、
そこら辺から勉強し直せ。
799デフォルトの名無しさん:04/07/15 13:29
>>798
イベントプロシージャに引数はあります。
ButtonClicked(ByVal Col As Long, ByVal Row As Long, ByVal ButtonDown As Integer)
自分もListBoxでやろうとしてたんですが、先輩に「Spread使えた方が便利だから
、これを機会にSpreadでやりなさい」と、、、。
>799
やっぱRowが引けるじゃねーか。何でそれを利用しない?
んであんなコード書いてたら無限ループになるのは当たり前だ。

>自分もListBoxでやろうとしてたんですが、先輩に「Spread使えた方が便利だから
>、これを機会にSpreadでやりなさい」と、、、。

いや、だからListBox使えって言ってんじゃなくて、「こういう形態の物」の使い方を
(恐らく一番簡単であろう)ListBoxで勉強しろ、つってんだよ。
コード見りゃ「ああ、コイツ何も分かってねーな」てのが一撃で分かったからな。

つーか何でその先輩に質問せずにここで聞いてんだ?
801デフォルトの名無しさん:04/07/15 14:07
>>800
>やっぱRowが引けるじゃねーか。何でそれを利用しない?
Rowを使いたいのですが、その方法が他の行のチェックを外してからRowに入って
る値の行のチャックをつけるっていうのしか浮かびませんでした。

>つーか何でその先輩に質問せずにここで聞いてんだ?
やれと言ったわりに、自分がやりたい事を説明質問したら「わからないから、がん
ばって調べてみて」と。
>>801
グローバルかスタティックで変更中の行番号を保持。
その後自分以外を全て変更。
連鎖して起こるイベントは自分以外だったら、何もしないとか。
>>697=795
まいったな。オブジェクトのインスタンス生成前にMsgBoxで処理が
止まってるところにタイマーイベントで、オブジェクト叩いてるってオチかよ。

恐らく誰かさんの作ったコードのメンテやってるんだろうけど、もちっと
コードが読めるようになった方がいいと思うぞ。
804デフォルトの名無しさん:04/07/15 14:41
>>802
ありがとうございます。早速チャレンジしてみます。
>>804
書いた本人がいうのもなんだが、あの日本語でわかってくれた?
要はイベントを抑制するフラグを作って、連鎖するのを防ぐと。
806デフォルトの名無しさん:04/07/15 15:22
>>805
実際とりかかってみようと思ったのですが、ちゃんとわかってなかったです。
その後いろいろ調べてみて
If ButtonDown = 1 Then 'チェックをつけた時が1
  SS.Col = Col
  For i = 1 To SS.MaxRows
    SS.Row = i
    If SS.Row <> Row Then
      SS.Value = "0"
    End If
  Next i
End If
で上手く動作しました。プロシージャの引数のButtonDownにチェックをつけた時
は1で、外した時には0が入るようだったので利用してみました。
807デフォルトの名無しさん:04/07/15 16:37
リッチテキストの垂直スクロールバーが
有効になっている時の、最大値を取得する方法ってありますか?
EUCをSJISへ変換するVBのサンプルソースないですか?
809デフォルトの名無しさん:04/07/15 18:31
>>790
マウスカーソルは透明にしておいて、イメージをマウス代わりにしてみてはどうでしょう?

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If X > 500 Then X = 500
If Y > 500 Then Y = 500

Image1.Left = X
Image1.Top = Y

End Sub
>>808
NKFのDLLとかそれのソースとかPerlのJCodeとか色々。
VB起動→プロジェクトロードだと、相対パスの画像等が開けない
目当てのプロジェクトダブルクリックで起動すると、相対パスの画像等が開ける

おそらく、基準パスの関係なんでしょうが、どうすれば解決できますか?
>>811
デバッガの実行パスはVB.EXEの場所です。
デバック用にCHDIRで適当なディレクトリに移動する。
例えば、Form上に、3×5個のコントロールがあるとします。

矢印キーを用いて、上下左右にForcusを移動したい場合、
どうすればよいのでしょうか?
コントロールを配列にして、キーダウンで目的のコントロールにSetFocus。
手元にVB無いから思いっきり適当だけど、こんなんで出来ると思う。

private function pos(cur,x,y) as long
pos = cur+y*3+x;
if pos<0 then pos = 0
if pos>14 then pos = 14
end function

private sub button_mousedown(index,keycode,shift)
dim i as long
select case keycode
case up
i = pos(index,0,-1)
case down
i = pos(index,0,1)
case left
i = pos(index,-1,0)
case right
i = pos(index,1,0)
end select

button(i).setfocus
end sub
>>814
ボタン限定だと弱いと思う。
FormのコントロールってControlsコレクションで取れるんだっけ?

FormのKeyPreviewをTrueにして、Formのキーダウンイベントで出来ると思うけど。
今フォーカスがあるウィンドウをとるのはAPIがあったはず。

で、そのコントロールのhWndあたりで、Form上のどのコントロールか判定して、
そのコントロールの左上座標を取得。

その左上座標からカーソルを押された方向に一番近いコントロールをコレクションから
探して、そいつのSetFocus。(フォーカス取れるかの判定は必要かも)
816デフォルトの名無しさん:04/07/16 09:51
IMEの制御をしたいのですが、
オフ固定とか、全角ひらがなとかにするには どうしたらいいのでしょうか?
817デフォルトの名無しさん:04/07/16 10:35
With コントロール

で使用したとき、その中で そのコントロール自身を取得するには
どうしたらいいのでしょうか?
NAMEだと文字列になってしまいます。
Controls が 取得したいのです。
818デフォルトの名無しさん:04/07/16 10:38
MediaPlayerをフォームに組み込んで、動画(mpg)を再生しているのですが、
終了時に先頭に戻ってしまいます。
終了時に最後でストップさせる設定とか方法はないでしょうか?

または、現在再生位置は取得できるので、動画の長さが取得できれば止める事ができるのですが、
動画長について取得する方法はないでしょうか?
819818:04/07/16 10:49
もしかして、スレ違いですか?
820817:04/07/16 10:53


With Text1(1)
Call trns(なんとか)
End With

Sub trns(t as textbox)
end sub

なんとかの部分に Text1(1)を 意味するものが入れたいのです。

どうしたらいいのでしょうか?
>>817
逆に質問していいか?

With〜End Withを使わなければならない理由は?

Call trns(Text1(1))では駄目なのか?
822817:04/07/16 11:09
>>820

With〜End Withが、複数あるため、すべて同じような
コーディングにしたいのです。
>>817
・・・おまい、Withステートメントの意味わかってんのか?
824817:04/07/16 12:01
>>823
わかってます。

つまり、NAMEだと オブジェクト名しか取得できないので、
コントロール自身を取得できるものがないのか?という質問です。
825デフォルトの名無しさん:04/07/16 12:04
安かったので、学生向きVISUAL Studio買ったけど、何したらいいか見当つきません。
何すればいいですかね?

というか、最初に何をプログラムしましたか?
>>825
ベーマガ
最初に作ったのなんだったかなぁ。
素数計算だったか魔方陣生成だったか。

将棋(思考ルーチン除く)がいいよ
本棚に並べて満足感に浸ってろ

何したらいいか?じゃなくて、何かしたくなったらすればいい
830823:04/07/16 12:32
>>817
わかってるんだったら、
何故その部分でWithステートメントを使うの?
>>821氏も言ってるけど、call trns(Text1(1))でいいと思われ。

>コントロール自身を取得できるものがないのか?
TextBoxのプロパティに As TextBoxな値があったらまずいでしょ。

831817:04/07/16 13:10
>>830

なぜ、Withステートメントを使うのか、その利用方法を
知ってるのなら わかると思いますが?
832817:04/07/16 13:12
>>830

私が Withステートメントを使う理由をわかっていないと
思われるならば、正しい理由を教えてください。
>>832
横レスだけど。

Withステートメント内で質問のようなことをしようとするから。
Class内のThisと区別できていないじゃない。

Withで指定されたオブジェクト自身が自分のインスタンスをプロパティで持っているなら別だけど。
834デフォルトの名無しさん:04/07/16 13:19
Option1.Value = True と
Option1 = True は 同じことでしょうか?
>>826
そりゃプログラミングじゃなくて単なるタイピングだろ?

投稿してたってんなら別だけど。
同じですが、省略せずに記述しておいたほうが無難であると思われまする。
>>832

Withステートメントが何かを分かってないんじゃ?
フロー制御ステートメントって何か分かってる?
>>834
デフォルトプロパティです。
TextBoxならTextなど、コントロールによって決まります。

だけど、ソースを見たときに判りにくいのとかあるので>>836さんに同意。
>>833
オブジェクトが自分のインスタンスをプロパティで持つ事ってあるのかな?
840デフォルトの名無しさん:04/07/16 13:38
>>837
わかっているならば教えてやれ。
841833:04/07/16 13:43
>>839
インスタンスへの参照はもてるけどね。
実体ではないですよ、はい。
実体じゃ、鶏が先かたまごか先かに。w
842813:04/07/16 13:43
>>814->>815さん
有難うございました。

>>815さん
なるほど非常に参考になりました。

実は、各コントロールの裏に、飛び先の構造体を持たせておこうかと思ってました。
というのは、実際には、
text1の値が、1ならばtext2にFocus移動、2ならばtext3にFoccusが移動するという機能を
持たせたいからなのですが、
飛び先を、あらかじめ持たせるのはプログラム上、煩雑になる気がして悩んでいます。
843デフォルトの名無しさん:04/07/16 13:44
Check1.Value = True

としたらエラーとなります。
どうしててでしょうか?
>>817
Call trns(Me.Controls.Item(.Name).Item(.Index))
Call trns((Me.Controls(.Name)(.Index)))
trns (Me.Controls(.Name)(.Index))
好きな書き方でやったらいい。
>>843
エラーコードを見て、Check1.Valueプロパティの型を調べれば
原因が分かると思う。
>>843
チェックボックスのValueはBooleanか?数値だったような・・・。
チェックあり、なし、無効の3択。
847デフォルトの名無しさん:04/07/16 14:01
>>817
Controls が 取得したいのです。

Contol を取得したいのです。
の間違いだと言う前提で・・・。

Dim Contol as Control

set objControl = コントロール
with コントロール
end with

で、objControl を参照しれ。




>>842
だから座標計算ですよ。w
昔、同じようなプログラムは作ったことがある。

Textboxが画面内に適当にあって、それ間をカーソルで移動。
敵はどのコントロールがフォーカスを持っているかより、
コントロール毎のデフォルトの処理かな?
カーソルキー上下左右とかで何か処理がある場合。(テキストだと当然文字間のカーソル移動だし)
849847:04/07/16 14:03
>>847
×Dim Contol as Control
○Dim objContol as Control
だ。スマソ
850817:04/07/16 14:11
>>844

Call trns(Me.Controls.Item(.Name).Item(.Index))
この方法でいけました。ありがとうこざいます。

ちなみに 2行目の
Call trns((Me.Controls(.Name)(.Index)))
エラーになっちゃったのですが・・・。
ま、手段がみつかったので、いいです。
851デフォルトの名無しさん:04/07/16 14:12
IMEのプロパティがないところで、IMEを制御する方法を誰か教えてください。
>>851
APIで出来ないの?
853デフォルトの名無しさん:04/07/16 14:21
854デフォルトの名無しさん:04/07/16 15:57
>>853
全角ひらがなに したいのですが、どうすればいいのでしょうか?
いつからここはGoogle検索の代行サービスになったんだ
857デフォルトの名無しさん:04/07/16 16:53
はてな?(w
フェッチするとはどうすること?
859デフォルトの名無しさん:04/07/16 17:38
860デフォルトの名無しさん:04/07/16 17:39
VBでフェッチするにはどうするのだろうか・・・
863デフォルトの名無しさん:04/07/16 19:58
あるプロジェクトの保守管理を行いつつ、システムの追加・変更案件の作業をするとき、
皆様は、ソース管理はどのようにしていますか?

現在、保守管理は別の者が行っています。
私は、次のフェーズで追加される新しい機能の仕様の検証や、
要素技術のテストをします。
開発環境は VB5.0 で、プロジェクトは Visual Source Safe 8.0 で管理されています。

VSS から切り離して作業するというのも考えたのですが、やはりソース管理されて
いる便利さと安心感は捨てがたいです。

ライセンスの関係で VSSサーバは現在一台ですが、購入に見合うメリットがあれば
もう一台用意することも検討できます。

試行錯誤するのが一番なのでしょうが、間違えて安定版の方に不都合を出すと、
(私の命が)危ないので、アドバイスや、参考になるページ、書籍等ありましたら
御教示下さい。よろしくお願いいたします。
>>863
命が危なくない仕事を探せばいい。死ぬよりいいだろ。
865デフォルトの名無しさん:04/07/16 20:19
Windows Xp Professional で Visual Basic 6 SP6 を使っています。
イメージボックスに画像を貼り付けた後、その画像をクリックすると
Internet Explorerを起動して指定したURL先にリンクするようにしたいのですが、
どうすれば良いのでしょうか?必ずInternet Explorerを起動ではなくても
シェルに任せる形で良いです。よろしくお願い致します。
>>865
ShellExecuteEx
867865:04/07/16 20:24
>>866
ありがとうございます。やってみます。
>>858
ADOとかoo4oだったら、勝手にフェッチしてくれてるじゃん。
SQLを実行して結果をVB側の変数に割り当てる部分。
足フェチですが何か?
870デフォルトの名無しさん:04/07/16 20:33
>>863
VSSってブランチできないんだっけ?
CSVばかりつかってるからよくわからん。
CSVじゃ管理できんわな。CVSのまちがいでした。
872デフォルトの名無しさん:04/07/16 21:17
ウィンドウ上に5*5のボタンが並んでるとして、それをtabで飛ばしたい時は、
TabIndexに番号を付けてやればいいっていうのはわかるんだけど、
十字キーの→を押したらタブ移動とは関係ないく、フォーカスが右に移動して、
←を押したらフォーカスが左に移動するという処理をやりたいんだけど、
何か良い方法ない?一つ一つキープレスに命令書き込めばできないことは
ないとは思うんだけど、かなり力技だと思うんで・・・
>>872
そういうときに、コントロール配列ですよ。
>>872
別の質問者なのかな。 >>813-814
同じだろ
876813:04/07/16 21:55
>>875
違います(w
yahooからhtml取得したらEUCなんですけど
これをsjisに変換したいのですがDLLなど使わずに
やりたいのですが、eucからsjisって計算だけじゃ変換できないんでしょうか?
>>877
おまえなあ、、、DLLも計算して変換してるというくらいはわかるよな?
>>877
オールVBのサンプルソースぐらいすぐ見つかるのに。
>>879
どこですか?
まったく見つからないのですが・・・
>>880
全く今日はぐうぐる様への信心が足りない奴とか、少し前も読まない奴とかばっかり。
>>863
VSSの最新版って8.0だっけ?

VSS6.0だとファイルの分岐、共有、マージって方法もあるけど
個人的にはあまりお薦めできない。(詳細はヘルプを参照)

VSS鯖が1台でも、VSSのデータベースを複数作れば
ライセンス的には問題無いんじゃない。
ま、VSSデータベースを複数作らなくても
プロジェクトを分けて管理すれば済むと思われ。
>>881
無駄レスはいりません。
>>883
無駄レスはいりません。
大体さー、文字コード変換の基本もわからない奴が
ネット上からHTMLとか拾うプログラムを作るべきではないと思うんだが。
>863
とても簡単だ。
藻前が素晴らしいソース管理プログラムを作ればいい。

という冗談は置いといて、一番心配なのは何なんだ?やっぱソース消失だろう?
だったら原点に帰ってバックアップ環境の強化じゃないか?
テープドライブなぞ用意してデイリーバックアップするのが一番じゃないか?
887デフォルトの名無しさん:04/07/16 22:59
ていうか、少なくとも4人以上の人間がかかわっているような大きめのプロジェクでもなきゃ、
そもそもソース管理ツールなんて本当に必要なのかと。。
>>885
はぁ?基本はわかってるっつーの
SJISからJISやiso2022jpならCでやったし。
>>887
あなたの所は生ぬるい職場なんですね 本当にうらやましい
>>887
一人で使っていても便利だぞ?
>>888
わかってねえじゃん。
>>891
どこがやねん
もういいや
895はちみつ六郎:04/07/17 01:06
秀丸とかのエディタで改行や半角スペース全角スペースなどを表示してますが
ああいう記号を表示するのってVBのテキストボックスでやろうと思ったら
どんな方法があるでしょうか…?
>>895
テキストボックスでやろうと思うな。
オーナードローでもやるつもりか?
>895
テキトーな文字に置き換えるしかなかろう。
どういう文字にするかは自分で考えれ。
898はちみつ六郎:04/07/17 04:59
>>896-897
ありがとうございます、やってみます。
>>872
じつは KeyPress ではできない。矢印キーは特殊な扱いで、
フックしないととれないから。

ということで、フックして後は力技。
>>888
それが本当なら、自力で書けないはずがない。
901デフォルトの名無しさん:04/07/17 11:49
string型に複数行のデータがあるのですが
1行目読み終わったら次の行に移動するにはどうすればいいですか?

できなければ行で管理できるデータ型ってありますか?
>>900
だから書けるっていってるじゃん。
アルゴリズムを教えれ
>>901
splitとかvbcrlfを探すとか配列使うとか
>>902
自分で考えろ。
それができないなら、分かってるとも書けるとも言えない。
ていうか、
>yahooからhtml取得したらEUCなんですけど
>これをsjisに変換したいのですがDLLなど使わずに
>やりたいのですが、eucからsjisって計算だけじゃ変換できないんでしょうか?

877さんは、計算「だけ」で変換できるかどうかを聞いてるんじゃないの?
Tableをもたせないとダメな変換もある訳だし・・・
906901:04/07/17 13:12
>903
できた〜〜〜!!!!
ありがとう(・∀・)
>>905
そうなの。君読解力あるな。
ここはVB房の巣窟で困るよ
ところでバイト配列を高速にコピーする命令ってありますか?
memcpyみたいやなつ。
jcode.dllつかっちゃったよ。まぁいっか。
>>908
CopyMemoryってAPIは?
>>910
APIでやるのが普通なんですか?
VBにはそういう命令ないのかな。
VB6で作られたソフトのコードを解析しています。
.ctlの中に記述してある関数を、Callで呼んでいる箇所があるのですが、
一行ずつデバッグしていくと、その箇所で関数に入らず次の行に行ってしまいます。
その中の値をウォッチしたいのですが、デバッグはできないのでしょうか。
>>877
EUCってのは単純じゃないんだよね。
完全な変換を考えるとかな〜り面倒。
でも日本語の一般的なところだけなら
JIS->SJISと大してかわらん計算でいけるよ。
EUCコードから8080Hを引いたのがJISになるの。
(昔はこの手抜き変換がまかり通っていたんだけどね)
914デフォルトの名無しさん:04/07/17 16:29
メッセージボックスやファイル操作でダブルコーテーションを入れる必要があるとき
にはどうしたらよいのでしょうか?
Chr$(&H22)
>>905
可能かどうかといえば可能だけど、
>>>888の通りならそんなこと聞くまでも無いので煽られてるだけ。
ついでにいえば>>893を読んで理解できないならそもそも問題外。

素直に分からんといえば、親切な奴が教えてくれたかもしれんのにね。
917デフォルトの名無しさん:04/07/17 16:58
>>915
おお、ありがとうございます。
>>907
計算だけで変換できないなんて、知ってればすぐにわかることじゃん。
結論としては、あんたは文字コード変換を理解できていない。
>>918
話にならない
920デフォルトの名無しさん:04/07/17 18:26
フォームにボタンを追加した上で、

Option Explicit

Private Declare Function PathCompactPath Lib "shlwapi.dll" _
Alias "PathCompactPathA" _
(ByVal hdc As Long, _
ByVal lpszPath As String, _
ByVal dx As Long) As Long

Private Sub Command1_Click()
Dim buff As String * 1024
buff = "c:\" & vbNullChar
PathCompactPath hWnd, buff, Width / Screen.TwipsPerPixelX - 30
End Sub

というコードを記述しました。
ここで、ボタンを 3、 4 回つづけてクリックすると、不正アクセスエラーが
発生します。
なぜでしょう?また回避法はあるでしょうか。
>>919
そんなに自分を責めるなよ。(´・ω・`)
922デフォルトの名無しさん:04/07/17 19:55
>>920
うまくいかない原因は想像がつくけど、そのプログラミング雑誌のライターが
読者に宿題だすみたいな書き方が気に入らない。

なんなんだよ、
>なぜでしょう?また回避法はあるでしょうか。
ってのは。それが人に物を頼む態度なの?
jcode.dll使ってるんだけどメモリ関係のエラーが出てしまう。
なぜだろう
>>923
使い方が悪い
悪くない
あのさ、一連の文字コードの奴。
あんた人に聞く気ないならここ来るなよ。
かまったら粘着するから、以後スルーね。
>>920
しね
>>920

> ByVal hdc As Long
「hDC」っていうのは「デバイスコンテキスト」の「ハンドル」っていう意味。
対して
> PathCompactPath hWnd, buff, Width / Screen.TwipsPerPixelX - 30
「hWnd」っていうのは「ウィンドウ」の「ハンドル」っていう意味。
後はGoogleなんかで検索して理解してね。
デバイスコンテキスト周りは、後始末とかきちんとね。
931デフォルトの名無しさん:04/07/17 22:59
デバイスコンテキストの後始末なんていらないし、>>920の問題は>>929
書いてあることだけではない。
932863:04/07/18 00:17
近くの本屋には、いい参考書がありませんでした。
(まぁ、あったら逆に驚いたところですが)

>>882

CVS も個人的に興味があるので調べてみたいと思います。

分岐については、少し試してみてから使用するか考えます。
とりあえずは、リポジトリをもう一つ作って、そちらで作業することにします。
併合した場合に、履歴が活かせないのが少し残念ですが。
(こういうときのための分岐なわけですね・・・)

>>886
CVS に機能追加できるような腕前になれたらいいなぁ・・・。

>>一番心配なのは何なんだ?やっぱソース消失だろう?
消失も怖いですが、
「責任の所在がはっきりしない変更」が入り込んだときが、根が深いですよね。
現在は、デイリーはファイルで別パーテーションに、
ウィークリーでCD-RW に取ってます。

でも、考えてみたら自分ではまだリカバリの演習(?)してませんでした。
連休明けにその辺見直してみます。

>>890
同感です。
>>932
いまから使うなら subversion のほうが良いと思うんだが。
934デフォルトの名無しさん:04/07/18 01:23
証明書に関するAPIってないのでしょうか?