VBプログラマ質問スレ(6.0以前) Part50
1 :
デフォルトの名無しさん :
2006/10/22(日) 20:39:53
http://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx Visual Basic チームは、Visual Basic 6.0 アプリケーションが Windows(R) Vista でも
"そのまま" 動作する互換性を提供することを表明します。」
Visual Basic チームは、Windows XP で実行できる Visual Basic 6.0 アプリケーションが
Windows Vista でも実行できるようにすることを目標としています。
また、Windows Vista で実行できる Visual Basic 6.0 の開発環境を提供するための取り組みも行っています。
このドキュメントで説明するように、Visual Basic 6.0 ランタイムは、Windows Vista のライフサイクルをとおして
サポートされます (メインストリーム サポートが 5 年、延長サポートが 5 年の合計 10 年になります)。
マイクロソフト プロダクト サポート ライフサイクルの詳細については、
http://support.microsoft.com/gp/lifepolicy (英語) を参照してください。
マイクロソフトでは、ユーザーが Windows Vista で Visual Basic 6.0 アプリケーションを実行できるようにするため、
Windows Vista に Visual Basic 6.0 ランタイムの主要コンポーネントを同梱する予定です。
Visual Basic 6.0 ランタイムを使用するように記述されたアプリケーションが Windows XP と Windows Vista の両方で
同様に動作する互換性を確保するため、一連のアプリケーションを使用してテストを行いました。
Visual Basic 6.0 IDE は、延長サポートの一環として、2008 年 3 月まで Windows Vista でサポートされます。
Windows Vista チームと Visual Basic チームでは、Windows Vista で Visual Basic 6.0 IDE のテストを行い、
IDE が以前のオペレーティング システムと同様に機能するようにしています。
-
とっととVB.NETを覚えて下さい。
VB6の手軽さは異常杉
見た目を変えずOptionButtonの変更を ロックするプロパティってないんですか? Enabled=Trueだとグレーになっちゃうし・・・ TextBoxのLockedみたいなプロパティは無いし・・・ 皆さん、どのように対処してますか?
9 :
デフォルトの名無しさん :2006/10/23(月) 11:39:50
>>8 フレームとかピクチャボックスの中に入れて
そのフレームとかピクチャボックスのEnableプロパティをFalse
>>8 「見た目を変えずOptionButtonの変更をロックする」なんてUIは最低最悪。
11 :
デフォルトの名無しさん :2006/10/23(月) 12:57:00
CSVファイルの内容をすべて一覧で表示したいのですが、 FlexGridやListViewなどのocxを配布するコントロールが使用できません。 行ごとの追加削除をしたいので行ごとの選択をしたいのですが、 ListBoxコントロールでLFで隙間を空けるのも試してみましたができません。 なにかいい案はありませんか?
12 :
デフォルトの名無しさん :2006/10/23(月) 12:59:50
MS FLEX GRID もだめなのか?
13 :
デフォルトの名無しさん :2006/10/23(月) 13:01:40
12は間違いだったwwスマン ピクチャボックスの上にチェックボックス+テキストボックスとか動的に並べて擬似グリッドとか(;´∀`) だめっぽwww
14 :
12 :2006/10/23(月) 13:06:30
ListBoxを横にならべて、 1つ目の選択行が変わったら他の選択行も変えようかとも思ったんですが、 ListBoxごとにスクロールバーができるんですよね・・・
> ocxを配布するコントロールが使用できません。 何故に? というよりは、そういう条件でありながら、何故にVBを選んだのか気になる。 今時、VB6しか使えないなんてことは無いだろうし。
16 :
11 :2006/10/23(月) 13:28:22
14の名前欄間違えました。11です。 とりあえず重ねてスクロールバーが見えないようにはしたけど、 Topindexが変わったのをキャッチすることができません。 いっそ何か違う方法のほうがいいのかな・・・
17 :
11 :2006/10/23(月) 13:36:08
VBもocxなしもお客様からの指定です・・・ ちょっと何か違う方法を考えてみます。 ありがとうございました。
そんな客だったら100倍くらい値段吊り上げる
20 :
デフォルトの名無しさん :2006/10/23(月) 14:30:25
今VB6環境ないんであれだけど こんなんでいけるんじゃね?(ry タブとか消されるんで適当に解釈してくれ、あと行も詰めて書くわ Option Explicit 'これであってたっけ? Private Const mcMaxRow As Long = 3 Private Const mcMaxCol As Long = 3 Private mText(1 To mcMaxRow, 1 To mcMaxCol) As TextBox Private mCheck(1 To mcMaxRow) As CheckBox
21 :
デフォルトの名無しさん :2006/10/23(月) 14:32:16
Private Sub ContainorMake() Dim i As Long, j As Long Dim cnt As Long, TempLeft As Long, TempCulc As Long Me.Check(0).Top = 0 Me.Text1(0).Top = 0 For i = 1 To mcMaxRow Load Me.Check(i) Set mCheck(i) = Me.Check(i) Set mCheck(i).Container = Picture1 With mCheck(i) .Top = mCheck(i).Height * (i - 1) .Visible = True End With Next i cnt = 0 For i = 1 To mcMaxRow TempLeft = mCheck(i).Left + mCheck(i).Width TempCulc = 0 For j = 1 To mcMaxCol cnt = cnt + 1 Load Text1(cnt) Set mText(i, j) = Text1(cnt) Set mText(i, j).Container = Picture1 With mText(i, j) .Left = TempLeft + (.Width * (j - 1)) .Top = mCheck(i).Top .Text = "" .Visible = True End With Next j Next i End Sub
22 :
デフォルトの名無しさん :2006/10/23(月) 14:36:01
上のは コンテナ用 Picture1 As PictureBox あとは表示用 Check(0) As CheckBox Text1(0) As TextBox という3つのコントロールが貼り付けられてるの前提でお願い(CheckBoxno縦幅にあわせるので) あとチェックとテキストは貼り付けた時にサイズを適応に指定して、非表示っつうかんじで
23 :
デフォルトの名無しさん :2006/10/23(月) 15:17:05
参考書のとおりに outportb Port +2,0 と打つと、 outportb(Port +2,0) となってしまうのですがなぜでしょう。 outportbは宣言済みです。
>>17 CreateObject でエクセルでも使え。
掛け算のプログラムを打ち込みたいのですが、繰上げの部分がうまくできません。 ↓のは足し算のプログラム(端折ってますが)なんですが、 これからうまく掛け算のプログラムに変えられますか? For i = 0 To L2 - 1 a = CInt(Mid(strA, L1 - i, 1)) b = CInt(Mid(strB, L2 - i, 1)) wa = kuriage + a + b If wa <= 9 Then ans = CStr(wa) & ans kuriage = 0 Else ans = Mid(wa, 2, 1) & ans kuriage = 1 End If Next i If kuriage = 0 Then If L1 = L2 Then execPlus = ans Else execPlus = Mid(strA, 1, L1 - L2) & ans End If Exit Function End If
> これからうまく掛け算のプログラムに変えられますか? 変えられるだろうけど、変える気はしない
>>27 激しく同意www
>>26 つか、普通に+演算子とか*演算子を使っちゃいかん理由でもあるのか?
・・・と、釣られてみるwww
30 :
26 :2006/10/26(木) 13:12:13
引用して打ち込んでください、とのことなんですが、
>>28 さんのやり方でやってみます。
レスありがとうございました。
マンカス
VBからADO経由でJETデータベースの ロック状況とか接続ユーザーの情報とか 取得する方法ってある? やっぱ*.ldbの有無と内容を解析するしかない?
プロの方々、教えてください。 「abc123」というテキストが書かれているファイル test01.txt をバイナリで読み込んで、それの 1文字目と2文字目のxor値をとり、その値を abc123の後に入れてファイルに書き出すことが やりたいのですが、下記を実行すると 「型が一致しません」となります。 どうおかしいのかと、さらにはうまくいく方法を 教えていただけないでしょうか。 よろしくお願いいたします。 ちなみにBASP21を使っており、本ソースは xor値をとるところまでとなっています。 Option Explicit Dim bobj Dim BinAll Dim BinXor Set bobj = CreateObject("basp21") BinAll = bobj.BinaryRead("C:\test01.txt") BinXor = bobj.MidB(BinAll,1,1) Xor bobj.MidB(BinAll,2,1)
何でわざわざbasp21使うの? バイナリ読込はVB標準で出来るのに。 というツッコミは無しですか?
35 :
33 :2006/10/30(月) 13:32:25
>>34 あ、そういうツッコミもアリです。
ありがとうございます。
VBSでも標準でできるんでしょうか?
VBSの場合、VBS(wsh及びvbscript)の機能では出来ないけど basp21入れなくても標準で入ってるCOMでバイナリ読み出来る。 つーか、ここはVB6スレなわけよ。 VBSは一応許容範囲だが、その場合はきちんとVBSであることを明記すること。 VBSだと予測は付くが、クイズスレじゃないんだから回答者に予測させてどうするよ?
>>35 俺ならADODB.Streamで
バイナリデータ読み込むけどなぁ。
38 :
33 :2006/10/30(月) 14:01:55
なるほど。 いろいろツッコミありがとうございます。 ところで、方法はいろいろあってバイナリで 読み込んだとしましょう。 読み込んだ後に1バイトとるってのは BASP21だとMidBなんでしょうが、 他だとどうなるんでしょうか。 また、その1バイトとったやつの XOR値をとると「型エラー」になるということは、 バイト型or数値型になっていないのでしょうか・・・
つーか、バイナリに対して「1文字目と2文字目」って何なの? abc123なら「61 62 63 31 32 33」となるわけだが、 1文字目が6で、2文字目が1って意味か?それとも61と62か? ちゃんとバイト・ビットって正しい用語を使って話せるようになろうよ。
40 :
33 :2006/10/30(月) 14:28:14
>>39 本来テキストなので、そのときの1文字目および2文字目
という意味です。
当然バイナリで読み込んだ後は1バイト目、2バイト目
というふうに言い換えるべきでした、すいません。
2バイト文字の場合どうするんだい? とにかく君は、全てに置いて抜け過ぎ。 自分の頭の中では、VBSなのもテキストとしての文字数単位なのも決定事項なんだろうが 第三者には君の脳内決定事項なんて知らない。もっと深く考える頭を持とうぜ。 で、ぶっちゃけテキストとしての文字単位なら、テキスト読みして strText = "abc123" MsgBox Asc(Mid(strText, 1, 1)) Xor Asc(Mid(strText, 2, 1)) でいいんじゃないの?
42 :
33 :2006/10/30(月) 15:01:30
>>41 そうですね、すいませんでした。
とりあえず2バイト文字の場合もあるし、
純粋にバイナリの場合もあります。
毎回確実に1バイトとるので、ascが使えない
場合もあります。
言葉足らずでほんと申し訳ないです。
テキストなんじゃなかったのかよ。 とりあえずADODB.Streamでバイナリ読んでAscB(.Read(1))で。
44 :
33 :2006/10/30(月) 15:30:44
>>43 なるほど、AscBで数値を取得できました。
目からウロコです。ありがとうございました。
これをまたバイナリに戻すのは、なんという
関数を使えばいいのでしょうか?
文字列であらわせるとは限らないので、
chrだとダメなんでしょうか・・・
45 :
33 :2006/10/30(月) 15:59:25
chrBを自力で見つけました。 これでちょっとやりたかったことをやってみます。 本当にありがとうございました。
普通にバイト配列に読み込めばいいだけだろ。
こういうのも自力って言うのかねぇ? AscにAscBが有るのを教えれば、Ascと対になるChrに ChrBが有ると教えてるのと同じだろうに。
バイナリで書き込むときに、また行き詰るんじゃないか。
49 :
33 :2006/10/31(火) 18:09:36
バイナリで書くときに行き詰りましたorz 要は、自分が今どんな状態なのか 把握してないんですよね・・・ AscBにしてもChrBにしても、バイナリ書きが できません。 BASP21のBinaryWriteを使ってるんですが、 Xor値をとった答えが書き出せないんです。 Dim bobj Dim BinAll Dim BinXor Dim wlen Set bobj = CreateObject("basp21") BinAll = bobj.BinaryRead("C:\test01.txt") BinXor = bobj.AscB(BinAll,1,1) Xor bobj.AscB(BinAll,2,1) wlen = bobj.BinaryWrite(BinXor,"C:\test02.txt")
もう飽きたから、君は来なくて良いよ。
>>50 すごい自分勝手なやつだな
ここってこんなやつばっかりか?
>>49 何で BASP21 等という訳の分からん物使うんだ?
ファイルの読み書きなんて、VB標準で出来るだろうが。
VBSじゃなかったけ? まぁ質問者は仕様をもっと明確にしたほうが良い
> BinXor = bobj.AscB(BinAll,1,1) Xor bobj.AscB(BinAll,2,1) ていう風に、いきなり関数をXorに掛けないで、 まずは変数ち取って処理しろ。そしてエラーが出たら、MegBoxなどで 変数自体の値やTypeNameを確認する。無知なりに工夫してやれよ。 これは今回に限らず何でもそうだ。 オマエは行き詰まったら、そこで努力や試行錯誤も止めてるとしか思えない。
思えない、というより実際そうだからこんなところで聞いているのだろう。
VBScriptもokとは言え、 ここより、BASPやVBScript、WSHの掲示板で聞いたほうがいいんじゃないか。
質問させていただきます。 VB5 使っているのですが、例えばメモ帳の IMEモードを取得したい場合 どうやったらよいですかね? 次番号にコード書きます。フォームの上にラベルコントロール1個、 テキストボックス1個、タイマーコントロール1個を配置してください。 テキストボックスに、IMEが ONなら、0以外の数値が入ります。
Option Explicit Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Long) As Long Private Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hwnd As Long, ByVal himc As Long) As Long Private Declare Function ImmGetOpenStatus Lib "imm32.dll" (ByVal himc As Long) As Long Private Sub Form_Load() Me.Label1.Caption = "ImmGetOpenStatus" Me.Timer1.Interval = 400 End Sub Private Sub Timer1_Timer() Dim Ret As Long, RetB As Long, GFgW As Long GFgW = GetForegroundWindow Ret = ImmGetContext(GFgW) RetB = ImmGetOpenStatus(Ret) Me.Text1.Text = RetB RetB = ImmReleaseContext(GFgW, Ret) End Sub
自フォーム内で、IMEを ON/OFFすると反応するのですが、 メモ帳とか他アプリだと反応しません。 AttachThreadInputも試したのですが、やはり反応しませんでした。 なにか助言ありましたら、お願いします。
XPでVisual Basic 6.0を使用しています。 Imageコントロールに画像を貼り付けた後、それをドラッグして移動させて、 先ほどのImageコントロールの場所にまた別の画像を貼り付ける(この画像もドラッグできる)。 という作業を繰り返せるようにしたいのですが、一つのImageコントロールから 何回も別の画像を取り出せるようにするにはどうしたらいいのでしょうか? Image1(x)として、xを変更していけばできるのでしょうか…?
61 :
57 :2006/11/02(木) 00:18:28
>>60 フォームに、イメージコントロール1個、テキストコントロール1個、
コマンドボタン1個、シェイプコントロール1個を作成してください。
イメージコントロールの index は 0 に。
下記のコードを貼り付けてください。
62 :
57 :2006/11/02(木) 00:19:55
Option Explicit Dim mDownFLG As Boolean, mDownX As Single, mDownY As Single, sX As Single, sY As Single Private Sub Command1_Click() Dim i As Long i = Me.Image1.Count Load Image1(i) Image1(i).Picture = LoadPicture(Text1.Text) Image1(i).Visible = True Image1(i).ZOrder End Sub Private Sub Form_Load() Me.Shape1.BorderWidth = 2 End Sub Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) mDownFLG = True With Me.Shape1 .Move Me.Image1(Index).Left, Me.Image1(Index).Top, Me.Image1(Index).Width, Me.Image1(Index).Height sX = .Left: sY = .Top mDownX = X: mDownY = Y .Visible = True .ZOrder End With End Sub
63 :
57 :2006/11/02(木) 00:20:47
Private Sub Image1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) If mDownFLG = True Then Me.Shape1.Left = sX + (X - mDownX) Me.Shape1.Top = sY + (Y - mDownY) End If End Sub Private Sub Image1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) mDownFLG = False Me.Shape1.Visible = False With Me.Image1(Index) .Left = Me.Shape1.Left .Top = Me.Shape1.Top End With End Sub
64 :
57 :2006/11/02(木) 00:23:00
テキストボックスには、画像ファイルのフルパス+ファイル名で、 コマンドボタンをクリック。 あとは、適当に動かせるハズ。しょぼいコードですが。 ・・・うまくいったら、57の質問にご協力を・・・。Orz
>>64 hWnd がしっかり取れてないだけでは。
>>64 プロセスをコンソールに吐く事くらいしろ。
やりたい事がよくわからんけどヒントやる。
・自分でメモ帳起動して、プロセス取得
・マウスの位置からプロセス取得
・ウィンドウのタイトルからプロセス取得
まぁ頑張って。
67 :
デフォルトの名無しさん :2006/11/02(木) 17:03:21
6.0プロと6.0エンタープライズ のバージョンに違いはどれ位ありますか。 エンタープライズに出来てプロにはない機能とか、 簡単でいいので教えてください
>>67 ハルミデザインとオリエント工業くらい違う。
69 :
57 :2006/11/02(木) 20:17:49
>>65 >>66 ありがとうございます。メモ帳等のハンドルは取れるのですが、
ImmGetContextについて調べた結果、自アプリ以外の hWnd は
はじいてしまうようです。ImmEnumInputContextを使えばあるいは・・・
というところまでは行ったんですが、AddressOf演算子を使ったりで、
メモリーエラーを頻繁に出すので、もうあきらめる事にします。
>>67 Winsock等の便利コントロールが付いてくるか来ないかの
違いだった気がします。
いいかげんな事を書くのは嘘よりタチが悪い
LeaningEdition買っちゃって(´・ω・`) な俺様が通りますよ っていうか今から6.0買う人っているのね
血統書つきの6.0は高値で取引されるのですよ・・・ニニフ
MSDN契約してたら全部 月単位で送ってくるんじゃね?
74 :
デフォルトの名無しさん :2006/11/03(金) 03:16:09
フォームAからフォームBを起動するときにパラメータを渡す方法としてはどのような方法が一般的なのでしょうか?いくつかオプションがある場合はその長所と短所を説明していただけませんでしょうか?
フォームは起動するもんじゃないだろ イチャモンだと思うかもしれないが重要なことだよ。 フォームBは必要なパラメータをプロパティとして公開しといて、 フォームBを作った奴がそれを設定するのがVBではベストじゃないかな。 VBでも工夫すれば他の言語の引数付きのコンストラクタみたいなことも できないこともないが、コードを書いたときにはうまく書けたように思えても あとで見直すとわかりにくいコードになりがち。 なんにしろ今時のOOP言語と比べてVBのダメなところがもしわかってないなら 妙な工夫はむしろしない方がいいと思う。
マルチとかくだらんことにこだわる奴の方こそ病気だと俺は思うけどね マルチが悪い理由を系統だてて聞いたためしがない。 俺様の好意を踏みにじる行為だ云々、という浪花節なら何度も聞いたが。
マルチが悪い理由すら思いつかない奴が まともなプログラム組めるのか? 論理的な思考回路を持ってないとしか思えないがw
そういうのが浪花節っていうんだよw 情に訴えるんじゃなくて論理に訴えてくれ
じゃ、取り敢えずマルチポストOKの立場から マルチポストの有益なところを聞かせてくれないか?
悪いけど無罪を証明するまでは有罪みたいな思考は北朝鮮か中国なみの民度だと思うぞw といってもアホにはわからんかw
つまり、建設的に議論する気はない訳ね? 俺は参考までに意見を聞きたかったんだがな。 つ〜ことで、以下スルーヨロwww
> 以下スルーヨロ って、言い負け宣言だよね。 もう言い返せないから、これ以上虐めないで・・・ってw
マルチはイカンと言い出した側がスルーって意味がわからんw 挙証責任の概念もないのか。 マルチ有罪説を解きたいならそう主張する側がそれを立証しろってw
ちょっとまてw 77≠80だwww
ついでに言うと80=82だが。
議論の内容に興味持ってるのではなく 単に踊らせるために煽ってるだけだってことに気付いているのかな。 そこの操り人形の如く踊っちゃった哀れな道化師君。
つまらんな。
糞虫ども乙www
お前らはマルチどーのこーの以前の存在だよ
俺はシナリオ書くだけ。 プログラム書いて機械を踊らせるよりは シナリオ書いて人間踊らせる方がおもしろい。
>>75 今時のOOP言語と比べる事自体間違ってるだろ。
優劣なんかなくて、単に適材適所なんだから。
>>92 何を見当違いなことを。。
誰もVBそのものの他と比べた優劣なんか言ってないだろうに。
ただVBのOOP言語としての問題を踏まえずに下手に工夫をこらすと
策士策に溺れるになるよ、と言ってるだけだろう。
だからベタなコード書けと言ってるわけだが、それも読めないのか。
>>93 自分が比較してる事すら分かってないのか。
救い様がないな。
ダメなところを考えずにどうやって適材適所を判断するんだろう…。
まあ、日本語という(恐らく)ネイティブな人語の読解すらままならない奴に 何言っても恐らく無駄だろう。 昔から日本の国語教育って問題あるけど、最近若い奴に特に増えてるね。 文章から文脈とか意図とかを正しく読み取れない奴が。
VBの話しようぜ。
よし。じゃぁ燃料を投下しよう。 VBでもイベントは継承できるじゃん。 継承元でコーディングして、それをさらに継承すれば オブジェクトっぽい継承が実現できない? ちなみに、経験上そんなことはした事ない。 精々、へっぽこDBとのIF部品にイベント を組み込んでカーソルの移動を送ったくらい。
>>61-64 返事が遅れてしまいましたが、上手くいきました。
本当にありがとうございました。
>>99 無理矢理そんな使い方しなくても。
VBらしいコードを書けばいい。
Collectionを型だと思っているヤシは死んだほうがいい。
Collectionは型だよ。 そんなことも知らなかったの?
>>103 あれは、デフォルトプロパティを持つクラス。
Private WithEvents evtTextBox As TextBox とかって書いて、イベントを紐付ける事ってできるじゃん。 あれをActioveXDllで実装しようとしたら、 イベントが紐つかないのはなぜ? オレはわからん・・・。
>>106 イベントを関連付ける。
その前に、お前に質問の意味がわかるの?
>>102-104 なんかこのスレにお似合いの間抜けなやり取りだなあ
特に104はアホだろうかw
>>104 メール欄見るといいよ。
「これは餌です。釣られないようにw」って書いてあるから。
>>103 ,108
カス共にヒントをやるよ。
As New とかいてインスタンスが生成できるのは
なんでだと思う?
Cのtypedefが新しい型の定義ではない、という話はわりとよく聞くが、 クラスは型でないって見解は初めて聞いたよw っていうか、VBのコレクションが組み込みのクラスだって見解も本当かよって気もするが。
>>112 確かにオマイのいう通りだ。
そもそも、クラスはユーザー定義型だ。なさけねぇ・・・
VBのコレクションは、組み込みのクラスだ。
やっと話が分るヤシがいた。
なんか103に釣られまくってるな。
・・・・・あ、あれが釣りなのか・・? も、もしかして、釣られてるのか・・?
目欄にわざわざ . を入れてるところを見ると、最初から釣り目的だったんだろうな 後から本人が出てきて釣りだったと言っても誰も信用しないので 事前に餌として書いているのだという証拠を残しておくって寸法だろう これで反応しちゃった奴らは、釣られたという事実に対して言い訳出来なくなるし
他人の書き込みをいちいち疑わない普通の人なら「騙される」のは当たり前。 「釣られた」のは言い訳できない事実だが、恥ずかしがる必要は全く無い。 本気で書いてるかどうかなんて本人以外の人がわかるわけないんだから、 どうせ「釣る」ならもっと釣った側も釣られた側も楽しめるようなトリックを仕掛けようぜ。
120 :
デフォルトの名無しさん :2006/11/04(土) 05:42:43
>>76 なるべく多くの方の意見を聞きたかっただけです。
別の掲示板なので問題ないと思いますが。。。
自作自演でマッチポンプに見える罠www
可愛そうに
お前ら 休日なのに楽しそうだな!まったく
別のプログラムにキーボード入力を送るプログラムを書こうと思い 試しにメモ帳に「A」と入力しようとしているのですがなかなかうまくいきません。 SendKeysやkeybd_eventは対象のウィンドウがアクティブでないと使えないのでPostMessageを使おうとしたのですが…、 PostMessage handleOfNotepad, WM_KEYDOWN, vbKeyA, 1 うんともすんともいいません。 handleOfNotepad には事前に取得したメモ帳のハンドルが入っています。 普段は0でメモ帳を起動すると違う値になるのでここは間違えていないと思います。 PostMessageの返り値は1でした。 何が原因なのでしょうか…?
128 :
デフォルトの名無しさん :2006/11/08(水) 01:42:03
いままでVBをほとんど触ったことがなかったんですが今日仕事でちょっと触ることになったのですが よくわからなかったのでお教えください。 フォームの上のコントロールが移動したりサイズ変更しようとしてもまったくできませんでした。 VSSで管理されていたのでチェックアウトして読み取り専用は編集前にはずしました。 なぜ動かせなかったんでしょうか? 自分で新規作成してフォームに貼り付けたコントロールは動かしたりサイズ変更したりできたと思ったのですが…
右クリックメニューにロック解除的なメニューか何かがあるのでしょうか。。 すいません今ソースが手元にない(自宅)なので試せないのですが、 明日会社で試してみます。ありがとうございます。
今自宅のVB6でフォーム上で右クリックしたらロックって書いてありますね… 何で気づかなかったんでしょう…ありがとうございます(//▽//)
先生方に、ちょい質問。 現在、VB6.0+VSFlexGrid7.0で開発中。 そこで、VSFlexGridを使ったサンプルソースのあるような サイト知ってる? エロイ人、教えて。
お前の態度が気に入らない。
134 :
132 :2006/11/08(水) 17:07:50
>>133 先生、無知な私をお許しください。
先生、どうか教えていただけないでしょうか?
先生と連呼するのは相手をとても馬鹿にした態度です。 狙って言ってるんだろうけどな。
>>132 製品に各種サンプルが付いてくるじゃん。
グレープシティのサイトにも色々あるし。
137 :
132 :2006/11/08(水) 18:06:16
わかりました。 おい、この下衆野郎。 どうか教えてください。
つーか、いきなり楽してソースを得ようって態度が気に入らない。 まずはリファレンスで基本を勉強、次に他人の書いたソースで応用を参考に、だろ。
まずは製品サンプルを全部読めよ・・・
時間になったらテーブルファイルに登録されたファイルの タイムスタンプをチェックしたいんですが Timerコントロールで5秒おきに、その時間かどうかチェックさせてます 具体的には↓な感じに DateDiff(n,format(now,"HH:MM"),format(destTIME,"HH:MM") Timerコントロールで毎5秒チェックってのが気に入らないんですが リアルタイムにさせる事はできますか?
ピクチャボックスに、Line関数を用いて簡単なグラフを描いたのですが その上に別のウィンドウを重ねると重なった部分だけグラフが消えてしまいます。 どなたかお教えいただけないでしょうか?
鳳描画
ListViewコントロールで詳細表示にしたとき、 アイテム(行)をD&Dで入れ替えられるようにするのはどうすればいいですか?
>>142 再描画しる。
>>144 MouseDownイベントとMouseUpイベントで、行が違う場合に
それぞれの行の情報を入れ替えるみたいな、地道な作業が
ぱっと思い浮かんだ。
もしかしたら、HitTestメソッドとか使わないと、自分の列が取得
できないかも。
ガンガレ。
>>145 MouseDownとMouseUpで、D&D開始位置と終了位置の
行番号を取得する部分まではガンガって作ってみたものの、
26列のSubItemを一つ一つ移動するのはどうかと思い、
質問に来た次第です。
最低でもListItem単位の入れ替えが出来ないものでしょうか?
出来ればFlexGridの
RowPosition(元の行番号) = 移動先行番号
の様に、インデックスのみで操作出来れば理想的なんですが。
>>146 オレが知る限り、いきなり移動はできないと思うが、subitem単位じゃなくて
ListItemという型を使って、行単位ではどうよ?
なんにせよ内部じゃ一個づつ移動してるわけだがな
そもそも、ListView でそんなUIはどうかと思うが。
ケツを付ける奴に限って、良い提案すらまともに出来ない件について
>>148 それをいうと元も子もない。
CでWin32Apiかけるようになれば、VBアプリ自体、
裏でちまちまと動いてるのがわかる。
けど、生産性と要員の確保から考えると、
オレはVBはスゴイと思うし、結構好きだ。
>>150 つまりそれがお前にとっての良い提案か。
DropHighlight プロパティって違うの?
すみません。 プロセスIDからそのプロセスが存在するか、 存在する場合にWindowsのハンドルないし、タイトルが 取得できるようなAPIはありますか? もしくは、APIを工夫して、そのような処理が実現できますか?
>>154 自己レスします。
解決しました。
OpenProcess
Visual Basic 6.0 SP5 を使用しています。 複数のフォーム(画面)があるプロジェクトで、各画面のテキストボックス などのサイズを変更しています。 変更中の画面を(プログラム実行時のような表示で)プレビュー確認したい のですが、実行(F5)してしまうと、変更中の画面ではなく特定の画面が表示 されてしまいます。(スタートアップフォームの画面?) 変更している画面をその場でその画面だけを実行時のプレビューとして確認 したいのですが、何か方法はありますでしょうか。 (他の設定類やプログラムなどはできれば変更したくないです。)
>>156 設定もプログラムのいじらないでってことなら、
実際にプログラムを実行していってそのフォームを開くしか方法なさそう。
>>156 よく言っている意味がわかならいが・・・
プロジェクトのプロパティで、スタートアップの設定が
画面になってるんでしょ?
まずは、Sub Mainからスタートさせることからしない?
それぞれの画面でオマイの言うテキストボックスなどの
変更が発生した場合用にグローバルなプロパティを
コーディング。
次にSub Mainの中で、オブジェクト変数を書いて
そこに画面のインスタンスを生成。
そして、Call Load(おぶじぇくと) としてメモリに溜めこんで
各オブジェクトから変更用プロパティを参照して、フラグが
立っている画面だけをShowしてやればおk?
>>156 よく言っている意味がわかならいが・・・な・・・
159 :
156 :2006/11/11(土) 10:17:50
レスどうもです。
>>157 やはりそういう手順になってしまいますか。
>>158 すみません。説明不足なところがありました。
すでに出来上がっているアプリケーションの画面のテキストボックスのサイズ
をマウスでドラッグするなどして変更する、というだけの行為なのですが、
変更する画面が複数あるので、実際の画面を確認するのに実行/開始(F5)
をして該当する画面までたどっていくというのが面倒だなと思い、ショートカット
する感じで変更した画面(編集中の画面)を確認する方法はないものかと質問
したしだいです。
ただ作っている最中の画面の確認をしたい、というだけなのでコード類はいじり
たくないというのがあります。
(ほかの人が作ったものの上、私はVB操作の経験があまりありません。)
それで方々調べてみたのですが、それらしいことが見つからなかったので、ここに
質問させていただきました。
>>156 の文面じゃよくわかりませんね。orz
VB6にSP6を充てたのですが、適用できているのかどうかは判るものでしょうか? バージョン情報の中にはソレっぽい項目がなくて… VB5のときにはタイトルに[(SP○)]とSP番号がくっついていたのですが今回見あたりません。 別のハードディスクに過去につかっていたVBがあり、SPのセットアップ中、そっちのドライブに書き込まれているような 表示もあったりでほんとうに適用できているか不安なもので… そのへんの情報のググり方のコツでもいいです… orz
項目無いなら入ってないんだろうさ
162 :
160 :2006/11/13(月) 17:30:41
>>161 どもです。
ためしにライセンス違反覚悟で、他のドライブが1つしかないPCで
全部のセットアップをやりなおしたら、SP6の表示がありました。
ダメな方は、どうもおかしな環境になっていて、VisualStudio自体が正常にインストール出来てないようでした。
ドライブ指定しようと何しようと、旧ドライブに何か書いた上に失敗って出てる…気付かなかった orz
>>160 なぁなぁ?
オレってば、すごい不思議なんだけどよぉ?
どうして、インストールするだけの作業で失敗すんの?
なぁなぁ?なんで?
ヒント: 無能
>>163 レジストリとかをを変に弄ってたりすると失敗する事もある。
>>164 誰でも出来るインスコ作業を能力で失敗できるなら、それはそれで才能だとおも・・・いたい
167 :
160 :2006/11/14(火) 11:16:58
仕事用の環境で、HDDまるコピーで環境移植したんで、OSとProgramFilesフォルダがサブHDDにも居る上に、 窓98だったのを2kに上書きしていて、VB4が旧と新の両方に、VB5が新にインストールされている。 セットアップ中のインストール先を見ていると、先のを全部見つけ出して、勝手に分解して失敗してるようだ。 レジストリは触ったことないが、さすがにアホい環境っぽいので、新規購入のほうで使うことにする…>VB6 へんなことですまん。
そりゃおかしくなって当たり前だわな つーか仕事用でプログラム環境構築なら OSごと全部クリーンインスコすべし
>>160 ,167
まぁ、その、なんだ。
ガンガレ。
170 :
160 :2006/11/14(火) 15:41:02
ああ、それでもレスが…ありがたや。ガンガル。
>>168 PCから8ビットCPUまで、扱うものがいろいろ有りすぎるのに、PC1台しかもらえず各種環境詰め込み…
上位PCに移行するにも、並べて使えるワケでもなくて、いちからやり直すとすざまじく……
HDD移植で今回の惨状。
もうじき新規にPCを購入してもらえるので、そっちはクリーンインスコでいきまふ。
171 :
デフォルトの名無しさん :2006/11/14(火) 17:58:05
VB2005で、Windowsユーザを管理するソフト、って作れるでしょうか? 色々調べているのですが、それらしい資料に当たれません。 ご存知の方、方法論でもヒントでもいいので、情報下さいませorz
>>171 お前は1すら読めないのか
氏ねばいいのに
173 :
デフォルトの名無しさん :2006/11/14(火) 19:29:15
174 :
デフォルトの名無しさん :2006/11/14(火) 22:07:08
VB初心者友の会ってまだやってんの?投稿全然ないけど。
175 :
デフォルトの名無しさん :2006/11/14(火) 22:53:52
176 :
デフォルトの名無しさん :2006/11/14(火) 23:47:00
端末側のVB画面からリモート越しにSunのワークステーションに置いているShellコマンドを 起動したいのですが、シンプルに作れそうなそういうAPI系のコード ないでしょうか?TELNETとかwinsocとか駆使して自前で作らないと 難しいでしょうか?Vb6(SP3),OsはXPです。Sunワークステーションはsol.10です。
>>176 俺だったらhttps経由でCGI操作するが。
178 :
デフォルトの名無しさん :2006/11/14(火) 23:52:01
2chで過去ログ倉庫に入ってるスレの最終更新日(最終書込日)を取得する方法を教えてください。 やりたいことは過去ログの勢い(生存時の勢い)の一覧を作ることです。 勢いは時間当たりのレス数で算出する為、どうしてもスレが立ってから最終書込まで 何ヶ月何日何時間掛かったのかを調べる必要があるのです。 スレが立った日時はスレの番号から、レス数は過去ログ倉庫のsubject.txtから 取得できることがわかり、そこまではコードも書いたのですが、最後のレスの日時だけがわからず行き詰まってます。 ●は持っているので●を使う方法でも構いませんが、●でログインする方法とかは全然わからないので、 具体的なサンプルコードでの回答をお願いします。Visual Basic6sp6です。
>>178 2chサーバの負担になりそうだから教えない
> 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
181 :
デフォルトの名無しさん :2006/11/15(水) 00:18:54
蜂の巣状みたいな正六角形をpictureboxの中にいっぱい書くには どうすればいいでしょうか?
>>181 いっぱいとは
一つの六角形を最大の大きさに?
固定の大きさの図形をいっぱい敷き詰め?
三角の組み合わせなんだからパズル的にやってみよう
183 :
デフォルトの名無しさん :2006/11/15(水) 00:58:47
>>182 レスありがとうございます。
固定の大きさの図形をいっぱい敷き詰めです。
>>183 じゃあ固定の六角形の大きさわかってるんだから敷き詰めるだけでしょ
185 :
デフォルトの名無しさん :2006/11/15(水) 01:37:43
>>184 正六角形が書けないのですが・・・
どうしたらいいのでしょうか?
>>185 三角形くらい書けるだろ
一辺がわかれば高さもわかるだろ
線と点の交点は習っただろ
三角形を組み合わせれば六角形が書けるだろ
正三角形の角度くらいわかるだろ
HEX描画くらいぐぐれば出てくるだろ
一個の六角形が書ければ重ねるだけでしょ
色々やり方あるでしょ
187 :
デフォルトの名無しさん :2006/11/15(水) 02:05:24
>>186 三角形は書けますが・・・
その方法で書くと六角形の中に線が出てくるので、
六角形のそれぞれの頂点の座標を指定して書いてみましたが、うまく書けずに縦長になってしまいます。
適当な大きさの正六角形の座標を教えていただけないでしょうか?
>>187 ちゃんと計算した?タイルにするには正六角形+αが無いとめんどくさいよ
重ねる事も考えて作ろうね
LOGOは知らないけどさ top: left 30 forward 100 right 30 forward 100 right 30 forward 100 left 30 forward 100 if x < width goto top 以下略
ComboBoxのテキストを右寄せにする方法を教えてください。 スペースで調整するとかではなく、文字寄せ方向の変更です。
>>190 バカだろ。
文字寄せっていうのは、内部で文字位置を調整してる
だけなんだよ。
コンボボックスの場合は、APIで位置を調整するしかない。
ハズレ
だれか教えてやれよ。
>>192 ,193
もしかして、右から左に読むとか双方向テキストの表示と
勘違いしてない?
MsgBox "WWWWWWW"&vbTab&"bbb"&vbLf&"1111111"&vbTab&"bbb" タブで揃えようとしてもずれるんですが、 うまく揃える方法はありませんか? スペースをいくつ足すとよいか計算する方法とか。
>>196 それ、おもしろい宿題じゃん!
再帰なんかで書いたら、結構格好いい関数できると思うよ。
オレも、夜眠たくなったら、ちょっとコーディングしてみるよ。
>>196 プロポーショナルフォントだと
スペース使用で揃えるのは難しいと思うよ
>>196 最大文字幅を10とした場合ね
maxlen = 10
txt = "(スペース10個)"
len = strlen(in_txt)
mid (txt, maxlen - len, in_txt)
脳内コードだが動くと思う
in_str の長さが10 以上だとエラー起こす
つかこれぐらい考えれ
<span>に、MsgBoxで使われてるフォントやサイズを指定して、 テキスト入れて、width取り出して、、、で出来ないかな。
>>199 的を外してる。
>>196 たしかに、プロポーショナルフォントだとインデントがそろわない。
う〜ん。 難しいねぇ〜。
多分、ぴったりインデントは無理かもしてないけど
なんとなくインデントを合わせる事はできるのかもしれない。
プロポーショナルフォントだと文字ピッチが一定かすら怪しい
95 2000 XP Vによっても違うし。
MsgBoxに似せたフォームを作ったほうが楽だろ
>190 ComboBox内のEditのハンドルを取得してSetWindowLong、かな? Win32APIスレあたりが適当かと。
>>192 ,193
カスめ。
オレはお前らのような落ちこぼれが死ぬほど
嫌いだ。
お前らはカスなんだよ。
固定ピッチフォントを使えばいいだけじゃん。
インデントの奴、今年の基本情報の問題だったなw
>>209 プロポーショナルフォントでなければ、そうなんだけどなぁ
詰が甘いな
Windows2k+VB6です Form1, Form2, Form3 とあって、Form上のボタンを押すと子Formを Modalで開いています。 子Formの最小化Btnを押したら、子Formを含む全てのFormを最小化 したいのですが、とりあえず子FormのForm_Resizeイベントに親Form のWindowStateを設定するように書いてそれっぽく動くようになりま した。 ただ、親Formを最小化した瞬間に、子Formのアイコンが消えてしまっ て、最小化状態から元に戻せなくなるという現象が起きています。 Windowsの制約っぽい気もするのですが、これを回避する(親Formを 最小化しても、Modalで開いた子Formを非表示にさせない)方法は ありますでしょうか?
>>211 タスクバーからって子フォームが消えるって事?
ちなみに、そんなレベルの話でWindowsの制約云々と判断するにはまだ早くね?
>>211 モーダルで子フォームを開いているのに
なんで、親フォームが触れるんだよ・・・
>>213 >211
>子FormのForm_Resizeイベントに親FormのWindowStateを設定するように書いて
>>214 なるほどねぇ。。。
なんてマヌケなUIなんだ。
Form2がShowされるときにもリサイズイベント通るんじゃないの?
それは現象というより、どうみても仕様通り動いてるだけ。
というか、やめとけ。
どうしても実装したいなら、子画面をActiveXのexeか、通常のexeにして、
プロセスIDをわけて、個別にAPIでシコシコ挙動を制御すれば実現可能だけど・・・
恥ずかしいプログラミングだw
217 :
デフォルトの名無しさん :2006/11/16(木) 16:02:45
VB6.0 SP3 WinNT long型の変数に浮動少数点(1.1)などの値を入れた場合 値は自動的に四捨五入されるようですが、この動作はプログラムで 保証されているのでしょうか? dim temp as long = 1.1 deboug.print temp 1 ------------------------- dim temp as long = 1.5 deboug.print temp 2
プログラムがどうやって保証するんだ
219 :
デフォルトの名無しさん :2006/11/16(木) 16:38:34
>>218 回答する知識がないのならレスすんな。
俺も知らんが。
>>218 あらし、氏ね
>>217 まず根本的に勘違いしてる。四捨五入はされない。
1.5は2になるが、2.5も2になる。
暗黙の型変換では内部でRound()されてる。詳しくはRound()のHelp参照。
Round≠四捨五入なので注意。
Longに小数が入る方が怖い。 勝手に四捨五入されるのも怖い。 基本中の基本だからねぇ・・・ カレンシーの保証する小数桁数も3桁くらいじゃなかったっけ? 浮動少数は誤差が発生するし。 難しいよね〜
222 :
通りすがりの浮動小数点数野郎 :2006/11/16(木) 18:26:38
整数及び、0.5(=1/2)、0.25(=1/4)、0.125(=1/8)、0.0625(=1/16)、・・・とか これらの和は桁数が足りる限り不動小数点数で表現しても誤差が発生しないので 安心して使ってくれ!www (実装がマトモならリテラル・文字列からの変換でも大丈夫なはず。) ちなみにリテラルからの変換は文字列からの変換と同じく 10進→2進変換なんで、その逆変換ともども 単純な表現誤差以外に結構厄介な問題がある。 (浮動小数点演算の黎明期、確か1960年代頃にはその話題で 変換の精度についてアメリカ数学会に論文が書かれたくらい厄介な問題だ。) 心配なら整数で初期化してから割り算して値を作れば丸め誤差は入るけど、 より厄介な10進2進変換の誤差は紛れ込まなくなるのでオススメ。 (桁数が足りてる限り整数の10進2進変換には誤差がなく、表現の誤差もからね。)
>>222 浮動小数点型に誤差が発生するのは基本中の基本だよ・・・
悲しくなるよ・・・。
Dim s As Single Dim i As Long For i = 0 To 9 s = s + 0.01 Next i カナシス・・・。 業務系は浮動小数は極力使わないよ・・・
225 :
デフォルトの名無しさん :2006/11/16(木) 19:59:32
HTMLが表示出来て、軽いコンポーネントを教えてください。 WebBrowserコンポーネントは、重いというか起動が遅すぎて使えません。 ローカルのhtmlファイルを読ませるだけなので、多機能は求めません。 WindowsXP SP1、Visual Basic6 SP6の環境で使えるフリーのものでお願いします。
先にメモリにLOADして読み込ませとけばよくね?
227 :
225 :2006/11/16(木) 20:22:03
>>226 それ自体に時間を食ってしまうため、今回別コンポ探しに来ました。
>>225 VBを使うなら、「〜が遅い」ってのはハードの増強で解決するのが基本。
WebBrowser が遅すぎて使えない、ってどんなスペックだよ一体。
>>228 Xeon5150x2、メモリは2GBです。
WebBrowserを起動させようとすると結構待たされます。
230 :
デフォルトの名無しさん :2006/11/16(木) 20:40:29
231 :
225 :2006/11/16(木) 20:42:46
>>228 スペックはAthlon64 FX57にDDR2-677 2048MBです。
スペックはそんなに低くないと思いますが、これ以上スペックを上げて
WebBrowserの起動が速くなっても、他のも速くなるから
相対的にWebBrowserの遅さが目立つのは変わらないと思います。
人間の感覚は絶対性より相対性の方が濃いですから。
とにかく今回はコンポーネント探しをしております。
代用法や基本を教えていただけるのはありがたいですが
失礼ながら求めているものとは違うので、引き続きコンポーネントの回答をお待ちします。
ある程度検索しましたが、それらしい内容を見つけられなかったので質問します。 VB4.0でADOを使用してデータベースへ接続するように記述して、 デバッグしたところうまく動いたので、Exeファイルを作成してみたのですが、 何度やっても「ご迷惑をおかけしております…」というようなメッセージが出て強制終了されてしまい Exeファイルが作成できません。 いろいろやってみたところ、キーワード"New"がよくないように思いました。 Set cnt = New ADODB.Connection この行を削除したらコンパイルできたので。 下記のように、宣言時にNewをつけてみてもだめでした。 Dim cnt As New ADODB.Connection 解決法などあればよろしくお願いします。
無い。 次の質問どうぞ。
234 :
233 :2006/11/16(木) 20:56:19
>>231 どんだけ高性能なマシンだよ・・・。
オレの会社の開発マシンなんか、ドトネトだとコーディングに
文字が追いついてこないようなウンコマシンだけど
それでもWebBrowserでサクサク動く。
処理、間違えてるんじゃない?
>>232 開発マシンとexeを実行しているマシンは同一?
しかも、NEWでコンパイルエラーという事は、参照設定
してないんじゃないの?
237 :
232 :2006/11/16(木) 21:11:09
>>233 ちょっと面白かったです。
>>236 Exeを実行しているマシンというのがどれを指すのかちょっとわかりませんが、
自分のPCでVB起動してコード書いてコンパイルして、ってやってまして
それで今回はExeファイルすら作れないという状況です。
参照設定はできてると思います。
オブジェクトブラウザから見れますし、デバッグ(F5押してやるやつ…)では
たしかに動いていましたから。
>>232 CreateObject でやるとか。
>>233 無いと答える必要はない。
何故なら悪魔の証明にあるように、無の証明はまず出来ないからだ。
一個人の「無い」という回答は、「俺は知らない」と同義。
>>225 > HTMLが表示
→テキストでおk
> ローカルのhtmlファイルを読ませる
→ファイル直読みできるメソッドアリ
つ RichTextBoxコントロール
○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。
ルールを守れない質問者より、ルールを守れない回答者の方が多いスレってのも珍しいよねw
ここの1はルールというほどの強さは無いさ あえて心得を外すほどの回答は無いようだが。
>>237 せめて、F8。
Option Explicitもつけて。
> ここの1はルールというほどの強さは無いさ その割には質問者には.NETはスレ違いだの、ググれMSDN読めと強制していたような・・・ > あえて心得を外すほどの回答は無いようだが。 いや、そうでもない。
常識的に考えても.NETはスレ違いだろう
常識的に考えても答えられない質問だからって罵倒するのはダメだろう
>>245 ググルのと、MSDN をそれらしい言葉で検索するぐらいのことしてから
質問するのは常識だと思うけど。
質問者自身のためにも。
249 :
245 :2006/11/17(金) 21:19:06
>>248 あのー、それを俺に言われても・・・。
>>1 に書かれていることはルールではないと言ってるのは
>>243 だよ。
俺はそれを受けて、ルールじゃないと主張する割にはルールのように強制してるな、と返しただけ。
俺自身は.NETはスレ違いだと思うし、先に検索するのを含めて
「○ 質問者の心得」も「○ 回答者の心得」も、それぞれが守るべきルールだと思ってる。
251 :
232 :2006/11/17(金) 21:29:11
>>238 CreateObjectでコンパイルできました!
ありがとうございます。
しかしなぜNewではだめだったのか…わかりかねます。
>>244 Option Explicitもつけてましたし、F8も使っていました。
ですが、コンパイルできませんでした。
もう一つ質問させてください。MSDNで一応調べましたけどわかりませんでした。
またVB4.0でADOなのですが、Recordsetオブジェクトは
ActiveConnectionプロパティ、CursorTypeプロパティなどで
Open前に値の設定ができます、よね。
その設定をしているにもかかわらず、
[RecordSetオブジェクト].Open
だと「引数が足りません」と、エラーになります。
.Open "テーブル名",[Connectionオブジェクト],…
と、引数で値を設定してあげると問題なく開きます。
Connectionオブジェクトでも、同じような状態です。
開くだけならそれでいいのですが、DataGridを使用したいのです。
そのためにはRecordSetオブジェクトを開く前に
[RecordSetオブジェクト].Properties("IRowsetIdentity")=True
を記述しないと表示されないようなので、
RecordSetオブジェクトのOpen前に値の設定をしたいのです。
長くなってすみませんが、よろしくお願いします。
252 :
デフォルトの名無しさん :2006/11/17(金) 21:30:25
Visual basic 6.0を用いた RS-232Cケーブルを用いたシリアル通信についてご質問いたします。 いま、PCとある機器を繋いで1分間隔でデータを要求し、それに対して 返信をもらうようなロガー機能を持たせたシリアル通信プログラムを 作っているのですが、知識が薄いために困っています。使用機能はMScommです。 具体的には、文字列データ約50個を1分おきに送信して (このタスクはタイマールーチンに入れます)機械に要求し、 それに対して応答が来れば受信→ファイルに書込み→ 最終的には時刻と機械から取り込んだ複数の数の関係を グラフにしたいと思っています。 困っているのは受信のコードの記述ですが、本ケースにおいては、 イベントドリブン形式で(Rthreshold=1,Sthreshold=1等と設定して、) 1文字ずつ受信→イベント発生→1文字データ読取 とさせることが厳しい(と思う)いうことです。 ソース的には @〜Cまでのタスクを1分周期で行いたいです。できれば ウォッチドッグ機能もつけたいですね。 @メインルーチンをタイマーにして、MSComm1.Output="G aa bb cc dd ee ff " のように、相手機械にaa,bb,cc,dd,eeという変数を要求(ちなみに Gは相手側機械に要求するというコマンド) A要求に対する受信を待つ→aa=1.01, bb=2.02, cc=3.03, dd=4.04, ee=5.05 のような値が以下のような感じで相手から返ってくる "1.01 2.02 3.03 4.04 5.05" Bここで1文字ずつ受信ごとにイベント発生ではなく送信完了したら、受信待機を始めて受信バッファに たまったものを一度で書き込む@〜Bを4回繰り返す(データが大量にあるため、4回にわけないといけない) Cファイルに書込み VBシリアル通信にお詳しい方、どのようなコードにすれば良いかお教え下さい。相当困っています。 以上、よろしくお願いいたします。
>>251 そもそも何故VB4・・・
まさかOSはNT4なの?
>>252 人に話すのと人に説明するのが同じ人間って言われないか?
読みづらいんだが…しかも激しく
○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
○ 質問者の心得 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
>>257 無駄に罵倒する理由にはならない。
ルールは守るべきだ。
^^;;;;;
XPで6.0を使用しています。 ある特定の範囲内にドロップされたImageコントロールを、 特定の座標に移動させたいのですが、どのようにすればいいでしょうか?
>>252 割り込み使うならSAMPLESにあるVBTERM参考にすればどうよ
あるいは送信して受信完までループさせて待つ手もある
262 :
デフォルトの名無しさん :2006/11/18(土) 02:17:59
>>261 ありがとうございます。VBTERM発見しました。
これを元に考えてみます。
VSBでHTTPSのサーバーにアクセスしてファイルをDLしてくるスクリプトを組んでるのですが、 全ての処理をバックグラウンドで行いたくて、ダイアログ等の表示が無い様にしたいんです。 IEのオブジェクトを使うと、どうしてもSSLの認証ダイアログが出てきてしまうのですが、非表示で処理する方法って無いですか?
IEのオブジェクトを使わない。
VBわからんけど不通にソケットでつないでリクエスト投げればファイルくらい取れるんじゃね?
かなりいろいろ調べたのですが方法がわからないのでここ で質問させてもらいます。 テキストファイルを読み込んでその中の最後から5行ほどだけを を表示する方法を教えてください。
>>266 全部または最後の五行分が余裕で入るくらいの情報を読み込んで後ろから改行コードを探す
268 :
デフォルトの名無しさん :2006/11/19(日) 17:10:24
Dimを先頭に
>>268 問題って、専門学校か何か?
VBを勉強する学校とかあるのかな?
教えるから、教えてよ。
Dim ABCD AS long
を
Private ABCD AS string
として、しかも一番上に書くとおk
>>263 どうせスクリプトならjavaスクリプトの方が使えるぞ。
SSL認証きいてくるなら、しょうがないような気がするんだが
自分でサーバたてればねぇ
272 :
デフォルトの名無しさん :2006/11/19(日) 17:39:02
Private Sub General()
Private ABCD As String
ABCD = Text1
End Sub
上記のようにジェネラル欄にいれたんですが変数がCommand2押しても
だめなんですがどうすれば後コマンド1-2部分は合っていますか?
>>269 Dim をどこにいれればいいですかね
>>270 都内のコンピュータ情報系みたいな専門学校です
>>272 Private ABCD As String
Private Sub General()
274 :
デフォルトの名無しさん :2006/11/19(日) 17:44:10
>>273 先生できました、ありがとうございます禿感謝
>>274 すげぇかわいい。
今は打算でしか、物事を考えられないオレも
昔はそうやって自分で勉強したんだって記憶が
蘇ってきた・・・
276 :
デフォルトの名無しさん :2006/11/19(日) 18:04:27
277 :
275 :2006/11/19(日) 18:07:57
_| ̄|○ il||li
278 :
263 :2006/11/19(日) 19:02:21
>>271 そうなんですよねぇ。相手が取引先の鯖なので手が出せないんですよ。
仕方が無いので、OpenSSLのソース使ってCで認証だけ通す事にしました。
ActiveX化されたものもあるみたいなのですが数十万オーダーでしたので、自作します。
ありがとう御座いました。
>>223 ちゃんと勉強してからいいなはれ。
世間ではよく誤解されているようだが
浮動小数点数にはいつモヤモヤと誤差があるわけじゃない。
値によってはちゃんと誤差なく表現が出来る。
まず小数部の桁数(ビット数)が足りている限り整数は全く誤差なく表現できる。
また(1/2)^nは10進表現で言えば(1/10)^mに当たる特別な数字群で
2進数の浮動小数点表現でも桁がずれる(つまり指数部の数字が変わる)
だけなので整数と同じく全く誤差なく表現できる。
(指数部が桁あふれしない限りな。)
そしてこれらの数の間の加減算は桁あわせした際に桁数が足りている限り
完全に正確に行われる。
さらに乗除算の場合は指数部の桁数が足りている限り完全に正確に行われる。
つまり浮動小数点数も注意深く使えば全く誤差のない表現と演算が可能だ。
そしてこの性質と
一部のプロセッサでは専用ハードウェアによってlongを使う整数演算より
浮動小数点演算のほうが早いということを生かして大量の整数演算する際に
わざわざ浮動小数点演算を利用するという研究が実際にある。
282 :
275 :2006/11/19(日) 19:25:37
>>266 5行分のバッファを用意して、最初から順番に読んで格納し、
6行目は一行目のバッファに上書きして・・・ってやればいい。
最後迄読めば、最後の5行分が残るでしょ。
284 :
266 :2006/11/19(日) 20:34:23
ありです できました
>>260 ある範囲内に
Imageをドラッグドロップした座標4点が含まれてるか調べる。
含まれてたらImageを特定の座標に移動。
289 :
287 :2006/11/20(月) 10:50:00
>>288 ソース無しで答えるにはこれが精一杯だと思うw
まぁ書いてることは変わってないけど・・・
書いてるとおりの事をソースで書けば良いだけなのになぁ・・・
○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
>>287 わかりました、ありがとうございます
もう少し頑張ってみますね
VBでHashtableの機能を持つ型ってある? せいぜい、コレクションくらいしか、今のところ知らない。 ArrayListすらVB6.0にはないよね? ないなら、自作しかないのかな?
CollectionかDictionaryが使えるんとちゃうん?
294 :
292 :2006/11/21(火) 17:03:32
>>293 Dictionaryは初めて知りました。
自作なんかより全然速そうで素敵です。
アリガd
VB6で、イメージの部分に順番に図を表示していきたいのです。 それと、リストボックスで選択したものをファイルに書き込みたいのです。 以下のようにやってみたのですが、うまくいかずどうしていいか分かりません。 教えていただけないでしょうか。 Public dirl, angele As String Dim fname(100) As String Public cot As Integer Private Sub form_load() 'フォームが開いたときの処理 Dir1 = "C:\Documents and Settings\karalab\My Documents\ito\図形\0" '表示イメージを読み込みするファイル For i = 1 To 100 fname(i) = Str(i) + ".jpg" Next End Sub 'スタートの処理 Private Sub Command1_Click() cot = 1 Image1.Picture = LoadPicture(Dir1 + fname(cot)) 'イメージを表示 End Sub '次へを押したときの処理 Private Sub Command2_Click() Image2.Picture = LoadPicture(Dir1 + fname(cot)) 'イメージを表示 End Sub Private Sub Command3_Click() '「END」ボタンを押した場合 End End Sub
DTPickerってEnterキーでもKeyDownイベント起きるよな? BreakPoint仕掛けてるのに一向に通ってくれないよ。 Spaceとか他のキーならOKなのにEnterだけ効かん。orz
カレントユーザーのマイドキュメントのパスを取得する方法ってある?
>>297 環境変数でTMPあたりから取得したパスを加工するとか
あらかじめ、環境変数に入れとくとかじゃだめ?
>>296 Command Button のどれかをデフォルトボタンにしてるのでは。
>>297 環境変数の USERPROFILE を参照するとか。
>>297 Dim obj As Object
Set obj = CreateObject("WScript.Shell")
Debug.Print obj.SpecialFolders("MyDocuments")
>>295 ソースが汚ねぇ
それに Str(i)ってどこで宣言してる?
Option Explicitを入れてコンパイル汁。
あとdirlの宣言ではバリアントになってるけどいいの?
303 :
296 :2006/11/21(火) 19:16:55
>>298 d。だよねぇ。
別のフォーム上ではちゃんとKeyDown発生してる・・・orz
いろいろ、ありがとうございます。 今直してみて、2つディレクトリを使って 「次へ」を押したときにDirから+1ずつ足してずを表示していきたいのですが+1しかされず、 その後、足されていかないのですがどうしたらいいでしょうか? Private Sub Command1_Click() Dir1 = "C:\Documents and Settings\karalab\My Documents\ito\図形\21\" '表示イメージを読み込みするファイル Dir2 = "C:\Documents and Settings\karalab\My Documents\ito\図形\11\" '表示イメージを読み込みするファイル For i = 1 To 100 fname(i) = Mid(Str(i), 2) + ".jpg" Next cot = 1 Image1.Picture = LoadPicture(Dir1 + fname(cot)) 'イメージを表示 Image2.Picture = LoadPicture(Dir2 + fname(cot)) End Sub '次へを押したときの処理 Private Sub Command2_Click() Image1.Picture = LoadPicture(Dir1 + fname(cot + 1)) 'イメージを表示 Image2.Picture = LoadPicture(Dir2 + fname(cot + 1)) End Sub
書いてる通りに動いてる
>>304 まさにソースに書いてある通りに動いてる。
cotの値はいくら?
前のレスで質問させていただいたものは解決することが出来ました。 申し訳ありません。 あと、もうひとつ質問なのですがリストボックスで選択したものをファイルに書き込みたいのです。 以下のような、書き方では書き込むことは出来ませんか? Open "C:\DATA\OrderData.csv" For Append As #2 Write #2, list1.Text, _ list2.Text, _ list3.Text, _ Close #2
ピクチャーボックスで Picuture1.Heightでは高さが変わるんですが Picture1.ScaleHeightではピクチャーボックスの大きさが変わりません 値の取得はできるのですが… 大きさの方はフレームの分も考えながらHeightで設定しなければいけないのでしょうか?
すいません、分かりました、 ScaleHeightに値を設定すると、ユーザー設定の座標系になるんですね。 ScaleHeight=100 としたら、上から下までを100とするオリジナルの座標系になると いや、分かりにくい書き方ですけど自己解決
VBでプログラミングの世界に入ってみようと思うのですが 初心者におすすめの入門書、参考書を教えてください。
>>310 いまさら6.0をはじめるのか?
やめとけよ
>>311 ぐわ、6.0以前スレでしたか・・・
誤爆でした。すみません。
VBでアイコンをリソース登録したんだけど、それを使おうとするとエラーになるのは何で? WAVファイルをリソース登録して鳴らす方法は色んなサイトにあるのに、 アイコンの使い方書いてるサイト見つけられなかったんだけど。
>>313 画面にワーク用のイメージリストコントロールをはる。
そこにリソースから取得したアイコンをAddする。
最後にイメージリストのItemをExtractIconメソッドでアイコン化して
そこから、使いたい場所へ使う。
なんてのはどうよ?
315 :
デフォルトの名無しさん :2006/11/22(水) 11:41:28
エクセルVBAで作ったフォームをVB6にインポートしましたがデザイナというフォルダ内にセットされました。 コントロールを追加しようとするとFormデザイナでは使用できません云々のエラーとなってしまいます。 プログラム自体は問題なく走るんですが、コントロールの追加は一切無理です。コントロールの削除や移動はできます。 やり方が悪いのか、これで当たり前なのかすらわからない状況です。 先輩諸氏の皆様どうかご指導ください。
>>314 ありがとやってみる。
ずいぶん前に諦めたからエラーの内容や関数名忘れてるけど、
どちらにせよ記憶に無いやり方みたいなんでやる価値ありそうだ。
ソース公開の強要って、、、w 頭おかしいんじゃないの?
320 :
315 :2006/11/22(水) 20:00:28
エクセルVBAで作ったフォームをVB6にインポートしましたがデザイナというフォルダ内にセットされました。 コントロールを追加しようとするとFormデザイナでは使用できません云々のエラーとなってしまいます。 プログラム自体は問題なく走るんですが、コントロールの追加は一切無理です。コントロールの削除や移動はできます。 やり方が悪いのか、これで当たり前なのかすらわからない状況です。 先輩諸氏の皆様どうかご指導ください。
当たり前。 VBAとVB6は多くの部分で互換性があるが、完全互換ではなく その互換性がない部分の一つがVB6のフォーム対VBAのユーザーフォームの部分。 まあテキストエディタで開いて少し修正すれば使えないこともないから やり方が悪いとも言えるかも知れないが。 どう修正するかはググればわかるから自分で調べること。
322 :
315 :2006/11/22(水) 20:26:55
>>321 厳しくも暖かいご意見ありがとうございました。
散々ググッて見たのですがググり方が足りなかったようです。
これからググりまくってみます。
>>322 エクセルでそれを見ながらVBでゼロから作った方が早い。
VB6 SP6をWindowsXP Home Edition SP2で使用しています。 作成されたアプリケーションをエクスプローラから見ると、ファイル名の下に 登録ユーザー名が表示されてしまうのですが、これを変更することはできないのでしょうか?
ユーザー名ではなく所属でした。。。お願いします。
変更できます。
そんなヒマがあったら腹筋でもしろよ
というか、その情熱をVBの勉強に向ければ、 他人のソースなんて当てにしなくても、コード掛けるようになるのでは?
VBAスレから誘導されました。よろしくお願いします。 ExcelのVBAでDOM使ってXML書き出すプログラムを作ってます。 で、標準の文字コードがUnicodeのため、XMLファイルもUnicodeで出力されてしまいます。 これをShift-JISで出力したいのですがどうすればよいのでしょうか? DOMリファレンスで見た限りメソッドにもそれらしいものは見当たらなかったのですが。。
331 :
313 :2006/11/23(木) 05:40:48
ごめん思い出した。 LoadResDataで「実行時エラー326 識別子101のリソースが見つかりません」て出るんよ。 定数使用してLoadResData(101,vbResIcon)もダメ、(vbResIcon=1) MSのサポートページにあるLoadResData(101,3)もダメ。 WAVは"CUSTOM"と文字を打つのでLoadResData(101,"アイコン")とやったがダメ。全角半角両方。 上記はすべて同じエラーになる。 WAV同様"CUSTOM"なら取り込める。 でもバイトデータだから、これをまたアイコンにするんだったら意味わからん。 リソースファイルにアイコン入れるまではいいが取り出せないのは何なんよ…
>>331 基本からなってねぇ
LoadResPicture(リソース番号, vbResIcon)
>>332 ありがとう。でもvbResIconて数値いくつ?
変数が定義されてませんてエラーになるんで…
>>333 >定数使用してLoadResData(101,vbResIcon)もダメ、(vbResIcon=1)
. .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
/:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
/ :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
/ :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄
>>334 ごめんこ今やったらできた!
LoadResPictureか、そらLoadResDataでググッても使い方出ないわけだ。
額にアイコン張り付けてコンビニ逝ってくるよ。ありがとう!
ε=ヽ( ゚逝゚)ノ
For Each...Next ステートメントには DoEvents みたいなのありましぇんか
Microsoftは、未だにVB6を使い続けるユーザー達のために、
Formの既定インスタンス機能や、IDEの挙動をVB6に似せるなど、
移行支援の為の対策をVB2005にたくさん盛り込んだわけだ。
特に、Formの既定インスタンス機能は、改悪と言って過言ではないと
自他共に認めるであろう。
MSは、そこまでしてVB6ユーザーを「救おう」としている。
さて、ここでVB6ユーザーであるスレ主が、
VB2005を使ってみて、居ても立ってもいられずに立ててしまったこのスレッドを見てみよう。
http://pc8.2ch.net/test/read.cgi/tech/1159446575/ > [VB6とVB2005って全然違わない?]
> 1 :デフォルトの名無しさん :2006/09/28(木) 21:29:35
> まずcommandがbuttomになってて
> ??
> 線引こうにもlineが認識されない
> なんなの?
私たちはまだまだVB6ユーザーを甘く見ていたようだ。
救いようがないとはまさにこのことではなかろうか。
VB6ユーザーはVB2005に対して、完全同一な物を求めているようだ。
新しいものへのチャレンジ精神があまり備わっていないVB6ユーザーのために
MSは色々な対策を行った。
しかし、いまだにVB6を使い続けているVB6ユーザーには、
新しいものへのチャレンジ精神など微塵も備わっていなかったのである。
このようなVB6ユーザーを生み出したのはMSである。
VB6からVB.NETへと革新的に進化させた結果、このようにいつまでもVB6を使い続けるクズどもが発生したのである。
もはや救いようのないVB6ユーザー。しかしそれでもMSは、最後までこのVB6ユーザー達を見放してはならない義務があるのだ。
まあVB6の提供もサポートも再開するし、どうでもいい VB.NETはVisualBasic.NETじゃなければいいんでね?
>>337 VB.NETなんて全く必要ないんだけど。
VBでやりたい事は全て出来る。
クラサバなら尚のことね。 ウェブにする必要があるのはごく一部の業種のわずかな部分のみ。
(^ω^) 勉強を怠った技術者はグチばっかりでとても困るぉ
>>332 なんかアイコンが潰れて表示されたorz
ググってみたけどLoadResPictureはまともアイコン扱えないの?
イメージリストコントロール使うしか無いのかな。でもツールバーにないし…
FPDへのアクセス中はアイコンがウィンドウみたいなの(デフォルトアイコン?)に 変わるのは仕様ですか?
>>341 ドドネトごときで「勉強」とか言っちゃってるよ、この人。(w
物事を「ごとき」で語る人間には「ごとき」程度のものしか見えていない。(ー人ー)ナムナム
「ごとき」程度のものしかないだろ。 なんか変なものでも見えてるのか?
>>349 プロジェクトのプロパティで設定後コンパイル。
>>347 日記帳に
>>346 みたいな事は書かないよ。
バカじゃないの? (w
>>348 別に俺は、ドトネトを極める匠じゃないから、
自分のやりたいことができれば、それで十分。
>>351 突っ込みどころ満載で、ちょっとおもしろいw
話しようぜw
何より、日記帳つけてんの?ww
>>350 プロジェクトのプロパティのそれらしいところを全て弄ってみて駄目だったので諦めていたのですが
windowsを再起動したらフォルダ上の表示が変わりました・・・
どうもコンパイルしなおしたファイルを、以前のファイルと同じものとOS側で認識していたみたいです。
お騒がせしてすみませんでした。
>>352 突込みどころ満載と言う割には、突っ込めないチキン君には用は無いよ。
(^ω^)ノシ ぃょぅ だぉ!
356 :
352 :2006/11/23(木) 22:41:20
>>354 いよぉ!351!ツッコミ入れられてもわからないんだなw
日記帳つけてんだろww
認めちまえよww
>自分のやりたいことができれば、それで十分。
普通は自分のやりたい事なんてしてる訳じゃなくて
仕事で必要だから、クライアントにVB使うなり、サーバーにC使う
なり、XPでのサポートを得るためドトネト使うなりしてるだけw
ウケルww オバカ丸出しだぞww
>>356 ハイハイ、君の言う通りだね。
満足した?
358 :
352 :2006/11/23(木) 23:15:13
>>357 ,354,351,346,344
お前、何にも引き出しがない、つまんないヤシだな。
会話も成立しない。
飽きた。もう、来るなよ。
361 :
313 :2006/11/24(金) 05:34:41
アイコン使用の効率化を考え、LoadResPictureなどを使おうとした結果です。 1・imageで一個一個貼りつけ…現状。特に問題はないがダサい感じ 2・LoadResPicture…画像が崩れるのでダメ 3・imagelist…メモリ不足多発、EXEサイズ増大で良いこと無し 4・imagelistをアイコン10個ごとにインデックス分け使用…メモリ不足でコンパイル不可 3〜4はもちろんimageはすべて削除してる。2もほとんど削除し、転送用の数個のみ。 LoadResPictureで画像潰れないテクニックないすかねえ?
>>361 EXEにリソース埋め込んだら、意味がないだろ・・・・
普通はリソース用のDLLを作る。
お前のようなバカは、リソースなんか使うなといういい例。
馬鹿に馬鹿が突っ込む。 このスレらしい光景だねw >EXEにリソース埋め込んだら、意味がないだろ なんでだよw
>>363 コイツはドトネト板にも入たリアルキティ。
救いようがない。
ほっとけ。
367 :
313 :2006/11/24(金) 15:59:23
EXEに埋め込みたい理由は、単に実行に必要なファイルを一つだけにしたいってだけなんですよ。 アイコンをカスタムリソースとして登録して、LoadResDataで バイト型配列に取り込んで、テンポラリファイルに書き出してから それを画像ファイルとして読み込む、というやり方もあるようだけど、 それじゃなんか釈然としない。 アイコン形式を使いたい動機は、PaintPicture一回でマスク付きで画像を描けるから。 一枚のでかい画像にアイコン画像全部並べて、マスク画像も作って 二枚の画像を持つのが無難なんだろうか。 PaintPicture二回必要になるけど、速度変わるかな?
368 :
デフォルトの名無しさん :2006/11/24(金) 22:50:52
六角形を書いてその内部を塗りつぶすプログラムを作っているのですが・・・ 1つずつ塗りつぶす色を変える場合、下のプログラムでは、どうすればいいのでしょうか? 宜しくお願いします。 Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long Private Declare Function PaintRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long Private Const LOGPIXELSX = 88 ' Logical pixels/inch in X Private Const LOGPIXELSY = 90 ' Logical pixels/inch in Y Private Const ALTERNATE = 1 '交差したリージョンは塗らない Private Const WINDING = 2 '交差したリージョンも塗る Private Sub PaintRegion(Dest As Object, ParamArray P()) ' PaintRegion ' 多角形を塗りつぶす関数 ' 使用方法: ' PaintRegion 描画オブジェクト, X1, Y1 , X2, Y2, ... ' 描画オブジェクトには、Form, PictureBox, Printerなどが使用できます。 ' 座標はTwips単位で渡します ' 塗りつぶし色は、描画オブジェクトのFillColorプロパティの値が使用されます。
369 :
368 :2006/11/24(金) 22:52:09
Dim Point() As Long '座標(ピクセルに変換した値) Dim hRgn As Long 'リ−ジョンのハンドル Dim i As Long, nPoint As Long Dim PPTX As Single, PPTY As Single ReDim Point(0 To UBound(P)) nPoint = (UBound(P) + 1) / 2 PPTX = GetDeviceCaps(Dest.hdc, LOGPIXELSX) / 1440 PPTY = GetDeviceCaps(Dest.hdc, LOGPIXELSY) / 1440 For i = 0 To nPoint - 1 'ピクセルに変換 Point(i * 2) = CLng((P(i * 2) - Dest.ScaleLeft) * PPTX) Point(i * 2 + 1) = CLng((P(i * 2 + 1) - Dest.ScaleTop) * PPTY) Next i Form1.Picture1.FillColor = RGB(255, 0, 0) '塗りつぶし Form1.Picture1.FillStyle = vbFSSolid hRgn = CreatePolygonRgn(Point(0), nPoint, WINDING) PaintRgn Dest.hdc, hRgn DeleteObject hRgn End Sub
370 :
368 :2006/11/24(金) 22:52:48
Private Sub Command1_Click() '正六角形 Form1.Picture1.Line (433, 0)-(0, 250), &HFF0000 Form1.Picture1.Line (0, 250)-(0, 750), &HFF0000 Form1.Picture1.Line (0, 750)-(433, 1000), &HFF0000 Form1.Picture1.Line (433, 1000)-(866, 750), &HFF0000 Form1.Picture1.Line (866, 750)-(866, 250), &HFF0000 Form1.Picture1.Line (866, 250)-(433, 0), &HFF0000 Form1.Picture1.Line (866, 750)-(433, 1000), &HFF0000 Form1.Picture1.Line (433, 1000)-(433, 1500), &HFF0000 Form1.Picture1.Line (433, 1500)-(866, 1750), &HFF0000 Form1.Picture1.Line (866, 1750)-(1299, 1500), &HFF0000 Form1.Picture1.Line (1299, 1500)-(1299, 1000), &HFF0000 Form1.Picture1.Line (1299, 1000)-(866, 750), &HFF0000 '塗りつぶし PaintRegion Picture1, 433, 0, 0, 250, 0, 750, 433, 1000, 866, 750, 866, 250, 433, 0 PaintRegion Picture1, 866, 750, 433, 1000, 433, 1500, 866, 1750, 1299, 1500, 1299, 1000, 866, 750 End Sub Private Sub Command2_Click() End End Sub 長くなったけど・・・ 宜しくお願いします。
>>370 Form1.Picture1.FillColor = RGB(255, 0, 0) 'これ
以前作ったやつの余計な部分削ったやつ 動作確認してないけど原理はあってる筈だから適当に修正しな 動作すればいいレベルのコーディングだ つーか↑の6角形の座標固定値か Dim SX As Integer, SY As Integer Dim PI As Single, HexR As Integer Dim tmpX As Integer, tmpY As Integer PI = Atn(1) * 4 HexR = 48 SX = 200: SY = 200 For i = -30 To 330 Step 60 fMain.Line (SX, SY)-(SX + Sin(i * (2 * PI / 360)) * HexR, SY + -Cos(i * (2 * PI / 360)) * HexR), vbBlack Next i tmpX = SX + Sin(30 * (2 * PI / 360)) * HexR tmpY = SY + -Cos(30 * (2 * PI / 360)) * HexR For i = 0 To 5 fMain.Line (tmpX, tmpY)-(SX + Sin((i * 60 + 90) * (2 * PI / 360)) * HexR, SY + -Cos((i * 60 + 90) * (2 * PI / 360)) * HexR), vbBlack tmpX = SX + Sin((i * 60 + 90) * (2 * PI / 360)) * HexR tmpY = SY + -Cos((i * 60 + 90) * (2 * PI / 360)) * HexR Next i tmpX = SX + Sin(-90 * (2 * PI / 360)) * HexR tmpY = SY + -Cos(-90 * (2 * PI / 360)) * HexR For i = 0 To 5 fMain.Line (tmpX, tmpY)-(SX + Sin((i * 60 - 30) * (2 * PI / 360)) * HexR, SY + -Cos((i * 60 - 30) * (2 * PI / 360)) * HexR), RGB(128, 128, 128) tmpX = SX + Sin((i * 60 - 30) * (2 * PI / 360)) * HexR tmpY = SY + -Cos((i * 60 - 30) * (2 * PI / 360)) * HexR Next i
fMain.FillStyle = 0 fMain.FillColor = RGB(160, 160, 160) Call ExtFloodFill(fMain.hdc, SX - 2, SY + 1, fMain.Point(SX - 2, SY + 1), 1) Call ExtFloodFill(fMain.hdc, SX + 0, SY + 1, fMain.Point(SX + 0, SY + 1), 1) Call ExtFloodFill(fMain.hdc, SX + 2, SY + 1, fMain.Point(SX + 2, SY + 1), 1) Call ExtFloodFill(fMain.hdc, SX - 2, SY - 1, fMain.Point(SX - 2, SY - 1), 1) Call ExtFloodFill(fMain.hdc, SX + 0, SY - 1, fMain.Point(SX + 0, SY - 1), 1) Call ExtFloodFill(fMain.hdc, SX + 2, SY - 1, fMain.Point(SX + 2, SY - 1), 1) fMain.FillStyle = 1 fMain.FillColor = &H0
どこの、学生のクソソースだよw よく、新人の世話するけど、専門卒のソースが いつもそんなクソソースだったりするw
誰しも初めからうまかったわけじゃないさ
相手のレベルにあわせたんじゃないか?
377 :
313 :2006/11/25(土) 06:04:03
みろ。バカだった。 こいつをマンセーしたヤシらもやっぱりバカだった。
379 :
368 :2006/11/25(土) 10:53:57
>>371 レスありがとうございます。
そこを弄ると全体の色が変わるのですが・・・
1つずつ塗りつぶす色を変える場合はどうしたらいいのでしょうか?
>>372 -373
レスありがとうございます。
どこをどう修正したらいいのかわからないです。
ぐぐったら6角形の座標固定値のやり方があったので・・・
>>377 GIFにするのとアイコンリソースにするの、どっちが得か?ってーのは直ぐに計算できるんではないかと。
ついでにGDIのBitBlt使いやがれ
>>368 暇だったから多角形を塗りつぶすクラスを作ってみたよ。
っていうか、そんな読む気もおこらないウンココードは捨てた方がたぶん吉だよw
'######## Form1 ########
Private mPolygonDrawer As New cPolygonDrawer
Private mMouseDownPoint As Win32API.POINTAPI
Private Sub Form_Load()
Me.ScaleMode = vbPixels
With mPolygonDrawer
.hdc = Me.hdc
.NumOfAngle = 6
End With
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mMouseDownPoint.X = X
mMouseDownPoint.Y = Y
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim r As Long
Dim red As Byte
Dim green As Byte
Dim blue As Byte
red = Rnd * 255
green = Rnd * 255
blue = Rnd * 255
Call mPolygonDrawer.SetFillColor(red, green, blue)
With mMouseDownPoint
r = Sqr((X - .X) ^ 2 + (Y - .Y) ^ 2)
Call mPolygonDrawer.Draw(.X, .Y, r)
End With
End Sub
382 :
381 :2006/11/25(土) 16:13:42
'######## 標準モジュール Win32API ######## Declare Function CreateSolidBrush Lib "gdi32.dll" _ (ByVal crColor As Long) As Long Declare Function CreatePen Lib "gdi32.dll" _ (ByVal fnPenStyle As Long, ByVal nWidth As Long, _ ByVal crColor As Long) As Long Declare Function SelectObject Lib "gdi32.dll" _ (ByVal hdc As Long, ByVal hgdiobj As Long) As Long Declare Function DeleteObject Lib "gdi32.dll" _ (ByVal hObject As Long) As Long Declare Function Polygon Lib "gdi32.dll" _ (ByVal hdc As Long, ByRef lpPoints As POINTAPI, ByVal cPoints As Long) As Long Public Type POINTAPI X As Long Y As Long End Type
383 :
381 :2006/11/25(土) 16:15:52
'######## クラスモジュール cPolygonDrawer ######## Public hdc As Long Private mDegreeOf1stPoint As Double Private mLineColor As Long Private mFillColor As Long Private mPenHandle As Long Private mBrushHandle As Long Private mNumOfAngle As Integer Private Const PI As Double = 3.1415923 Private Sub Class_Initialize() Me.NumOfAngle = 3 Me.DegreeOf1stPoint = 90 Call SetFillColor(255, 0, 0) Call SetLineColor(255, 255, 255) End Sub Private Sub Class_Terminate() DeleteMyBrushIfNeed DeleteMyPenIfNeed End Sub Public Property Let NumOfAngle(N As Integer) If N > 2 Then mNumOfAngle = N End If End Property Public Property Let DegreeOf1stPoint(deg As Double) mDegreeOf1stPoint = -deg End Property
384 :
381 :2006/11/25(土) 16:17:02
Public Sub SetLineColor(red As Byte, green As Byte, blue As Byte) Const PS_SOLID As Long = 0 mLineColor = red * 1 + green * &H100& + blue * &H10000 Call DeleteMyPenIfNeed mPenHandle = Win32API.CreatePen(PS_SOLID, 1, mLineColor) End Sub Public Sub SetFillColor(red As Byte, green As Byte, blue As Byte) mFillColor = red * &H10000 + green * &H100& + blue DeleteMyBrushIfNeed mBrushHandle = Win32API.CreateSolidBrush(mFillColor) End Sub Private Sub DeleteMyPenIfNeed() If mPenHandle <> 0 Then Win32API.DeleteObject (mPenHandle) mPenHandle = 0 End If End Sub Private Sub DeleteMyBrushIfNeed() If mBrushHandle <> 0 Then Win32API.DeleteObject (mBrushHandle) mBrushHandle = 0 End If End Sub
385 :
381 :2006/11/25(土) 16:17:39
Public Sub Draw(X As Long, Y As Long, r As Long) Dim pt() As Win32API.POINTAPI Dim prevPenHandle As Long Dim prevBrushHandle As Long If hdc = 0 Then Exit Sub pt = GetPointArray(X, Y, r) prevPenHandle = Win32API.SelectObject(hdc, mPenHandle) prevBrushHandle = Win32API.SelectObject(hdc, mBrushHandle) Call Win32API.Polygon(hdc, pt(0), mNumOfAngle) Call Win32API.SelectObject(hdc, prevBrushHandle) Call Win32API.SelectObject(hdc, prevPenHandle) End Sub Private Function GetPointArray(X As Long, Y As Long, r As Long) As Win32API.POINTAPI() Dim pt() As Win32API.POINTAPI Dim i As Integer Dim rad As Double Dim deltaRad As Double ReDim pt(mNumOfAngle - 1) deltaRad = 2 * PI / mNumOfAngle rad = 2 * PI * (mDegreeOf1stPoint / 360#) For i = 1 To mNumOfAngle pt(i - 1) = GetPoint(X, Y, r, rad) rad = rad + deltaRad Next GetPointArray = pt End Function
386 :
381 :2006/11/25(土) 16:18:49
Private Function GetPoint(X As Long, Y As Long, r As Long, rad As Double) As Win32API.POINTAPI Dim pt As Win32API.POINTAPI pt.X = X + r * Cos(rad) pt.Y = Y + r * Sin(rad) GetPoint = pt End Function
名前空間を意識して、モジュール名にドットをうって メソッドを呼んでるところといい、そのクラスといい、 なかなかの腕だけど、なんの仕事してれば、そんな 描画系を思いつくの?? 業務系の俺には、カスリもしない世界だったから、 ちょっと興味をもった。
> なかなかの腕だけど どこがだよw
389 :
デフォルトの名無しさん :2006/11/25(土) 19:00:18
390 :
デフォルトの名無しさん :2006/11/25(土) 19:08:28
息苦しい
もっと短く簡潔に書いてくれ。 貴方よりずっと莫迦な誰か他の人がメンテする事を考えて。
>>383 > Private Sub Class_Terminate()
> DeleteMyBrushIfNeed
> DeleteMyPenIfNeed
> End Sub
軽く殺意が涌いた
382〜を見て、すごいなーとは思わないけど、綺麗だなーとは思う。 こういう上手くはないけど綺麗なコード書ける人と一緒に仕事したいもんだね。
>>394 テラワロスw
なんで、誉める前に必ず「〜けど」って一言多いんだよw
うははw ネクラの臭いがぷんぷんするw
396 :
368 :2006/11/25(土) 22:01:28
>>381 レスありがとうございます。
早速、自分用にアレンジして使わせていただきますね。
ありがとうございます。
あと、ウンココードは捨てますねw
ペンとブラシの寿命がフォームと同じなのが気になる貧乏性
398 :
381 :2006/11/25(土) 22:34:47
>>396 バグがある(SetLineColorの処理とPIの値)のと、あと数値の型が適当だったり
ちゃんとキャストしてなかったりするのでその辺は修正してやってね。
>>397 やっぱりあんまりよくないのかな。
Win32のGDI関数ってほとんどやってことないから。。
Win9x特有の制限に引っかかる可能性があるとかないとかどこかで読んだ気もするけど。
>>387 ヘッポコのマイコンプログラマですよw
PCのアプリはここ数年.NETばっかりなんで、どうしてもVB.NETチックなコードになっちゃうね。
399 :
デフォルトの名無しさん :2006/11/26(日) 01:43:56
VBSでMSXML2.DOMDocumentを使う場合のについての質問です。 <test hoge='ABC'/> <test hoge='BCD'/> <test hoge='CDE'/> の中から、hoge属性値に C を含むものを列挙したい場合、 XPathではどのように記述するのでしょうか? 部分一致ではなく完全一致であれば、 /test[@hoge='C'] で取得できるのですが、 ワイルドカードはノード名や属性名には使えても、属性値には使えないようですし、 /test[contains(@hoge,'C')] もcontainsの部分で「不明な方法です」というエラーになります。 全ノードに対してループを回し、正規表現などで条件分岐すれば、結果的には問題有りませんが XPathで出来ることならXPathでやりたいので、ご存じの方が居ましたらご教示ください。
400 :
デフォルトの名無しさん :2006/11/26(日) 12:56:07
データ型で大きな数字が入る順番は integer<long<single と習ったんですが、single型って6桁を超えると それ以下の桁が0に簡略化されますよね。 longに入らないぐらい馬鹿でかい数を使う場合で 頭から数えて6桁以下の数字を省略しないで計算したい場合 どうすればいいんでしょうか?
>>400 有効桁数6桁”以下”なら、言っている通りsingleでいいと思うのだが
('A`) あ、もしかして"馬鹿でかい”のと”有効桁が大きい”の違いが分かってない・・・?
403 :
400 :2006/11/26(日) 13:28:42
すいません判り難かったみたいなので 例えば 12345678901234567890+12345678901234567890=24691357802469135780 を出したいと思った場合 longには入らないのでsingleを使うと 1.234567×10^19+1.234567×10^19 こんな感じで解釈されますよね。 すると結果が2.469134×10^19になりますよね、結果的に24691340000000000000 になっちゃって一番上と数値が変わってきちゃうじゃないですか、 これを何とかしたい、というわけなんです、正確に計算したいんです。
ひんと: 多倍長演算
「最近のCPUはfloatもdoubleとして処理するからfloat使っても速くはならないし、 精度も落ちるから巨大な配列を確保する等の事情が無ければdoubleを使ったほうが良い」 って聞いたけどVBだとどうなんだろう。
>>403 とりあえず
> 頭から数えて6桁以下の数字を省略しないで計算したい場合
では、ないんだな ('A`)
とりあえず20ケタを扱える型はdecimal型だ
詳しくはヘルプを参照
逆質問だが、下のような計算も考慮に入れているのか?
0.12345678901234567890+12345678901234567890
この場合、誤差を最小に抑えるため数値上では小数以下の桁がほとんど丸められるわけだが、
これすらも正確に保ち下のような数値として扱いたいのなら、
12345678901234567890.12345678901234567890
vbの標準型では無理で、文字列型でAdd(String v1, String v2)みたいな演算を自分で仕組むしかないぞ
decimalの使い方 Private Sub Form_Load() Dim d1 As Variant Dim d2 As Variant d1 = CDec("12345678901234567890") d2 = d1 Debug.Print d1 + d2 End Sub
>>405 VBというよりWindowsの動くx86のCPUでは、
基本的に80bitの拡張倍精度で演算される。
とりあえず
>>400 には「仕様」を明確にしてもらうことが重要なはずだと思うが。。
テキトーな回答を下す前に。
>>400 人様に質問するのに「馬鹿でかい」とかあいまいな言葉を使うなよ。
そんなんでわかるわけないだろ、誰もエスパーじゃないんだから。
扱う数値は整数?実数?
実数の場合、必要な精度は?
扱う数値の範囲(最大値・最小値)は?
>>409 詳しく書いてるように聞こえるけど、
実は何も考えてないだろ?
>>400 ふぅ・・・。で、お前は何がしたいの?
バカなら、もう来るなよ。みんなが真剣に考えたりするじゃないか。
真剣なら、自分で型をつくればいいだけの話だろ。
414 :
デフォルトの名無しさん :2006/11/26(日) 18:55:13
すまん、俺にはわからない。 XPathのことはXMLのスレ(WebProg板にある)にいったほうがわかる人間がいると思う。
VBの場合、スコープがグローバルの参照型の変数は 参照が変わった場合、前の値はメモリから消えるのでしょうか? Public str as String のstrに str = "A" str = "B" とした場合の"A"です。 何かのタイミングで一斉に消えたりするのでしょうか?
よく知らんけど、適当な時にガーベージコレクトしてるんじゃない?
知らないのになぜ答えるんですか?
○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 三.回答する上で必須ではない情報をむやみに聞き返さない。
テメエのモラルはテメエで勝手に守ってろってw 俺はそんな糞みたいなルールには死んでも従わないね。
○ 質問者の心得 四.荒らしは相手しない。 ○ 回答者の心得 四.荒らしは相手しない。
423 :
339 :2006/11/26(日) 23:54:28
>>415 XMLスレも考えたのですが、COM版のMSXML2.DOMDocumentに限定した話をしたかったので
まずはこちらにきました。Web上で紹介されている関数が使えなかったりと、COM版の仕様が他とは違うようなので。
もうしばらくこちらで粘って、知ってる方が居ないようなら向こうに移動してみます。
ということで引き続きよろしくお願いします。
以降のスレには
○馬鹿の一つ覚えのようにテンプレをコピペしない
っていう項目が必要になりそうだな。
そうすれば
>>422 のようなスレになんの貢献もしない馬鹿を雪隠詰めにできるよw
○馬鹿の一つ覚えのようにテンプレをコピペされるような書き込みをしない
>>416 俺は"B"を代入した瞬間"A"は消えるもんだと思っている。
なぜなら、VC++で同じことをBSTRに対して行おうとするとそういう風になるから→きっとVBもそうだろうという短絡的発想。
知らないのになぜ答えるんですか?
>>427 ( <●> <●> )つ わかってます
わかってないことを証明する悪魔の証明はできないのはわかってます
>>428 あなたはわかっていません
freeした直後にAはメモリ上に存在します
また直後ではAの上にBを置かれることはありません
OSの中まで追ってからにしなさい
> OSの中まで追ってからにしなさい > OSの中まで追ってからにしなさい > OSの中まで追ってからにしなさい > OSの中まで追ってからにしなさい ( <●> <●> )
>>429 のVBは変数を宣言するごとにGlobalAllocしてるんだな
>>430 むしろこっちだろ
> Aはメモリ上に存在します
> Aはメモリ上に存在します
> Aはメモリ上に存在します
マジレスするとVB6までは参照カウンタ方式のGCで、参照が無くなったタイミングで即回収され再利用可能になる。 循環参照があった場合は開放されない。同じ参照カウンタ式のCOMと相性がいい。
>>433 > 循環参照があった場合は開放されない。
('A`) ”されない”?
>433 >416 はVB6の話だろ? Stringはオブジェクト型じゃないから代入は値のコピーが作られるだけだぞ
>>435 そうだった。Stringは別だな。
433はClassの話だと思ってくれ。
ようわからんがstrに"ABCDE"が入ってて、そこへ"XYZ"が"入った場合、 メモリ上"XYZDE"になって、"DE"はあるタイミングまで残る、って話ではないの? "XYZ"の代わりに"1234567890"が入ったらメモリ上は"12345"になって、 新たなメモリ空間に続きの"67890"が入るように思うんだけど。 GCで前者の"DE"みたいなのが詰められ、後者みたいなのが "1234567890"と連結されんでしょ?
VB自体の開発者しか知らない事を議論するのは無意味&無駄。
>>439 メモリについて「無意味&無駄」としか考えられないようだから
ブービー厨とバカにされるんだよ
>>440 VBが中で何やってたって、それを変更する事は出来ない。
つまり、お前が莫迦で阿呆という事だな。
TextBox1〜3とCommand1の4つのコントロールがFormに貼ってあります。 初期状態では、TextBox1, 3とCommand1だけ、Enabled=Trueです。 TextBox1の入力内容を検査して、OKならTextBox2のEnabledをTrueにした 上で、そこにFocusを移動させたいのですが、どうすればよいでしょうか? TextBox1のValidateに TextBox2.Enabled=True TextBox2.SetFocus と書いてもTextBox2にFocusが遷移しません。
>>442 どうすればもこうすればも、そんな糞仕様のUIはナンセンスでしょ。ダメダメでしょ。
MSDN読んだ?
Validateっていつ発生するのよ。
矛盾することしようとしてるんだからうまくいくはずがない。
だいいち少しはユーザビリティってものを考えてくれよ。
>>442 へっへっへ…
Enable=TrueにしたあとDoEvents書いちゃいなよ。
いいぜぇ、DoEventsは。
簡単な問題になると、嬉しそうに湧いてくるなw
変数は必ずしも宣言と合わせて初期化しないといけませんか(.NET) Dim hoge As Integer = 0
>>448 vb.netさんでは宣言時に規定の初期値に初期化されます
やりたきゃやってみろ
>>443 キミ、学校でも頭悪いとか、「○○って話が通じネーよな」とか良く
言われるでしょ?言われるでしょ?
型による。 値型と参照型では違う。 参照型は初期化しないと、ぬるぽりますよ
スゴイ事思いついたヾ(゚∀゚)ノ VB6.0でも、ユーザーコントロールを使えばクラスの継承が実現しない?! 空っぽのユーザーコントロールにメソッド書いて、継承時はそれを同じように 空っぽのユーザーコントロールに貼り付け。 画面やクラスでそのユーザーコントロールを動的に生成して、メソッドだけを呼べば クラスの継承が実現してない??
>>454 フォームの継承は、理屈はそうだけど、自分のメソッドも何もできない
からね〜
委任による継承かぁ〜・・・
実際は継承しているわけではなくて、継承チックに見えるように
ベースのクラスを呼んでいるんだよね
でもdd。
Implementsによるインターフェースの実装は知っていたけど、継承できない時点で
あんまり役にたたないよね。強いて使うなら、雛形として、このメソッドを使いなさい、かな〜
つCOMでも勉強・・・するべきだったけどモウイイや
継承なんて出来なくても、VBで何でも書けるが。
>>457 そう、つっかかるな。
オレもVBが好きだ。
ただ、お前ほどのヤシなら、たとえばフォームで継承が
できたら、便利だって事がわかるだろ?
ただ、それだけの事だよ。
継承できなくても、VBは本当にRAD開発では最高の
言語だよ。
>最高の言語だよ。 ( ^ω^) ・・・。
RAD開発では
> 継承できなくても、VBは本当にRAD開発では最高の > 言語だよ。 そんな餌にクマー(AA略
VBで、ドトネトでいう、RemoveHandlerのようなイベントを削除する メソッドはありますか??
464 :
436 :2006/11/30(木) 19:52:09
もう一つ、クラスのインスタンス間で共有できる Shared、Staticのようなものはありますか?
466 :
デフォルトの名無しさん :2006/12/01(金) 06:49:29
VB6.0でDeclare Functionを使って、 個々に関数を呼び出せるDLLを作成するには、 どうすればいいのでしょうか?
468 :
466 :2006/12/01(金) 08:01:13
VBでです。
できない。
470 :
466 :2006/12/01(金) 08:27:20
了解です(´・ω・`)
参照するとか、CreateObjectするとかじゃ だめなのかという疑問。
472 :
466 :2006/12/01(金) 09:13:19
使うのがVBだけではなく、 クラスを使えない言語からも参照できないといけないのです。 なので、Declare Functionで呼び出せればと思ってました。
他言語から参照するような処理をVBでは出来ないほうが いいからかもね〜。 だって、圧倒的に遠回りで遅いから。まあ、仕方ない。
474 :
466 :2006/12/01(金) 09:38:01
了解です。 とりあえずVbでクラスを作って、 それを呼ぶためのDLLをVCかDelphiで作ります。 かなり面倒ですけど、VB側の処理は変更できないので、 この方法でやってみます(`・ω・´)
VB6でサスペンドを拒否する記述がしたいのです サブクラス化してWndProcでWM_POWERBROADCASTを拾うことはできました CならこのあとReturnでBROADCAST_QUERY_DENYを返せば良いだけですが VB6ってどのようにしたら良いのでしょうか .Netでの方法ならたくさん見つかったのですが・・・
難しい問題はお任せします
>>442 >TextBox2にFocusが遷移しません
わかった、これってGUIの組み方でいつも問題になるところだよね
これって言語によらない共通の問題かなと(
>>443 さんの指摘は意味はあるかと)
結局、キー入力による「Enter」だけでなく、
マウスでほかのコントロールに移ろうとしてときにも
強制的にTextBox2にfocusしたいってことだよね
確かにVaridateイベントにそれを書いて
>>444 の対策してもうまくいかないんだよね
そうなると、ちょっと無理気味だが、今TextBox1で編集した直後だよってフラグを
モジュールレベル変数で立てておいて、別の任意のコントロールをクリックしてしまって
そこにFocusが移っても、そこから対策するしかないんではないかと思う
あるいは、次の入力部を強制するためには、次のコントロール以外は
Focus可能なものは表示しておかないようにしておくとかしないといけないわけで
それであれば、結局昔のDOS時代のキーボードオンリーの入力使用に近い
形にするしかないかと
以前にやったことのある対策は、そのGotFocusイベント・プロシージャでそれを参照して
フラグの値に応じて強制的にFocusを飛ばすプロシージャをコールするようなもので
一応はうまく動きはしまたが、注意点はあとでバージョンアップとかしてコントロール
が増えたときにそこも修正追加が必要なことかな
477 :
475 :2006/12/01(金) 11:14:50
WndProc = BROADCAST_QUERY_DENY Elseで条件以外はWndProc = CallWindowProcして でEnd Functionしたらいけたっぽいんですが これでいいのでしょうか?w
>475 SysInfoコントロールのPowerQuerySuspendじゃ駄目か?
>>475 Cでつくった自作の関数呼べばよくね?
>>476 べたなフォーカス遷移として、コントロールのEnabledを
一時的にFalseにして、勝手に次のtabIndexにフォーカス
を移したりする。
コントロールを送って、移したいオブジェクトまでフォーカスを移す。
関数名はせっとふぉーかすでらっくすでおk
>>479 >コントロールのEnabledを一時的にFalseにして
>勝手に次のtabIndexにフォーカスを移したりする
Enterキーだけで送るときとかにはそういう機能もあったんですね
やってみました
この
>>442 でのやっかいな問題は、フォーム上の他のコントロールがEnabled=True
状態で存在しているときに、そこにマウスでヒットされると、Validateイベントでは
対応できないということかと思いまして(実際にやってみましたがうまくいきません)
それで
>>476 かと考えました次第でした
>>475 拾えたのなら、Cと同じ事するだけでしょ。
つーか、どうやって拾ったんだ?
482 :
デフォルトの名無しさん :2006/12/01(金) 14:50:29
>>480 Sendkey でTABキー送りなよォ
ぐひひ
>>466 vb6のリンカかコンパイルオプションで出力できる
>>464 モジュールに書くしかないんでね?
さも無きゃ一つのインスタンスを特別扱いするとか
>>463 vb6は内部でcomのdispatchインタフェイス使ってるので、
明示的に相手の参照はもってません
諦めろ。
>>485 詳しいね。
COMの世界は正直、わからん
VB6でフォームにチャートを表示させ、 チャートの折れ線グラフにマウスを当てると その箇所の値(X軸、Y軸)がテキストボックスに セットされる。 雰囲気的には株のリアルタイムチャートっぽいものを 実現したいのですが、これが可能なActiveX等を ご存じでしたら教えてください。 チャート上のマウスのMOVEイベントでその位置の 値が拾えれば良いのですが、Microsoft Chartとかは 不可能でした。
>>487 Formなりグラフィックメソッドとマウスイベントがあるコントロールなら
普通に何でもいいのではないかと
>>487 グレープシティの製品にそんなのなかったっけ?
490 :
デフォルトの名無しさん :2006/12/03(日) 00:16:14
VBで作成するDHTMLについて質問させてください。 コマンドボタンを押すと、テキストエリアに文字が表示されるというシンプルなソースなんですが、 ローカルでHTMLを表示すると問題なく作動するのですが、サーバにUPするとコマンドボタンを 押しても何もおきません。 XPpro+VB6.0で作成してます。 理由がお分かりの方、教えて下さいm(__)m
>>490 んんんんん、ぬおおおぉぉ〜〜〜ッッッ!!!!
超能力を駆使してみたんだが分からんかった。
スマンのぅ。
shell関数を使って、Javaのプログラムを呼び出そうとしていますが、 Java実行中、VB処理はそこで一時停止したいと考えています。 しかし、shell関数は非同期であるため、VB処理の一時停止が出来ませんよね? こういった場合、どのように対処すればよいのでしょうか?
>>490 全然分からないので一般的なことしかいえないけど、
セキュリティとかそういうのはちゃんと設定してあるの?
何か参考資料を一つ手元においてやってみた?
>>490 今日は朝から酔うちもうた
ぶーびーすくりぷとと、HTMLを使ってるということでAF?いや、FA?
よくわからんけど、HTMLに
<noscript><p>だめだこりゃ</p></noscript>
と書いて、表示されるようなら、だめなんだろうね
つーか、そーすをかいてみそ。酒のつまみをまってるぞ
496 :
490 :2006/12/03(日) 09:52:21
>>495 おはようございます。
ソースは下記のとおりです(VBによるDHTMLを試したかっただけなので)。
Private Function SubmitButton1_onclick() As Boolean
TextArea1.Value = "お前は既に" + _
Chr$(10) + Chr$(13) + "死んでいる"
End Function
よろしくお願いしますm(__)m
>>496 <HTML>
<HEAD>
<TITLE>TEST</TITLE>
<SCRIPT LANGUAGE="VBScript">
Function Submit_onclick()
TEXTAREA1.Value = "お前は既に" + vbCrLf + "死んでいる"
End Function
</SCRIPT>
</HEAD>
<BODY>
<P>
<TEXTAREA id=TEXTAREA1 name=TEXTAREA1></TEXTAREA>
<INPUT id=submit1 type=submit value=Submit name=submit1 onClick="Submit_onclick()">
</P>
</BODY>
</HTML>
ここまでを test.htm で保存、サーバーにあげてIEで開くと動くぞ。
もしかしたらお前さんの思ってるDHTMLと違ってるかもしれないが一般的にはこれのこと。
>>496 う〜・・いい気分だ。
ビールが無くなったから、嫁に買いにいかせなくちゃ・・・
ぶーびーのアプリケーションはVBが実行できる環境じゃないと
だめなんだな
ちょっとオレも勘違いしてたよ。ダイナミックHTMLと思ってた。
ソースを見る限り、VBのデザイナでDHTMLを書いたんだよね
サーバーにぶーびーのランタイムがインストールされていないと
だめなんだよ
499 :
490 :2006/12/03(日) 12:22:50
>>498 鯖にVBのランタイムが入ってないと駄目なんですか○| ̄|_
勉強になりました。
ありがとうございましたm(__)m
VB6のランタイムが必要なDHTMLって何なんだ。別になにかあるの?
>>490 が結局何をしたかったかよくわからねぇ。
492です。
>>494 即レスありがとうございました。
win32APIで行こうと思います。
>>500 おれも、最初は普通のHTMLにスクリプトを組み込んでいると
思ったんだよ。
で、スクリプトを外出しにでもして、パスが違うんじゃマイカと。
でも、
>>496 を見せてくれた瞬間ひらめいたね
VBのスタート→新しいプロジェクト→DHTMLアプリケーション
もう、すっかり酔いがさめた。ビールでも買いに行こう・・・。
DHTMLプロジェクト初めて使ってみた素人プログラマには話がさっぱりわからんかったばい
504 :
デフォルトの名無しさん :2006/12/03(日) 20:45:47
dim (300,30) でどのくらいメモリ使用すます?
お札300枚は幾らでしょう、というのと同じ愚問だな
だな、石300個で重さいくらでしょう?ともいえる
507 :
デフォルトの名無しさん :2006/12/03(日) 21:03:06
Dim a(300, 20) As Variant でいいですか?
>>502 >VBのスタート→新しいプロジェクト→DHTMLアプリケーション
あった、あった思い出した。これはサーバーにはIISやVBはいらないが、
ディストリビューションウイザードでCABファイルを作る必要がある。
クライアントがIE必須でVB製のActiveXをインストールしてしまう優れもの。署名なしでは使用できない。
JavaScriptやVBScriptのかわりにObjectタグのActiveXを使わせる仕掛け。
今のIEだと署名があっても警告でまくりでとても使えたものじゃない。
当時は警告無視すりゃ動いた気もするが、とても使えねぇと思って以降忘却のかなただった。
>>507 MSDNをVisualBasic6に関して、”データ型の概要”で調べれ
510 :
デフォルトの名無しさん :2006/12/03(日) 21:43:18
i = Time iに1秒足すには記述はどうすれば良いでしょうか?
i=i+1でいいんでね?
('A`) timerと間違った dim i as date i=time i=dateadd("s",1,i)
514 :
デフォルトの名無しさん :2006/12/04(月) 01:34:36
i=time iに1:16:18が入ったとして、 これの秒を00に書き換えたいのですが、記述はどのようにすれば良いでしょうか? 後々 i + #12:01:00 AM# > time の処理をするので、Formatを使うと都合悪いです。 1:16:00に1分たした物を、timeと比較するような感じです。
>>514 > これの秒を00に書き換えたいのですが
dim i as date
i=timeserial(1,16,18)
i=getHourMinute(i)
function getHourMinute(byval d as date) as date
getHourMinute=timeserial(hour(d),minute(d),0)
end function
> 後々 i + #12:01:00 AM# > time の処理
まさかこのままじゃないよな?
double型の演算になるはずだから、精度が犠牲になるかも知れんぞ?
if datediff("s",i+#12:01:00 AM#,time)>0 then ...
か?
もしかしなくてもDB板ネタかもしれませんが教えて下さい。 SQLServer2k + VB6の組合せでアプリを書いてます。 ストアド内で、大雑把に次の処理を行っています 1) 元になるテーブルを集計してワーク作成 2) ワークを加工して、レコードセット返却 1) の処理が終った時点でワークが出来ていなければ、RETURN 0 として処理を 終了させ、2) の処理が正常終了したら RETURN @@ROWCOUNT として処理行数を 返しています。問題は、 ・ワークが作成されず、RETURN 0で終った場合 → EOFプロパティを参照するとカーソルが無いといわれてエラー → rdoParameters(0).Value は 0 が入っている ・レコードセット返却まで正常に行われた場合 → EOFプロパティにはちゃんとTrue/Falseが入る → レコードセットを全部引き取るまで、rdoParameters(0).Value が Null となってしまうんです。 ストアド終了時点でレコードセットが有るか無いかを判断する正当な方法を教えて下さい。
SQL-SERVER+RDOねぇ〜 SQL-SERVERでストアド組んだこと無いから、 酔いちくれの独り言 おらくるなら、beginをネストして、Exceptionで処理をやらせる じゃヴぁ糞やドトネトも似たような事する return0のときに、カーソルにはselect "orz"とか入れたらww 誰か、頭のいい人に回答もらえるといいね〜
519 :
デフォルトの名無しさん :2006/12/04(月) 21:45:57
「Visual Basic Editor 6」で、『Microsoft MonthView Control 6.0(SP4)』を使用したいのですが、 「ツール」→「その他のコントロール」内のリストに表示されません。 「その他のコントロール」内のリストに表示させるにはどうしたら良いでしょうか? オフィス2000 プレミアムを所有しています。 宜しくお願いします。
あのー、コントロールはIDE(Visual Basic Editor 6)に付属するものではないんですが。
521 :
デフォルトの名無しさん :2006/12/04(月) 22:49:18
>>520 さん、ありがとうございます。
コントロールはどうすれば入手できるのですか?
念じる
523 :
デフォルトの名無しさん :2006/12/04(月) 23:53:01
Dim a(1, 20) As Variant この配列を初期化する方法を教えて下さい。 Doで回してブランクを入れるしか無いのでしょうか? モジュール内で使用する配列なので、redimは不都合です。
この手の話題は荒れるから嫌だ。 答え知ってても言う気にならない。
525 :
デフォルトの名無しさん :2006/12/04(月) 23:58:59
意味がわからない
そこをなんとか教えて下さい。
Erase でできました。
529 :
デフォルトの名無しさん :2006/12/07(木) 10:19:16
下のようなプログラムを作成したんですが、関数宣言で 戻り値がいる場合ってどのような場合なんでしょうか? (下だとbが戻り値ですが) またByRefなどは正しく宣言されていますでしょうか? Function sora(ByRef a As Double, ByRef b As String) As String If InStr(1, Replace(a, "-", ""), ".") = 4 If InStr(1, a, "-") Then b = a Else b = " " & a End If end if
530 :
デフォルトの名無しさん :2006/12/07(木) 10:36:38
あっ↑VB6.0です
・double型に対し、Instrを実行するのがおかしい ・最初のif文にthenがない ・なぜ"."が4文字目になければならないのか(そういう処理なんだろうが・・・) ・string型に直接double型を代入しようとしている。 ・最後だけインデントしている これはdouble型の数字を文字列型に変換したいのか? 普通に b=str(a) じゃだめなのか? Private Sub Command1_Click() Dim a As Double Dim b As String a = 100.1 b = Str(a) Command1.Caption = """" & b & """" End Sub
532 :
デフォルトの名無しさん :2006/12/07(木) 11:37:37
VB6でデバッグしてて気になったんですが、 ウォッチウィンドウで独自クラスを見ると、クラス内のPrivate変数まで出てきます。 Private変数へのアクセスはプロパティを通して行っているので、 内容が重複して見えて大変邪魔です。 Private変数は表示しないようにすることはできるのでしょうか? それとも、やり方がおかしいのですか?
>>532 ウオッチを閉じて、全部見えないようにすれば気にならないよ
534 :
デフォルトの名無しさん :2006/12/07(木) 11:43:51
AAAクラス private mstrTest as String Public Property Get Test() As String Test = mstrTest End Property としたときに、ウォッチでこのクラスを見ると AAA--mstrTest --Test ってことだよね? これは仕方ないんじゃないのかな。たしかに邪魔だけど
535 :
デフォルトの名無しさん :2006/12/07(木) 18:15:39
教えてください。 InputManのテキストボックス(日付型)から Enterキーで次のTabIndexに飛ばしたいんだけど、フォーカス動かない。 TabStopもTureにしてあるのだが…。 他にフォーカスが移動しない理由ってありますか?
536 :
デフォルトの名無しさん :2006/12/07(木) 18:16:59
追記:VB6.0 InputMan6.5
まずは作った会社に聞け
538 :
デフォルトの名無しさん :2006/12/07(木) 18:35:30
>>535 キー定義でNEXTFOCUSを{ENTER}にすればいいじゃん
539 :
デフォルトの名無しさん :2006/12/07(木) 18:54:03
>>538 nextfocus = transferFocus?
540 :
デフォルトの名無しさん :2006/12/07(木) 19:19:41
select case keycode Case vbKeyReturn SendKeys "{Tab}" ・ ・ ・ end select ↑でいけた。サンクス☆
541 :
デフォルトの名無しさん :2006/12/07(木) 19:20:45
select case keycode Case vbKeyReturn SendKeys "{Tab}" ・ ・ ・ end select ↑でいけた。サンクス☆
キーイベントにコード書くんじゃなく、プロパティページにあるっしょ。
543 :
デフォルトの名無しさん :2006/12/08(金) 10:45:21
環境:WindowsXP VB6.0 SPREAD.Ver3.0 SPREADのAllowMultiBlocksをtrueにして、 単独セルの複数選択ができるようにはなったのですが、 プログラムで選択セルのインデックスを取得するには どうしたらいいのでしょうか?
教えてください。 textboxに入力した文字をファイル名として保存させる方法はどうするのでしょうか?
>>544 > ファイル名として保存させる
初耳の表現だ
もっと詳しく
例えば・・・ textboxにa.txtと入力してCommandButtonを押すと a.txtが作成されるというプログラムを作りたいのですが・・・ どうすればいいのでしょうか?
>>546 その程度の事をいちいち質問していたらスレがいくつあっても足りないじゃないか
548 :
デフォルトの名無しさん :2006/12/08(金) 11:56:31
↓の処理を短くして表示したいのですが、どのようにすればいいでしょうか? 処理してる内容はどれも同じなのですが・・・。 お願いします。 If InStr(1, Replace(b, "-", ""), ".") = 4 Then If InStr(1, b, "-") Then ログ左右桁揃え = b Else ログ左右桁揃え = " " & b End If ElseIf InStr(1, Replace(b, "-", ""), ".") = 3 Then If InStr(1, b, "-") Then ログ左右桁揃え = " " & b Else ログ左右桁揃え = " " & b End If ElseIf InStr(1, Replace(b, "-", ""), ".") = 2 Then If InStr(1, b, "-") Then ログ左右桁揃え = " " & b Else ログ左右桁揃え = " " & b End If End if
ム板にVB6.0以前のくだすれってないよね? 立てたほうがいいいかな?
このスレの内容が既に十分くだらないから要らない。
終わった言語のスレを複数立てるなよ
問題はくだらない質問にも答える広量な人が殆ど居ないことだ。 自分より下の相手が出てくると、嬉々として見下して叩き出し 自分より上の相手が出てくると、黙り込んじゃう。そういう狭量な人が多い。
あなたが質問に答えれば終わる話です。
556 :
デフォルトの名無しさん :2006/12/08(金) 14:22:57
>>542 ほんとだ…^^;今度こそほんとにサンクス☆
555は笑える
562 :
デフォルトの名無しさん :2006/12/08(金) 19:22:57
>>542 やっぱダメだ(-_-)
Inputmanのテキストボックス→SPREEDへ行けない。
564 :
デフォルトの名無しさん :2006/12/08(金) 19:49:53
>>563 ただでさえ少なくなった質問を分散して減らすなよ・・・どんな神経しているんだ
566 :
デフォルトの名無しさん :2006/12/08(金) 20:07:48
重複扱い…(-_-‖)
>>562 行き先スプレッドなのか。
他のコントロールになら行けるんでしょ?
スプレッドがピクチャーボックスやフレームに乗ってたりしないか?
カーソルがどこ行ったかわからなくなってるんなら、フォームのMOUSEMOVEイベントに
ME.CAPTION=ME.ACTIVECONTROLて書いとくとマウス動かせば何にカーソル当たってるかがわかる。
妙なとこにカーソル当たってるなら、そいつのタブストップを無効にしていけばいい。
569 :
ガスター10 :2006/12/08(金) 21:55:13
>>567 ピクチャーボックスにのってます。
"実行時エラー438
このオブジェクトはこのプロパティまたはメソッドをサポートしていません"
と表示されます。
これはフォーム外って事でしょうか??
ふぅう。酔った。
この煽られる感覚がたまらなく、パトスを刺激する。
もう、びゅっとでる。
>>567 アホだな。オブジェクトを文字列にぶち込むあほ。
>>569 アホの書いたソースは削除して、
ピクチャのたぶすとっぷをFalseにするんだ!
.NAME書くくらい思いついてよ。
572 :
デフォルトの名無しさん :2006/12/09(土) 09:37:33
>>569 すでにFalseです。
>>571 ImText(Inputman)のとこでEnter押すとフォーム名が変わらず、
フォーカスが消えました。
あぁ。しゃべり倒して、疲れた。
>>572 全てのコントロールのTabすとっぷを調べてみたら。
リサイザーのElasticコントロールとか使ってると、フォーカスが
消えちゃったりした記憶がある。
リアルタイム株価表示ソフトを作りたいのですが リアルタイムの株価の取得でつまずいています Yahooなどは20分遅れの株価で遅く、 楽天RSSはリアルタイムなのですがエクセルでの取得に限られ、また銘柄も300までです リアルタイムの株価(東証・大証・JQ・HCにあるもの全て)のよい取得方法があれば どうかご教授くださいm(__)m
>>574 常識的に考えろよ
無料でリアルタイムに株価が取得できるんだったらYahooなりでやってるはずだろ
>>574 情報の提供先を見つけるのは、プログラミングと全く関係ないぞ。
取得方法と言ってるが、おまえのは取得方法以前に取得先が見つかってない状態だ。
まずは君の要望に適う情報提供先を見つけて、そこの情報を取得する方法が解らなかったらまた来い。
因みに利用規約はきちんと読めよ。Webブラウザ以外での取得閲覧を禁止している場合もあるから。
577 :
デフォルトの名無しさん :2006/12/10(日) 00:25:09
ソースを見てエロを感じるやつはたいしたもんだ。
>>575 ,576
ムカツク言い方しかできない奴だな
分からないなら書き込むんじゃねーよ
ボケ
あれをムカつくと感じる奴は、当たり前の社会常識をわきまえてないガキだけ
ガキにかぎらずそんな人間ばっかりの国もあるようだがね 火病と言うのでしたっけ
>575も>576も極めて常識的な回答だな。>574から考え付くほかの回答は 「お前にはできないからあきらめろ」くらいだろ。
582 :
デフォルトの名無しさん :2006/12/10(日) 15:58:51
>>573 できました☆
色々ありがとうございます^^
>>578 2chとはこういうとこだと言っておく(ぁ)
583 :
デフォルトの名無しさん :2006/12/10(日) 16:51:51
VB6で作ったプログラムをWindows Vista ロゴを取得可能なものに したいと思っています。 しかしWindows Vistaロゴの要件として最初に書かれてある条件で さっそくつまづいてしまいました。 VB6プログラムにマニフェストを埋め込むにはどうしたらいいのでしょうか。 ユーザー アカウント制御のガイドラインに従う この要件を満たすには、アプリケーションに付属するすべての実行可能ファイル (拡張子 .exe) に、その実行レベルを定義する次のようなマニフェストが埋め込ま れている必要があります。 <requestedExecutionLevel level="asInvoker|highestAvailable|requireAdministrator" uiAccess="true|false"/>
ResEditか何かで埋め込めないか?
てゆうかそもそもXPロゴすら取れないのではないか。
587 :
デフォルトの名無しさん :2006/12/12(火) 16:26:51
vb6上で、swfを再生させる方法教えてください。
588 :
デフォルトの名無しさん :2006/12/12(火) 16:57:34
vba で 変数名を name1 name2 name3 name4 とした場合、 for 文で name1〜name4 を初期化する方法を教えてください。
>>587 Shockwave Flash コンポーネントとかWebBrowserコントロール使うとか
>>587 swf再生のActiveXかWebBrowserを使う
>>588 出来ないよ。
コントロールやシート名みたいにコレクションに入ってる物なら可能だけど。
素直に配列を使いましょうね。
591 :
デフォルトの名無しさん :2006/12/12(火) 17:25:05
>>590 ありがとうございます。
flashみたいに使えればいいのになぁ。
俺の書き込みって誰にも見えないのか?!
>>588 技量が無いのでこんな方法しか思いつかんとです。
for i=1 to 4
if i=1 then name1=0
if i=2 then name2=0
if i=3 then name3=0
if i=4 then name4=0
next
>>588 こんな方法も
(脳内ソースだからBASICで動くかわからんけど
for i=0 to 0
name1=0
name2=0
name3=0
name4=0
next
画像を90度回転させるのにいいやり方ない? 反転表示は座標マイナスにすれば楽にできるけど、90度は座標いじっても無理だよね。 ループで全ピクセル分回して1ピクセルづつ描いてくみたいなダサいやり方しかないのかな? それだと微妙な角度で回転するのと同じ重さになっちゃうからやりたくない。 ループするやり方しかないならSetDIPixels使うつもりだけど。
598 :
デフォルトの名無しさん :2006/12/12(火) 21:01:47
Asc関数のAscってAsciiの略ですかね?
>>597 ちょっと呼んできてよ、来たら俺捕まえるからさ
>>598 American Standard Code for Information Interchange
の略です
602 :
デフォルトの名無しさん :2006/12/13(水) 18:11:40
現在、コピー、ペースト、貼り付けをコマンドボタンを使って 実現しようと思っていますが、コピー元のテキストボックスで選択された 文字範囲がコピーのコマンドボタンをクリックするとコマンドボタンにフォーカスが 移り、テキストボックスのフォーカスが消え選択範囲も消えてしまいます。 クリックしてもフォーカスがテキストボックスから移動しないようにする 事は可能でしょうか?
603 :
デフォルトの名無しさん :2006/12/13(水) 18:42:43
>>602 テキストボックスのHideSelectionプロパティをFalseにしろ。
簡単すぎる
現在、ファイル監視ソフトのようなものを作成しています。 通常のファイルに対するアクセス等での処理の部分は出来たのですが、 一部のファイルが最初読み込んで以降はキャッシュから読むようになってまして そういう場合も監視して同じ処理をを行いたいのですが、可能でしょうか? 環境はWinXPproでVB6.0SP5です。
どうして質問する人って重要な話は削るんだろうね
>>605 日本語でOK
・・・って言いたくなるくらい意味不明。
一部のファイルなの?
一部のソフトウェアで使用するファイルアクセス手段が、
初回読込以外はキャッシュから読む、ってのじゃなくて?
608 :
605 :2006/12/13(水) 20:45:00
書き方悪過ぎました。申し訳ないです。
監視したいファイルを登録しておいて、アクセス等があった際に
その時間等をログに保存するといった感じのソフトです。
そこで
>>607 さんがおっしゃっている、「一部のソフトウェアで使用する
ファイルアクセス手段が、 初回読込以外はキャッシュから読む」
タイプのファイルも監視対象として指定できるようにしたいと思っています。
先ほどの質問は、特定のファイルがキャッシュから読まれたというのを
判別するのは可能かどうか。というものでした。
609 :
602 :2006/12/13(水) 20:48:24
>>603 ありがとうございます!選択範囲がそのまま残るようになりました。
これで頑張ってみます。
で続きでもう一つ質問ですが、コマンドのコピーボタンを押すと
先程の方法でもフォーカスがコマンドボタンに移るのは変わらないと思いますが、
複数テキストボックスがあった場合、フォーカスが変わると
どのテキストボックスの選択範囲をコピーすれば良いのかわからなくなりますが
メニューエディターでコピー、ペースト、貼り付けを作成したのと同様に
コマンドボタンをクリックした場合でもフォーカスが変わらない方法は
あるのでしょうか?
メニューエディターの場合フォーカスが移らないためフォーカスで
でコピー内容のテキストがどのテキストボックスにあるか判定しています。
610 :
603 :2006/12/14(木) 07:30:58
>609 無理、ボタンを押すとフォーカスはボタンに移る。 どのテキストボックスからボタンに遷移したか 判断する方法は、チョッと考えればわかるだろう。
611 :
デフォルトの名無しさん :2006/12/14(木) 16:23:40
質問です 初期状態でImageComboに表示される画像・文字を設定するにはどうすればよいのですか。 お願いします。
ささやき いのり えいしょう ねんじろ
614 :
デフォルトの名無しさん :2006/12/14(木) 17:42:18
>>612 普通に、とはどういうことですか。
何もしなければ画像は無く、テキストはTextの値が表示されるだけです。
ドロップダウンメニューから選択しない限り画像は表示できないのでしょうか。
>>614 .ComboItems.Item(?).Selected =
ありがとうございます。 助かりました。
一度のFileOpen()で入力と出力同時に行うことは出来ないのですか?
むしろ、一度でやってくれ
その場合のOpenModeはどうなるのでしょう? 一度でやろうとすると、OpenMode.InputでもOpenMode.Outputでも開いたファイルの 読み取りか書き込みのどちらかの操作で「モードが違う」と怒られてしまいます・・・
全部ためせば?
全部試してきました・・・ Input,Output,Append,Binary,Randomと、ついでに OpenAccessのDefault,Read,Write,ReadWriteの全組み合わせで 読み込みのinput()と書き込みのWriteLine()をやってみましたが 同時に動くものはありませんでした・・・
623 :
はりー :2006/12/15(金) 00:36:16
ライフゲームのつくりかたをおしえてください>< 初心者なのに、ゲームつくるなんて出来ないです泣
方眼紙でやるのと同じですよ
ライフゲームって細胞が増殖するみたいな奴だっけ?
626 :
デフォルトの名無しさん :2006/12/15(金) 09:05:18
教えて下さい。 VBで50行200列のcsvファイルの読み込みをして、 1行1列目の数値と50行200列目の数値を取り出して計算したいのですが、 どうすればいいのでしょうか?
1行1列目の数値と50行200列目の数値を取り出すコードと 必要とする計算のコードを書けば良いだけだと思いますが。 その上で解らない部分があるから質問するってならまだしも 躓く以前、歩き出す以前に丸投げする気満々なのはいかがなものかと。 そういう奴はプログラムなんて組まない方がいいです。自分で組みたいなら 出来るところまでやって、壁に当たってから人を頼りなさい。
629 :
626 :2006/12/15(金) 11:43:53
>>628 レスありがとうございます。
自分が作っているものに組み込んでみたいと思います。
ソースまで書いていただき、どうもありがとうございました。
ショボ
ファイルの読み込み程度で組み込みの機能を使わないでCOMに頼るなんて・・・
632 :
デフォルトの名無しさん :2006/12/15(金) 12:56:47
フォームからクラスモジュールに配列データを受け渡す方法がわかりません。 たとえば麻雀ゲームの役判定における「それぞれの牌の数」や、 RPGのマップ操作における「マップのデータ」などを専用のクラスに受け渡したいのですが、 プロパティに構造体や配列を割り当てることはできないそうですので困っています。
>>631 隣の家にジェット機で行くって言うたぐいのネタだと思うが。
>>632 Publicなメソッドに使う構造体はCOMインタフェイス(?)として公開しなきゃいけないので、アクセス修飾をFriendにできないか?
それとVB6なら関数の戻り値に配列を使えるはずだぞ?
635 :
632 :2006/12/15(金) 14:50:57
>>634 レスありがとうございます。
参考にさせてもらいます。
636 :
632 :2006/12/15(金) 14:51:28
すいませんsage忘れました。
>>632 言ってる意味がよく分からんが、添え字なしで引数に書けばいいだけなのでは。
>>632 プロパティに構造体や配列 →構造体をクラス(データ受渡用)に書き換えるとか
プロパティに配列 →添字付きのプロパティにするとか、配列を含むクラス(データ受渡用)にするとか
それとも全部、データ受渡先クラスのプロパティとして実装してしまうとか
640 :
デフォルトの名無しさん :2006/12/16(土) 15:55:32
仕事でしおり付pdfファイルを作るプログラムが必要なんですけど、 何かいい方法ないでしょうか?あと、ファイル名の指定もウィンドウ入力から じゃなくしたいです。
>>640 どっからか「仕事でしおり付pdfファイルを作るプログラム」を拾ってくる/買ってくるか、
「仕事でしおり付pdfファイルを作るプログラム」を自分で作る。
あと、出来ればファイル名の指定もウィンドウ入力からじゃないプログラムがいいと思う。
がんばれ。
>>640 そういう ActiveX コントロールを買えばいい。
643 :
デフォルトの名無しさん :2006/12/19(火) 15:09:39
VB6.0で電卓作りたいんで分かる方作り方教えてください。
644 :
626 :2006/12/19(火) 15:18:28
628のソースを書いて実行したんですけど・・・ プロシージャの呼び出し、または引数が不正です。って 出てくるんですが、どうすればいいんですか?
>>643 歩き始める前に人を頼ることを考える奴はプログラミングなんてやらない方が良い。
質問するなら壁にぶち当たったり穴に落ちたりしてからにしろ。
>>645 アフォ?
穴に落ちないように、事前の策を用意するのが常識だろ。
穴に落ちてから策を考えるような愚図は一生地を這いずる負け犬。
>>643 VB6じゃなくてC#やVB.Netにしなさい
あのね、落ちても不利益のない穴は、経験という利益を与える存在だよ。 社会に出ればその意味がわかるようになるよ。
落ちても不利益のない穴なんて無い。
うぜえな お互いの穴でも掘りあってろ。
651 :
デフォルトの名無しさん :2006/12/19(火) 15:51:13
掘るより掘られるほうが好きだ。
652 :
デフォルトの名無しさん :2006/12/19(火) 16:11:16
音声を録音、再生するサンプルください・・・ ただ録音すればいいのではなくて、 録音した音声を自由にいじれるようなものです。 バッファを通してもらえばそれだけでいいです。 サンプルだけもらえればあとは自分で解釈します。 えっと要は変声機を作りたいのです。 しゃべったとたんに変声しなくても、 ファイルに保存できれば良いです。 ググっても上手く見つかりませんでした。 簡単でいいので宜しくお願いしますm(__)m というか、板違いですか?
ソース書くの面倒なんで、おまえらが書いて 無償で俺様に進呈しろってか? 板違い以前だろ。人として発言すべき言葉じゃない。
>>643 この板、初心者に滅法冷たいからな。
これじゃ初心者が育たなくて困るんだが。
どういう電卓か知らんが、Windows附属の電卓みたいなんでよければ、
・入力値を表示しとくTextBoxか何か置く。
・数字やら演算子やらのボタンを置く。
・演算子のキーを押したら入力値をどっかしらの変数に入れとく。
・次にまた何らかの値を入力する。
・演算子か=のキーを押したら、最初の値と入力値の間で演算し、結果を表示する。
演算が続くなら結果を変数に入れとく。
てな感じ。
用語の意味がわかんなかったらググれ。
655 :
デフォルトの名無しさん :2006/12/19(火) 16:39:35
>>653 あーーー!すみません!
自分で見返したらとんでもないことを書いていました!
えっと、バッファを通した音声の録音と再生が分からないので、
そこのやり方だけ簡単に教えていただければありがたいということです。
mciでは出来そうに無いので・・・APIと思ったのですが、上手く出来ませんでした。
656 :
デフォルトの名無しさん :2006/12/19(火) 16:43:43
mci以外のAPIが良くわかりませんでした
>>655 ちょっと前に探してAPI使ったやり方もDLLも探せばあったけど
同時にしなくていいならmciでもできるでしょ?
658 :
デフォルトの名無しさん :2006/12/19(火) 17:04:52
↑ という、糞の役にも立たないアドバイス?が一番ムカツク件について
659 :
デフォルトの名無しさん :2006/12/19(火) 17:10:11
>>657 mciは、保存するときに内容が変数に格納されることは
無いと思っていたのですが・・・
イメージ的にはこんな風にやりたいです↓
;flag=0は停止、flag=1は録音(再生)
do while flag=1 ;僕のイメージでは繰り返さなければ録音できないような気がします。その必要があるかは知りませんが・・・
(録音関数) buf ;録音
loop
buf=buf*〜 ;変声
;ほにゃらら
do while flag=1
(再生関数) buf
loop
おやおや、有益な情報を活かせないなんて可哀想
>>659 保存されたファイルがあるなら読めばいいのに。
662 :
デフォルトの名無しさん :2006/12/19(火) 17:18:47
VBAなんですが、EXCELで作成したCSVをEXCELの処理でサーバーにftp転送したいんですけど、なんか簡単な方法ありますかね?
ftp.exe
664 :
デフォルトの名無しさん :2006/12/19(火) 17:27:06
excel のVBAでftp.exe って出来るんですか?
できない理由がわからないんだが、なぜ?
666 :
デフォルトの名無しさん :2006/12/19(火) 17:33:04
667 :
デフォルトの名無しさん :2006/12/19(火) 17:33:05
669 :
デフォルトの名無しさん :2006/12/19(火) 17:40:03
>>665 自分で言うのもなんですが、へっぽこだからです。
コマンドボタン ぽちっと押したら ftpみたいなことがしたい・・・。
アフォかどうかは兎も角、665 は典型的という気がする。
>>669 それは可能だよ。
ただ、そのボタンのクリックイベントにftp転送のコードを書けばよいだけ。
一度書いてしまえばあとは「コマンドボタン ぽちっと押したら ftp」
>>669 だから、コマンドボタン押したときにftp.exeを起動すればいいじゃないか
VBAでもShellExecute使えるでしょうし ftp -s:もあるし
673 :
デフォルトの名無しさん :2006/12/19(火) 17:50:37
指定したフォルダ名が共有フォルダかどうかを調べるには なにを見ればいいのでしょう。 Folder オブジェクトのAttributes プロパティには何もなさそうですが。
「あほ言う奴があほ」って名言思い出したよ!
ftpを手軽に扱いたいならWinInet.DLL使えば良いんじゃないか? ftp.exeはコマンドテキストファイルとか面倒くさい
676 :
デフォルトの名無しさん :2006/12/19(火) 18:13:36
vbaで動くサンプルとかないですかね? wininet.dll はVBだけですよね?
677 :
デフォルトの名無しさん :2006/12/19(火) 18:20:22
>>676 サンプルはありません
検索しても見つからないでしょう
VBだけですから使えません
満足しましたか?
すみません、質問です。 VBのプログラムを実行させていたところ、「che」というタイトル名の同じようなウィンドウが開き、エラー停止してしまったのですが、 このような現象はどのようなエラーなのでしょうか? いくら調べてもこれだけは見つからず…。 「snd」というタイトルで出現する場合もあるようです。
681 :
679 :2006/12/19(火) 18:55:31
私も開発環境下では再現できなくて困ってます。 本社でソフトの開発、工場で実働、という形なのでどの部分でエラーが発生してるか 解析できないのです…。 ちなみにどのように使用しているかというと、測定用のプログラムで測定結果のファイルを作成し、 測定終了後に別の計算用のプログラムが入ってるパソコンへと通信しているようです。 ちなみに、問題があったファイル一式を手動で動作させた場合、問題なく動作しました。
地方人は案件の度に東京に行くのがしんどい
>>644 非常に申し訳ない。
ForReadingと書いているところを
1
に置き換えてください。
酔うてご迷惑おかけしますた。
683 :
626 :2006/12/19(火) 22:34:54
>>682 レスありがとうございます。
おぉ〜
動きました。
ありがとうございました^^
参照設定させたり、定数宣言させたりではなく マジックナンバー使わせるあたりが 変にカッコつけず初心者らしくて素敵です。
685 :
デフォルトの名無しさん :2006/12/20(水) 00:10:45
質問です。
VB6.0でShellExecuteを使ってアプリに関連付けされている
ファイルを開きたいのですが、今のところできていません。
ByVal lpszFile As String
に入る文字列を「ファイル名を指定して実行」でやるとファイルが開ける状態です。
http://support.microsoft.com/kb/170918/ja ↑ではできるとなっていますが、他のサイトでは
exeファイルしかできない、と書いてあるところがあります。
できるとばかり思っていましたが、できないのでしょうか?
686 :
685 :2006/12/20(水) 00:13:17
下から2行目、間違えました。 「VBではexeファイルしかできない」と書いてあるところがあります。 です。
どこだよ
ShellExecuteのあとですぐ終了してません? 関連付けの起動は非同期なので、若干待ち合わせしないと。
689 :
685 :2006/12/20(水) 00:30:42
ありがとうございます。 「すぐ終了」というのはアプリケーションを、ということですか?
条件はよく分りませんが、待ちを入れてうまく行けばそれが原因と。
691 :
685 :2006/12/20(水) 00:41:47
お、開きました。 その待ち合わせが原因かもしれません。 ありがとうございました。これから色々やってみます。
692 :
デフォルトの名無しさん :2006/12/20(水) 09:44:11
質問です。 VB6環境 XPにて PutIniを使ってiniへ書込みをしているのですが、オブジェクトとキーの変数の コードを簡単にしたいのですが、わかりません。 PutIni "外来担当表", "ADDText1", Combo1, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" PutIni "外来担当表", "ADDText2", Combo2, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" PutIni "外来担当表", "ADDText3", Combo3, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" PutIni "外来担当表", "ADDText4", Combo4, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" また、GetIniに関してもわからない Label1 = GetIni("外来担当表", "ADDText1", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") Label2 = GetIni("外来担当表", "ADDText2", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") Label3 = GetIni("外来担当表", "ADDText3", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") Label4 = GetIni("外来担当表", "ADDText4", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") ご教授おねがいします。
今日からVB6始めた小学生か。 もう冬休みに入ってるとしたら北海道や東北か?
694 :
デフォルトの名無しさん :2006/12/20(水) 10:03:19
>>693 北海道は25日頃から
内地のほうがはやいんじゃなかったっけ?
北海道は冬休みは1/18ごろまで
>>692 PutIni
っていうのは、きっとオマイの中で宣言している、そういう関数なんだろう。
引数がセクション、キー、値、INIへのフルパスの。
セクション、キーは別はそんな風に直書きでもいい気もするけど、嫌なら
「変数」じゃなくて、「定数」に汁。
const INI_PATH As String = _
"\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"
Call PutIni("外来担当表", "ADDText1", Combo1.Text, INI_PATH)
Label1.Caption = GetIni("外来担当表", "ADDText1", "", INI_PATH )
つーか、病院関係者なら金持ちだろうし、ソフト屋に発注して
よく見る共通関数だよな、GetIniとPutIniって。
>>697 初めて見たが。
普通直接API呼ぶだろ。
700 :
デフォルトの名無しさん :2006/12/20(水) 18:23:00
お教えください 今更ながら開発用端末をWin2kからWinXPにしたところ ファイル検索の文字列検索でbasとかfrmがヒットしなくなりました ソース内に例えば「外来担当表」と入っているプログラムを 探したいとか言うとき、XPではどうすればいいのでしょう? Win2kだとファイル検索の文字列でヒットしたのに・・・。。・゚・(ノД`)・゚・。
>>700 それはWindowsのスレ向けな質問ではなかろか。
検索のウインド
→「設定を変更する(G)」→「ファイルとフォルダの〜…(R)」→「上級者向け(D)〜…」
にして、旧来のアレ風にしてやってみてどーか。
702 :
デフォルトの名無しさん :2006/12/20(水) 19:17:15
Dir() とDir$()の違いはなんですか?
>>702 バリアントと文字列の違いわかりますか?
>>692 ,700
てめー。回答者にありがとうございますがねーじゃねぇかよ
705 :
デフォルトの名無しさん :2006/12/20(水) 19:30:42
>>703 引数の型が違うということですか?
戻り値の型が違うということですか?
VB6やVBAでは組み込み関数に "VBA.関数名"でアクセスできますが VBSの場合この"VBA"に相当する 組み込み関数群の親は何ですか? 具体的にはArrayを上のような形で 利用したいのですが
>>708 それってVBSでどんないいことがあるの?
> ○ 回答者の心得 > 三.回答する上で必須ではない情報をむやみに聞き返さない。
712 :
デフォルトの名無しさん :2006/12/21(木) 11:56:36
こんなんだからVB6使いはバカにされるんだなぁ・・・orz
ふーん、 .NETがあるのにね。
>>1 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
ミディンコな質問ですまない… CSVファイルの最終行の改行を削除したいんだがどうすればいいんだろうか? AAAA BBBB CCCC DDDD [EOF] を↓にしたい AAAA BBBB CCCC DDDD[EOF]
出力するときのやり方は知ってるんだが既存ファイルの操作ということで
SetEndOfFileでできるかもしれない 出来なければ (読み取り)→(サイズを制限して書き込み) しかない
APIかー
意外とめんどいもんですな。
VBらしくさくっといけるもんがあるのかと思ってた俺はさすがミディンコ
バイナリで読んで最後の改行記号ってとこまでは追及できたんだけど削除ができねぇ
VBのテキストファイル操作じゃファイルサイズが変わるようね編集ってできないぽ?
>>717 トンクス!
719 :
708 :2006/12/21(木) 14:14:43
>>714 OSやWSHのバージョンが違っても
親オブジェクトは一緒だろうと思って
省略してました、すみません
WindowsXP ServicePack1
WSH5.6 ServicePack無し
IEなどではなくwscript.exeでの実行です
やりたいことは"obj.Array"という形で
組み込み関数のArrayを使いたいだけです
試したことはVBA.Me,WSHの指定です
VBAはオブジェクトがありません、Me,WSHは
Arrayをサポートしてませんになり
Arrayの親オブジェクトが解らない状況なので
困ってます
知りたい理由は興味とでも思ってください
どのような環境で使うかが解っていれば
オブジェクトは一意でしょうから
どのように使うかは必要な情報では
無いでしょうし使い道は一つだけじゃないので
> どのように使うか まぁ、代用法でも良いから教えてくれというなら書くべきことだがな。 そうでなければ必要ないが、代用法を押しつけて自己満足したいだけの 自称上級者共は必要としてるかもw
>>719 VB6のVBAはモジュールなので、WSHでは直接見れないと思われ
必要な関数をクラスのメソッドとしてラップしたActiveXDLLを作るのが適当だと思う
>>720 そういうチンコが大きい発言はもっと大人の男の子になってから言おうね
723 :
722 :2006/12/21(木) 15:46:12
doubt!708=710=719=720
そんなことwshスレで聞け、と覗いてみたら
あっちでも、回答振り込め詐欺やってバレて、こっちへ来たか
>>1 に回答振り込め詐欺禁止とは書いてないもんな
こういうのは放っておこうね。┐(´ー`)┌
VB使いは全体が平均してバカなんじゃなくて 極端にバカというか痛い奴の割合が多い。 ちょっと上にも変なの湧いてるし。
>>721 >VB6のVBAはモジュールなので、WSHでは直接見れないと思われ
>>719 が言ってるのはVB6のVBAではなく、VBScriptのArray()のこと
だから、オブジェクトブラウザでMicrosoft VBScript Globalsを参照設定すれば
Library VBScript_Globalが現れて、
Array()がClass GlobalObjのメンバと分る。
ってことじゃないかな
OpenTextFileの第4引数で「TristateMixed」ってのが有るけど、「TristateUseDefault」と同じですか?
参照設定はしないで済むならしないほうがいいんだけどねぇ よくわからんけど、ASCIIかUnicodeかの違いじゃマイカ?? デフォルトは ASCIIで、ミックスというくらいだから、どっちでも いいよ? みたいな? もう、酔うた。
>>718 一旦別ファイル名で書き出してから、
元のファイルを削除し、先に書き出しておいたファイルを正しい名前に変えればいい。
734 :
708 :2006/12/22(金) 14:12:37
>>721 使用したいのはVB6のArrayではなく
VBSのArrayです
過去ログにあってもおかしくないと思ったんですが、見つからなかったので 質問です! VB6のコンボボックスで、「ファイル名を指定して実行」のコンボボックス みたいに、前方一致で補完できるようには出来ないのでしょうか。 spy++で見ると、クラスが違うので異なるコンポーネントなんだろうとは 分かるのですが。。。 WindowsAPIで作らなければならないでしょか。
738 :
デフォルトの名無しさん :2006/12/22(金) 18:38:02
CHANGEイベントでDIR関数使って、 見つかったファイルを全部コンボリストにADDして そのコンボをプルダウンさせるのかな?
739 :
735 :2006/12/22(金) 20:12:10
レス有難うございます。 なるほど、自分で実装するのですね。 ってか、コンボボックスというより、テキストボックスに プルダウンの入力補完が付くというイメージの方が近い んですかね。 やりたい事は、既にコンボボックスに登録されているリスト の中から、前方一致で合致するものを補完する機能です。 Officeのコンボボックス(RichEdit20W)とか、コンポーネントとして 切り出してくれれば良いのに。。。
741 :
735 :2006/12/22(金) 22:18:57
情報有難う御座います。 何が一番楽か、ちょっと模索してみたいと思います。
>>730 708じゃないけど、参照設定でMicrosoft VBScript Globalsが見つからないです。
環境は、WinodwsXP SP2、VB6.0 SP6。
XP用のWinodws Script 5.6もインストールしました。
後学のためにぜひ試してみたいので、どなたか教えてください。
>>741 一番楽なのは、そういう機能を持ったコントロールを購入する事だな。
>>744 その程度のコントロールなら簡単に作れるでしょw
っていうか、VBのコンボって最初から入力補完ついてると思うんだけど。
あれ結構鬱陶しいと思うんだけどね。
つくてみた。 Option Explicit Private WithEvents cmb As ComboBox Private WithEvents btn As CommandButton Private Sub cmb_GotFocus() SendKeys "%({DOWN})" End Sub Private Sub Form_Load() Dim i As Long Set cmb = Me.Controls.Add("VB.ComboBox", "cmb") Set btn = Me.Controls.Add("VB.CommandButton", "btn") With cmb .Move 0, 0, 3000 .Visible = True For i = 1 To 100 .AddItem "Item" & Format$(i, "00") Next End With With btn .Move 3100, 0, 1500, 1000 .Caption = "Place Hold" .Visible = True End With End Sub
うん、完全に勘違いしてると思う。
750 :
デフォルトの名無しさん :2006/12/24(日) 09:11:25
今日休みで暇なんでVBでもはじめよっかなって思うんですけど、 どれを買ったらいいのやら。 最新版はどれなのでしょうか。
最新版しか売ってないだろ
752 :
デフォルトの名無しさん :2006/12/24(日) 09:22:01
VB6.0というのを購入すればよいのでしょうか。
VB2005Expressをダウンロードしておけ。 VB6はMSDNサブスクリプションでないともう入手できないぞ。
754 :
デフォルトの名無しさん :2006/12/24(日) 11:02:05
>>753 ありがとうございます。
ダウンロードのページを今開いたところです。
これって無料なんですね?
VB6.0でシリアル通信をするプログラムを組んでいるんですが、 そこらに落ちてるシリアル通信サンプルプログラム(MsComm使用の)を使っても データの採り方というか表示のさせ方?がハイパーターミナルと違います。 ハイパーターミナルと同じような挙動をするサンプルプログラムってありませんか?
756 :
デフォルトの名無しさん :2006/12/24(日) 11:21:12
Visual Basicというもので初心者向きの講座で良いところがあれば教えていただけ ませんか?
ありませんかじゃなくて、自分で作れよ
ハイパーターミナルそのまま使えば作る必要もない
759 :
735 :2006/12/24(日) 12:52:32
色々意見有難う御座います。
>>745 さん
>っていうか、VBのコンボって最初から入力補完ついてると思うんだけど。
いやー、ついてないような。。。
>>746 さん
I って入力するとItem00 と補完して欲しいのです。
VCのComboBoxやDelphiのTComboBoxは標準でこのような
動作をするようです。
もうちょっと探してみます。
VB.NETならついてるんだがな
761 :
デフォルトの名無しさん :2006/12/24(日) 18:01:07
質問です。 ネットワーク上のフォルダにあるexeファイルのバージョンを取得したいので、 GetFileVersionInfosize GetFileVersionInfo VerQueryValue をやっていますが、 GetFileVersionInfosize の時点で0がかえってきてしまい、取得できません。 同じPC内では取得できました。 ネットワーク上のファイルだとダメ、ということはありますか? 駄目な場合、他の取得方法はありますか?
>>761 「ネットワーク上のフォルダにあるexe」をどういう形で参照してるのかも、
どんなコードでバージョンを取得してるのかも分からんのに、回答出来る筈がない。
763 :
761 :2006/12/24(日) 19:44:41
解決しました。 >762 無理して回答しなくても大丈夫です。 ありがとうございました。
764 :
デフォルトの名無しさん :2006/12/24(日) 21:23:37
>>753 このダウンロードって個人情報丸々入力しなきゃいけないんですね。
勤務先電話番号も入力必須項目になってるけど、なんか不安でダウンロードできないな。
別に問題ないかな?
766 :
デフォルトの名無しさん :2006/12/24(日) 21:34:25
店で買った場合は個人情報の入力なしで使えるってことなんでしょうか。 結局店で買ったものもユーザー登録が必須とかなら ダウンロードしたほうがいいしな。
>>766 お前が今すぐ死ねばおまえの個人情報の価値もなくなるよ
768 :
デフォルトの名無しさん :2006/12/24(日) 21:43:18
>>767 でも死んだらVBは使用できないんです。
769 :
デフォルトの名無しさん :2006/12/25(月) 10:03:42
>>742 は自己解決しました。
参照設定でvbscript.dllへの参照を追加すると、Microsoft VBScript Globalsが
参照できました。
しかし、こいつを実際に使ってみることができません。
VBScript_GlobalライブラリのGlobalObjクラスを使うと良さそうなのですが、
これをインスタンス化することができないのです。
New GlobalObj や CreateObject("VBScript_Global.GlobalObj") を試したけれど、だめでした。
どうすれば使うことができるのでしょうか?
770 :
デフォルトの名無しさん :2006/12/25(月) 12:23:21
JPEGの特定の場所の色情報を得たいと思っています。 例えばTop100 Width100 のJPEGをイメージかピクチャボックスに入れて、 Top30 Width70 の色情報を得るような事はできるでしょうか? Topとかではなくもっと精密な X座標 Y座標 とかあればいいのですが、 よくわからないのでとりあえずこのような説明にしてみました。
> Top100 Width100 どういう大きさなんだろう? Height100 Width100ならわかるんだが。
772 :
デフォルトの名無しさん :2006/12/25(月) 13:03:38
すいませんHeightの間違いです。 お恥ずかしい。
pointでいいんじゃない?
>>769 「代用法でも良いから教えてくれという」ということではないのですね?
みんな楽しそうだな・・・
776 :
769 :2006/12/25(月) 17:20:31
>>774 そうです。「へぇ」と言いたいために試していることなので、代用法は求めていないです。
Microsoft VBScript Globalsを使う方法、または
これが使えない理由(インスタンス化できない理由)が知りたいです。
インスタンス化できないクラスなんて、初めて見ました。
>>776 Microsoft VBScript Globalsを使う方法は
WSHのヘルプの
Windows Script Interfaces SDK
にあるようです
クリップボードについて聞きたいのですが、 クリップボード内のビットマップの情報見て、 そのある特定アドレスの内容を比較するプログラムを作りたいのですが、 どうすれば簡単に出来るのでしょうか? クリップボード内ビットマップのある座標の色を知りたいのです。(RGB) ビットマップのクリップボード開始アドレスの取得方法、 また、このアドレスは固定なのでしょうか? どなたかアドバイスをよろしくお願いします。
>>778 いっぱい勉強するといいよ。
そうすればそのくらい簡単に出来るようになる。
>>778 マジレスすると、ここは初心者用なので専門的なスレに行くと良い。
ここで聞いても誰もわからん。
splitで分割したものを、多次元配列(data(i, j))に格納したいのですが、どうすればいいのでしょうか。 ? = split(S, "#") data(0,0),data(0,1),data(0,2),...と切り分けられて入って欲しいのですが。
>>782 仕様上不可能です
というかループで代入し直せば良いだけじゃん
784 :
769 :2006/12/26(火) 12:51:53
>>777 ありがとうございます。
MSDNのWindows Script Interfaces SDKをエキサイトで翻訳して読みましたが、
私には難しすぎてわかりませんでした。
785 :
782 :2006/12/26(火) 13:42:07
>>783 ありがとうございます。
そうするしかないかなと思っていたのですが、もしかしたら何か方法があるかと思いました。
やっぱりループで入れる事にします。
>>784 翻訳された文章を読むのは、原文を読むより至難の業だぞ。
つーか、エンジニアならそれくらいの英語はできなきゃいかんだろ
788 :
769 :2006/12/26(火) 15:17:45
すみません。 「軽く翻訳してみた結果、自分の頭では理解するのが無理そうな内容だった。 今はあきらめようかと思ってる。」と言いたかったのです。 もちろん英語も苦手です。
つーか、WSHの日本語のヘルプがあるだろ
しかし、VB6の話題も減ったよなあ みんなVB.NETに移ったのかな? 俺はC#に移ったけど あなたの仕事ではC#とVB.netどっちが多い?
高校大学時VB6やってたが 現在業務では組み込み系でCやってる VSはもう自宅では触ってない・・・Spoke版買ったけど・・・ 触る暇が無い
で?
おらんところは、どっちかっつーとC#の案件がいまんところ多い。 C#の案件が8で、VB.NETの案件が6。 でも、これって上司がC#しかやったことないというのがそもそもの理由。
C#しか経験無い上司が現れる時代になったのか SE/PGを辞めて5年たつが、時代はそんなに変わっていたのか。
796 :
デフォルトの名無しさん :2006/12/29(金) 09:05:10
別に.netになって言語問わずだけど。 C#のほうが洗練されてるといえばされてるけど。VB.netでも十分綺麗なプログラムは出来る。
>>791 > 触る暇が無い
2ch の暇はあるのに? (w
>>796 A は B より洗練されてて、A も B も似たようなことができる。
普通 A を選ぶでしょ。
798 :
デフォルトの名無しさん :2006/12/29(金) 09:51:53
C#に将来性があればね。 VBは腐ってようが今までずっと続けたMSの実績はある。 C丼はその気構えがあるか・・・。
実績があるのは VB6 までの 古い VB だろ。 vb.net とは違うもんだよ。
スレ違い。>790-799 雑談スレにでも池。
ダイアログ(フォーム)をモーダルで開くActiveX(VB6)があるんだけど、 IE7だとモーダルにならなくない? メッセージループとかどーなってんのかな。
802 :
デフォルトの名無しさん :2007/01/03(水) 15:03:54
VB6のWebBrowserコントロールでYouTubeを見ようとしたら、スクリプトエラーが出て見られません。 IEや別のPCなら問題なく見られます。 どなたかご指導をお願いします。
804 :
デフォルトの名無しさん :2007/01/03(水) 17:25:04
Excel2000のマクロからVisio2003を呼び出すコードを書いて、 Excelシートのコマンドボタンを押すと、VISIOのある特定のファイルが開くようにしたいのですが、 うまく動きません。 Dim VisioApp As Visio.Application Set VisioApp = CreateObject("Visio.Application") Set VisioApp = GetObject(ファイルのパス, "Visio.Application") Visio自体は起動できるのですが、「ファイルのパス」で指定されたファイルが出てきません。 どうしたらうまくいくでしょうか。
絶対パス指定してる?
806 :
デフォルトの名無しさん :2007/01/03(水) 18:58:32
>>805 できません。
C\〜の絶対パスを入力しても
「オートメーションの操作中にファイル名またはクラス名を見つけられませんでした。」
というエラーメッセージが出てきます。
すまん、そもそも VBA だったな。 Dim VisioApp As Visio.Application Dim Document As Visio.Document Set VisioApp = New Visio.Application Set Document = VisioApp.Documents.Open(ファイル名[絶対パス]) ... Document.Close ではダメかな?
808 :
デフォルトの名無しさん :2007/01/04(木) 02:08:44
>>807 ありがとうございます!!
出来ました!!!
VB6で指定したフォルダ内(変数とうで持ってるとする)にある、 指定した拡張子(*.csvみたいな感じ)のファイル名を取得したいのですが・・・。 した事ある方、よろしくお願いします。。。
>>809 FindFirstFile と FindNextFile (共にAPI関数)
使い方はMSDNで調べてちょ。
Dir
812 :
デフォルトの名無しさん :2007/01/04(木) 17:15:57
初めてですみませんが、よく分からないので教えてください。 Dim kohi As Variant Dim aaa As Variant Dim bbb As Variant aaa = CLng((kohi - 241000) * 0.01) bbb = CLng((Val(kohi) - 241000) * 0.01) という式なのですが、CLNGする前は14044.5 になります。 CLngすると、 aaa = 14044 bbb = 14045 になります。 CLngは常に最も近い偶数に値を丸めるので、両方とも14044になると思ったのですが、 どのように違うのでしょうか。
>>812 再現できないのだが、VBのバージョン と kohi と VarType(kohi) の値をカキコしてくれないか?
ヒント つ二進数で少数表記。 ブイバーにはわからんかもね。
大きなお世話承知で言うけど、正直そういうレベルの人間が今あえてVB6使う理由がわからんよ
817 :
812 :2007/01/05(金) 09:10:16
>>813 VarType(kohi)=3でLONG型になっています。
宜しくお願いします
>>812 とりあえずVB6.0SP5ではそんな現象出なかった。
>>812 何がしたいのかさっぱりわからん。
誤差が出る理由について知りたいならPC内部の実数の表現形式とか勉強すりゃいいじゃん。
http://support.microsoft.com/kb/409744/ja それ以前にMSDNライブラリ見て演算結果や変換関数の結果の型がどうなるのか調べてみた?
っていうか、人に物を聞くなら疑問点を明確にしろよ。
なんだよそのコード。誰もエスパーじゃねえんだけどわかってる?
そんなコードの断片をコピペして、虫食い部分は透視しろとでも言うの?
はっきり言って馬鹿じゃねえの。
ランタイムってなんですか?
>>814 (浮動小数点)演算誤差って言えよw
「わからんかもね。」って、故意に解りづらく言ってるだけやん。
>>812 知っていて書き忘れただけかもしれないが、
> CLngは常に最も近い偶数に値を丸めるので
は間違い。偶数丸めが起きるのは小数値が0.5の場合のみ。他は四捨五入される。
つまり3.5は4に、4.5も4になる。ただし4.5000000001は5になる。
ValはDouble型の値を返すんで、演算誤差が発生する。
Debug.Print VarType(kohi)
Debug.Print VarType(Val(kohi))
Roundで丸めても見た目は変わらないが
Debug.Print (kohi - 241000) * 0.01
Debug.Print (Val(kohi) - 241000) * 0.01
Debug.Print Round((kohi - 241000) * 0.01, 1)
Debug.Print Round((Val(kohi) - 241000) * 0.01, 1)
CLngの結果は変わる
Debug.Print CLng(Round((kohi - 241000) * 0.01, 1))
Debug.Print CLng(Round((Val(kohi) - 241000) * 0.01, 1))
824 :
812 :2007/01/05(金) 12:36:16
重ね重ね申し訳ありません。m(__)m また、何回も質問して申し訳ありません。 VB5.0SP2で出ている現象です。 Dim Value As Variant Dim aaa As Variant Dim bbb As Variant Value = 50#のとき、(小数値が0.5のときです) aaa = CLng(Value * 0.01) bbb = CLng(Val(Value) * 0.01) の答えが aaa = 0 bbb = 1 になるのですが、Valueは両方ともVarient/Doubleになると思うのですが、 結果が違います。 どうしてなのでしょうか?
825 :
デフォルトの名無しさん :2007/01/05(金) 12:39:28
>>824 このクズやろう。
お前、みんなのレスを読み返せ。
826 :
デフォルトの名無しさん :2007/01/05(金) 12:39:50
そりゃClngやってりゃ整数になる罠 ClngじゃなくCdbl(だっけ?)でDoubleに型変換しないといけないんじゃないか? ついでにいうとVariantは最低限のとき使ったほうがいいんじゃないか?
827 :
812 :2007/01/05(金) 12:48:46
>>826 整数にしたいもので・・・
すみません。みなさんの機嫌を悪くさせているみたいなので、
以後かきこしません。
どうもすみませんでした
>>827 回答者様に感謝の言葉述べてから帰れよ。
>>812 まあ
>>819 のリンク先ぐらいせめて読んだ方がいいよ。
どうせまだ読んでやしないんだろ?
馬鹿じゃなければ、コンピュータが実数をどう扱うかのイメージがだいたいつかめれば
必要な結果を得るためにはどういう処理をしたらいいか自ずとわかるはず。
812は理科系の人間じゃないのかな。あるいはよほど三流処の出か。
実数演算をするときには実験の数値を扱うときのように(もちろん理由は全く違うけど)
有効数字(桁数)を意識しなきゃダメだ。
たとえば必要な精度が小数点以下第二位までと予めわかってるなら演算結果を変数に
しまう前にRoundで小数点以下第二位までに丸めなきゃ。
そうすりゃそのデータ型の扱う数値の範囲を超えない限り誤差はでないよ。
もちろんこれは厳密な言い方ではないけどね。
それから言うまでもないが特に理由もないのにVariant型の変数なんて使わないことだね。
830 :
デフォルトの名無しさん :2007/01/05(金) 13:21:28
>>819 =
>>829 有効桁数〜?!
データ型の扱う数値の範囲を超えない限り誤差はでない??!!
いいから、馬鹿はくるんじゃねぇよ。
>>824 > VB5.0SP2で出ている現象です。
って・・・
それ、最新のSPじゃないだろ。
SPは最新をあてないとそもそも問題外。
話にならん。
>>831 これは最新のSPで変更あった個所なのか?
話にならないとはむしろ
>>831 自身のことなのでありました
チャンチャン♪
>>834 古いソースを扱うときは当時の環境でいじるが?
一人だけバージョンやSPの違う言語を使うわけにいかないからな
で、824はSPが問題なのか?
相変わらず莫迦ばっか。
変数を定義すると、そのアドレスが毎回変わってしまうのですが、 何とかして固定アドレスに値を格納する方法は無いでしょうか? apiにもそれらしいものが見つからなくて・・
なんのために?
○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。 三.回答する上で必須ではない情報をむやみに聞き返さない。
>>837 今ちょっと環境が違うから分からんけど、APIにあった様な・・・
でも、あくまでも「アプリから見て」同じアドレスってだけだけど。
842 :
デフォルトの名無しさん :2007/01/07(日) 16:37:18
>>840 規制中で携帯からなのですが、時間がかかっても知りたいので、
気が付きましたら教えて下さい。よろしくお願いします。
843 :
デフォルトの名無しさん :2007/01/07(日) 19:33:52
始めて書き込みいたします。 win98で開発したVB6のソースコードを最近買ったXPにコピーしてコンパイル したところRIGHT関数 TIME関数でコンパイルエラーが出現します。 他の関数でもエラーが出現する可能性はあると思います。 最新のServicePack,Runtimeをインストールしてみても現象は変わりません。 原因について色々ぐぐって調べてみたのですがどうしても力及ばずわかりません。 ご教授のほど、お願いいたします。 おやじ。
>>843 必要なActiveXが登録されていなかったり、バージョンが違っていたり、
参照設定がおかしくなってるところはないか?
この辺がおかしくなってると関係ないところでエラーが出たりする。
>>843 XPではVB6.0はMSのサポート対象外。
つまり、正常に動作しない可能性がありますよ。
MSは知りませんよ。
ということ。
>>845 うそこくでねぇ。Vistaでも保障対象だ。ただしActiveXは保障の対象外のものもある。
同時代のNT4とWin98の間でもこういう問題はよくあって、ActiveXの参照設定によくなかされた。
開発環境は保障外じゃなかった?
実行は出来るだろうけど
>>843 Strings.Rightのように修飾を広げて(?)みて
IDEのサポート、
>>6 では3月になってるが、今みたら4月になってるんだな
.Netに移れってのはごもっともだが。
でもXPではVB6.0はMSのサポート対象外? 実行は出来るだろうけど
MSをわかってないね。
メインのサポートはもう終了していて、延長サポート、つまり
100%MSの不具合という場合のみ有償でサポートしますよという事。
Vistaについても、XPで現在動いているものをVistaでも動くように
努力すると、MSはいっている。
XPで動かないものは知りません。
ちなみに、
>>843 の問題は、よくわからん。
エラーの内容をキボンヌ。
妄想は机のはしっこにでも書いておけ
恥の上塗りでテカテカだぜ。
VBは2000迄だよ。 世に出た時期を見れば明らか。 VB発売よりXP発売の方が後だからね。 自分より後に発売されたOS上での動作なんて保障出来る筈がない。 それがMSクォリティ。
はいはい妄想妄想
保障
>>855 頑張って、Visual Basic 6.0で探してください。
860 :
858 :2007/01/07(日) 21:28:03
失礼
>>856 みたいな人っていうのはたぶん「保障」って言葉の意味を
よく考えてみたことがないんだろうね。
一言で言えばプログラムの動作の「保障」をするのはそのプログラマの仕事であってMSの
仕事ではないよ。当たり前のことだし、当たり前過ぎて言葉遊びに過ぎないと思われそうだがそうではない。
逃げやがった
862 :
おやじ :2007/01/07(日) 21:30:08
皆様、色々レスのほう、サンクスでつ。 If Right(App.Path, 1) = "\" Then Debug.Print Time ソースはこんな感じです。 "コンパイルエラー プロジェクトorライブラリがみつかりません。" とメッセージボックスが表示されます。 しかし、痛いなあ・・・。ソースがもったいないし。
OS再インストールからやりなおせ!
好意的に受け取っても余命一年ちょっとってことで。 .NETは簡単にEXEからソースに戻るから嫌なんだよな。 難読程度しかできないし。
>>862 俺のとこもXPだけど、そのソース動くから、運が悪かったと諦めて、
OSから再インスコ。
>>861 まぁ、ああいうヤシもおもしろいから必要(´・ω・`)
XP上でVMWare+Win2000だろ常識的に考えて・・・
VB.Netだろ常識的に考えて・・・
>>862 なんだ、ググると簡単にそれらしい現象を説明してあるページがみつかるじゃん。
どうせろくにググってもないんだろ?
アホらし。
結論からいうと、たぶんプロジェクトの参照設定の中に不正なものがあるんだよ。
たとえばエクセルをインストールしてもないのにエクセルのオブジェクトライブラリを
参照しているとかさ。
98から持ってきたプロジェクトじゃなくて普通に新規でフォームから作ったアプリは動きますか?
動くようなら
>>844 の指摘が妥当だと思いますよ。
参照設定で無効になってるところはないか、同じ名前のものに2重にチェックが入ってるものはないかなど
調べてみてください。
うちの環境ではXPでVB6の開発も運用もやっていてMSの保障は知らないけど問題なく動いています。
> MSの保障 【保障】(名) 〔補説〕 「保」は小城、「障」はとりでの意 [1] 責任をもって、一定の地位や状態を守ること。 ・航路の安全を―する [2] ささえ防ぐこと。また、そのもの。 【保証】(名) [1] まちがいなく大丈夫であるとうけあうこと。 ・利益を―する ・―の限りではない [ 大辞林 提供:三省堂 ]
> .NETは簡単にEXEからソースに戻るから嫌なんだよな。 > 難読程度しかできないし。 未だに対処方法知らない人も居るんだね。とは言えスレ違いか。
>>871 よくある間違いのひとつだね。
仕事でこの手の間違いをすると、素人ぽく思われる。
内臓と内蔵の間違いとか、めちゃくちゃよく出てくる。
デスクトップをディスクトップとか。
>>872 対処できるの?知らなかった。
ぜひ教えてください。
難読の事を対処方法って言ってるんだろ? まぬけだね
876 :
おやじ :2007/01/07(日) 23:28:06
>>844 >>868 >>869 おそらくは、ご指摘の通りだと思います。暫くVBを離れてたので
その事を失念してあわててしまいました。多分ランタイムのバージョンのせいかな。
明日、帰宅してからやってみますわ。
話変わりますがVBは便利だね。今日動作しなかったアプリは海外にも
ばら撒いているので慌てました。
VBは永久保障して欲しいものだね。
Exeからソースに戻るって何? 逆コンパイラがあるの?
>>875 そう思いたければそう思ってればいいさ。
別に君が勘違いしてようと俺は困らない。
>>877 コメント文以外は変数名までかなりの形で元に戻る
勘違い?プッ 愉快なまぬけだな
都市伝説レベルの話だから対処法が出せないんだよ。 まぬけな彼も被害者。
有名どころの.NETの逆コンパイラは普通に.NETのアーキテクチャ使ってるだけ アセンブリにMSILにコンパイルされていれば逆コンパイルが効く 逆に言えばアセンブリに無い(ローダが動かないからだめかも)、 またはMSILでないなら逆コンパイルできないよ
>>882 そんなことよりVB.NETやC#で逆コンパイル効かなくするには?
ngenはネイティブイメージのキャッシュを作るだけだろ
一人のまぬけが暴れてるのか、まぬけが感染しているのかだけでも教えて!
あー、VBプログラマで一生喰っていきてー 何年も前に不可能になったが。
890 :
デフォルトの名無しさん :2007/01/08(月) 02:14:40
VBでヤフーオークション出品管理ソフト作ってるんだけど、 ヤフーオークションのカテゴリ(本とかバイクとか電動工具とか)を自動で全て取得する良い方法ない?
> 自動で全て取得する そーゆープログラムかけばええやんw
892 :
デフォルトの名無しさん :2007/01/08(月) 03:45:05
うひょ
>>887 860のような真性が一人で大暴れしてる。
894 :
デフォルトの名無しさん :2007/01/11(木) 02:22:56
VBで 品番号 品名 番号 担当者 金額 ---------------------------------- 1 あああ 0001 あああ 200 0002 いいい 300 0003 ううう 400 ---------------------------------- 合計 900 の品名の下の行を表示させなくするにはどう記述したらいいんでしょうか? どなたか教えてください;;
また出た。 頼む>超能力者
897 :
デフォルトの名無しさん :2007/01/11(木) 11:18:16
>>895 の内容に笑ってしまった・・・
もうお約束の言葉過ぎて
>>894 君以外の誰かに直接頼むのが手っ取り早いよ。
>>894 品名は「列」なのに、「下の行」って何だ?
番号0001,0002,003とも品名は「あああ」なんだが 最初の行にだけ表示したいという話かな
901 :
どうかご慈悲を :2007/01/11(木) 18:29:07
dσv/dx +4(kσvtanφ+Cw)/D=γω^2*(Ro+x) dσv/d(x−L) +2(Kσvtanα+2Cw)/{D-2(x−L)tanα}=γω^2*(Ro+x) 解析的には解けないのでルンゲクッタ法で解きます。 初期条件は(1)がx=0、σv=σ₀、γ=γ₀ (2)のσv、γはx=Lにおける(1)の解 これのEXCEL VBAプログラムをお願いします。 正直時間がないのでどうか今週中にお願いできませんでしょうか。自分ではにっちもさっちも行きません。 この先に進めないと本当に危ないんです。
902 :
デフォルトの名無しさん :2007/01/11(木) 18:35:16
何考えてんだよ。と釣られた。
誰か教えて下さい。 VB6 SP6で開発してます。 エラーメッセージで「It is error not anticipated. subscript out of range」という メッセージが表示されます。これってどんな時に出るのでしょうか? やっていることはactive reportのPrinter.PrintDialogの命令をしている所で発生しています。 これだけではわかりにくいとは思いますが、お願いします。
904 :
デフォルトの名無しさん :2007/01/12(金) 01:34:06
>>900 その通りです…
わかりにくくてすみません;;
>>901 スレ違い。EXCEL VBAスレへ行け。
ま、ルンゲクッタ法程度の実装が出来なきゃ、
この先、クソの役にもたちゃしないけどな。
・・・と釣られてみるwww
>>903 グレープシティに訊け
>>904 元のデータがどう格納されていて、
それをどういう方法で取得していて、
結果的にどうしたいのかを筋道立てて説明しなよ。
・・・そうすればロジック完成するだろ?
906 :
デフォルトの名無しさん :2007/01/13(土) 23:43:07
質問させてください、VB6.0です。 リッチテキストボックスでBMP形式の画像を読み込ませたいのですが、 画像が張り付いた後に、ペイントソフトが起動してしまいます。 ペイントが起動しないようにするにはどうしたらよいでしょうか? RichTextBox1.OLEObjects.Add , , App.Path & "\" + "test.bmp"
dim ie as object
set ie = createobject("InternetExplorer.Application")
ie.visible = true
ie.navigate "
http://www.yahoo.co.jp "
というふうにIEでURLを開くときにIEのプロキシ設定を無視したいのですが
設定方法がわかりません。
ie.putProperty
で設定できるかも、とは思うのですが設定値がなかなかわかりません。
もしご存知の方がおられましたら教えていただけないでしょうか?
よろしくお願いします。
IEの設定を無視したければ createobject("InternetExplorer.Application") を使わなければいいんじゃん 普通にWin32API使ってアクセスしなよ
やり方知らないんだったら黙ってれば? Win32API 使えばできるなんていう当たり前のことを言われてもウザイだけだし。
>>909 お前も回答は知らないから書けないんだな。
912 :
デフォルトの名無しさん :2007/01/15(月) 01:44:03
質問です VBで batファイルを作成 それを実行 bat処理が終了したらプログラムに戻る というプログラムは作ることが出来ますか?
914 :
912 :2007/01/15(月) 02:26:42
>>913 すみません
shell関数で実行するところまでは出来たのですが
batファイルを実行すると次に進んでしまいます
どうすればいいのでしょうか?
超初心者向けに行った方がよいですか?
>>914 APIのShellExecuteとWaitForSingleObject辺りでググって見て下さい。
916 :
914 :2007/01/15(月) 03:14:38
>>915 どうもありがとうございます。
やってみます。
ちょっと教えてください
Set objHttp = New XMLHTTP30
Set objStream = New Stream
strServer = "
http:// " & strHost & "/"
strURL = strServer & "test/offlaw.cgi/" & strBoardName & "/" & strKey & "/?raw=0.0&sid=" & strSessionID
With objHttp
.Open "GET", strURL, False
.SetRequestHeader "Host", strHost
.SetRequestHeader "User-Agent", "Monazilla/1.00"
.SetRequestHeader "referer", strServer & strBoardName
.SetRequestHeader "Accept-Encoding", "gzip"
.SetRequestHeader "Connection", "close"
.Send
With objStream
.Open
.Type = adTypeBinary
.Write objHttp.ResponseBody
.SaveToFile strDatSavePath, adSaveCreateOverWrite
.Close
End With
.Abort
End With
2chブラウザみたいなものを作っていて●ログインして過去ログを取得する部分で行き詰まってるのですが
ttp://kage.monazilla.org/system_DOLIB100.html を参考に上のコードを実行すると"-ERR もう つかえません"というファイルが作成されます
このエラーでググってみるとFireWall関連が原因とあるのでWinのFWとNISを無効にしてみるも結果は同じ
strURLは
http:// pc8.2ch.net/test/offlaw.cgi/tech/1152667953/?raw=のような感じで
strSessionIDの値はログインの個人情報なのでさすがに晒せませんがこの値を使って書き込むと
名前欄に●を書けるので値に間違いは無いです
WinXP SP2/VB6 SP6/IE6の環境 ですが何処をどう直せば良いのでしょうか?
918 :
デフォルトの名無しさん :2007/01/16(火) 11:00:22
VBとエクセルVBAって似てますか? それともまったく別物ですか?
そっくり。というか、文法は同じ。
920 :
デフォルトの名無しさん :2007/01/16(火) 23:10:39
>>917 そのエラーってコードで回避しようがあるのだろうか?
ファイアーウオールではじかれてるって事は
そのUrlに対してネットワークルートとか権限の問題は確保できてる?
例えばログファイル、格納ディレクトリに対してのアクセス権とか
直接URL叩いてログ置き場ってみれますか?
921 :
920 :2007/01/16(火) 23:14:48
すいませんリンクされてたURLを見ずに回答してしまいました 接続先からの閲覧に必要な要求を満たせる情報が手元にあるなら アクセス権は関係ないですね。すいませn
922 :
デフォルトの名無しさん :2007/01/17(水) 01:34:01
VB6.0でプログラムを書き始めています。 それで、リストボックスのstyleを1にしてチェックボックスも表示するようにしたのですが、 どのようにアクセスするのかがわかりません。 条件に応じてチェックを入れたいのですが、ご存じの方、アドバイスをお願いします。
923 :
デフォルトの名無しさん :2007/01/17(水) 02:06:52
>>922 ごめんなさい。
単に、Selectedで出来ました。てっきり選択されているかを見るものだと思っていました。
924 :
デフォルトの名無しさん :2007/01/18(木) 18:07:47
教えてください。 VB6.0でinetコントロールを使ってFTPにファイルをアップするプログラムなのですが、 開発環境ではきちんとアップするのに、実行形式にするとアップしません。 何が原因なのでしょうか? 開発環境と実行環境で挙動が違うことって初めてなので戸惑っています。
どうせカレントディレクトリかなんかだろ
あるあるやな。 VBの保存フォルダも変わってそう。
928 :
デフォルトの名無しさん :2007/01/19(金) 11:05:08
VB6のMscommコントロールを使うときに設定する通信速度の種類を調べたら 110 300 600 1200 2400 9600 (既定値) 14400 19200 28800 38400 56000 128000 256000 とあったのですが、4800は使えないのですか? 教えてください。
929 :
デフォルトの名無しさん :2007/01/19(金) 11:57:45
a = "9.0" b = trim(a) とやると、bは "9" になってしまうのですが、 これを回避する方法はないでしょうか?
aとbの型は何よ?
931 :
デフォルトの名無しさん :2007/01/19(金) 12:43:19
string です
932 :
デフォルトの名無しさん :2007/01/19(金) 12:44:27
と思ったら、singleにしてました。 それが原因ですね。
だね。
934 :
デフォルトの名無しさん :2007/01/19(金) 16:24:14
Visual Basicで出力結果をExcelで表示させるプログラムを教えて下さい。
935 :
デフォルトの名無しさん :2007/01/19(金) 16:38:52
CreateObject とか GetObjectのヘルプにサンプルある。
>>924 「開発環境と実行環境で挙動が違う」のなんて普通だが。
ちゃんと考えて環境構築しないと。
937 :
デフォルトの名無しさん :2007/01/19(金) 17:00:26
>>934 CSV形式で出力してファイル名.xlsでいいじゃないか
本当エクセルにカキコみたいならぐぐれば沢山出てくる
938 :
デフォルトの名無しさん :2007/01/19(金) 18:41:10
CommonDialog[開く]で2点質問です。 その1 私の調べた限りではできなかったのですが CommonDialogではフォルダの指定はできないのでしょうか? ひとつのボタンをクリックして、 フォルダもファイルも両方指定できるようにしたいです。 フォルダ指定のできるプログラムも見つけたのですが、 それだと今度はファイルが指定できないし・・・です。 その2 CommonDialogでショートカットファイルを指定すると ショートカットのリンク先を取得してしまうのですが、 ショートカットファイル自体を取得することは可能ですか? またその方法がわかりましたら教えてください。
939 :
938 :2007/01/19(金) 18:48:52
ぎゃーはずかしー その2はフラグで解決しました。 きちんとヘルプ読まないといけませんね・・・
ローカルパスを指定して、そのパスが ネットワーク上で共有になっているかを調べることはできますか? またネットワーク上でのパスを取得することはできますか?
>>938 その1
質問の意味が分からんが、
フォルダは指定出来るだろ。
>>938 コモンダイアログをhookすれば可能かもしれないけどSHBrowseFolderの方が一般的なUIだとおもう
第一ファイルかフォルダのどちらかを選択すること自体、おかしい話に聞こえる
XPでVisual Basic 6.0を使用しています。 OpenOffice.org Baseでつくったodbファイルに接続をしたいのですが Public cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\DOKOMODO\DOKOMODO.odb" cn.Open のcn.openのところで「実行時エラー'-2147467259' (80004005) データベースの形式'C:\DOKOMODO\DOKOMODO.odb'を認識できません。」と出てしまいます。 Providerが違うのかな。と思っているのですが何を入れればいいのかわかりません。 どなたかご教授お願いします。
ここで、こういう時に使えるマル秘テクを伝授しよう。 1.デスクトップを右クリックして新規作成→テキストファイル。 2.ファイル名をa.udlにかえる(拡張子が重要)。 3.アイコンがエクセルシートとパソコンのような奴になるので、そいつをダブルクリック。 GUIでぐいぐいと「ADO接続文字列」を作る事ができる。設定が出来上がったら保存し、a.udlをUNICODEを読めるテキストエディタ(Windows2000以上のメモ帳など)で開けばばっちり接続文字列ができあがっているってスンポーだ。
うちでは右クリックメニューの新規作成にMicrosoft データリンク(udl)があるけど
946 :
943 :2007/01/20(土) 17:08:34
>>944 ありがとうございます!!解決しました!!
こんなテクしらなかったです!!
947 :
943 :2007/01/20(土) 17:40:47
たびたびすみません。 cn.openでは落ちなくなったのですが このオブジェクトを使用して cn.execute を行うと 「実行時エラー 2147217900 (80040e14) コマンド処理中に一つ以上のエラーが発生しました。」 と出てしまいます。 何が原因なのでしょうか? ちなみに接続文字列は Provider=ADsDSOObject;Encrypt Password=False;Integrated Security=SSPI;Data Source=DOKOMODO.odb;Location=C:\DOKOMODO;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648 です。
>>708 JScriptなら
this.escape()
で行けるのにね
VBScriptで
Me.Escape()
が駄目ってことは、VBScriptの仕様でんな。
ま、代用法は有るかも知れんが、代用法は要らんちゅうことだし。
VB6.0 SP4環境でのコンパイルについての質問です。 コンパイルが正常終了した際のログを取得したいのですが、 (タイムスタンプ、プロジェクト名、DLL名、EXE名、正常終了した旨等) ソースには手を加えずに設定だけで出力する方法はありませんでしょうか? どなたかご教授願います。
ご教示お願いします。っていわないと教えてあげなーい。
コマンドラインの出力をリダイレクトすれば
>949です 951さん、アドバイス有難うございます。 早速、コマンドラインから以下のコマンドを試してみました。 vb6.exe△/make△project1.vbp△>△comp.log 結果ログファイルは作成されましたが、ファイルの中身は空でした。 makeコマンドのオプションで出力させる方法が無いかと調べてみましたが、 見付からず仕舞いです。 ご存知の方おられましたらご教示お願いします。
>>952 画面に出てるなら2>などで取れるんじゃない?
>>953 だね。
空っぽって事は、StdErr に出してるんでしょう。
955 :
デフォルトの名無しさん :2007/01/22(月) 20:29:38
質問させてください。 テキストボックスにフランス語の入出力をさせたいんですが うまくいきません。フォントを times new roman に変更して 文字コード表からéとかàなどをコピペして入力しようと したんですが、?と表示されます。どうすればよいでしょうか。
957 :
955 :2007/01/22(月) 20:47:28
お金がなくて買えないんです。なにか良い方法を教えてください。
>>957 ダウンロードする環境もないの?
VB付き雑誌を買う金も無いの?
VB6でもそれらの入出力は作ればできるけど標準のテキストボックスは使えない
労力のわりにあわないし説明する気にもなれない
>>957 アカデミックバージョン(?)なら無料でダウンロード出来るんだけど?
960 :
デフォルトの名無しさん :2007/01/22(月) 22:36:48
お知恵を貸してください。VB6.0です。 本来はVBアプリからエクセルシートを読み出すように作成しているのですが VBAで代替して分かりやすく動作を説明します。 機能概要ですが、エクセル作成ファイルにシートA、シートBがあり 両方のシートに存在するデータはレジストリコマンド(.regファイルのコマンド)行です。 そこで関数Sub WriteRegMarge()を実行すると シートA、シートBのレジストリデータをそれぞれ拾い出してA&Bのマージregファイルが 作成されるといったものです。 この処理でシートA、シートBのレジストリキー、項目はシート内にそれぞれきちんと昇順にソートが かかっているのですが、マージの処理が終わると、やはり昇順ソートを意識してないため シートAのデータ書き出し後の末尾からシートBのデータが列挙されてしまいます。 さらにシートA、シートBとも同一のレジストリキー配置が存在するため、同一の レジストリキーも重複書き出しされます。Accessを介してSQLなどでのソートも 考えましたが、そのままシンプルにExcelObject、またはVBA上のみで適度なソートを 実現する方法はないでしょうか?できれば完全に近い昇順配置を望んでいます。 データの例 [HKEY_LOCAL_MACHINE\SOFTWARE\Video\Common\A] "A"=dword:00000002 [HKEY_LOCAL_MACHINE\SOFTWARE\Video\Common\Dec] "I"=dword:00000002
>>960 半分も読まなかったから見当外れだったらごめん。
1.自分でソートアルゴリズムを書く。数10件程度ならばバブルソートで十分。
2.キーを文字列化出来るならSortedプロパティをオンにしたListBoxにぶち込む。
よーわからん日本語だなしかし。 あんた、丁寧なことば使いするのがマナーだと思ってるのかもしれないが、 そんなことより「読む人間の立場に立って文章を推敲する」ことの方が余程重要だ思うよ。 その点あんたは落第もいいところだ。 あんたのその文章、エスパーでも匙投げると思うわ
>>959 アカデミックは_w
ExpressEditionだな
964 :
デフォルトの名無しさん :2007/01/23(火) 06:29:48
VBScriptってVBのフォームを表示できたりしないの?
965 :
デフォルトの名無しさん :2007/01/23(火) 07:05:43
VBSから直接フォームの呼び出しって聞いた事ないなぁ ただDLL化した画面をクリエイトオブジェクトして使えば 画面呼び出しは可能かと
>>964 ActiveXとして作ればVBSから操作出来るよ。
967 :
デフォルトの名無しさん :2007/01/23(火) 15:36:41
>>965 既存のライブラリじゃちょっと無理かもってことなんですね。
VBScript的にはIEをインターフェイスにするのが正しいってことなの?
>>955 リッチエディトやIEなんかだとできる気がする。
自作ソフトを作り始めたんですが、画面の端に近づけたら吸着してくれるようにしたいのですが どの辺をどういじればいいのでしょうか?
会社で開発しているプログラムのサンプル画面を WEB で公開できないかと
>>490 さんと同じような事で、悩んでたのですが
さっき、上司から
「VB6.0 で組んだ普通の EXE ファイルが、インストール無しで、動くレンタルサーバって無いの」
って、言われてしまいました。
そんなレンタルサーバって、あるのでしょうか?
また、「.NET Framework対応」の「Windows レンタルサーバサービス」なら
VB6.0 は無理でも VB.NET の EXE ファイルは、動くのでしょうか?
ご存知の方、居ませんか?よろしく お願いします。
水野女史を思い出したw
>>970 Windows ServerならVB6.0もVB.NETも必要なライブラリさえ入れれば動くだろ
Click OnceはサーバーOSに依存しない
975 :
970 :2007/01/24(水) 11:50:48
メールで質問してみましたが、ASP.NET に対応している「VB.NET」なら OK で Windows レンタルサーバ では、Visual Basic 6.0 は動かないみたいですねぇ。 残念です。
>>975 つーか、「サンプル画面の公開」なんてJPGでいいだろ。
>>970 はWebでWindowsアプリを公開すればブラウザ上でWindowsアプリが
動くと思ってるんだよ。
クライアントに.NET Frameworkがあれば.NETアプリなら一応動く
979 :
デフォルトの名無しさん :2007/01/24(水) 18:37:12
あるSubプロシージャから実行を開始するにはどうすればいいですか? Main以外のところからインタプリタを起動させたいです。
Mainの最初で呼べ
>>980 デバッグ実行で一行ずつ動かして試しながら覚えたいんですが・・・・
982 :
デフォルトの名無しさん :2007/01/24(水) 19:09:44
変数mojiへ代入できる文字列は "aaa"と"bbb"だけにしたい。ほかの文字列を代入しようとするとエラーをだしたい。この場合、どのようなコードを書けばいいでしょうか?
984 :
981 :2007/01/24(水) 20:24:37
F8で一発でした
986 :
970 :2007/01/25(木) 11:34:31
>>976 >>977 しゃ〜ないやん、客や上司に言われたら、それを実現する方法を
探さなきゃいけないんだから、「jpg で、良いでしょ?」なんて
言えないよ(^^;;
言えないお前が悪い
988 :
970 :2007/01/25(木) 12:54:58
じゃあ何か?サラリーマンなら上司・客が舐めろといったら咥えるのか?
992 :
970 :2007/01/25(木) 13:14:55
>>990 駄目なら、どうして駄目なのかパソコンを魔法の箱だと思ってる
客や上司に説明して理解してもらわないと駄目なのよ。
駄目な理由を調べるのが、一番大変なんだよ。
「駄目」「無理」じゃ納得しないから・・・。
993 :
970 :2007/01/25(木) 13:16:48
>>991 プログラマーなんて、使い捨ての奴隷じゃん。
俺は奴隷じゃないからちゃんと説明するね
995 :
970 :2007/01/25(木) 13:26:17
>>994 理由を説明できずに駄目とか無理とか言ったら技術が無いのかって
思われて仕事が無くなっちゃうでしょう。
技術が無いのが、バレないように必死に理由を探すのよ〜。
一生探してろw
おい、ウジ虫ども。次スレ立てろや。
梅
1000
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。