1 :
デフォルトの名無しさん :
01/11/28 13:49
2 :
デフォルトの名無しさん :01/11/28 15:36
VB
マンセー
「フックする」とかって意味わかんないけど VBマンセー
vbaで自己相関、相互相関の作り方おしえて。 ただし、規格化しないで、同じのをとると1になるのを。 今こまっています
解決しました。
7 :
デフォルトの名無しさん :01/11/28 20:35
VB6SP5でディストリビューションウィザードで作ったプロジェクトを 他のマシンにインストールして実行すると 実行時に「DLL 卍??? が読み込めません」と出ます。 どうも「Set WrkODBC = CreateWorkspace("", "admin", "", dbUseODBC)」の ところでひっかかてるみたいだからDAO関係だと思いますがDAO3.6.dllも セットアップされているし・・・どなたか教えてください。
解決してません6番はにせものです お願いします
相互相関って Sub A B End Sub Sub B A End Sub 見たいなやつのこと?
解決しました。
>>5 読むほうがこまってます。
日本語歴が短いのはわかりますが、日本人に通じる日本語でお願いします。
12 :
前スレ955 :01/11/28 22:01
前スレ
>>957 さんへ
レスありがとうございます。
ご指摘のとおり直してみたのですが、やはり上手くいきません。
すみません、ネタじゃなくて結構真剣に困ってます…
リッチテキスト内の文字列の検索・置換を行うにはどう直せばで良いでしょうか?
アドバイスお願いいたします。
'置換ボタンの処理
Private Sub cmdChange_Click()
If rtbFind.Text = "" Then
'何もせずに終了
Else
rtbText.Span rtbFind.Text
rtbText.SelRTF = rtbChange.TextRTF
rtbText.Span ""
End If
End Sub
'検索ボタンの処理
Private Sub cmdFind_Click()
If rtbFind.Text = "" Then
'何もせずに終了
Else
rtbText.Find rtbFind.Text
rtbText.UpTo rtbFind.Text
End If
End Sub
Findメソッドとかのヘルプみてみようよ。 使用例なんてのまであるんだよ? それと検索したらさ、それだけではだめじゃん? 見つけた位置にキャレットもっていくとか 選択するとか、どうしたいかは貴方次第なのよ~ で、こんなんでどう?(手抜き警報発令中) Private Sub cmdFind_Click() Dim x& x = rtbText.Find(rtbFind.Text) If x <> -1 Then rtbText.SelStart = x rtbText.SelLength = Len(rtbFind.Text) rtbText.SetFocus 'HideSelection=Falseなら不要かな End If End Sub Private Sub cmdChange_Click() Dim x& x = rtbText.Find(rtbFind.Text) If x <> -1 Then rtbText.SelStart = x rtbText.SelLength = Len(rtbFind.Text) rtbText.SelText = rtbChange.Text End If End Sub
>>7 他のマシンにODBCのドライバが入っていないとか、、、
>>13 ありがとうございます。無事動きました。
2個目以降の単語も検索できるように改造してみます。
VB始めて間もないですが、難しいです本当…
>>15 2個目の検索の時は、Findの第二引数に注意してね。
開始位置ってあるけど、VB標準の“文字数”で記載するとハマるよ。
ShiftJISでの文字数を入れなきゃいけない。
rtb.Find("hoge", LenB(StrConv(Left$(rtb.Text,rtb.SelStart),vbFromUnicode)+1)
みたいな感じ。(このコード間違ってるかも。確認してないので。)
18 :
デフォルトの名無しさん :01/11/29 11:04
質問でっす VBからPingをうつにはどうしたらいいでしょうか? 目的は、送信なし状態が2分続くと接続が切れるモデムなので、 1分おきぐらいにPingをうちたいのです。。。
>>18 system("ping ....");
>>18 winsockとかでping打つの面倒だから、
こんな感じにしたらどうでしょう。
'-------------------------
dblRet = Shell("CMD.EXE /C ping pc.2ch.net", vbHide)
'-------------------------
ありがとうございまっす♪ 単純にMS-DOSから '------------------------- dblRet = Shell("command.com /k ping 12.23.13.123", vbHide) '------------------------- とやって解決しました。
23 :
デフォルトの名無しさん :01/11/29 18:11
再度質問が有ります。 WINDOWS2000の環境で使用しているときに、 下記動作を行うと、テキストボックスのValidate処理が起きません どうしてでしょうか テキストボックスにて入力後(フォーカスは、テキストボックスのまま)マウスで、 タブ(SSTab)をクリックするとテキストボックスのValidate処理が発生しません。 環境 NT4.0 SP6、VB6.0SP3にてコンパイル 2000SP2 VB6.0 SP5 の環境にて実行 NT4.0 SP6、VB6.0SP3だと、テキストボックスのValidateイベントが発生します。
25 :
デフォルトの名無しさん :01/11/29 20:12
申し訳ないのですが 教えてほしいことがあるのですが a = 99999999999 Mod 7 とやったときに”オーバーフローしました”というエラーメッセージ が帰ってきてしまうのですが何か回避方はありませんか? よろしくお願いします。
a = 99999999999 Mod 7 (藁 「僕は困っています。どうすればいいでしょう?」 と言っているようなもの。条件をきちんと示しなさい。 質問する前に勉強するか、死ぬかしてください。
>>25 a = 99999999999 Mod 7 と打ったときに、
99999999999 の 右に # って出るだろ?
つまり、Double なわけ。Double は Mod 使えないよ。
無理やり Variant に型変換されるよ。
たまにはヘルプ見ようね。
VB入門約5ヶ月の初心者です。 使ってるのはVB6.0です。SP5ってヤツを雑誌付録CDから入れました。 Winのクリップボード内のデータが貼り付けに使われた事を 知るための良い方法はないでしょうか? SetClipboardViewerってAPIで クリップボードにデータが入ったコトは通知されるのですが。。。 必死で探しても、「貼り付け」された事を知る方法は見当たりません。 目的はリストに用意したテキストを 自アプリではないエディタに連続してペーストする事です。 「Ctrl+V」や「右クリック→貼り付け」の操作のたびに クリップボードのデータを次のデータに入れ替えてやりたいのです。 良い方法を御存知の方、どうかお助けください。
31 :
デフォルトの名無しさん :01/11/30 09:48
キーボードのカンマが押された事を取得したいんですが、 カンマのキーコード定数は無いみたいなんです。 キーコードって自分で作れますか? をたすけを・・・。
>>31 デフォルトの名無しさん wrote:
> キーボードのカンマが押された事を取得したいんですが、
> カンマのキーコード定数は無いみたいなんです。
はつみみです。
すいません。解決しました。ASCⅡコードだったのですね・・・。 ごめんなさい。 でも、日下部とからめてしやわせです。 友達に自慢します。
テンキーのカンマは VK_SEPARATOR (&H6C) キーボードのカンマは VK_OEM_COMMA (&HBC)
>>33 31 wrote:
> すいません。解決しました。ASCⅡコードだったのですね・・・。
文字化けしてます。
>日下部 私からは文字化けして見えないので、OKです。問題無しです。 ご指摘ありがとう。
機種依存文字は使うなゴルァってことで
VBで SouceSafe を使おうと思うのですが、 エンタープライズエディションのVisualStudio6.0だけで用意する ものはよいのでしょうか? サーバのOSは指定(NT4.0 Server/2000Server)があるのでしょうか?
>>36 >36 31 wrote:
> 私からは文字化けして見えないので、
そんなことは問題になっていません。
>>37 デフォルトの名無しさん wrote:
>
>>35 > MacでもⅡは、文字化けするのですか?
Macなるかは知りません。
おはようございます。 今日もまたドキュソな質問をさせてください。 Mo = CInt(Mid(Module1.C_Date, 5, 2)) ←この計算ではエラーになるんです。 えっと、CIntの計算をしているのに Mid関数での計算をしているからである って言うのは分かっているのですがどのように修正したらいいか分かりません。 申し訳ありませんが教えてください。
>日下部 私の中では問題だったので、OKです。問題なしです。 ご指摘ありがとう。
>>43 31 wrote:
> 私の中では問題だったので、
そんなことはどうでもいいことです。
>日下部 先生、もうこれぐらいで勘弁してください。 私にも仕事があります。
もし出来たら本当に教えてもらいたいのですが。。。。 くだらない質問かも知れませんが本当に教えてください。
>>45 31 wrote:
> 先生、もうこれぐらいで勘弁してください。
何の話でしょうか?
で、文字化けしてましたよね?
>日下部 先生、そろそろみんなが自作自演であることに気づいちゃいます。 もう、あきらめましょう。オチはつきませんよ。潮時です。 それより、初心者厨房さんの質問に答えてあげてください。 彼はきっと先生の答えを待っていますよ。
>>42 エラーがコンパイルエラーなのか、
実行時エラーなのかがわからない
具体的に
Module1,C_Dateに入ってくる値が判らないと何とも答えようがない
本気で答えてもらいたいのはわかるが、
とりあえず、答えてもらうなりの説明が必要だと思われ
>>42 A=Mid(Module1.C_Date, 5, 2)
B = CInt(A)
どこでエラーになるか考えよう。
If Module1.Form5_CSV_Load = 0 Then da = Split(Date, "/") L_DATE = da(0) & da(1) & da(2) Module1.Shain_Clear Label15.Caption = Module1.Shain_Code Text1.Enabled = False Module1.C_Date = L_DATE Module1.Ki = da(0) - 2001 + 30 Ye = da(0) ってなるそうです。 要するに、Mo = CInt(Mid(Module1.C_Date, 5, 2))の Module1.C_Date に入る値はシステムデータの事らしいです。
>>50 恐らく、僕が引っかかっているのは、CIntでは整数型の返り値、
Midでは文字型の返り値って言うところでエラーが出ているのではと
思っています。でも、どのようにしてこの問題を解決したらいいのか
分からないのです。
手を煩わして本当に申し訳ありませんがよろしくお願いいたします。
>>51 >>52 とりあえず、デバッグで調べてModule1に何が入ってるかを書け
単純に MID をかける文字の開始位置が悪いと思われ
Midの第一引数は文字列型だが、考えられるのは Module1.C_Dateが数値型だからとか値が入ってないとか そういうことだと思う。 原因はおそらくこの2行。 da = Split(Date, "/") L_DATE = da(0) & da(1) & da(2) システム日付を文字列に変換するなら、 Format(Date,"yyyymmdd")とか使ったほうが確実だよ。 あと「らしい」と書いてるってことは別の人に聞かれてるのかね? 本人に自分で聞くように言ってやんなさい。
56 :
デフォルトの名無しさん :01/11/30 11:50
禁則処理のサンプルありませんかー?
MDIフォーム でアクティブ子フォームの切り替え(Ctrl+Tab)を 抑止したいのですができません。 MDIフォームにはKey_Downイベントもないし サブクラス化してトラップしようとしてもなぜかWM_KEYDOWNが 取れません どうしたらいいですか???
>>48 31 wrote:
> 先生、そろそろみんなが自作自演であることに気づいちゃいます。
はつみみです。
59 :
デフォルトの名無しさん :01/11/30 12:18
>>56 APIのDrawTextを使えば勝手にやってくれますが
それじゃ駄目ですか?
>>59 DrawTextは禁則処理してくれるんですね。
今やろうとしてるのはPowerBuilderのデータウィンドウ内のカラムで
やりたいので、できればシンプルなアルゴリズムがあれば
まねしたいな、と思いまして。
PowerBuilderのサンプルなんてないと思ったのでVBスレで
聞いてみました。
>日下部 先生、文字化けの話から逸れましたが? それはもういいんですか? ふふふ。
>>61 31 wrote:
> 先生、文字化けの話から逸れましたが?
初耳です。
>>52 たぶん、Module1.C_Dateの中身が空なんだろう。
CInt("") を実行したような状態になってるんじゃない?
CInt(Val("")) ならエラーにならないけど、どっちみち
値が入ってないからプログラム総体としてはエラーな気が。
Moの値が0になっても構わないなら、
Mo = CInt(Val(Mid(Module1.C_Date, 5, 2)) )
とすれば当面エラーは出ないけど、逆にバグ混入させる気がするね。
>>55 の言うとおり、da = Split(Date, "/")を止めてFormat使った
方がいい。そもそもDateがyyyy/mm/dd形式で返すっていう保証は無いし。
>>60 PowerBuilderは使ったことが無いので判らないですが、
基本的には、行頭の文字をチェックしてその文字が禁則文字なら前の行に移す
(もしくは前の行の行末文字をもってくる)といった処理を繰り返すしかな
いと思います。
>>55 遅レスですみません。
Module1の中身は何も入ってませんでした。。(汗)
とりあえず、今まで教えてもらった事を頑張ってやってみます。
ありがとうございます。
>>64 どうもです。
やってみます。バグが恐いですけど。
なんだ、ここでもNGワード設定の対象にしなきゃ...
>Kusakabe Youichiさん ワラタ。 ASCII→ASCⅡ
>>67 俺も NGワードの設定がしたいよ・・・(´Д`)
真面目にゾヌの導入検討しようかな・・・。
>>29 です。
>>30 さんに、初心者と名乗るようなヤツはダメ、手前で調べろボケ
というようなリンクを示されたので、かなりへこんでいます。
でも、どうしても自力では解決できません。ここ2ヶ月ずーっと悩んでます。
誰か少しでもヒントを下さい。
>>69 タダで安らぎが手に入るんだもん、是非導入すべき(藁
つーことで作者さんに感謝(ここは見てないだろうが)。
>>71 というわけで導入してみた。いや、いいなこれ。
まだ全然使いこなせてないけどとりあえずNGワードを設定したら幸せになれたよ(´ー`)ノ
あと、俺にゾヌ導入のきっかけを与えてくれた先生に感謝するよ。ちょっとだけ(藁
>>70 VBの話でなくていいなら、制限付きで出来ます。
SetClipboardData でデータをクリップボードに置くとき、
データのハンドルに NULL を指定します。
そーすると、他のアプリケーションがクリップボードからデータを
読み出そうとしたとき、WM_RENDERFORMAT メッセージが届きます。
このメッセージが届いたら、クリップボードに SetClipboardData でデータを置きます。
制限付きとは、次のようなことです。
WM_RENDERFORMAT は、他のアプリケーションが
クリップボードからデータを取り出すと発生します。
それは、貼り付けのときとは限りません。
ただクリップボードの中身を確認するためだけかもしれないし、
例えばクリップボードビューアが内容を表示するために
読み出す場合もあります。区別は出来ません。
あまり使えない方法ですが、他の方法は知りません。
・・・こんなので良い?
>>73 様
まだ良く理解できてませんが、参考にさせていただきます。
Win32APIで可能なのかな???
いえ、ヒントはすでにいただきましたから、後は自分で調べて試して戦います。
とにかく頑張ってみます。ありがとうございました。
75 :
デフォルトの名無しさん :01/11/30 23:11
フォームをロードしたときにMP3の音楽を 演奏する方法を教えてください
フォームの Load イベントに、 MP3の音楽を演奏するプログラムを書きます。
すいません、PGモドキのオイラには全然解決出来ない事態に出くわしました。 ご存知の方がいらしたら、どうか教えてください。 VB6(SP5)でACCESS97にDataEnvironmentで接続するソフトをつくり、デイストリビューター でキャビファイルにして、稼働環境にインストールすることにしました。 キャビファイル作りは問題が無かったのに、インストール中にエラーが発生しました。 ログを見ると C:\WINDOWS\SYSTEM\msado25.tlb' 中に DllRegisterServer() のエントリポイントが見つかりません。 とのことです。 無視してインストールを続行し、出来たEXEを動かすと、 実行時エラー3706 ADOCE could not find the specified provider. MSのHPでエラー情報を見てみましたが該当するものはありませんでした。 ソフトそのものは2年近く稼動しているもので、問題はないはずです。 ディストリビューターにかけたときに問題が発生したと思うのですが、 思い当たる方はいらっしゃいますでしょうか? 何卒よろしくお願いします。
>>78 参照設定見直してみるとか
よくわからんがSP5はADO2.5か?
>>79 早速ありがとうございます。
参照を見直しましたらADOは2.5でした。
おれも経験あるんよ。ソレ。ADO2.0やったけど。 ADO2.6以上のあったら参照設定をそれに戻してインストーラ ー作りなおしてみれ。これで直ったら同じ原因かも。 間違ってたらゴメソ。
>>81 ありがとうございます。早速やってみます。
このご恩は一生忘れません!
とりあえず開発するときはADO何やったんか?開発時と同じヴァ ージョンのADOに参照設定戻してVBP保存してEXE作ってイン ストーラー作れば直ると思うが。 暇だから詳細書くとさ、SP4のマシンで開発(ADO2.5)で 開発しててEXE(①)作って、一度SP3のマシンにソース持って って保存して、そのソースをSP4のマシンに戻して①のEXEでイ ンストーラー作ったらさぁ、参照設定がSP3だからか知らんけどA DO2.0になっててさ。でもEXEは2.5でコンパイルしてるや ん?多分そんな原因かも。 ※ナゼ暇かというと午前0時にクライアントが日付またぐ処理やる か監視するまで帰れないんだよよよい (ToT これも違ったらゴメソ
84 :
デフォルトの名無しさん :01/12/01 00:04
>>25 aをLongゃCurrencyなどの桁数の多い型で宣言するとよい。
「7」はInteger型と解釈されているので、「7&」などと表記してVBにLong型と解釈させるとよい。
>>29 ヘルプで「Clipboard オブジェクト」を調べるとよい。
85 :
デフォルトの名無しさん :01/12/01 00:14
どなたかVBで標準DLL作る方法知ってる方います?
>>85 標準EXEでつくって拡張子を.dllに変える。
>>85 VBでつくろうとするのが間違い。
おとなしくVC++でつくれ。
88 :
デフォルトの名無しさん :01/12/01 00:16
>>85 86はウソ。
VBで標準DLLは作れない。
ActiveXDLLで我慢してください。
まずはCのパーザを書いて以下略
90 :
デフォルトの名無しさん :01/12/01 00:17
>>90 おいおい、ネタsageしたやつに礼を言うもんじゃないぞ。
92 :
デフォルトの名無しさん :01/12/01 00:19
>>91 ほんとはC++で作ったんですけどねえ。やっぱり無理かあ。ちぇ。
>>83 もう一度参照設定を確認してみました。
MS DataBinding Collection VB6.0
MS DataEnvironment Instance 1.0
MS DataFormatting Object Library 6.0
ここら辺が全部(SP4)になってました。
SP5は開発後に(今年になって)ダウンロードしてます。
開発時の環境は今確認できませんが、ご指摘が「図星」だったかもしれません。
どうもありがとうございました。
>>93 直るといいね。ガンバレ(・∀・!
んじゃ。
>>29 正直、その実装にどのような意味があるのかわからない。
俺だったら、必要なデータをテキストファイルに出力して、
それをエディタで読み込むが・・・。
ペーストとペーストの間に何か手入力したりするの?
やりたい事を実現する方法は、他にあったりしない?
それが仕様なら仕方無いけどね(^^;
96 :
デフォルトの名無しさん :01/12/01 03:21
すみません、 a(0) a(1) a(2) ・ ・ ・ みたいな感じで配列の要素をa(0)から最後の要素まで1行ずつ ファイルに書き出していくにはどうすれば宜しいでしょうか?
Dim a(100) as integer for(0..100)a(i)=a(i)+1; File open処理 #2 ’テキトー for i =0 to 99 print a(i) & vbCrlf ’vbCrLFがポイント next close #1
>>96 Dim a(100) as String '文字列型じゃないと駄目よん
.....
Open "hoge.txt" for output as #1
Print #1, Join(a,vbCrLf)
Close #1
…多分真似しない方が良いと思われ。
99 :
デフォルトの名無しさん :01/12/01 11:13
CSVファイルのデータを2次元配列に格納することはできないんでしょうか??
>>99 デフォルトの名無しさん wrote:
> CSVファイルのデータを2次元配列に格納することはできないんでしょうか??
できますよ。
>100 ということにしたいのですね。
>>99 データの形式が分からないけど、
テキストファイルとして1行ずつ読み込んで、
一時格納用配列にSplitで入れて、
それから目的の配列に入れたら?
泥臭い?
CSVを個々の変数に展開する場合 ・Input ・Line Input後、自分でバラす どっちが早いんでしょ?
Inputで出来るならそっちの方が楽なので稼働日は「早く」なるけど、 LineInputじゃなくて全体(あるいはいくつかに分けて)を 一気に読みこんでバラした方が動作は「速い」かな。(作り方にもよるけど) LineInputよりDB経由の方が速かったりもするよ。
レスありがよやんす。 >LineInputじゃなくて全体(あるいはいくつかに分けて)を >一気に読みこんでバラした方が動作は「速い」かな。(作り方にもよるけど) あー、そうですね。 チョト面倒臭いけど。 >LineInputよりDB経由の方が速かったりもするよ。 これどーゆー意味ですか? 最終的にはバラした後DBに登録するのが目的なんですが・
>106 だいたいのDBはCSVを直に取り込んだりリンクしたりする機能があるから そっち使った方が早い場合もあるって事だと思う。 細かい入力チェックがやりにくくなるけどな。
コマンドボタンを押すと効果音(.wav)が出るようにするには どうすればよいのでしょうか。 あちこちのHPや本を調べて試してみましたが、どうしても上手くいきません。 ご存知の方がいらっしゃいましたら教えてやってください。
>>108 Private Sub Command1_Click
PlaySound "hoge.wav", 0&, SND_ASYNC
End Sub
110 :
デフォルトの名無しさん :01/12/02 18:11
>>100-102 ありがとうございます。格納することはできたみたいです。
ただ、行数が未知のCSVファイル(Exel)のデータを
二次元配列に格納するには、どのようにすればよいでしょうか?
↓みたいにやっても上手くいかないみたいなんで…
For i = 0 To UBound(Book1.csv)
For j = 0 To 2
Line Input #1, vntBook1(i)(j)
Next
Next
間違えた… For i = 0 To UBound(Book1.csv) For j = 0 To 2 Input #1, vntBook1(i, j) Next Next です。
スタックでプッシュとポップの分岐のプログラムってのをやってるんですが良くわかりません。 ちなみにそれは、適当な数字をA列に積み上げ、途中で数字をポップしてC列に積んでいくというものなんです。 スタックは5回で良いのですが。
>>110-111 Open "Hoge.csv" For Input as #1
Do Until EOF(1)
Input #1, vntBook(i,0), vntBook(i,1)
i = i + 1
Loop
Close #1
UBoundの引数は配列変数ね。
>>110 ,111
俺の場合は、1行ずつ読み込んでから、","を
分解してそれを一旦dim buff as Stringに保存して、
あとから、一気に書き込むというやり方、(独学だけど)
それに君のそのソース、CSVのカンマ区切り文字が勝手に配列に入ってくるものと誤解してない?
For i = 0 To UBound(Book1.csv)
は、最後の行まで読み込むというのは分かるけど、
For j = 0 To 2
で、列のそれぞれの要素を読み込んでいないだろ。
>>112 PUSHと、POPって要するに、配列の移動でしょ?(あんましらん)
DIM A(10) as integer
DIM B(10) as integer
Static ai,bi as integer 'もしくはPublicでSUBの外に置く
PUSH 処理で
ai=ai+1
A(ai)=K
POP 処理で Bに積み上げ、Aは一つ省くので
bi=bi+1
B(bi)=A(ai)
ai=ai-1
タブン、君の場合、A,B,Cのスタックを積み上げている位置を
DIMとかで宣言して、位置を記憶してないかと思う。
Static及び、SUBの外側で、Public宣言するとよろしい。
>110 最初に改行コードの数(=行数)を数えてから読み込むとか。 BinaryでOpenしてから数えればン万行でも瞬時に数えられるよ。
すみません。書き方が悪かった様なので。 「データの格納と取り出しの分岐のプログラム」てのをやってまして、その前に 「inputbox関数を用いてデータをA列の1行目から5つ格納する。」 For num = 1 To 5 myval = InputBox("データを入力してください。") Cells(num, 1) = myval Next num と言うのと、 「A列の1番下の行(5行目)のデータから1つずつ取り出してC列の1行目から順に移動する」 For num = 1 To 5 Cells(num, 3) = Cells(6 - num, 1) Cells(6 - num, 1) = "" Next num と言うのをやったので、その延長のプログラミングと思われるのです。 まず、yourval = InputBox("データ格納の場合は1、データ取り出しの場合は2を入力してください。") を出して、1か2を打ち、1の場合はmyvalでPUSHする数字を打つんです。 んで、PUSHはA列、POPした物ははC列に置くと言うのを5回やるのですが・・・。 難しいっす。
>>116 ちょっと見たかんじでは、配列の使い方おかしくない?
宣言は
Dim Cells(3,5)
こうしたら?君の場合おそらく
Dim Cells(5,3)
としてる。
Dim Cells(行、列)
と考えたら分かりやすいかと思うが、
For num = 1 To 5
Cells(num, 3) = Cells(6 - num, 1)
Cells(6 - num, 1) = ""
Next num
だと、
num=1
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、5行目の1列目を代入
num=2
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、4行目の1列目を代入
num=3
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、3行目の1列目を代入
num=4
Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、2行目の1列目を代入
となっている、配列がおかしい。
ちょい訂正 num=1 Cells(num, 3) = Cells(6 - num, 1) 、1行目の3列目に、5行目の1列目を代入 num=2 Cells(num, 3) = Cells(6 - num, 1) 、2行目の3列目に、4行目の1列目を代入 num=3 Cells(num, 3) = Cells(6 - num, 1) 、3行目の3列目に、3行目の1列目を代入 num=4 Cells(num, 3) = Cells(6 - num, 1) 、4行目の3列目に、2行目の1列目を代入
すまん、配列はこれでもいいか。? 受け取った数字を判定して、PUSHかPOPするとしたら。 yourval = InputBox("データ格納の場合は1、データ取り出しの場合は2を入力してください。") 受け取った文字を if yourval="1" then 処理 elseif yourval="2" then 処理 end if とすればいいだけじゃないの?
120 :
デフォルトの名無しさん :01/12/03 09:38
初心者です。お願いします。 jpgの画像をbmpに変換させたいのですが、 どうすればいいのでしょうか? やさしく解説していただければと思います。 検索したのですが、よくわからなくて・・・
121 :
デフォルトの名無しさん :01/12/03 10:46
>>120 LoadPictureとSavePictureではいかんの?使い方はMSDN参照。
仕事ばっかりで疲れたー。 3徹中です。目閉じたら寝ちゃいます。 クリスマスイヴあたりは ロマンチックな神戸行って ルミナリエとか行きたいなぁ
>>123 寂しいプログラマの夢じゃねーの?
疲れてるんだろ。寝かせておいてやろうぜ。
イイ夢見ろよ……。
121さん ありがとうございます。調べてみます。
API関数を利用してモニタの電源を切る方法を調べておりますが、 見つからずに困っております。 御存知でしたら教えて頂けないでしょうか。
>>126 SetMonitorPowerState()かな?
詳しくはMSDN参照。
SetMonitorPowerState()というのはAPI関数の事なのでしょうか? 済みません、素人なので意味が分かってません。 また、MSDNで参照してみましたが、SetMonitorは「使用中のモニタタ イプを設定する」となっておりました。 見ているところが根本的に違っているのでしょうか?
129 :
デフォルトの名無しさん :01/12/03 16:56
>>128 モニタの電源を切るのはOS側がACPIを管理してやってるっぽいので
ソフト側からは無理なのではないかな、と。うろ覚えですが。
あと、127はネタです。sageてるし。
そんなAPIあったら使ってみたい。
>>128 モニタの電源コードにスイッチつけて、
シリアルでもパラレルでもいいからスイッチを操作する。
>>130 いっそ仕様を拡張してモニタの電源 "も" 切るようにしたらどうだろう。
どこぞからのコピペ >画面の設定でモニタの能力を超える解像度設定を行えば、真っ黒になりますが
Putting Your Monitor in Power Saver Mode To turn off the monitor: SendMessage(AnyForm.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2&) Standby monitor: SendMessage(AnyForm.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 1&) To turn on the monitor: SendMessage(AnyForm.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1&) Where Const WM_SYSCOMMAND = &H112 Const SC_MONITORPOWER= &HF170
137 :
デフォルトの名無しさん :01/12/03 17:45
ADOにてレコードセットを作成し1件ずつ表示しています。 取ってくるデータが以下のようにあったとします。 AA BB CC DD カレントがDDの時にMoveNextすると、EOFがTrueになりますが CCからMoveNextして、DDを表示した時点でEOFをTrueにしたいのですが 方法が分かりません。そもそも無理なのでしょうか?
やっと見つけたっぽい
ttp://member.nifty.ne.jp/my2project/vb/souko.txt ================================================================================
モニタの電源を切る(モニタ省電力に対応した環境の場合のみ)
================================================================================
---------以下フォームモジュールへ記述
Option Explicit
Private Sub Form_Load()
Timer1.Interval = 3000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = False
Call Y_PowerOffMonitor(Me.hWnd)
End Sub
---------以下標準モジュールへ記述
Option Explicit
'ウインドウにメッセージを送る
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_SYSCOMMAND = &H112&
Public Const SC_MONITORPOWER = &HF170&
Public Sub Y_PowerOffMonitor(hWnd As Long)
'************************************************************
'機能 : モニターの電源を切る
'************************************************************
Dim sw As Long
' sw = 1 '省電力モード
sw = 2 '電源を切る
Call SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal sw)
End Sub
139 :
デフォルトの名無しさん :01/12/03 17:54
>>137 その処理の必要性について詳細をキボンヌ。
どういうことを実現したいの?
>>137 処理前に SELECT COUNT(*) でレコード件数取得後、その件数分だけループすれば?
あえて提供されている方法を使わない意図は全く不明だが。
>>137 ムリがどうかはともかく、EOFの使い方として間違っていると思います。
カレントレコードが最後のレコードかどうか調べるなら、
AbsolutePosition = RecordCount かを判定すればいいとかと。
ただし RecordCount はカーソルタイプによっては使用できないので要注意です
が。
>>139 AA
BB
CC
DD
CCからMoveNextし、DDを表示した時点で「次へ」ボタンの「Enabled = False」にしたいんです。
現状だとCCからMoveNextしてカレントがDDに移った時点では、「Enabled = True」なので
「次へ」ボタンが押せてしまいます。
カレントがDDの時に、「次へ」ボタンを押してやっとEOFになり
「Enabled = False」になるのですが、1タイミング遅いんです。
EOFで判定するのが間違いなのでしょうか。
143 :
デフォルトの名無しさん :01/12/03 18:16
>>147 了解。
データを取得してからもう一度MoveNextして、EOFで無ければそのまま。
EOFならボタンをEnable Falseする。
そのあとMovePreviousする。これで希望通りにはなる。
でも、非効率的な処理だしレコード開きっぱなしはよくないかも知れないので、
一度レコードの中身をすべてType型変数に格納してそれを表示するようにして、
最終データかどうかをメンバー変数に持たせるなり、レコード数を変数に保持しておいて
表示時にカウンタなどで判別するほうがいかも。
>>143 さんの考え方で出来ました!
しかし、いきなりDDレコードが呼び出された時等に不具合がありましたので
>>141 さんの「AbsolutePosition」で判定して「Enabled = False」に出来ました。
逆のMovePrevious場合も同じ考え方で出来ました。
ありがとうございました。
P.S. 143さんの「Type型変数に格納し~~」の部分なのですが
漏れには理解不能のため非効率な処理でいきました。
>>144 >141さんの「AbsolutePosition」で判定して「Enabled = False」に出来ました。
お役に立てて幸いです。
> P.S. 143さんの「Type型変数に格納し~~」の部分なのですが
> 漏れには理解不能のため非効率な処理でいきました。
ADO の recordset で処理するのではなく、ユーザー定義型の配列か何かに
すべて読み込んで、自前で処理しろということではないかと。
>>145 そのことです。
補足ありがとうございました。
147 :
デフォルトの名無しさん :01/12/03 22:14
>>113-114 お答えいただきありがとうございます。
上の方にCSVファイルの中身を二次元配列に入れる方法はおかげでわかったのですが、
今度はCSVファイルのデータをコレクションのプロパティに格納する方法について
アドバイス頂けないでしょうか。何度もすみません(汗
日にち 終了 開始
4 8 2
7 15 6
10 13 11
・
・
・
↑こんな感じの行数未知・列数3のCSVファイル(Scedule.csv)のデータを…
Public Date As Integer '番号の値が入る
Public Start As Integer '開始の値が入る
Public Length As Integer '長さ(終了-開始+1の値が入る)
↑のように作成したSceduleクラスの各プロパティに一行ずつ格納したいのです。
(1行目の「日にち」「終了」「開始」以外)
続きます
148 :
デフォルトの名無しさん :01/12/03 22:16
Dim Scedules As New Collection '日程コレクション Dim NewScedule As Scedule '新規作成した日程 Dim i As Integer '繰り返し処理用カウンタ変数 i = 1 Open "C:\WINDOWS\デスクトップ\Scedule.csv" For Input As #1 Do Until EOF(1) '新規日程オブジェクト作成 Set NewScedule = New Scedule '値をセット Input #1, NewScedule.Date, ’この辺りの記述がわかりません。。 'コレクションへ新規日程を追加 Scedules.Add NewScedule Loop Close #1 ↑このようにとりあえずコードを書いてみたのですが… Scedules(0).Dateに4、 Scedules(0).Startに2、 Scedules(0).Lengthに7 Scedules(1).Dateに7、 Scedules(1).Startに6、 Scedules(1).Lengthに10…というようにCSVファイルの最後の行のデータまで 格納するにはどうすれば良いでしょうか。 長いうえに分かりにくくて済みませんが、どうか助言お願い致します。
すいません。軽い質問です。 文字「”」を参照するときはどう記述すればいいんでしたっけ? if XXX = """" Then でOK?
150 :
デフォルトの名無しさん :01/12/04 00:53
ありがと
152 :
デフォルトの名無しさん :01/12/04 04:44
148です。訂正させて頂きます >Public Date As Integer '番号の値が入る >Public Start As Integer '開始の値が入る >Public Length As Integer '長さ(終了-開始+1の値が入る) と書きましたが Public Date As Integer '日にち(番号じゃなかったですね)の値が入る Public End As Integer '終了の値が入る Public Start As Integer '開始の値が入る のように単にCSVファイルのデータをそのまま1行ずつ格納していこうと思います。 (あと、i=1ではなく0からでした。済みません) 今まで試行錯誤を繰り返したのですがどうしても方法が分かりません。 どなたか知恵を貸して頂けないでしょうか。お願い致します
153 :
デフォルトの名無しさん :01/12/04 04:50
VBぬた言うバカsyげっbふぃをたっいぇるバカはすべと! お前らにはRubyhampyttaimasufgitu!
BitbltでFormを丸ごとコピーしたのですがMediaPlayerの部分のみ真っ黒になってしまいます。 ただし、事前にMediaPlayerを起動して何らかのファイルを再生していれば真っ黒にならずに コピーできます。これってなぜなんでしょう?またこんなことがおきない別の方法があればれ レクチャーお願いします。
>>152 任意の行数を得る方法を知りたいの?
自分の場合、すごく苦しいかもしれないけど、
一度ファイルを開いて、行数をカウンタ=kして
Redim hoge(k) as integer
と宣言しなおして行数を得ている。
もし、CSVを分解して代入する方法を聞いてるとしたら、
Mid 関数、Instr関数、を使えば十分分解格納できる。
>152 長さ未定義の配列にsplit..ではダメ?
>>156 動的配列じゃね?
Dim intI Integer
Dim strA() String
intI = 0
Do While なんたらかんたら
ReDim Preserve strA(intI)
strA(intI) = "ほにゃらら"
intI = intI + 1
Loop
とかやりたいの?質問の意味が理解できんかった。。。ゴメソ
>>148 えと、DateとかEndは予約語なんでクラスのメンバ変数に使えないような。
あとInputステートメントはデータをObject変数に格納できなかったハズ(?)なんで
代入用の変数を用意しる。
Dim Scedules As New Collection
Dim newScedule As Scedule
Dim lintDate As Integer
Dim lintStart As Integer
Dim lintEnd As Integer
Open "Hoge.csv" For Input As #1
Do Until EOF(1)
Set newScedule = New Scedule
Input #1, lintDate, lintStart, lintEnd
newScedule.nDate = lintDate
newScedule.nStart = lintStart
newScedule.nEnd = lintEnd
Scedules.Add newScedule
Set newScedule = Nothing
Loop
Close #1
取り出すときは、Itemメソッド
Scedules.Item(n).nDate
もしくは、
' For Each newScedule In Scedules
' Debug.Print newScedule.nDate, newScedule.nStart, newScedule.nEnd
' Next
動くと思う。長くてスマソ。
>>158 つられてDim文でNewしてしまたケドあんまりオススメできない(w
VBでGPIBを制御するために・・・ VBで GPIBの制御をしようと構築中です、 なにか良い雑誌や本などありましたら、教えていただけないでしょうか? VBでGPIB制御するためには、やはりハード側の命令セットみたいなものも 理解する必要があるとおもうんですが、もし、その命令がわからないばあい 実際に試行錯誤を繰り返しながら、ためさないと いけないんですかねぇ 今 やろうとしているのは、簡単な移動装置です。 顕微鏡なんですが、この装置を遠隔的に、WINDOWSから 操作しようと思っております、 なにかご意見いただける方いらっしゃいますか? メインから移動してきました よろしくお願いします
>>160 GPIB カード(高いよ~~)にドライバがついてねーか?
ドライバついてるんですけどね~ その関数やらの使い方はなんとなーくわかるんですけど 結局のところハードに送信する命令自体がわかんないと どうしようもないかもしれないんです。 GPIBの命令って統一されてるんですかねぇ~ なんか装置のメーカに問い合わせても いい反応なさそうだし・・・ (某光学装置orカメラメーカー)
>>154 某MLからの転載
--ここから
はじめまして!この度本MLに登録させていただきました。よろしくお願いします。
で、私はまだ学生ですが勉強も兼ねてVB又はVCをいじっています。
今回はVBでMediaPlayerに表示される画像の静止画のキャプチャを考えていますが、
Bitbltでスクリーンコピーすると動画の部分だけが真っ黒になってしまいます。
また通常のメディアプレイヤーを起動し、何らかの動画を再生しておくと正常にキャ
プチャ
できます。メディアプレイヤーを起動しないでキャプチャする方法はありませんで
しょうか?
またBitblt以外でのキャプチャ法はありませんでしょうか?ご教授お願いいたしま
す。
--ここまで
>>162 >結局のところハードに送信する命令自体がわかんないと
>どうしようもないかもしれないんです。
どうしようもないす。
つか GPIB で制御出来る顕微鏡なんでしょ?
なのになんでコマンドリファレンスがついてないの?
>>155-159 どうもありがとうございました。
直接オブジェクト変数にではなく、変数に代入することでいけました。
あと予約語ばんばん使ってたり、ミスばっかでした…ご指摘ありがとうございます。
質問わかりにくくて済みません、勉強になりました。
>157 動的配列やね。さんくす Dim strHoge() As String Dim CSVText As String Do While EOF(1) strHoge= Split(CSVText,",") Loop で、勝手にRedimされるから便利。一個ずつ変数宣言なんて面倒で好かん まぁどうでもいいんだけど。
168 :
デフォルトの名無しさん :01/12/06 05:24
VBでインターネットアプリを開発している初心者です。 Winsockコントロールを使ってTCPやUDPでやり取りして いるデータのヘッダから、IPなどの情報を取得するには どうしたらいいのでしょうか。 ご教授のほど、よろしくお願いしますm(_ _)m
「Winsock32.dll」でなく「Winsockコントロール」だよな RemoteHost RemoteHostIP RemotePort LocalHost LocalHostIP LocalPort 上記のプロパティを調べてみそ。 あと、GOOGLEで調べてみれば?サンプル一杯あるよ。
はじめまして、カズと申します。 今、VB6で暗号化アプリを開発しています。そこで暗号化はできるのですが、 復号化がうまくできません。Advapi32.dllが原因ではないかといわれたのですが、 誰かその辺のことについて知ってる方がいらっしゃいましたら、ささいなことでも かまわないのでおしえてください。よろしくお願いします。
171 :
aaaaa :01/12/06 15:22
aaaasddfgfg
172 :
デフォルトの名無しさん :01/12/06 15:22
テキストファイルに何行データが入っているのを調べるにはどうしたらいいでしょうか 今のところ、Input LineをEOFまでやって、そのカウントを取ることで実現していますが もっとスマートな方法がありましたらお願いいたします。
>>172 Input Lineって改行コードを調べる関数?
だったらそれが一番スマートだと思うけど。
>>169 さん、レスありがとうございます!
例えば、UDPでデータを受け取った時に発生する
DataAraivalイベント中に
RemoteHost
RemoteHostIP
RemotePort
LocalHost
LocalHostIP
LocalPort
これらのプロパティを参照すれば、データを送って
きた相手のIPなどがわかる、ということなのでしょう
か。。。重ねての質問ですいませんが、よろしく
お願いします!
175 :
デフォルトの名無しさん :01/12/06 16:51
>>172 ファイルを全部読み込んで改行文字をカウント。
でも多分スマートじゃない。
>>175 これなら元の方がマシだと思う。
いっそ wc 拾ってきてそいつに数えさせるとか。
177 :
デフォルトの名無しさん :01/12/06 17:49
つーか、
>>172 の言うスマートってなんだろね。(w
178 :
デフォルトの名無しさん :01/12/06 17:56
アクセスのデータベースで、データの読み込み方法の質問です。 今、以下のよう感じで「名前がwao かつ 年が10」のデータを抽出しています。 Set RS = DB.OpenRecordset(" SELECT * " & _ " FROM Hoge " & _ " WHERE Name = wao AND Age = 10;") これを分解して、まず名前がwaoのデータを全部抽出して、そのデータベースから 年が10のデータを取り出したいのですが、どうやればいいのでしょうか。
コントロールのDragModeを自動に設定し、 任意の場所にDrag&Dropすることで、 そのコントロールの位置を移動させたいのですが、 FormのDragDropイベントで取得する X, Y を Top , Left に設定しても 見当違いのところに移動します。 どうすればマウスのDrag&Dropで思った場所に コントロールを移動できるのでしょうか?
>>178 なんでそんな事したいか不明だが...
素直にワークテーブルに書出したら?
こうやればいいのかと思ったんですが、やはりうまくいかないようです。 そもそもクエリーの意味を履き違えているんでしょうか。 Set QD = DB.CreateQueryDef("", " SELECT * " & _ " FROM Hoge " & _ " WHERE Name = wao;") こうやってwaoのデータを抽出して Set RS = QD.OpenRecordset(" SELECT * " & _ " FROM Hoge " & _ " WHERE Age = 10;") さらに年が10を探す。
うーん。やっぱりコレが一番なんですか。 とにかく行数だけがわかればいいので、無駄に文字を取ってきているきがして もっといい方法があるのかなと思ったんです。
>>182 固定長のファイルだったら簡単だけどねぇ。
今高校の研究課題でインベーダーゲーム作ってるんですけど、 プレーヤーの左右の動かし方のプログラミングがわかんないんです。 わかる方教えていただきたい!!ちなみにプレーヤーはコアファイター です。敵がザクちゃん
185 :
デフォルトの名無しさん :01/12/06 18:35
>>182 行数だけを調べたくても結局ファイルの中身は
全部調べないと駄目なんで何やっても同じ。
フォーマットを決めてるんなら別だけど。
気持ちは分かるが。(w
>>181 =178
RecordsetのFilterプロパティ参照
あまりオススメしないけどね・・・
188 :
デフォルトの名無しさん :01/12/06 23:00
このスレはぼくのかいた駄目ソースのアドバイスも もらえるんですか?
189 :
デフォルトの名無しさん :01/12/07 00:17
>>190 =168さん、大感謝です!!!
お教えいただいた事とサイトで、さらに
通信プログラムを勉強したいと思います。
ありがとうございました!
リストボックスの中のフォントサイズをコンボボックスを使って変更したいのです が、変更するたびにリストボックスの高さが縮んでしまいます。 リストボックスの高さを変えずに、画面上でフォントサイズを変える方法を 教えてください。
193 :
デフォルトの名無しさん :01/12/07 20:59
データベースからSQLでデータを取ってくるのをやってんですけど、 あんまり件数が増えると、取り出すのにえらい時間がかかって、 ハングしたかと思っちまいます。 そこで、よく市販アプリのインストール時に出るような、 残り処理時間ゲージを付けたいんですけど、 VBでできますでしょうか。 よろしくお願いします。
>>192 フォント変えるたびにリストボックスのサイズも設定しなおせば?
でもリストボックスだと勝手に補正されちゃうんだよね。
リストビューだとサイズはかわらんよ。
195 :
デフォルトの名無しさん :01/12/07 23:36
>193 プログレスバーじゃ不満?
>193 とりあえず、データベースからそこまで沢山のデータを 一気に取り出す必要があるのかという事から考えた方が いいと思われ。 抽出条件つけるとかして件数を絞り込むとか...
197 :
デフォルトの名無しさん :01/12/08 17:14
WinXP(HE)でも使えるVB6のランタイムってありますか? MEの時までは使えてたソフトが使えなくなってしまって困ってます。 通常のバージョンアップでは使えていたんですが、 フォーマットして最初からインストールしたらランタイム系が 軒並みインストールできなくなってたんです。
>>195 、
>>196 レスありがとうございます。
データの抽出件数に関しては、仕事上、仕方ないのです。
これでも出来る限り不必要なデータ抽出げずったんですよ・・・。
あと、プログレスバーコントロールってのは、どこから
出すんでしょうか。参照設定にそれらしいの無いんですが・・・?
199 :
デフォルトの名無しさん :01/12/09 12:44
>>198 自分で見るだけならステータスバーの使用をお勧め。
SysCmdで文字とかステータスバーのプログレスの
表示を操作出来る。
んで一応、プログレスバーはフォームデザイン画面で
ツールバーのコントロールの選択→MicroSoft Progress Bar
を選んで配置すると使える。
VBAのフォームって個人的に好かんけど。
>>198-199 VBじゃなかったっけ?なら
Microsoft Windows Common Controls 6.0 (MSCOMCTL.OCX)
TextBoxやLabelのなかに一回り小さい色の付いたLabelを配置して
Widthを少しずつ増やしていくだけでも代用できますが。
そんなにレコード数多いの?
何分もかかる様なら%も表示したほうがよさげか
>>199 ありがとうございます。
>んで一応、プログレスバーはフォームデザイン画面で
>ツールバーのコントロールの選択→MicroSoft Progress Bar
>を選んで配置すると使える。
ツールバーってのはツールボックスのことでしょうか(あの「TextBox」とか
のアイコンがある)。デフォルトでは、そのコントロールは無いっぽいです。
うう。
202 :
デフォルトの名無しさん :01/12/09 13:17
>>200 お、ありがとうございます!
>Microsoft Windows Common Controls 6.0 (MSCOMCTL.OCX)
これが何か分かりません。ヘルプでも出ないんですが?
レコード数もさることながら、仕事場のPCの性能がアレで
小一時間かかったりもします。マジでハングったりも。
>>202 そのツールボックスを右クリックしてコンポーネントをクリック。
もしくはいきなりCtrl+Tで出てくるYO。
インデックス張ったりSQL見直したりは・・したよね(w
>レコード数もさることながら、仕事場のPCの性能がアレで
うちはその点最低でもCerelon400だから助かってます。
199でなくて200。騙ってしまった。 鬱氏。
205 :
デフォルトの名無しさん :01/12/09 13:32
最近VBはじめました。。 ほんとうにくだらないことで申しわけないのですが、 Formの縁を無くすにはどうしたら良いのでしょうか。 FormのAppearanceを0にもしたのですが、 やはり外側に3Dっぽい縁が出来てしまうんです。
>>205 AppearanceでなくBorderStyle。
>>203 ありました。ありがとうございます。
ちょっと研究してみます。
申し訳ないのですが、分からなかったらまた聞きに来ます。
あと、インデックスも張ってますし、SQLも改良しました。
実は、もともと、他人が作ったもので、その人に
「適当に使いやすくして使って」って言われているものなのです。
僕、初心者なのになー・・・。
>>202 >ツールバーってのはツールボックスのことでしょうか
>(あの「TextBox」とか のアイコンがある)。
コントロールの選択ってのはツールバーの中にある、
「TextBox」とか、「Label」とかと一緒に、
「コントロールの選択」ってのがあるんよ。
(一番右下。)
分かりにくかったかな?スマソ。
>>204 気にすんな。(w
>>206 さま
ありがとうございます。0にしたら無くなりました。
ちなみに、その状態でタイトルバーだけ表示って
無理ですか?
連続ですみません。 Formの出現位置を画面右上や、画面右下とかには 出来ないでしょうか?
>>210 Screenオブジェクト、StartUpPositionプロパティあたりを調べてみて。
>>209 は、ちょっと必要な状況を想像できません。
212 :
デフォルトの名無しさん :01/12/09 14:21
>>209 無理。移動したいなら、WM_NCHITTESTを使いましょう。
213 :
箱入り息子 :01/12/09 19:16
えーと、VBで「箱入り娘」(知ってます?ボードゲームです) を作りたいのでありますが、どんなコントロールを 使えばいいのやら皆目見当もつきません! ご教授ねがいます!以上っ!(敬礼)
>>213 VC か Delphi で「箱入り娘」コントロールを作ってもらって
それを VB に張れば1分で完成。
>>213 それだけでは教えたくてもさっぱり分からん。
もうちょっとこんな感じでこうしたいとか・・・
詳しく書こうぜ。
216 :
デフォルトの名無しさん :01/12/09 21:21
Label.Captionの中に書く文字列の行間を調節する方法は ないでしょうか?
217 :
箱入り息子 :01/12/09 22:25
213
>>215 すみませんでした。
えーと、現状では、「娘」とか「父」とかいう文字を書いたimageコントロールを
フォーム上でマウスでドラッグアンドドロップで移動させることは
できたんです。でも、きちんと枠内でその一つ一つの「駒」を移動
させ、移動できない方向には移動させない、といった制御が難しくてできません。
でも、なにも制限がなかったらゲームにならない(当たり前ですが)ので、
そのimageコントロールの動きを制御しなければ「箱入り娘」になりません。
214さんの言うように、「箱入り娘」コントロールみたいなものはあれば、
簡単なんですけど・・・。
どうやったらいいのでしょうか?
218 :
デフォルトの名無しさん :01/12/09 22:31
txtのある部分を変更させるにはどのようなコードを使えば良いんですか? 一応、line inputで一行ずつtxtを文字変数として読み込んで InStrで場所を特定して・・って感じで考えているのですが
>>217 その箱入り娘ってのがどんなのかは知らないけど
移動先の枠の座標は分かるよな?
で、移動できる枠と移動できない枠も分かるよな?
そしたら、移動完了の時に判定できるでしょ。
移動できないんなら元に戻す、みたいなかんじで。
>>218 MID$ステートメントで指定位置の文字を変更できるけど。
221 :
デフォルトの名無しさん :01/12/10 01:04
>217 将棋やオセロと同じで、マス目を配列変数で用意する。 何もいなければ0、何かいれば1にする。 1点の位置が決まれば、大きさや形にしたがって、 いくつかのマス目も1になる。 もし動き先が1なら、そこには動かせないということになる。
222 :
デフォルトの名無しさん :01/12/10 06:25
マウスカーソルが重なった時のみ、 テキストボックスの色を変えたいです。 テキストボックスのMouseMoveイベントに色変えるの書いたのですが、 カーソルが外出た時に色戻すイベントの取り方がわかりません。 お願いしますー。
223 :
箱入り息子 :01/12/10 10:28
>>219 ,221
どうもありがとうございました。
224 :
デフォルトの名無しさん :01/12/10 13:15
>>216 PictureBoxを使って自前で描画してはどうでしょう。
225 :
デフォルトの名無しさん :01/12/10 18:12
"Alt+Retrun"でフルスクリーン化するプログラムに対して "Alt+R"を押したら、Retrunを押したというメッセージを送りたいのですが、 上手くゆきません。 keybd_event(vbKeyReturn,0,0,0)を使ってやってるのですが、 フルスクリーン化してしまいます。 どうすればよいでしょうか?
226 :
デフォルトの名無しさん :01/12/10 19:43
アゴ。
サゴ。
228 :
デフォルトの名無しさん :01/12/11 06:58
DOS窓で call c:\test.exe abc などと入力してプログラムの起動時に引数を渡す処理を、 VBで行うには、どうすればいいのでしょうか?
>>228 Shell関数を使ってはどうでしょうか?
ヘルプで探してみてください。
あ、もしかして引数をVBでつくったアプリに渡す方法でしょうか…
渡された引数を確認するには、 Command()
説明が下手でしたね。 VBで作ったアプリで、他のアプリに引数を渡す方法です。 ご指摘の通り、Shell関数で簡単に出来ました。(汗 ありがとうございます。
>>222 FormのMouseMoveイベントで色を戻す処理を書く。
234 :
デフォルトの名無しさん :01/12/11 11:53
CallWindowProcAってマウス関連にしか使えないの?
235 :
ありゃ?? :01/12/11 12:58
すみません。教えてください。 メニュー画面のフォームからコマンドボタンをクリックし、次のフォームを 表示させるには、どういうコーディングをすればいいのでしょうか?? メニュー画面も次の画面も用意してxxxx.showと指定しているのですが (参考書にはこれで展開すると・・・)うまくいきません。
「Retrunを押したというメッセージを送る」というのはうまくいってますよ。 ただそのときに既にALTが押されているので"Alt+Retrun"でフルスクリーン化 という動作になってしまっているのでしょう。 keybd_event(vbKeyReturn,0,0,0) の前に Public Const KEYEVENTF_KEYUP = &H2 keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0) なんかやってみたらどうでしょう。 (試してませんがうまくいけばめっけものです。) それかReturn押下時の処理を関数化し、"Alt+R"押下時に その関数を呼ぶとか。(ベタですが...)
「Retrunを押したというメッセージを送る」というのはうまくいってますよ。 ただそのときに既にALTが押されているので"Alt+Retrun"でフルスクリーン化 という動作になってしまっているのでしょう。 keybd_event(vbKeyReturn,0,0,0) の前に Public Const KEYEVENTF_KEYUP = &H2 keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0) なんかやってみたらどうでしょう。 (試してませんがうまくいけばめっけものです。) それかReturn押下時の処理を関数化し、"Alt+R"押下時に その関数を呼ぶとか。(ベタですが...)
238 :
デフォルトの名無しさん :01/12/11 13:51
>>235 >xxxx.show
・xxxxの名前が違う。
・showが全角
239 :
perl2vb :01/12/11 15:31
perl なら、関数に配列を渡す場合、 $date = "2001/12/11"; @job = ("mail","meeting","test","coding","design");## PERLの配列 myfunction( $date, @job); sub myfunction{ my ($str, @array) = @_; ## 以下省略 } なんて形にするけど、VB だとどうなるのか教えてください。 ヘルプはたくさん書いてあるわりには検索に時間がかかるばかり でぜんぜんわかんねー。
240 :
デフォルトの名無しさん :01/12/11 15:48
VBの簡単な修正を頼まれてソースを渡されました。しばらく放置していて そろそろ手をつけるかとプロジェクトを読み込み、デバッガで走らせようとしたら RDOの関係のモジュールがすべてエラーになってしまうのです。 参照設定では、MSRDO20.DLLはちゃんと指定してあるので困りました。 Win2K(SP2)+VB6(SP4)の環境です。渡された当初は当然ですが問題なかった。 最近やった大きいことはというと、IEを6.0にしたことと、Delphyパーソナルを 入れたことか。 助言を願います。馬鹿ですみません。
243 :
perl2vb :01/12/11 17:22
>>241 参照がわはaramArrayを使えばいいのはわかったけど、
参照元はハードコーディングでなく呼び出す方法はないの?
知ってる人、おしえてくださーい。
244 :
デフォルトの名無しさん :01/12/11 17:34
>>243 こんなんダメ?
private function Job(str() as string) as Variant
Job=str
end function
悲しい。あせる。すぐに手をつければよかった、ってのも意味がないか。 rdoErrorsやrdoConnectionのデータ定義からしてだめ。 オブジェクトブラウザーにRDOは見えているのに。 とりあえず、VisualStudioのSP5を落としながらWebサーチをします。 お心当たりあれば引き続きよろしくお願いします。
246 :
デフォルトの名無しさん :01/12/11 17:47
>246 ありがとう。 Error$を評価すると、 "コンパイルエラーsubまたはFunctionが定義されていません。Error35" が帰ってくる。 DLLの参照に関するエラーでしょうけど、MSRDO20.DLLは「ある」し「指定されている」 んですよ。悩む。
>>248 お、とりあえず、これも落として入れてみます。回線がのろまでSP5がまだですが、
双方を落として、入れてから、また報告します。ありがとう。少し希望か?
>>233 ありがとうございます。
でも、すでに試してますが、それダメでした。。。
なんで戻らないんだろう。
てか、なんでMouseOutイベントが無いんだろう。
if text1.width < x then 色がえ end if とかじゃだめ?
VisualStudioのSP5とMDAC2.7を読み込ませたら直りました。お騒がせしました。 原因は不明ですが ^^; 急がば回れで、こういうときは、すんなりと開発環境のアンインストールと 再インストールをやってしまうのが時間のロスも神経をすり減らすのも少ないか。 知恵はつかないままだが。
253 :
デフォルトの名無しさん :01/12/12 00:37
2000・NT系でCPU使用率を得られるらしい NtQuerySystemInformationの宣言とか引数、戻り値を教えてくだされ 海外サイトで NtQuerySystemInformation (SYSTEMINFOCLASS sic, PVOID pData, DWORD dSize, PDWORD pdSize); というのを見つけて、自分で書いてみたのがこれ Public Declare Function NtQuerySystemInformation Lib "ntdll" _ ( , pData As Any, ByVal dSize As Long, ByVal pdSize As Long) As Long ↑ここに入るのは分からん VB自体始めて日も浅いし、上のも間違ってるかも ダレか教えて下さい
>>237 ありがとうございます。
ご指摘の通りやってみたのですが、なぜか上手くゆかないときがあります。
上手くゆくときもある、というのが謎なのですが、Altキーは押しっぱなし状態で
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0) とやっても
次回のGetKeyState()呼び出しのとき、Altキーが押されていると認識
されているみたいなので、
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
keybd_event(vbKeyReturn,0,0,0)
この2つの命令の間で、Altが押されたメッセージが送られるてるのでは
ないかと思ってます。
一気に、リターンだけしか押されていないという状態を送るような便利な
関数はないでしょうか?
>>251 ありがとうございます。
しかし、それどこに書けば良いのですか?
つか、マウスオーバーでwidthが変わるんですか?
>>255 MouseMoveで、マウスの位置のxはテキストボックスの幅width
を超えることはありえるかなと思ったもので。
確かスプリットバーを作ったときは、できたような気がする。
>>256 それって、ドラッグの最中だけじゃないですか?
>>222 タイマーでGetCursorPosして判定とかは。
258 :
デフォルトの名無しさん :01/12/12 13:14
どんな解像度でもフォームを画面の中心に表示できるようにしたいのですが Form2.Left = (Screen.Width - Form2.Width) / 2 Form2.Top = (Screen.Height - Form2.Height) / 2 とやってもうまくいかないんです。どうすればいいのでしょうか?
もう一つお願いします パスワードがない状態では利用できないようにしたいのですが テキストファイルを読んでパスワードと一致するか比較して 違ったらExit subとする、ぐらいしか思いつかないのですが もっとスマートな方法はあるのでしょうか?
>>258 Formのロードイベントの所にそのコードをコピペして試したけど、
きちんと動いたよ。
ところで、FormのStartUpPositionプロパティで「画面の中央」じゃ駄目なの?
261 :
デフォルトの名無しさん :01/12/12 14:17
>>259 基本的にはそれで良いかと思います。
パスワードを暗号化して保存するぐらいは
やったほうが良いかもしれませんが。
>>258 ScaleModeはTwipにしてある?
263 :
クリスタルレポート :01/12/12 17:22
現在、VBからクリスタルレポートを開く時、 参照先のDB名を変更出来なくこまっています。 下記のコードのように幾つか試しているのですがうまくいきません。 ご存知の方がいらっしゃいましたら、是非教えて下さい。 バージョンは、VB6.0、Crystal Reports8.5 DBは、DB2、バージョン7で、RDO接続です。 初心者ではありませんが、どうかよろしくお願いします。 Dim Report As New CrystalReport1 Public rEn As rdoEngine Public rEv As rdoEnvironment Public rCn As rdoConnection Public rRs As rdoResultset Public sCnct As String Public str_SQL As String Private Sub test_Click() sSQL = SQL_MAKE() 'SQL作成 sCnct = "DSN=DB2TEST2; UID=ADMINISTRATOR; PWD=******" ' システムDSN Set rEn = rdoEngine Set rEv = rEn.rdoEnvironments(0) Set rCn = rEv.OpenConnection("", rdDriverNoPrompt, False, sCnct) Set rRs = rCn.OpenResultset(sSQL) 'レコードセットを与える Report.Database.SetDataSource rRs, 3, 1 'システムDSNを与える Report.Application.OpenReport("Report1.rpt").Database.Tables.Item(1).SetLogOnInfo (sCnct) CRViewer1.ReportSource = Report CRViewer1.ViewReport CRViewer1.Zoom (2) End Sub
>>222 テキストボックスにマウスが入ったら
キャプチャーして、出て行ったら色直して
解放してやるのが一番無難ではないかと思われ。
>254 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Debug.Print "Form_KeyDown"; KeyCode; Shift; GetKeyState(vbKeyMenu) If KeyCode = vbKeyR And (Shift And 4) = 4 Then Debug.Print "Enterを押下したことにする"; KeyCode; Shift; GetKeyState(vbKeyMenu) Call KIS_keybd_event(vbKeyMenu, 0, KEYEVENTF_KEYUP, 0) Call KIS_keybd_event(vbKeyReturn, 0, 0, 0) Call KIS_keybd_event(vbKeyMenu, 0, 0, 0) ElseIf KeyCode = vbKeyReturn And (Shift And 4) = 4 Then Debug.Print "フルスクリーン"; KeyCode; Shift; GetKeyState(vbKeyMenu) ElseIf KeyCode = vbKeyReturn And (Shift And 4) <> 4 Then Debug.Print "Enter押下時の処理"; KeyCode; Shift; GetKeyState(vbKeyMenu) End If Exit Sub どうもGetKeyStateは254さんの思ったとおりの動作をしていないようです。 使用しないほうがよさげ。
268 :
デフォルトの名無しさん :01/12/12 20:23
>>260 ,262さん
>ところで、FormのStartUpPositionプロパティで「画面の中央」じゃ駄目なの?
これで解決しました。勉強不足でした。
>>261 >パスワードを暗号化して保存するぐらいは
暗号化とはどういうことをするのでしょうか
初心者ですので、もしできれば詳しく説明してただければと思います
レスサンクスです
>>268 初心者だからと行って何でも許されるわけではない。
>>268 パスワードを逆にしたり全バイト1足したり
Xor使ったり色々。
要は暗号化後には暗号前が分からなくすれば良い。
どう実装するかは自分で考えようね。
271 :
デフォルトの名無しさん :01/12/12 22:43
vb5.0エンプラ版+SQLserver7.0スタンダード版で開発しているのですが、 接続しているデータベース・テーブルが更新・追加等された際の イベントってあるんでしょうか? これがわからない為に、ロード時にadodb.connectionを バインドして、タイマー毎にadodb.commandでsp_whoやsp_lock、自前の ストアドを走らせて確認し、イベントを発生させています。 ここが出来れば、ADO関係はActiveXDLLにして 実行プログラム自体にはraiseeventしてやるだけで 済むので大分楽になるなーっていう手抜きしたさのみでこれに ついて調べています。 日本語が不自由ですみませんがこの辺実践してる方 いましたらご教示ください。お願いいたします。
すみません‥sage‥
問題外の質問と言われそうですが 暗号化の目的がよく理解できないんですが 例えばパスワードが1234としたら テキストファイルには4321と書いて保存すると言うことですよね 1234と暗号化しないで書いても特に不都合はないように思うのですが
>>273 パスワードなんて物騒なもんが平文でその辺に置いてあることの
危険性が理解できない奴の作ったプログラムなんか使えねえよ。
275 :
デフォルトの名無しさん :01/12/13 04:12
便乗で、暗号化教えて。 XOR演算でやってみたけど、いまいちうまくいかないです。 日本語を暗号化するときも、表示可能な文字に暗号化したい。 暗号前の文字列が長さ0の時でも、暗号化ルーチンを見破られないようにしたい。 自前より、APIのCryptを使ったほうがいいのかな。
>>273 んじゃあ、オマエのインターネットのIDとパスワード教えろ(w
>>275 例えば、8bit×3をxorしたあと、6bit×4として取り出せば必ず表示可能な
範囲に収まる。
>>268 unixのパスワードなんかは暗号化して保存しているから
その辺を調べてみると参考になるかもしれません。
簡単なサンプル。
'復号化は自分で作ってね。
'パスワードが正しいか判定するだけなら、ユーザが入力したパスワードを
'暗号化して、ファイルに保存してある暗号化パスワードと比較すれば判定
'できるから、必ずしも復号化は必要じゃないけどね。
Function crypt(src As String) As String
Dim l As Long, i As Long, ret As String, c As Long
Rnd -123
l = Len(src)
For i = 1 To l
c = Asc(Mid$(src, i, 1)) Xor Int(Rnd * &H10000)
ret = ret & Right$("0000" & Hex$(c), 4)
Next
crypt = ret
End Function
>>275 >暗号前の文字列が長さ0の時でも、暗号化ルーチンを見破られないようにしたい。
長さが一定以下なら末尾にゴミを突っ込んでから暗号化するとか。
ありがとーう やってみます。 DB接続のユーザ名とパスワードをIniファイルに保存したかったもので。
誤)KIS_keybd_event 正)keybd_event ウツ...
解決しました、 お騒がせして申し訳ありませんでした。
283 :
デフォルトの名無しさん :01/12/13 20:09
すいません、ファイルを読み込んで1バイトずつループまわして 文字列を比較してきたいんですけど、うまくいきません。 MidB$とかやっても内部でUniCodeしてるみたいなんで。 助けてください。
>>283 dim wk() as byte
wk()=Strconv( "文字列",vbFromUnicode )
後はバイト配列を一つづつ比べれ。
バイト配列の最大はubound(wk())とかやで。
>>283 ファイルを読み込むにはInputかGetを普通使うが、
どちらを使うかでUnicodeとANSIに分かれる。
注意しようね。
286 :
デフォルトの名無しさん :01/12/13 22:31
最小化した時、右下のタスクトレイに格納される様に VBでできますか?
>>283 文字列だったら
line inputで行単位でとって
ただのmid()で文字数分まわして
やればいいんじゃないでしょうか?
違ったらすみません。
>>287 できれば、モスウコ氏具体的にやり方など教えてくださいませんか・・・?
モウスコ氏って誰だ・・・。「もう少し」です。鬱・・・。
よ、よく見たらモスウコ氏だ・・・。再鬱・・・。
>>286 まず、タスクトレイにアイコンを登録するために
Shell_NotifyIconが必要。
次にタスクトレイのクリックを取得するために
サブクラス化が必要。
サブクラス化には
SetWindowLongとCallWindowProcが必要。
んで、最小化の時にタスクトレイのアイコンを表示。
タスクトレイのクリック時にフォームを表示。
・・・ってな感じで。
サブクラス化もタスクトレイのアイコンの登録の仕方も
ネットに山ほどサンプルあるからGoogleあたりで検索してみな。
あと、落ち着け。(w
タイピングゲームに関することなんですが。 キーボード入力を取得するにあたり、それが「確実に」 キーボードから入力されたかどうかを判定する方法はあるでしょうか? 仮想キーコードを独自に送出するツールなんかからの 入力は無視したいんですが。 GetKeyStateは試してみましたが、うまくいきませんでした。 なんかハードウェアを直接制御するしかないのかなぁとか思ってるんですが。 (そのやり方もよく分かってませんが・・)
VBでWindowsよりいいOSを作ています。 マルチスレトにするには、どのAPIを使えばいいですか? 教えてくれたら人は、売れたらお金をあげます。 あと、デュアルCPUのAPiも教えてください。
>>278 サンプルまでありがとうございます
コピペして試しました
ただ、一つだけ
Rnd -123
これの意味がわからないです
あとは調べたら理解できました
>>295 乱数系列を初期化しています。
その行が有る時と無い時で
debug.print crypt("ABCDE") , crypt("ABCDE")
の出力を見比べると解ると思います。
297 :
デフォルトの名無しさん :01/12/14 14:56
298 :
ラーニング :01/12/14 15:02
ラーニングソフトではDBグリットが使えませんでした・・・。 アクセスで作成したDBを操作したいのですが、どうコーディングしたらよいのか さっぱりわかりません。 参考書はBDグリットの使い方しか、載ってません。 具体的にしたいことは 1.ファイルをオープンし、データを追加する。 2.ファイルをオープンし、データを修正する。 3.ファイルをオープンし、データを削除する。 (なんそ命令が違うらしいと聞いたので) 4.クローズ すいません、どなたか教えてください。
>298 そのやりたい操作とDBGridに何の関係が...?
300 :
ラーニング :01/12/14 15:19
DBグリッとが使えると、コーディング量がぐっと減るし、 フォームでデータが関連付けできるから、楽なんです。 しかし、ラーニングではできない(プロフェッショナルならできるんだけど) ので、教えてもらいたいんです。
...ネタ?
302 :
ラーニング :01/12/14 15:35
ネタではなくて、困ってるんです。 DBグリッとがあれば、オープンもクローズもしないで DBへ書き込んで、次のレコードへブックマークセットして・・・ みたいなコーディングで終わるんでしょうが、 1対NでN側のDBをDBグリッと無しで操作しようとする場合、 DBオープンして内容を操作してクローズするといった処理が必要になると 思うのですが、参考書はDBグリッとの使用方法しか載ってないんですよね。 だから、知っている人がいれば、教えてもらえたらなと・・。
303 :
ラーニング :01/12/14 15:39
ラーニングはプロフェッショナルに比べ、値段も安い分、機能も制限されています。 アクティブXの機能は使えない。いたーいです。
ラーニングのVB使ってる人はじめてみた。 ちょっと感動。
>>304 おいらも使ってるよ。金が無かったんだよ。激しく後悔。
>>298 LearningEditionって、ほんと何もできないのね…。
使ってても学習になるのかどうか疑問だ。
すまんね、ADOもDAOも使わずにDB操作したことないんで
役に立てそうにないわ。
>302 ...そうか。疑ってスマソね。 DBGridを使う場合、普通はデータコントロールを対にして使う。 折れはSQL鯖との組み合わせしか知らないけど一応参考にしてくれ。 まず、グリッドと対になるデータコントロール(ADODC)をフォームに貼り付ける。 んで、DBGridのDataSourceプロパティには連結するADODCを指定する。 ADODCには、接続するDBやテーブルに関するプロパティを設定してやる。 実行すると、ADODCの設定に応じてDBへのConnectなどが行われて 結果がGridに反映される。 こんな感じ。
ラーニングエディションって、
●カスタムコントロールが使用不可
●ネイティブコンパイルが使用不可
●配布不可
だったっけ?
うーむ・・・確かにきついな。
んで、
>>298 DAOは使っていいんだよね?
あと、参照設定って使えたっけ?
使えるんなら参照設定で
「Microsoft DAO 2.5/3.0・・・」
をチェックして、
Function a()
Dim DB as DAO.DataBase,RS as DAO.Recordset
Set DB=DAO.OpenDataBase("C:\Hoge.mdb")
Set RS=DB.OpenRecordSet("HogeHoge")'テーブル名
MsgBox(RS!HogeHogeHoge)'フィールド名
RS.Close
Set RS=Nothing
Set DB=Nothing
End Function
は駄目?
309 :
デフォルトの名無しさん :01/12/14 22:47
あの~、以前「箱入り娘」ゲームをVBで作ろうとしてカキコさせて
もらったのですが、どうもうまくいきません。
↓サンプル(JAVA)
http://hp.vector.co.jp/authors/VA006860/hako/sample1.html サンプルはJAVAですが、どうしてもVBかVCで作りたいのです。
なにがうまくいかないか、というと、駒をマウスでドラッグアンドドロップで
動かす時に他の駒の上に重ならないようにしたいのです。
ドラッグアンドドロップ中のオブジェクトの動きって制限できるものなの
でしょうか?私はFormの上にImageコントロールを置いているのですが、
そのやり方自体、間違っているのでしょうか?
どなたかどうか教えてください。
310 :
ラーニング :01/12/14 23:25
提出期限は過ぎたけど、就職の課題だった。 正味8日。子供がいるので時間的にきつかった。 VB初めてだし。 どうしても、DBの直接操作の部分がうまくいかない。 オープンができても、フィールド名が取れなかったりと、 参考書もプロフェッショナル版の内容で書いてあるから、 どれが使えて、どれが使えないか判らない。 エラーがでても、自分が悪いのか、サービスされてないのか、 それを解明するのにかえって時間がかかりました。 しかし、プロフェッショナルは8万。ラーニングが2万4千。 う~ん。価格の差があるだけのことはあると思いました。
311 :
ラーニング :01/12/14 23:30
>>308 ありがとうございます。 オープンは何とかできるようになりました。 現在フィールド名が認識されないので、作業がストップしてます。
312 :
デフォルトの名無しさん :01/12/15 00:00
>309 こないだレスした者ですが、そのやり方自体は間違ってないです。 置けるか置けないか判定するのに、XY座標の2次元配列を使います。 で、Masu(1 to 4, 1 to 5)だと、娘がMasu(2, 4)まで来たらゴール。
313 :
デフォルトの名無しさん :01/12/15 01:06
>313 置けないところにいったん置いてから、「そこには置けません!」で 元に戻すのじゃなくて、最初からドラッグの方向を制限したいわけね。 DragOverイベントで、マウスの座標を監視するだけよ。
>>314 なるほど、そういう方法があったのかー・・・・。
勉強になりました!
>309 ちなみに、VBでゲーム製作なら、コントロールは何も使わずに Formに直接Bltとかしてやったほうが細かく制御できるよ。 コーディング自体はちょっとメンドくなるけど。
>>301 >Formに直接Bltとかしてやったほうが
それってBitBlt関数のことですね。
今、MSDN見て初めて知りました。
確かに大変そうだけど、VBでやるなら
しょうがないか・・・・・。
>>316 がんばる気があるならDirectXというテも...
>>194 すごく遅れましたが、ありがとうございました。
フォントを変えるたび値を設定しなおしてやりました。
それでも若干縮んでしまいますが・・・。なんでなんでしょうねえ
>>317 一応BitBltはWindowsの基本なんで。
慣れるとむしろそっちの方が簡単だよ。
今更コントロールでゲームを作れっていわれても
ピンとこない。(w
321 :
デフォルトの名無しさん :01/12/15 15:55
将来性とか考えて、初心者が今からVB始めるなら、 何を買うのがベスト? Microsoft Visual Basic 6.0 Learning Edition とか買おうかケソトウ中。
>>321 ・・・将来性ならVC++じゃねえか?VBスレだが。
VB6.0ならプロフェッショナルにしとくべし。
過去レスにラーニングで後悔した人がいっぱいいる。
>321 上でもLearning使って難儀してる人いたよ。最低でもProにしとけ。 高い!って思うなら、Delphiとかは? Personalは確かに機能限定はあるけど、なにしろタダだし...
324 :
デフォルトの名無しさん :01/12/15 16:40
今、mouse_eventというAPIを使ったプログラムを組んでいるのですが マウスカーソルの移動をさせる動作が、どうしても うまくゆきません。 Call mouse_event(MOUSEEVENTF_MOVE, x, 0, 0, 0) とやったら、Xピクセルほど移動してくれなくてなんか変な場所に カーソルが行ってしまったりします。 ともかく、ディスプレイ上の(x,y)の座標にカーソルを移動させる方法 を誰かお願いします。
>322 >323 サンクスコ 何か作ったらウプするよ。
>315 ドラッグで処理しようっていうこと自体がどうも間違いだったみたい(汗)。 MouseMoveは使わない方がいいよ。コードによってはスタック不足になりやすいから。 DragOverもふさわしくなかった。動けない方向へは動けないようにするために、 1ドットでもマウスの移動を検知したら、ドラッグを即キャンセルするんだけど、 斜めの場合、XY方向のどちらを重視するかとか、余計な処理が必要になる。 で、解決法だけど、Image上のクリックだけで空いてる方向に動かすのはどう? スライドパズルの場合、動ける方向はほとんど決まってるわけだから。 ただし、1コマ大が左右または上下の2方向に動ける場合とかは、 そのつど、Imageのどちら半分がクリックされたか判定すればオッケー。
>324 x座標と変な場所の法則性は? xの型と値は? ピクセル座標系に変換してるかな? これが一番間違いやすいと思う。
328 :
箱入り娘作成中 :01/12/15 23:48
329 :
箱入り娘作成中 :01/12/16 02:26
>>326 Image上のクリック・・・。
そっかー、そのやり方がいまのところ
ベストかもしれないです。
BitBltはVB初心者の私には難しすぎるっ
でもー、サンプルのJAVA(アプレット?)は
mousedownとかmousedragとかあるんですけど、
やっぱり、全然作り方が違うのかなー。
よくよく考えるとJAVAのサンプルはWindowsアプリじゃないし、
やっぱりマウスの制御でやろうというのは方向性が
間違っていたんだー。うんうん、理解、理解。
330 :
デフォルトの名無しさん :01/12/16 03:00
はじめまして。質問させて下さい。 Text1に手打ちで「C:\Windows\aaa」などとパスを書いて、 そのフォルダが有るか無いか判断するにはどうしたら良いですか? お願いします。
332 :
なつかしいね~ :01/12/16 03:11
>>322 私もVB6.0PROを買いたかったんだけど
アカデミックと通常版の値段を見て買う気
をなくした。
別に金が無かったわけじゃないけど、ムカツイテ
Delphi6.0PROを買ったよ。
333 :
デフォルトの名無しさん :01/12/16 03:12
学生なのでVS6.0Proを買っちゃいましたー(^o^) あと7000円ほど出せばEntも買えましたけど。
334 :
デフォルトの名無しさん :01/12/16 03:14
ろくでもない学生なんぞのためにソフトを安くするな。
335 :
デフォルトの名無しさん :01/12/16 03:16
>>334 安くしているんじゃなくて、それがコスト+儲けなんだよ。
商用利用に使えるやつ(通常版)は、そのソフトを使って儲けるわけだから高いんだよ。
336 :
ひどいよマイクロソフト :01/12/16 03:16
あの価格差は余りにも異常、、、、
学生以外も使える商用利用不可のバージョンも出せばいいのに>マイクロソフト
爺なんか、すぐ死ぬだろ! ガキを洗脳するのが重要なんだよ。 将来の大事な金づるだ。
339 :
ひどいよマクロメディア :01/12/16 03:22
しかし、Flash5の差の小ささも許せないね、、、、
知り合いの中学生か高校生、大学生に頼めばいいじゃんよ。
341 :
箱入り娘作成中 :01/12/16 03:26
328,329 ほとんど同じ内容でカキコしてしまった。 スマソ
342 :
ひどいよマイクロソフト :01/12/16 03:27
それが、いないのよ知り合いに学生が、、、
アカデミックは、教育のために金のない学生に安く・・・ なんてMSがやるわけないだろゴルァ 金がある奴からは搾り取る ガキはどうせ払えないんだから、他社より安くして洗脳する そのうちアカデミックフリーとかやりだすかもな
>>324 今日は休みなんでサンプル作ってみた。
フォームにコマンドボタン貼り付けて
フォームにこのコードを貼り付けること。
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
ByVal DX As Long, ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_MOVE = &H1
Private Sub Command1_Click()
Dim x&, y&
x = 1200: y = 300 '移動したい座標
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, _
x * (65535 / (Screen.Width / Screen.TwipsPerPixelX)), _
y * (65535 / (Screen.Height / Screen.TwipsPerPixelY)), 0, 0
End Sub
もしかしたらもう解決済みか?(w
昨日の話だしなあ。
.NETっていつでるんですか.
VBでゲームを作ろうと思ってるんですが 2つのキャラクターとかがぶつかったときの あたり判定とかってどうやって設定したらいいんですか?
348 :
デフォルトの名無しさん :01/12/16 11:41
>箱入り娘作成中さん 自前ドラッグのサンプル。フォームにイメージを1個貼って実行。 右方向に1コマ分しか動かせないという条件です。 Dim DragX As Single, DragY As Single Dim OrgX As Single, OrgY As Single Dim MoveFlag As Boolean Private Sub Form_Load() Image1.Appearance = 0 '' フラット Image1.BorderStyle = 1 '' 実線 OrgX = Image1.Left: OrgY = Image1.Top MoveFlag = False End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) MoveFlag = True '' ドラッグ開始 DragX = X: DragY = Y End Sub Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim NowX As Single If MoveFlag = True Then '' ドラッグ中? NowX = Image1.Left + X - DragX If NowX >= OrgX And NowX < OrgX + Image1.Width Then '' 範囲内? Image1.Move NowX, OrgY End If End If End Sub Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) MoveFlag = False '' ドラッグ終了 End Sub
>>347 基本は矩形(四角形)処理。
APIにもそれ用の関数がある。
つまり、矩形1と矩形2とを比べて、
重なっていたらヒット。
重なってなかったらはずれ。ってな感じで。
キャラごとに矩形をいくつか設定すると
複雑なキャラでも結構それなりに使える。
格闘ゲーム系も同じやり方でやってる。はず。(w
351 :
デフォルトの名無しさん :01/12/16 14:16
うちのVB6のTreeViewオブジェクトのデザイン時プロパティの HotTrackingプロパティの説明に 「マウスすプロパティ・・・」と書かれているんですけど、これが普通ですか? Microsoftに言ったら何かもらえますか。
>>351 ホントだな。初めて知ったよ。
地図は間違いがあったら図書券もらえるらしいけどな。
353 :
デフォルトの名無しさん :01/12/16 18:46
vbでのネイティブコードコンパイルなんですが コンパイルする度に.obj生成してlinkしてcleanしてるような気がする C2.exeとLink.exeの引数解ればnmake.exeで コンパイルする事は可能ですかね? 教えてちょ
ああ,どうも.確か今年中に出るって言ってたような気がするんだが・・.Windows XPみたいに誰でも使うものではないから話題になってないだけかと思ったが,どうも本当に出る気配はなさそうだな.
355 :
デフォルトの名無しさん :01/12/16 22:11
VB勉強してます。 データへのアクセスというところででてきた、フレキシブルグリッドというコンポーネント が使用できなくて困ってます。 プロフェッショナルをインストールしてあるのに、 フレキシブルグリッドを使用するためのライセンスがありませんといわれます。 なぜ??
>箱入りさん 2時間ぐらいで、例のJavaアプレットをVBに移植しました。遊べます。 コマはまだ色の四角形ですが、GIF画像ファイルを入手すれば 即置き換えられます。 マウス座標の取得がFormと別々になるので、Imageコントロールは使わず、 Formだけにして、非表示のPictureBoxからPaintPictureします。 Java固有のスレッドやイベントの制御コード部分は無視してかまいません。 ほか 1.あのままではマウス移動の判定が鈍いので、改良。 2.手数を表示。←これは必須
357 :
箱入り娘作成中 :01/12/16 23:28
>>356 ん?板チェックしに来たら、もう出来てる?!
私はまだ完成してません。
もしかしてImageコントロールをFormにペタペタ貼ってた
のが、ただでさえ初心者の私をさらに追い込んでたとか・・・。
そんな気がしてきた!
VBで作ったものってDLLがいるとよくいいますが 私のパソコンでは(VAIOノートのPCG-FX33G/BP)DLLがないとか 言われたことはありません。 DLLを入れた記憶はないのですが、メーカー製のものってDLLとかが標準で 入ってるってことですか?
っていうか箱入り娘のレベル1も解けないんだけど
360 :
箱入り娘作成中 :01/12/17 00:11
361 :
箱入り娘作成中 :01/12/17 00:28
フォームに絵が出ない・・・。 ファイルのパスは合ってるのに。なんで? Private Sub Form_Load() Dim Pic_Waku As Picture Set Pic_Waku = LoadPicture("C:\~省略~\koma0.gif") frmMain.PaintPicture Pic_Waku, 0, 0 End Sub
>>361 frmMainにじかに書いているわけですね。
恐らくfrmMainのAutoRedrawがFalseになってるせいです。
この辺はWindowsの仕組みを理解していないとわからない所ですね。
363 :
箱入り娘作成中 :01/12/17 00:43
>>362 くそー!!!
めちゃくちゃくやしい!
(と心の中で思い、太股をこぶしで殴打)
>>358 VB6.0で作ったEXEをWindowsで動かすときに最低限
用意しなければいけないものはMSVBVM60.DLLだけです。
(一応VB6JP.DLLも。無くても文字化けしながら一応動く。)
標準でついているもの以外を使った場合はそれ用の
DLLやらOCXやらがいるけど、使ってないならいりません。
そしてMSVBVM60.DLLが標準でついているOSもあり、
WinMe,2000,XPです。(なぜかVB6JP.DLLはついてない。)
上記OS以外でDLLがないという文句を言われないメーカー製PCは
メーカーがトラブルを避けるために入れているのでしょう。
365 :
デフォルトの名無しさん :01/12/17 11:39
CSVファイルでシングルクォートで囲まれたデータを 文字列として取り込みたいのですが、 VBヘルプをみるとダブルクォートしか文字列として対応してないみたいです。 何か良い方法がありますか? レコードを一文字ずつばらしてカンマを検出し、 文字列の両端のシングルクォートを削るしか、VBでは方法がないのでしょうか?
>>366 そんな便利な関数があったんですね。
ありがとう
>>367 低脳ワザと言われそうな ex...
データ 'TEST_1','TEST_2' ってなってたら
Dim strX() As String
strBuf = "'," & "'TEST_1','TEST_2'" & ",'"
strX = Split(strBuf, "','")
でどうよ?
補足 添え字最低値、最大値はそれぞれLBound、UBound関数で判る。 但し、空要素の配列で何かしようとするとエラーが発生するので 自前で空配列を調べるような関数を作っておくべし。
370 :
デフォルトの名無しさん :01/12/17 14:13
Windows2000の「コンピュータの管理」で [コンピュータの管理(ローカル)]-[システムツール]-[共有フォルダ]を右クリックして現れるメニューの [すべてのタスク→]-[コンソールメッセージの送信...]をVBで制御する方法はありませんか? これを使えれば、他のマシンと色々交信できて楽しそうなんですが。。。
>>370 コマンドプロンプトから「net send」コマンドを
実行してはどうでしょうか。
使い方は、net /? で調べてみてください。
なんと、こんなコマンドがあったんですか。 これなら簡単にいじれますね。ありがとうございます。
373 :
デフォルトの名無しさん :01/12/17 16:03
ネットワークに繋がっている、コンピーュータ名の一覧を取得するには どうしたらいいでしょうか。できればドメインごとに取得したいです。
VBでP2Pみたいなソフトて作成できますか?
>>375 とりあえず WinSock でもいじってみれ。
378 :
箱入り娘作成中 :01/12/17 22:53
>>356 すいませ~ん!356さん
>1.あのままではマウス移動の判定が鈍いので、改良。
どんな風に改良したんですか?
まだ、完成してません・・・・。
379 :
デフォルトの名無しさん :01/12/17 23:12
>378 1.移動ベクトルの傾きを計算して、XとYのどちらを優先するかをまず判断。 実際にはAbsで絶対値の大小比較をするだけ。 今度は敏感すぎて、2マス連続で移動しちゃう(笑)。 2.マウスボタンを離した点で判定してたのを押し始めの点で判定。 困ったこと。ふつうは1マスずつ移動させるのですが、それだと瞬間移動みたいだから、 あの作者はわざわざ半マス移動方式にしたんでしょうね。 でも、手数のカウントが面倒です。いまは単純に2で割ってるだけです。 ほか、改良点としては効果音をつけました。
380 :
デフォルトの名無しさん :01/12/17 23:22
テキストをアンチエイリアスをして表示する方法を探していたら GetGlyphOutline()でできるようなこと書いてあったのですが 1.APIビュワーからコピペしたものを使おうとしたら 「ユーザー定義型は定義されていません」となってしまいます。 ("lpgm As GLYPHMETRICS"と"lpmat2 As MAT2"がひっかかってる?) 2.引数になにを入れたらいいかわかりません(汗 どなたかご教授お願いします。
381 :
箱入り娘作成中 :01/12/17 23:26
>>379 移動ベクトルの傾き・・・
押し始めの点で判定・・・・
もうちょっと勉強してから出直してきますっ
382 :
デフォルトの名無しさん :01/12/17 23:59
>381 むずかしく書いちゃったけど、ここのとこです。 If y - oldy > 32 Then Call DownKoma(x, y) これを If Abs(x - oldx) > Abs(y - oldy) Then でまず判定して、 If y > oldy Then Call DownKoma(oldx, oldy) 移動は1ドットでもオッケー(笑)。 ボタンを離した点と書いたのはカン違いで、ドラッグ中の点でした。 だから、そのままでもいいのかも。 GIF画像は、サイトにあったのを使いましたが、koma12.gifは 「You Win!」って大きく書いてあるだけなので、パス。
383 :
デフォルトの名無しさん :01/12/18 11:05
初歩的な質問で申し訳ないのですが、 .wavファイルのループ再生を行うにはどうすればいいのでしょうか。 現在標準モジュールに Declare Function sndPlaySound Lib "winmm.dll" _ Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _ ByVal uFlags As Long) As Long Public Const SND_SYNC = &H0 Public Const SND_ASYNC = &H1 Public Const SND_NODEFAULT = &H2 Public Const SND_LOOP = &H8 Public Const SND_NOSTOP = &H10 フォームに Private Sub Command2_Click() Call sndPlaySound("A:\中略\game.wav", SND_LOOP) End Sub と書いているのですが、エラー音しか出ないのです。 どこが間違っているのか教えてやってください。
384 :
デフォルトの名無しさん :01/12/18 11:48
>>383 ヘルプから抜粋:
指定されたファイルが見つからなかった場合、PlaySound関数はデフォルトの
サウンド(一般の警告音)を鳴らそうとします。
pszSoundパラメータで指定したサウンドは、使用可能な物理メモリに収まる
サイズでなければなりません
この辺で引っかかってませんか?
すいません。説明不足でうまく伝えられなかったようです。 ネットワークに繋がっているとは、単にネットワークコンピュータで 表示されるパソコンのことです。 やりたいことは、たとえばWORKGROUPにぶら下がるPC名の一覧が欲しいのです。 それで、さらにWORKGROUP以外にもグループがあったとしたら、そちらの PC名もほしいのです。
EXCELみたいなイメージの表形式でデータ表示したいのですが、 標準のコントロールでは何を使うのが一番いいんでしょうか?
>>386 DataGridかDataBoundGridなんかはどうでしょうか。
>>387 レスどうも。
>DataGridかDataBoundGrid
これは参照設定とかしないと出てこないモノなんですか?
参照設定じゃなくコンポーネント。 Microsoft DataGrid Control 6.0。
今日、本屋逝ったら、VB.NET本けっこう出てんだね。 いつ出んだろ?
>>389 ども。
今VB5使ってるんですが、
DataGrid Control というのが見つかりません。
なんていう名前のOCXかわかりますか?
392 :
デフォルトの名無しさん :01/12/18 19:48
>>391 DataGridはVB6です。
VB5なら Data Bound Grid かな
>>385 WNetEnumResource()API、WNetOpenEnum()APIあたりで
昔やった記憶があるよ。
395 :
質問です。 :01/12/18 21:12
本当に初心者の初心者です。 今度、中途の就職活動のSEの求人先で、「意欲はあるのは分かるが 何か言語試して欲しい」と言われました。それでPC環境的にもてっと り早いのがVBではないかと、言われたのです。基本は取りあえずわか りそうなのですが、何か何でもいいから作って欲しいと言われた課題内 容をどうしたものかと考えています。 VBの初心者として最初に組めたら良い、メルクマール的な、プログラム って何でしょうか?教えて下さい。 研修で良く初心者に課題として課される者でも良いのですが・・・。 よろしくお願いします。
396 :
デフォルトの名無しさん :01/12/18 21:13
VB6.0で、Internet Trancefer Controlを使ってFTPでファイル送信をしたいのですが、 連続で二回以上送信すると当然のようにうまくいきません。 画面を表示しない仕様のため、標準モジュールで処理を行っています。 (fromはVisibleをFalseにしています) うまく一回ずつ間を空けるように出来ないでしょうか。 Win2000
ああ、環境を書こうとしてミスった。。。 Win2000のVB6.0を使ってます。
プログラムもかけないのにSEか。 おめでてーな。
395はネタなんだよね? 本気でそんな質問しないよね?
>>395 小・中学生、高校生、バカな大学生が対象なら、
とりあえず、「日付と時刻のプロパティ」のようなものを
標準のコントロールだけで作らせる。
MIDの子フォームが常にMIDの親フォームの中央に表示される ようにするにはどうすればよいのでしょうか? WindowStateを変更するとエラーが発生して、 標準にしか設定できません。
>395 そりゃー「HelloWorld」に決まりでしょ
VBっつー事は業務系だよな。 なんかデータベースにつないでInsert/Update/Deleteなどを一通りやってみたら? SEってことだから設計能力も問われると思われ。 はっ、マジレスしてしまった
404 :
質問です。 :01/12/18 22:14
っていうか一応、研修もあるらしいンですが。 全く未経験という場合には課題を課しているそうです。
>404 課題ができないと落とされるってワケか?
406 :
質問です。 :01/12/18 22:30
その辺、アバウトなんですが、取りあえず、「適性」というのを見ようという 事らしいです。しかし、課題が何でも言いと言われても・・・。テキストには 時計プログラムとか載っていますが・・・。
>395 ネタかと思ったんだが・・・。 その会社はオープン系なんか? じゃ、403さんの言うとおりのDBとの連携なんかが いいんじゃネーノ? IEコンポーネント貼ったブラウザもどきとかもいいかもな。 ちなみに俺が前受けた会社はBMP画像の拡大をするもの とかが課題だったな。ゲーム系だが。 クソまじめにラグランジュ補完とかやったな。落ちたけど。
途中でカキコしちまった。 しかし、395さんよ、SEとして成功したいならさ、 提案能力も問われるわけだろ? 「そういう要求に対してどういう提案が出来るか」が その会社の人間が見たいとこだろうと思うぞ。 ここで、聞いて参考にするのもいいけど、 やっぱさ、自分で考えることに意味があるんじゃないの?
409 :
デフォルトの名無しさん :01/12/18 23:32
WordのVBAで質問です。 docファイル文章内すべて文字「XXX」検索して、置換するというプログラムを作ろうとしているのですが、 Findメソッドを使用し、Do loopで末尾までぐるぐる回そうとしたのですが、 文章の末尾どう取得してよいかわかりません。 Do loopで文章の先頭から末尾まで回すときは、どんな条件にするればいいでしょうか?
>>409 「マクロの記録」でやったらこんなコードになりましたが。
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "キーワード1"
.Replacement.Text = "キーワード2"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
411 :
デフォルトの名無しさん :01/12/19 00:35
>>410 ありがとうございます。
[XXXA1234]を[ZZZA1234]ではなく[ZZZ12A34]
というような置換をしたいのですが、この場合は
1.一行アクティブして、
2.INSTR関数で「XXX」を検索し
3.アクティブ行を置換
という順序で考えています。
説明不足ですいませんが、お願いします。
412 :
デフォルトの名無しさん :01/12/19 00:50
>411 どうしてわざわざ1行ずつやるの? INSTRで文書全体検索すればいいじゃん。 0が返ってくるまで。
413 :
デフォルトの名無しさん :01/12/19 01:11
>412 な、なんといっていいか・・・ あ、ありがとうございます。
vbNewLine と vbLf,vbCr,vbCrLf の使い分けを教えてください。 Excelのセル内改行はvbLfのようだけど 他はvbCrLfでなくても改行されます。 じゃあ vbNewLine じゃなくてもWindowsでは勝手に判断してくれるの?
415 :
デフォルトの名無しさん :01/12/19 02:40
>>415 レスありがとうございます。
リンク先の
>vbNewLine : 一応プラットホームに依存しない(事になってる)コードを書ける。
>まあ気休めだけどね。
は見ました。
聞きたかったのは
vbNewLine じゃなくてもWindowsでは勝手に判断してくれるの?
と書いたように、vbLf,vbCrを使用してもWindowsでは
改行してくれるので意識しなくてもようのかとか、vbLfでないとだめな場合とかをお聞きしたかった
のです。
>意識しなくてもようのかとか 意識しなくてもよいのか とか
418 :
デフォルトの名無しさん :01/12/19 03:07
>416 勝手に判断はしてくれない。 有名なところでは、メモ帳はvbLfやvbCrで改行しない。 逆に、vbCrLfでダメな場合は例外的ケースで、そんなに多くないはず。 それだけ覚えておけばいい。 もちろん、いつかは仕様変更されると思う。 だから、vbNewLineを使っておけば、いちおう安心ってことね。
419 :
質問です。 :01/12/19 08:47
>>408 まあ、営業力とか問われるのは分かっています。
そう言う業界だったんですが前職。
あからさまに聞けないことも2chなら、まあ聞いてもイイかなと思いまして。
結局決めるのは自分だってのは分かってます。
VBでメール送信バッチを作ります。 フリーのメール送信dll等も使わず、mapiを使わずに、 メール送信ってできますか?
>>421 どうやってやるのか、是非教えて頂きたい。
実行中に、次の命令との時間間隔を開けたいときはどうすればいいの? msgbox"bigin" 'たとえばここで一秒待ちたい msgbox"end"
>>423 Timer関数使ってDo~Loopとか。
425 :
デフォルトの名無しさん :01/12/19 12:24
>>423 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
して
Sleep 1000
とかでどうです
>>424 すいません、標準モジュールから意識的にタイマーイベントを呼び出す方法を
教えて欲しいのですが。。。。
どうやったらよいのでしょうか。
>>422 Winsockコントロールを使うか、いやならAPIを使えばいい。
WSAStartup
socket
connect
send
recv
closesocket
WSACleanup
あたりを調べてみて
>>427 Timer1.Enabled=True
か
Form1.TIMER1_TIMER
でどうでしょうか。
>>423 >>428-429 APIやTimerコントロール使いたくないなら
Sub main()
Dim ldblTimer As Double
MsgBox "Hoge"
ldblTimer = Timer
Do
If ldblTimer + 1# < Timer Then '1秒経過したら
Exit Do
End If
Loop
MsgBox "HogeHoge "
End Sub
正確ぢゃ無いけど。
情けない質問で申し訳ないのですが、 VBでテキストファイルを読み込む際、Tabも一緒に読み込むにはどうすればいいんでしょうか? Open filename for input as #1からInputステートメントで読み込むと、 データに含まれるTabが無視されて困ってます・・・
>>422 とりあえずRFCを読んでみるとよろしいかと。
ttp://www02.so-net.ne.jp/~hat/mailer/rfc.ja.html (日本語訳)
ttp://ash.or.jp/ash/tips_prog/htm/telnet_smtp.htm コードはこんな感じ。ものすごく単純化してあるし、まちがって
いるかもしれないので、このまま使わないでください。
あくまでも参考にということで。
------ここから
Private Sub Send()
Dim strHost As String
Dim strDomain As String
Dim strFrom As String
Dim strFromName As String
Dim strTo As String
Dim strSubject As String
Dim strData As String
With objWinsock
.RemoteHost = strHost
.RemotePort = 25
.Connect
Do While .State <> sckConnected Or Left$(mstrBuff, 3) <> "220"
DoEvents
Loop
.SendData "HELO " & strDomain & vbCrLf
Do While Left$(mstrBuff, 3) <> "250"
DoEvents
Loop
.SendData "MAIL FROM: " & mstrFrom & vbCrLf Do While Left$(mstrBuff, 3) <> "250" DoEvents Loop .SendData "RCPT TO: " & strTo & vbCrLf Do While Left$(mstrBuff, 3) <> "250" DoEvents Loop .SendData "DATA" & vbCrLf Do While Left$(mstrBuff, 3) <> "354" DoEvents Loop .SendData "From: " & strFromName & " <" & strFrom & ">" & vbCrLf & _ "Date: " & Format(Now, "ddd, d mmm yyyy hh:mm:ss") & " +0900 (JST)" & vbCrLf & _ "To: " & strTo & vbCrLf & _ "Subject: " & strSubject & vbCrLf & _ vbCrLf & _ strData & vbCrLf & _ "." & vbCrLf Do While Left$(mstrBuff, 3) <> "250" DoEvents Loop .SendData "QUIT" & vbCrLf Do While Left$(mstrBuff, 3) <> "221" DoEvents Loop .Close Do While .State <> sckClosed DoEvents Loop End With End Sub ------ここまで
>>432 解決しました、ありがとうございました!
重ね重ねで申し訳ないのですが、
テキストボックスの文字を、特定の部分だけ色替えしたり、
強調したりする方法ってありませんか?
>>435 拡張コントロールを使いたくないなら
自前で描画するしかないな。
>>433 コードまで頂き、感涙であります。
早速、試してみます。
>>433 コードをリーダーに見せたら、もう一回お礼を言って来いと
言われました。重ねて、ありがとうございます。
441 :
デフォルトの名無しさん :01/12/19 20:15
いまさらですが、15パズルが作りたいのです。 まず、どっからやればいいんでしょうか? 教えてください
ExelとかのVBAとVisualBasicとかで作るものの差はなんですか? VBAではここまでしかできないけどVisualBasicとかではできるとか ありますか?
>>442 いっぱいあるけど・・・・主な所をあげると、
VBAよりVBが優れている所
・ネイティブコンパイル可能
・必要なランタイムが少ない
・APIやフォームなどが使いやすい
VBAがVBより優れている所
・Office系のデータを簡単にいじれる
てな感じ(細かい所は無視)
でもやっぱり一番の魅力はネイティブコンパイルだろうなあ。
ソフトとして発表できるし、何より速い。
>>416 >勝手に判断はしてくれない。
>有名なところでは、メモ帳はvbLfやvbCrで改行しない。
レスありがとうございます。また舌足らずでした。
VBのプログラム中に
MsgBox "AAA" & vbLf & "BBB"
MsgBox "AAA" & vbCr & "BBB"
と書いても改行してくれているということを言いたかったのです。
だからvbNewLineって?と思った訳で
WindowsのVBではと書くべきでした。(Mac版もVBAはあるよね)
>vbCrLfでダメな場合は例外的ケースで、そんなに多くないはず。
昔、ラベルのキャプションがvbLFだったと聞いたことがあります。
今はvbCrLfでもOKのようですが。
そういった使い分けが知りたかったのです。
>vbNewLineを使っておけば、いちおう安心ってことね。
そうですね(^^)
>>436 レスありがとうございます!
RichTextBoxはよく分からないんですが、頑張って勉強してみます。
>>437 自前で描画はやろうと思ったんですが、IMEが使えなくなったりと
こっとの方がトラブル多くて諦めました・・・
>>441 一例を挙げてみます。
使うコントロール:ピクチャボックス
ピクチャボックスを4×4に分割して考え、それぞれの升目にパネルを配置する。
キーボードの↓←↑→が押されたらイベントを呼び出し、空白升に隣接したパネルを動かす。
(マウスイベントでも可)
パネルがそろえば、ゲームクリア。
パネルの配置は2次元配列(4×4)を使うと良いでしょう。
あとは、パネルの配置が変わるごとに、ピクチャボックスを再描画する。
------------------------------------------------------------
[Declaration]
Option Explicit
<変数の定義>
[Form_Load()]
<乱数配列を初期化する(Randomize)>
<パネルを配置する(乱数使用)→パネルの配列(2次元)に格納>
<ピクチャボックスに描画>
[Picture1.KeyDown(...)]
select case keycode
case vbkeyleft:……
……
end select
<ピクチャボックスに描画>
<揃ったかどうかを判定>
画像を使う場合、BitBlt APIを使うと良いです。
分かりにくくてすみません・・・
>>445 親切にありがとうございました。
今度、これを参考に作りたいと思います。
447 :
デフォルトの名無しさん :01/12/19 23:53
VB6ってWindows2Kで動きますよね?
448 :
デフォルトの名無しさん :01/12/19 23:59
いまさらですが、14、15パズルを解きたいのです。 まず、どっからやればいいんでしょうか? 教えてください
>>448 14パズルっていうのは聞いたこと無いです。
解くっていうのは、解くプログラムを作るっていうことですか?
だとすると、まず数学的に解く必要がありそうです。
451 :
デフォルトの名無しさん :01/12/20 01:02
>448 15パズルの局面数は、(16!/2)通り≒10 の13 乗。 まず、8パズルぐらいからやってみろ。 (9!/2)= 181440個
452 :
デフォルトの名無しさん :01/12/20 01:26
454 :
デフォルトの名無しさん :01/12/20 01:33
14-15パズルって、15パズルの14と15を入れかえる問題。
455 :
デフォルトの名無しさん :01/12/20 03:32
すいません、空のファイルを作りたいんですけど 本とか見てもどうもサッパリなんです。 どなたかお教授を・・・
456 :
デフォルトの名無しさん :01/12/20 06:58
openだかなんかを宣言した時点で空(0BYTEの)のFILEが作られます。 指定した容量の空のFILEなら知りません。
>>455 0で埋めたいんならRedimかDimで好きな大きさのByte配列を宣言して
Open後Put#で書き込む。
458 :
デフォルトの名無しさん :01/12/20 10:12
ソートについて勉強しているんですが、それについての質問です。 一度にすべてのデータをメモリに展開できないほど大きなデータがあったとして、 (たとえば100MBくらいで、中身は数値) これをソートするにはどうしたらいいのでしょうか。 少しずつ読み込んでソートしても、結局読み込んだ分の中でしかソートできず 全体としてのソートになりません。 そのような場合の考え方を教えていただければと思います。
459 :
デフォルトの名無しさん :01/12/20 10:18
レコード長つーか、データ1この大きさと比較するキーの大きさによるな。 たとえば、100MBのデータが50MBのデータ2個で、先頭の1バイトで比較できるなら… 100バイトのデータ1M個で、100バイト全部比較しないと順序が決まらないなら… 2バイトのデータ50M個で、数値として比較できるなら…
>>458 メモリの代わりにハードディスク使うってのはどう?
461 :
デフォルトの名無しさん :01/12/20 10:31
>>458 読めるだけ読んで -> ソート -> 一時ファイルに出力
を繰り返した後、一時ファイルをマージでどうでしょう?
#でかいデータならデータベースに格納した方がいいかもしれませんが。
関係ないけど今祭りやってるね。 【米TIME紙】田代を投票で世界一にしよう!!! みんなそっち行ってるの?
>>458 固定長レコードのファイルなら、Putステートメント、Getステート
メントを使って隣り合った前後のレコードを読んで比較してシーク
して書き込んで・・・ってできないかい?バブルソートならロジッ
クはすこぶる簡単。
処理遅いけど。100Mだったら即死だな。DLLだけCで作ると
か・・・?
色々ありがとうございます。 とりあえず今練習で使っているファイルには、ランダムな9桁までの正の整数が 1行に1つずつ格納しています。なので固定長ではありません。 あくまでデカ過ぎるファイルのソートについての勉強ですので、メモリではなく HDに展開というのはダメなんです。100MBというのもたとえなので、1000GBの データと考えてもいいです やはりなかなか難しいものなんですね。
465 :
デフォルトの名無しさん :01/12/20 12:39
FuncA という関数から FuncB という関数が呼ばれているとします。 FuncB で起こった実行時エラーや Err.Raise で起こしたエラーを FuncA の On Error GoTo ~ で検出したいのですが、うまくいきません。 どうすればよいのでしょうか? 言い換えると、FuncB 内で起こったエラーを引数や戻り値で 検出するのではなく、On Error GoTo ~ ですべて統一的に処理したいのです。 MSDN のガイドラインには引数、戻り値、On Error のどれかに統一すべきとあったので 可能だとは思うのですが・・ 質問の真意、伝わったかちょっと心配ですが、 よろしくお願いします。
>>465 FuncBでエラートラップしなかったら呼び出し元(FuncA)の
エラートラップに引っかかるはずだけど・・・
意味違うか?
467 :
デフォルトの名無しさん :01/12/20 12:52
>>458 9桁の整数なら、1,000,000,000バイトのファイル作って、それをカウンタにするのがいいのかな。
もっと少ない、たとえば4桁とか5桁の整数なら、メモリに配列とってカウンタにしてもいいけど。
整数の場合、ソートするっつか、どの数字が何回出てきたかを数えるほうを考えてみては?
468 :
デフォルトの名無しさん :01/12/20 12:57
>>458 100Mくらいなら、よみこめるんじゃないの?
スワップしまくりだろうけど、とりあえず動くでしょ。
>>458 ファイルを1行ずつ順に読んで一番小さなものを
ワークファイルに書き出し
また、ファイルを1行ずつ順によんで前回の一番小さい値より
大きくて、それ以外の中では一番小さい値を
ワークファイルに書き出し
あとは、繰り返し
遅いけど、できるね。
470 :
デフォルトの名無しさん :01/12/20 12:58
あと、でかいファイルのソートっていっても、レコードが長くて、 順序付けするときに比較するデータが小さい場合は、 メモリに比較するデータへのファイルポインタと比較するデータだけ 読み込んで、それをソートするっていう手もある。
>>464 >HDに展開というのはダメなんです
メモリに入らないんなら、HDD上でやるしかないと思うのですが。
472 :
デフォルトの名無しさん :01/12/20 13:34
>>466 さん
ふと気付いたことがあって、実験してみました。
Module1 と Class1 を用意して、
以下のコードを貼り付けて実行してみてください。
IsModule の値が True と False で結果が変わってしまいます。
なぜなんでしょうか?
473 :
デフォルトの名無しさん :01/12/20 13:34
>>472 のサンプルプルグラム
+++Module1+++ココカラ
Private Const IsModule As Boolean = True
Sub Main()
FuncA
End Sub
Function FuncA()
Dim clsC As Class1
On Error GoTo ErrorHandler
Set clsC = New Class1
If IsModule Then
FuncB
Else
clsC.FuncC
End If
ErrorHandler:
MsgBox Err.Number & " " & Err.Source
End Function
Function FuncB()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Module1---ココマデ
+++Class1+++ココカラ
Function FuncC()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Class1---ココマデ
474 :
デフォルトの名無しさん :01/12/20 13:36
>>473 はスペースミスってしまいました。
+++Module1+++ココカラ
Private Const IsModule As Boolean = True
Sub Main()
FuncA
End Sub
Function FuncA()
Dim clsC As Class1
On Error GoTo ErrorHandler
Set clsC = New Class1
If IsModule Then
FuncB
Else
clsC.FuncC
End If
ErrorHandler:
MsgBox Err.Number & " " & Err.Source
End Function
Function FuncB()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Module1---ココマデ
+++Class1+++ココカラ
Function FuncC()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Class1---ココマデ
475 :
デフォルトの名無しさん :01/12/20 14:51
画面に2つのコンボボックスがあり、 この2つをADO経由でグループ化させたいのですが 何か良い方法はないでしょうか?(VBAなら コンボ0.RowSource="SQL文" ) 画面のコンボ1を選択すると コンボ2には、あ1、あ2、あ3とグループ表示されます コンボ1 あ コンボ2 あ1 あ2 あ3 テーブルの定義は フィールド1 フィールド2 あ あ1 あ あ2 あ あ3 い い1 い い2 い い3 となっています
プログラムはコンボ1のセット部分だけ動きました コンボ2は×でした Dim itm As Variant Dim col As Collection Dim SQL As String Dim strTmp As String 'コンボボックス定義 SQL = "SELECT " & TBL_コンボ_フィールド1 & " FROM " & TBL_コンボ _ & " GROUP BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 _ & " ORDER BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 & " DESC" Set col = pclsCLS_RSAccess.RS_CmbSetting(SQL, TBL_コンボ_フィールド1) For Each itm In col strTmp = itm("Strg") Cmb_Name(0).AddItem strTmp Next Cmb_Name(0).ListIndex = 0 <--- コンボ1 Public Function RS_CmbSetting(ByVal SQL As String, _ ByVal strName As String) As Collection Dim rs_01 As Recordset On Error GoTo RS_CmbSetting_Err 略 Do Until rs_01.EOF RS_CmbSetting.Add AddItem(rs_01(strName)) rs_01.MoveNext Loop 略 End Function
>>472-474 まさかとは思うが、エラートラップの所「クラスモジュールで中断」のままにしてないよな?
「エラー処理対象外で中断」にしてるよな?
俺のとこはまったく同じになったけど。
漏れ、466じゃないんだけどさ
>>472 オプションの[全般]タブの[エラートラップ]を
「エラー処理対象外のエラーで中断」に変更してみそ
Σ(゚д゚lll)ガーン もうあったのか・・・
480 :
デフォルトの名無しさん :01/12/20 16:34
481 :
デフォルトの名無しさん :01/12/20 16:43
SelTextで、入力させた文を改行させるにはど~したらいいですか? Text.SelText=& Chr(34) & "うわーん" & vblf & "うわーん" & Chr(34) & だと、表示が "うわーん・うわーん" になってしまう それを "うわーん うわーん" にしたい。
あの、関連したことでもひとつ質問よいでしょうか? Func1 から Func2 を呼び、Func2 から Func3 を呼んでいるとき、 Func3 で起こった実行時エラーや Err.Raise で起こしたエラーを Func1 の On Error GoTo ~ で検出できるのでしょうか? ' 今、ちょうどエラー処理関係を作っている最中でして、 ' エラー処理を最上位関数で一括処理をしたいと考えているのです。 ' もしかすると無謀なことなんでしょうか?
>>481 "うわーん" & vbCrLf & "うわーん"
>>481 vblf → vbNewLine でいけるかと!
485 :
デフォルトの名無しさん :01/12/20 16:50
>>481 ちなみにわざわざ Chr(34) ってしなくてもダブルクォーテーション
重ねてもいいYO。見難くなくけど。。。
ex...
Text.SelText= """うわーん" & vbCrLf & "うわーん"""
いつも思うけど、2chで最もやさしい人間の集うスレだなぁ。
>>464 結局答え出た?もし答えがあるならレスキボンヌ。プログラマーとして知っておきたい。
490 :
デフォルトの名無しさん :01/12/20 22:53
ユーザー定義型をCOMに渡すのはどうすればいいんですか? var型に変換できないYO~
491 :
デフォルトの名無しさん :01/12/21 01:11
WordのVBAなのですが、 '全選択 wdApp.Selection.WholeStory strBuf = wdApp.Selection.Text というように、 Docファイルの中身を全選択し、Docファイルの中身を全て取得したいのですが。 テキストボックスの中身の値は取得できません。 どうすればできますか? ActiveDocument.Shapes("Text Box 1").Select をしてできなくはないのですが、 VBからDocファイルを非表示で開いているので、 使えないのです。 よろしくお願いします。
質問です。 最初に問題数を自分で選択できるクイズ形式のプログラムを作ろうと 思っています。問題数を選んだ後、約20の問題(フォームはバラバラ) からランダムに問題を抽出して、回答していき最後に結果出力をしよう と思うのですが、全体の構成はどのようにしたらいいのでしょうか? プロジェクトファイル フォーム(トップ) フォーム(選択画面) フォーム(問題1) フォーム(問題2) ・・・ フォーム(問題20) フォーム(結果出力) 標準モジュール という感じでいいのでしょうか? それともフォルダ(?)のような役割を果たしてくれるものが あるのでしょうか?あとランダムの発生の仕方も含めてわかりません。
追加です。 トップから次のフォームに行くのに、前のフォームを消したいのですが 一つ目から二つ目にいくのに Dim X As New Form2 X.Show Form1.Visible = False は、うまくいくのに次の Dim X As New Form3 X.Show Form2.Visible = False は、うまくいきません。 フォーム2が消えません。 どうすればいいのでしょうか? それとえ、そのようなケースの場合、最も一般的な やり方をおしえてください。お願いします。
>>492 何故フォーム20個なの?それはナゼなの??
クイズはテキストなの?絵が必要なの?どうなの?
ランダム(乱数発生)は Rnd関数 よ!
使う前にRandomize文が必要なのは
N88-BASIC(だったっけ?)を厨学生の時に見たのと同じだわ!
あと、このレベルの質問は「プロの人たち」が見ると痒いみたいだから
sage進行でこっそりやりましょ!
>492 フォームは3個でいい。できれば1個にしとけ! メモリ解放のやり方とか知らないだろうから、 メモリリークの元になる。
>>494 >>495 はい、画像使います。
20個いらないんですか?
どうやればいいのでしょう?
ちなみに参考書は
「新visual basic 入門」です。
メモリ解放というのは載っていませんでした。
あと、rnd関数というのもなかったです。
>>496 フォームは1個目がイラッシャイで問題数設定で
2個目に、問題を入れ替えながら表示させて
3個目に成績を表示させる、って方針で3個が良さげ。
From2が表示される→第1問→回答ボタン押される→正誤の判定
→メッセージボックスで正誤表示→メッセージボックスOKでForm2に第2問を表示→
→回答ボタン押される→正誤の判定
っつー流れで、Form2だけで問題数の分だけ繰り返す。
あと、その本だけに頼るのはヨセ。VBのヘルプも見れ。
netの検索も良い。同じ目的のサンプルがあたったりして(゚д゚)ウマー
498 :
デフォルトの名無しさん :01/12/21 07:02
リストボックスで質問です。 スタイルをチェックボックスにしたものを 自動でチェック付けたり消したりをしたいのです。 実際には、あるファイルのリスト一覧を表示して存在してるかを判断し、 存在してるものにはチェックを入れ、存在してないものはチェック無しとしたいのです。 List1.List(0).Checked = True みたいな感じなコマンド無いでしょうか?
>>498 List1.Selected(0) = True
500 :
デフォルトの名無しさん :01/12/21 09:54
VBスクリプト(.vbsファイル)で質問です。 DOSのバッチからvbsを呼び出しているのですが、 WScript.Quit (x) でxに値を入れても、常に%ERRORLEVEL%が0になってしまいます。 vbsから%ERRORLEVEL%を0にする(バッチに何らかの値を返す)方法はないのでしょうか? ちなみにvbs内部で環境変数としてERRORLEVELの値を変更してみたのですが、 DOSバッチには引き継がれないようです。 よろしくお願いします。
501 :
デフォルトの名無しさん :01/12/21 09:56
>>497 画像とかテキストボックスを一つ設定して、その中に
はじめはインビジブル設定にして
その都度、呼び出すということでよろしいのでしょうか?
画像は開発段階では乱立してしまうと思いますが
そういうことでしょうか?
あと、ヘルプがなんかみれません(><)
MSCD(みたいなの?)が必要って言われます。
取り合えず、今日の昼休みに本屋でいろいろ立ち
読んできます。
とりあえずVBやりたいという奴がいてそいつに何かいい本ない?と聞かれたので Microsoft Visual Basic6.0 ProfessionalステップバイステップVOL.1 日経BPソフトプレス 2500円 を勧めてやりました。 かくいう私自身がこれとVOL2の活用編の2冊でだいたいの事ができるようになったし VBについてまったく何も知らなかった私にもわかるように書いてあったので 勧めたのですが友人はダメみたいでした。友人曰く「難しすぎるっ!」そうです。 こんな友人にはどうすればいいのでしょうか?もっとわかりやすい本を薦める(これ以上初心者向けの本はしりませんが…) VBを諦めさせるのどちらかを考えてます。 どちらがいいと思いますか?
>>503 「読書百遍(ひゃっぺん)義(ぎ)自(おのずか)ら見る」 って言葉を送るとか(藁
ちなみに「読書百篇 意 自ずから通ず」って覚えてたけど間違ってたのか...
505 :
デフォルトの名無しさん :01/12/21 12:04
VBをはじめて1ヶ月の超初心者です。 VB6でACCESS2000のDBを使用したかったので、SP5をインストールしようと しているのですが、うまくいきません。 セットアップは正常終了するのですが、実際にはパッチがあたって いないようです。 おそらくSETUP.STRをインストーラが見つけ出せないのが原因と思われます。 「sp598ent.stf を、本来 stf ファイルがあるべきディレクトリにコピーします。 次に、コピーしたファイルの名前を setup.stf に変更し、Service Pack 5 の インストールプログラム (setupsp5.exe) を再び実行します。」 と、readmeに書かれているのですが、sp598ent.strというファイルが ダウンロードした中に見当たりません。 環境はWindows2000(SP2)です。 初心者の質問ですいませんが、できれば教えてください。
506 :
デフォルトの名無しさん :01/12/21 12:13
アドレスちょ~(*.wav)のインポート方法誰か知らない?
>>503 あるとしたら雑誌の扱いだと思うんだけど
真黄色の表紙の「Visual Basic スーパービギナー」ってのが
インストール開発画面の操作から始まってる、超初心者対象の本。
でっかくて見やすそうだったし。1500¥と安いし。
本の最後に用語集とかあるし
パソコン初心者レベルから、ってのならよいかも。
#ガッコの書籍部に3ヶ月ほどず~っとある。。。
508 :
デフォルトの名無しさん :01/12/21 12:19
>>503 VB以上に簡単な言語はない。
そういつが頭わりぃだけ。
殴っとけ。
509 :
デフォルトの名無しさん :01/12/21 14:20
マイクから入力した音声をバイナリデータとして扱いたいのですが、 どんな関数を使ったらいいのでしょうか?参考書籍とかあったら教え てください。よろしくおねがいします
510 :
デフォルトの名無しさん :01/12/21 14:26
Dim a As Integer Dim b As Integer a = b = 0 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- がなぜa = -1, b = 0になるんでしょうか? わーからなぁーいぃー♪
>510 ネタでも答えてみるか。 まず b は宣言されて初期値が 0 だから b は 0 。 そんで a には b = 0 を評価した値 True (= -1) が入っている。 試しに a = b = 0 の前に b = 10 とかやってみれ。
513 :
デフォルトの名無しさん :01/12/21 14:47
>>511 trueって-1なのか!
にゃーるほーどねぇー。
514 :
デフォルトの名無しさん :01/12/21 14:49
論理notと算術notが同じ結果になるからね
>>512 VB使いさん
ありがとうございます!早速やってみます
お世話になりました
>>513 ネタでも答えてみるか。
必ずしも True = -1 ではない。
True は 0 以外ならなんでも True。逆に False は絶対 0。
ex...
CBool(1)
CBool(999)
CBool(-555)
これ全部 True 。
517 :
デフォルトの名無しさん :01/12/21 15:14
Trueが-1なのと0以外は真なのを、わけて考えようぜ
補足: CInt(True)ってやると -1 が帰ってくるが、 これがVBでの True の デフォルト値?なだけ?
>>517 同意。軽はずみだったかも。
-1 は True、0 は False。それ以外は False 以外。
つまり Boolean型は True/False しか表せないので、
False 以外で True を返しちまえっていう
CBool関数の仕様なのかも。。。ゴメソ。
age
>>499 ありがとうございます。
調べる力が欠けてました(汗
522 :
デフォルトの名無しさん :01/12/21 23:10
>505 エンタープライズ版のVB6使ってる? >518 ほかの言語だと、True=1だったりする。 たしかVBでもバージョンによって違ってたり。
友人にVBより簡単な言語ない?って聞かれました… その時とても鬱な気分になりました。 私はHTMLでもやれば?と言ったら馬鹿にしてるのかっ!って逆ギレされました。 HTMLを言語というのかどうかは分かりませんが俺の中ではHTMLとVBの難しさは同レベルなのですが VBより簡単な言語ってあります?
>523 マシン語でも勧めてやれよ。 言語仕様はこれが一番簡単だよって(ワラ
527 :
デフォルトの名無しさん :01/12/22 21:44
>523 ファミリーベーシック
CXBXL
>>523 アセンブラ。(半分マジ)
簡単さの意味が違うが結構ハマるかも。
530 :
ひどいよマイクロソフト :01/12/22 23:47
そんな君達にDelphiです。 フリーで試せるし。
531 :
俺だけじゃないよね :01/12/22 23:49
今日会社の結構偉い人(こいつはろくにメールも出せない)に 「君は本を見ないとプログラムもできんのかね?」 と言われた。 まさかコマンドを全て覚えるなんて不可能だろうし… もしかしてみんなはプログラムとか組むときに本とか全然見ずに 書いてる?
>>531 MSDNは見る。APIなんか全部覚えられんよ。
つか、リファレンスは誰でも見るでしょ。 まぁ本だとコピペとかできないし邪魔だから、基本的にオンラインヘルプ だけど。
>>531 逆に覚えてる奴ってやばい気がする。
「こんなのがあったな」ってのを覚えておけば十分だろ
たまにいるよな。関数マニア(藁
リファレンスとかが1つのCDに納められてるものとかないの?
537 :
デフォルトの名無しさん :01/12/23 08:45
そりゃもちろん全部覚えていて使いこなせるのが理想だが こんなのがあったなってのを覚えておいて それを書籍なりMSDNあたりから探せる能力があればいい。
538 :
デフォルトの名無しさん :01/12/23 10:47
>537 確かにな… 中途半端に覚えていて適当に無理だと判断するより ちゃんと検索してさがせる能力があったほうがいいです
539 :
デフォルトの名無しさん :01/12/23 11:15
540 :
デフォルトの名無しさん :01/12/23 23:13
1~15の中から5つ適当に選ぶ関数はどのように記述すればいいのでしょうか? どなたかおしえていただけないでしょうか?
542 :
デフォルトの名無しさん :01/12/23 23:20
ダメでお願いします。
543 :
デフォルトの名無しさん :01/12/23 23:20
>540 いくら初心者質問スレとは言っても検索くらいはしたよね?
544 :
デフォルトの名無しさん :01/12/23 23:24
>>540 こう言うアルゴリズムを自分で考えることで力がつくんだと思うYO
どうでもいいけど。
n = 5; m = 15; for(i = 1; i <= 15; i++){ if(乱数() < n/m){ // 乱数()は0から1を出力 // iを選択。 選択(i); n = n - 1; } m = m - 1; } VBよく知らないけど、 C風に書けばこんな感じでできると思う。
548 :
デフォルトの名無しさん :01/12/24 00:02
>540 1~15をいったん配列に入れて、シャッフルすれば、重複しない。
>>548 シャッフルの回数は?
論理的な基準ありますか?
550 :
デフォルトの名無しさん :01/12/24 00:16
シャッフルして前から5つとればOKってのはかなりいいかも。 おれもそういう機会があったら使わせてもらうYO
>>550 おーい、はじめの配列に入れる順序と
シャッフルの回数はどうするんだよー
それでホントにちゃんとランダムになるのかよー
#540はランダムにしろとは言っていないが(^^;
552 :
492です :01/12/24 03:43
>>493 はどなたかおわかりにならないでしょうか・・・?
それと、今
>>497 みたいな感じでプログラム組んでいるのですが、
問題のところで、コマンドを一つにして、回答と次の問題を同時に
こなすようにしています。
が、一問目ではテキストボックス等全部空なので、はじめは
空の状態でコマンドを押さなければなりません。
コマンド_クリック ではなくてはじめからプログラムが
実行されるようにするにはどうしたらいいのでしょうか?
フォーム_アクティベイト
フォーム_ロード
ではうまくいきませんでした。
どなたかお願いいたします。
>>549 ,
>>551 乱数の質にもよるけど、要素数と同じ回数だけ入れ替えを行えば大丈夫。
経験的な基準ですが。
入れ替える要素の両方の添え字をランダムに選ぶんじゃなくて、片方は順番に選び、
もう片方はランダムに選ぶっていう方法もある。そっちのほうが確実にバラけると思われ。
言葉だとわかりにくいと思うのでコード例でどうぞ。
Dim Num(1 to 15) As Integer
Dim Tmp As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To 15
Num(i) = i
Next i
For i = 1 To 15
j = Int(Rnd(1) * 15) + 1
Tmp = Num(i)
Num(i) = Num(j)
Num(j) = Tmp
Next j
>>553 要素数と同じ回数だと半分くらいの要素が
元の位置から動かないような気がします。
順番に配列に数字を入れてからシャフルして
はじめの5個とるとその中に1-5までの数が
動かずに2,3個残っていたりしませんか?
個人的には
>>546 の方法がお勧めだとおもいますけど…。
>>554 それを避けるためにすべての要素を必ず交換するようにするわけです。
それが上のコード例です。
>>553 やっと理解しました。
すべての要素を別な要素と交換するんですね。
なんとなくバラけそうな気がしてきました。
>>551 理論的に出せる
順番に n (0<=n<要素数) 番目の値と Rnd*(n+1) 番目の値を入れ替えればいい
元の並びはどうでもいい
でも俺だったらそんな効率の悪いことはしないな。
普通に人間が15個の配列から5つ取り出すのと同じことをやればいい。
俺もVBわからんからC風に書くけど
n = 5; m = 15;
for( i=0; i<n; ++i )
{
j = (int)( Rnd()*m ); // 0<=rnd()<1 ってことで
ResultArray[i] = OriginalArray[j];
OriginalArray[j] = --m;
}
(誤)すべての要素を (正)すべての添え字位置の要素を 迂津柁嗣埜卯……
アレイを2つも作らなくても、
>>546 でやれば
よいのではないかと思うのですが。
どうでしょう?
>>561 選択した結果を保存するのに配列が必要では?
>>557 のやつは配列が規則正しく並んでるときの例ね。
規則正しく並んで無いときは
OriginalArray[j] = --m;
を
OriginalArray[j] = OriginalArray[--m];
にしておくれ。
>>562 >選択した結果を保存するのに配列が必要では?
>>546 では15個中5個選択なら要素数5個の配列が必要です。
ただし、10万個中5個選択でも要素数5個の配列でできます。
シャフルする方法だと、もっとたくさん必要になりますよね?
一応言っておくと結果の配列はどんな方法だろうと5個
>>557 は元の配列を破壊するから、そのコピーが必要。
10万個から5個取り出すには10万個のコピーを行う必要がある。
その代わりループ回数は5回
>>546 はもとの配列にはノータッチなのでコピーのオーバーヘッドは無い。
代わりに10万回ループしなければいけないから、10万回乱数を発生させて10万回除算をしないといけない。
>>546 のやり方だと、処理が終わる保証がないという点がちょっと問題です。
(特に、選択元の要素数が極端に多い場合)
ヘタレな乱数ライブラリを使っているときは要注意です。
まあ、まずありえない事ですけど。
>>553 のやり方では、シャッフルにメモリは食いますが、処理が必ず終わる
(それもほぼ一定時間で)ことは保証できます。
>>551 乱数がちゃんと均一に発生するなら、元の要素数の2分の1の回数のループで十分です。
>>566 >ヘタレな乱数ライブラリを使っているときは要注意です。
お~~い。ここはVBのスレだよ。
なんか脱線して内科医?
場合によって使い分けるのが最適かと思われ。
・
>>546 速度は落ちるがメモリを節約したいときに有効。
全体の個数と選ぶ個数が比較的近いとき。
・
>>547 単純でわかりやすいが全体の個数と選ぶ個数が近いときには極端に時間がかかる。
(終わらない可能性もアリ)
・
>>553 全体の個数と選ぶ個数が極めて近いときに有効。
ただしもっと最適化できる(For文を1つにまとめられる)
・
>>557 全体の個数に比べて選ぶ個数が少ない時に有効。
元の配列を破棄してもかまわないときは得に効果アリ。
そうでなければ配列のコピーが行えない言語にはお勧めできない。
571 :
デフォルトの名無しさん :01/12/24 07:51
>493 フォームをShowする時にフォームのオーナーを明示してみたら?
>>493 最初の
Dim X As New Form2のForm2と
次の
Form2.Visible = FalseのForm2はまったく別物。
Xに入れたんならXで処理しなくちゃだめ。
573 :
492です :01/12/24 12:02
Xで処理というは具体的にどういうことでしょう? 二つ目を別定義にして、やるってことしょうか? 以下のようにしてもダメでした。 それと「フォームのオーナーに明示」をもう少し わかりやすくおしえて頂きたいのですが。。。 Dim X2 As New Form3 X2.Show X.Visible = False
>>573 まあ、要するにこういうことをやりたいんだよな?
Private Sub Form_Load()
Dim X As New Form2, X2 As New Form3
Form1.Show
Form1.Visible = False
X.Show
X.Visible = False
X2.Show
End Sub
>>492 のコードってフォームに書いてそれぞれ別のファンクションに
してるか?だとしたら変数の有効範囲のせい。
標準モジュールに書くか、ひとつの関数にすれ。
はじめまして、恐縮です。プログラムを実行した時に自分のプログラムの 所定の場所にファイルを増やしたり、または実行した時に、所定の場所の ファイルを消すコードはどうやってつくればいいの。 sub teach me() msgbox "osiete" end sub
>>575 Open,Close,Kill,App.Path等を使う。(Copy,Nameとかでもいい。)
ファイル処理全般を勉強するべし。
あと、ネタでも関数名にスペース入れるのはやめれ。
見てて落ちつかねえ。(w
>>576 すいません、なんせプログラムは最近始めたばかりなので、本は「十
日間のエクセルVBA」を使っています。一応VBでテキストファイ
ルのコピーを勉強しました。が、以下の「fso」どんな役割があるの
でしょうか。「Dim」は定義付けでした?
Private Sub Command1_Click()
Dim fso
Source = "c:\r.txt"
destination = "c:\r2.txt"
Set fso = CreateObject("scripting.filesystemobject")
Call fso.copyfile(Source, destination)
End Sub
ここから発展して、例えばCドライブのファイルをランダムに選択して、
コピーするという命令などはできるのでしょうか。よければ、教えてくだ
さい。
>>578 流れとしてはCドライブにどのファイルがあるか調べて、好きなファイルを
コピーするといった形になる。Folderオブジェクトでファイルの一覧を
取得できるはずなんで確認してみれ。
俺はFSOが嫌いなんで使ってない。スマソ。
>Dim fso
はfsoという変数をVariant型で宣言する、ということ。
>>578 具体的に何やりたいの?
ランダムにファイル拾ってコピーすりゃいいの?
>>578 Dimは変数を宣言するもので、fsoはそれで宣言された変数。
で、Set fso = CreateObject(~)の行で
FileSystemObjectオブジェクトのインスタンスを作成して
そのオブジェクトへの参照をその変数に入れている。
どんな役割かというと、FileSystemObjectには
CopyFileというファイルをコピーするメソッドがある訳で
そのメソッドを使うためにオブジェクトを作成している訳だ。
まぁオブジェクトとか言われてもわからんだろうけど、
要はそういう道具を使えるようにしているわけだ。
scripting.filesystemobjectというのが道具の設計図の名称で
fso(という名前がつけられたもの)が実際の道具。
CreatObjectという命令でその道具を設計図から作り出している訳。
その道具のFileCopyという機能を使ってコピーしてるわけだな。
> ここから発展して、例えばCドライブのファイルをランダムに選択して、
> コピーするという命令などはできるのでしょうか。よければ、教えてくだ
まず何をしたいのか教えてくれ。
VBA+そういう怪しい動作=ウイルスとしか思いつかん。
VBで全画面表示ってできますか? WindowStateで最大化ではなくゲームとかであるようなフルスクリーンに したいのですが可能でしょうか?
DirectX使いたい、と言う意味?それとも単にメニューとかの構造物を隠したい、という意味?
>>583 最大化や最小化のボタンのあるバーの部分を見えなくしたいのですが…
ボタン等をFalseにしても上部のバーの部分は残るのでバーを消したいのですが
DirectX関係じゃないと無理ですかね?
>>584 FormのCaptionを消して、ControlBox=False。
これのことか?
586 :
デフォルトの名無しさん :01/12/25 08:36
>>585 ありがとうございます。
なにぶん初心者なものですいません。
これで目的は達成したのですが、この状態でマウスカーソルを上の方に持って
いくとメニューが出てくる(普段は見えないようになってる)ようにできますか?
>>586 トップメニューを全部消すとメニューが消えて何か表示させると
メニューが出てくるからMouse_Moveイベントと組み合わせれ。
588 :
デフォルトの名無しさん :01/12/25 09:54
VBのTextで表示できるバイト数を 500KBぐらいまで増やすことって出来ないですか?
589 :
デフォルトの名無しさん :01/12/25 11:35
>>581 ウイルスと作ってると言われれば、否定はしないです。でも、私のPCの
中を整理してくれるウイルスを作ろうと思っています。
例えば:ファイルがごちゃごちゃになった時、それらを拡張子毎に一つの
ファイルに入れる。という作業やランダムに語弊があったようですが、こ
れは、適当に選択という意味ではなく、まとまった物を選んでという意味
で使いました。あと、もう一つはウイルス系の核を取り除くために、ファ
イル探索した後に、それらを一気に消去するアプリをつくろうと思ってい
ます。
怪しすぎるのが笑える
ファイルを整理するソフトなんてウイルスじゃなくてできるよなぁ。
&nsbr;
596 :
Cp.Alpha2 :01/12/25 17:34
Sendkeys使って共有パスワード破るプログラム作成中
>>591 VBSだけど、こんな感じでいいのかな?
参考にしてみてください。以下をコピーして
delete.vbs として保存。ダブルクリックする。
邪魔くさいファイルを削除して、対象ファイルのパスを
C:\log.txt に書き出します。
使用はくれぐれも自己責任でお願いします。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
コードの意味が分からなければ使用しないほうが
良いと思います。
'ここから--------------------------------------------------
'**Start Encode**
Dim FSO, TXT
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TXT = FSO.CreateTextFile("C:\log.txt", True)
Call ShowFileList("C:\", FSO, TXT)
TXT.Close
MsgBox "complete"
Sub ShowFileList(folderspec, fso, txt)
Dim f, g, f1, f2, fc, fd
On Error Resume Next
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
Set fd = f.SubFolders
For Each f1 in fc
If InStr(1, LCase(f1.Name), ".com") <> 0 Or _
InStr(1, LCase(f1.Name), ".exe") <> 0 Or _
InStr(1, LCase(f1.Name), ".bat") <> 0 Or _
InStr(1, LCase(f1.Name), ".sys") <> 0 then
txt.WriteLine(f1.Path & "\" & f1.Name)
Set g = fso.GetFile(f1.Path & "\" & f1.Name)
g.Delete
Set g = Nothing
End If
Next
For Each f2 in fd
txt.WriteLine(f2.Path & "\")
Call ShowFileList(f2.Path & "\", FSO, TXT)
Next
End Sub
'ここまで--------------------------------------------------
訂正 SRCENC delete.vbs "readme.txt .vbn"
スマソ また間違った。拡張子は“vbe”ね。
601 :
ウルトラ初心者 :01/12/25 18:31
VB初心者どころかパソコン暦半年の超初心者なんですが、これからVBの勉強をしようかとおもっているんですが、ラーニングとプロフェッショナルとエンタープライズがありますが、これらはどう違うのですか?大変しょうもない質問で申し訳ないのですが.
602 :
Cp.Alpha2 :01/12/25 18:36
USSエンタープライズ号はこれから学ぶにはあまりに豪華すぎます。 プロフェッショナルはプログラマーに推奨。 ラーニングはやや機能が落ちますが、値段も得で初心者には推奨。
>>601 ラーニングの低機能さには泣くぜ。あとで。
>>601 プロフェッショナルにしておくのが無難だと思われ。
正直今からVB買う意味あるの? 2月にはVS.NETでるんだし。 現行のVBはきれいに消え去ってるよ。
607 :
デフォルトの名無しさん :01/12/25 19:46
メーラー作ってるYO。 VBの質問じゃないんだけど、 VBからVBSとかWHSとかでアドレス帳のデーターを取得できない?
なぜにVBから「VBSやWHS」経由でアドレス帳にアクセスしたいねん? 素直にVBからアドレス帳にアクセスするか、 VBSやWHSを使うならVBはいらんちゃうか?
609 :
デフォルトの名無しさん :01/12/25 20:06
611 :
デフォルトの名無しさん :01/12/25 20:56
VBで二次元配列にデータを格納したいのです。 で、Public Test(1 To 9,1 To 9) as String それに Test(0,0) = "あ" Test(0,1) = "い" という感じでTest(9,9)まで文字を格納したいのですが、 いちいちTestとかかなくてよい方法ありませんか? Arrayっていうの使えないみたいなのです。
612 :
デフォルトの名無しさん :01/12/25 21:11
>>611 Array ってVariant 型でしょ。
Dim varTest As Variant
Dim i As Long
varTest = Array("あ", "い", "う", "え", "お")
For i = 0 To 4
Debug.Print CStr(varTest(i))
Next i
613 :
デフォルトの名無しさん :01/12/25 21:18
DataListBoxの使い方が詳しく乗ってるサイト無いっすか? ヘルプよく分からなくて・・・。
614 :
デフォルトの名無しさん :01/12/25 21:26
レス感謝です。 ただ、上記の方法ではたとえば Debug.Print CStr(varTest(0,1)) とするとエラーになり二次元配列にならないのです。 verTest(i,j)とやったときに"あ"とか"う"とかが でるよう対応したやつを作りたいのです。
615 :
デフォルトの名無しさん :01/12/25 21:43
612ですが 解決しそうです ちとイメージどおりのスマートさはないですが。
616 :
デフォルトの名無しさん :01/12/25 21:58
苦肉の策としてはこんな感じでしょうか。 もっと良い方法があると思いますが。 Dim varTest As Variant Dim strBuff As String Dim i, j As Long Dim m As Long: m = 4 Dim n As Long: n = 4 varTest = Array("あ", "い", "う", "え", "お", _ "あ", "い", "う", "え", "お", _ "あ", "い", "う", "え", "お", _ "あ", "い", "う", "え", "お", _ "あ", "い", "う", "え", "お") For i = 0 To m strBuff = vbNullString For j = 0 To n strBuff = strBuff & CStr(varTest((m + 1) * i + j)) Next j Debug.Print strBuff Next i
617 :
SENJU :01/12/25 22:38
【質問内容】 コマンドをダブルクリックして「バッチファイル(~.bat)」や 「実行ファイル(~.exe)」を起動するときのコーディングを 教えてください。
618 :
デフォルトの名無しさん :01/12/25 22:42
619 :
デフォルトの名無しさん :01/12/25 22:55
VBとかって実行するときにDLLとかがないと「~DLLがない」と 言われますがどうしてWindowsには標準でDLLが入ってないんですか?
620 :
デフォルトの名無しさん :01/12/25 23:19
半角文字を全角文字に換える関数無いですか?
622 :
デフォルトの名無しさん :01/12/25 23:28
623 :
デフォルトの名無しさん :01/12/26 00:17
MDIで子Formが2つあるのを作っているのですが、 Form1とForm2を同時にアクティブにしておく方法はないでしょうか。 というのもメニューエディタで編集したやつはアクティブフォーム側の やつが表示されますよね、だけどForm1とForm2のメニューは同じなので 両方にメニューエディタで作るのは二度手間になるのです。 もしくはForm1につくったメニューをForm2側にコピーする方法を教えてください。
624 :
デフォルトの名無しさん :01/12/26 00:49
>>615 いまさらだが、こっちの方がマシかも
Dim varTest As Variant
Dim strBuff As String
Dim i, j As Long
Dim m As Long: m = 4
Dim n As Long: n = 4
varTest = Array(Array("あ", "い", "う", "え", "お"), _
Array("あ", "い", "う", "え", "お"), _
Array("あ", "い", "う", "え", "お"), _
Array("あ", "い", "う", "え", "お"), _
Array("あ", "い", "う", "え", "お")) _
For i = 0 To m
strBuff = vbNullString
For j = 0 To n
strBuff = strBuff & CStr(varTest(i)(j))
Next j
Debug.Print strBuff
Next i
>>623 フォームを配列にしちまうか、
frmファイルをメモ帳で開いて、プロパティ部分をコピるか。
そーゆーのじゃダメ?
626 :
デフォルトの名無しさん :01/12/26 09:27
>>625 うむー
感謝です。
両方アクティブってのは実質無理なんでしょうか。
どこかのフリーウェアでなってたような。
なってるように見せる方法ってないですか。
>>623 =
>>626 MDIFormにメニューを付けて、ActiveFormを見て処理を分岐するんじゃ駄目?
628 :
デフォルトの名無しさん :01/12/26 18:31
質問お願いします。 プロポーショナルフォント(MSPゴシック)を使って帳票出力したいのですが、 表示領域の幅に合わせてプログラムで文字列を区切って改行させようとしています。 VBで、プロポーショナルフォントの文字列の幅を取得する方法ってあるでしょうか。
俺なら、こうするね。 ラベルを一つ作って、プロパティのAutosizeをTrueにし、 Captionに入れたい文字を入れ、そのwidthを取得する、と。 すこしダサいか・・・。
630 :
デフォルトの名無しさん :01/12/26 21:03
Grid系で一番よく使われているのってどれですか?
>>628 表示領域と同じフォント指定したPictureとか用意して
そこでTextWidth("出力したい文字列~")で取得すればいいんちゃう?
画像ビューアを作っているのですがこのビューアに「ぼかし」 の機能を付けたいのですがどういった感じで組めばいいのでしょうか? モザイクとかなら10ドット単位とかの正方形で区切ってそれぞれのRGB値を 操作するといった感じでできると思いますが、ぼかしの場合が 思いつきません。 どなたかアドバイスいただけないでしょうか。
633 :
デフォルトの名無しさん :01/12/26 23:23
>630 目的によって使い分けられてる。 >632 ガウスぼかしなら、 g(x, y)=exp(-(x^2+y^2)/(2*s^2)
634 :
デフォルトの名無しさん :01/12/26 23:32
すみません。 質問なんですが、 DatabaseとRecordSetのオブジェクトをつかうには, どの参照設定を入れれば良いんでしょうか?
>>634 Microsoft DAO x.xx Object Libraryかな。
怪しいのを参照設定してオブジェクトビューアで見てみ。
636 :
デフォルトの名無しさん :01/12/27 07:13
>635 できました。ありがとうございます
>>630 です。
・データベースとつなぎたいです。
・複数列表示できるリストボックスとして使いたいです。
・表示されてる項目をクリックして、そのアイテムを取得できるのが良いです。
できましたら、上記のに当てはまるGridを教えてください。
出来れば3番目のやり方も教えてもらえるとありがたいです。。
実行時のフォームを画像として 保存するにはどうすればよいのでしょうか? 保存する際に、ウインドウのタイトル、枠などを除いて 画像として保存したいです。
>>628 sngWidth = Form1.TextWidth("AIUEO")
sngWidth = Printer.TextWidht("AIUEO")
のように、TextWidthメソッドでFontプロパティに設定されている
Fontの幅なら取れるよん
642 :
デフォルトの名無しさん :01/12/27 13:37
自分の所属しているネットワーク(WORKGROUPなど)内の パソコン名とそのPCのログインユーザ名を取得する方法がありましたら教えてください
>>642 読みにくいのは勘弁な
--- 標準モジュールに
Option Explicit
'ユーザ名を取得する
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( _
ByVal lpBuffer As String, _
nSize As Long _
) As Long
'コンピュータ名を取得する
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" ( _
ByVal lpBuffer As String, _
nSize As Long _
) As Long
--- 標準モジュール ここまで
とやって
コマンドボタン1個とテキストボックス2個貼ったフォームを用意。
--- テスト用フォーム
Private Sub Command1_Click()
Dim lngRetAPI As Long
Dim tempX As String
tempX = String(256, Chr(0))
'ユーザ名(GetUserName)
lngRetAPI = GetUserName(tempX, 256)
Text1.Text = Left$(tempX, InStr(1, tempX, Chr(0)) - 1)
'コンピュータ名(GetComputerName)
lngRetAPI = GetComputerName(tempX, 255)
Text2.Text = Left$(tempX, InStr(1, tempX, Chr(0)) - 1)
End Sub
--- テスト用フォーム ここまで
で、ボタンを押す。
MID子フォームで、他のMID子フォームにフォーカスが移っても、 常に最全面に表示されたままのフォームを作成したいのですが、 どうすればよいのでしょうか?
>>643 それだと自分のパソコン名とログインユーザ名だけしか解らないと思います。
ネットワーク内のすべてのパソコン名と、そのログインユーザ名を調べたいのですが、
やはりこれは難しいのでしょうか
イミディエイトウインドウをクリアするにはどうすれば良いのでしょう? Debug.Print で出力してると残ったままになので、 クリアして使うには、毎回手作業で消してますが、面倒なので
650 :
デフォルトの名無しさん :01/12/27 15:19
データ保存先なんかのディレクトリを指定させる場合、どんなコントロール使ってますか? DriveListBoxとDirListBox使えばできるけど、チョト面倒臭い ちなみにVBのバージョンは5です
>>651 VB5 で出来るかどうかはやったことないのでわからんけど、
Shell32.Shell(SHDOC401.DLL) オブジェクトの
BrowseForFolder メソッド使ってますです。
653 :
デフォルトの名無しさん :01/12/27 15:50
>>651 漏れはこんな感じでやってる。
Private Sub cmdPath_Click()
Dim typBrowseInfo As BROWSE_INFO
Dim lFoldPointer As Long
Dim sPathName As String
With typBrowseInfo
.hwOwner = frmMain.hWnd
.lRoot = CSIDL_DESKTOP
.sTitle = "フォルダを選択してください"
.lOptions = BIF_RETURNONLYFSDIRS Or BIF_DONTGOBELOWDOMAIN
End With
lFoldPointer = SHBrowseForFolder(typBrowseInfo)
sPathName = String$(256, vbNullChar)
Call SHGetPathFromIDList(lFoldPointer, sPathName)
CoTaskMemFree lFoldPointer
If Left(sPathName, 1) <> Chr(0) Then
Debug.Print LCase(sPathName)
End If
End Sub
>>650 サンクス 英語に戸惑ったけどこれで大丈夫みたい
Drag&Drop後のMouseUpイベントを取得する方法について教えて下さい。 具体的には... DragModeを手動にし、MouseDows時にDragメソッド(引数 1)で Drag&Dropを行うのですが、Drag&Drop後のMouseUpイベントが 取得できません。 フォーム外にDragされた場合に、イベントを取得できないので、 MouseUpであれば、フォーム外でもイベント取得できるので、 どうにかMouseUpを取得できれば良いのですが
IEからExcelファイルへのリンクをクリック>Excel起動として 開いたExcelファイルのセルにhtmlフォームのテキストボックスの内容を 反映させるようなVBAってありますでしょうか? IE5.0 と Excel97です。 ヒントだけでもよいのでお願いできませんでしょうか? HTML側 <FORM ACTION="***.cgi"> /* ここは適当 */ <INPUT TYPE="text" NAME="text"> <BR> <A HREF = "xxx.xls">xxx.xls</A> /* このxlsにtextの内容を読ませたい */ </FORM> EXCEL側 Private Sub Workbook_Open() Call Read_text /* 起動時に関数呼び出し */ End Sub Private Sub Read_text() Dim txtField As String /* ???? */ /* ここでテキストボックスの内容を取得したい */ ActiveCell.FormulaR1C1 = txtField Range("A1").Select End Sub
VBAのProperty Windowのフォントがいきなり、変な文字になって、内容が読めなくなってしまいました。 だれか、復旧方法を教えてください。VB Editorから入っていき、フォームを作り、Propertyを見ると、 文字がイタリックのさらに崩したような状態になっていて、使えません。 だれか助けてください。
660 :
デフォルトの名無しさん :01/12/27 18:57
質問2つ。 ・電話番号欄があって、半角数字とハイフンしか入れられなくしたいのですが IsNumeric使うとハイフンも受け付けなくなるので、なんとかなりませんか。 ・Form_Loadで、セットフォーカス使うと参照がおかしいみたいな事 言われんですけど、無理なんですか?
>>660 上の解答(らしきもの)
「マスク エディット (MaskEdBox) コントロール」
662 :
デフォルトの名無しさん :01/12/27 19:27
>>660 >半角数字とハイフンしか入れられなくしたいのですが
Key Pressイベントで、Key Asciiを調べて、数字とハイフン以外は
KeyAsciiに0を設定すればいい。キーコードについてヘルプで検索すれ。
>Form_Loadで、セットフォーカス使うと参照がおかしいみたいな...
これだけじゃ何をしたいかわからん。
「プロシージャの呼び出し、または引数が不正です。(Error 5)」 つまりこれを回避したいと言うことかな?
Form_Load イベント内では SetFocus は使えない。
Form_Paint あたりで SetFocus だな。
666 :
デフォルトの名無しさん :01/12/27 19:37
みなさんありがとう。 Form_Paintって初めて聞きました。 Form_Loadより後に起こるイベントってあるんですね。ビクリしました。
668 :
デフォルトの名無しさん :01/12/27 20:33
>>658 クリップボード経由だけど、それらしいことはできる。
「セキュリティの設定」で「スクリプトによる貼り付け処理の許可」を有効にする。
(セキュリティとしては大いに問題あり)
HTMLここから--------------------------------------------
<script language="vbscript">
Sub txtCopyToClipboard()
set rngText = frmText.txtTarget.createTextRange()
rngText.execCommand("copy")
End Sub
</script>
<form id="frmText">
<input id="txtTarget" type="text" name="txtTarget">
</form>
<a href="./xxx.xls" language="VBScript" onClick="txtCopyToClipboard()">xxx.xls</a>
HTMLここまで--------------------------------------------
EXCELここから--------------------------------------------
Private Sub Workbook_Open()
Call Read_text
End Sub
Private Sub Read_text()
Dim txtField As String
Dim objData As DataObject
Set objData = New DataObject
objData.GetFromClipboard
txtField = objData.GetText
ActiveCell.FormulaR1C1 = txtField
Range("A1").Select
End Sub
EXCELここまで--------------------------------------------
669 :
デフォルトの名無しさん :01/12/27 21:02
仕事で緊急にVBを使わなくてはならなくなりました。 社内でパソコン詳しい人が居ないもので私が使わないといけないのです。 パソコン暦3年のプログラム初心者が初心者本片手に12時間みっちりやって どこまで出来るようになりますか? ちょっとしたプログラムぐらいは読めるようになれますか?
670 :
デフォルトの名無しさん :01/12/27 21:16
>>669 とりあえずテキストボックスやボタンなどを配置して
Windowsの標準的なインターフェースを作れるようになるでしょ。
後はどんな処理をさせるかだけど、Webで調べれば大抵解決するよ。
>>669 開発に行き詰まったらいつでもここに来ればいいさ(´∀`
>669 仕事で使う時ってのは到達すべき目標が見えるから覚えるのも早いで。 WebでQ&Aできる掲示板でも見つけておけ!
673 :
デフォルトの名無しさん :01/12/27 21:34
>>669 とりあえずコメントだけは面倒でもキッチリかけよ。
後々メンテするときに非常に役に立つからな。
674 :
デフォルトの名無しさん :01/12/27 22:00
InetコントロールでOpenURLメソッドを呼ばないで(GETしないで) ヘッダー取得できますか?OpenURLの後GetHeaderするとできますが いっかい全部落としてから取得してしまうんで。
ありがとう。 ここはやさしい人も多いのね。 私がんばるよ。。
677 :
デフォルトの名無しさん :01/12/27 22:45
>>675 Windowsの再インストってそんなに難しいことじゃないよ。
ネットの設定だけは、しっかりメモっとけよ!
トリップとれるとこ知りませんか?
MIME-Version: 1.0 Received: from [143.90.131.182] by hotmail.com (3.2) with ESMTP id MHotMailBCF5F31A005C400438A58F5A83B6B91B0; Sun Jun 17 05:52:43 2001 Received: from cfb87420 ([61.116.15.136]) by t-mta4.odn.ne.jp with SMTP id <20010617125241302.KHTB.21729.t-mta4.odn.ne.jp@mta4.odn.ne.jp> for <aca99935@hotmail.com>; Sun, 17 Jun 2001 21:52:41 +0900 From cfb87420@syd.odn.ne.jp Sun Jun 17 05:53:01 2001 Message-ID: <000501c0f724$2beb5420$880f743d@cfb87420> References: <F214HNjdND2nTe1CIGj00004474@hotmail.com> X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
>>675 昔似たような現象になったことあったな。
そんときはセーフモードで上げれば直ったけど
すぐにまた同じ現象になってな。
結局再インストールしたよ。
入れなおした方が絶対早いと思うぞ。
>>674 OpenURLってのは細かい制御ができないかわりに楽なんだよね。
細かいことをしたいならば面倒でもExecuteでやらんと。
Content-Lengthとかのヘッダ取るだけならこんな感じかな。
Private Sub Command1_Click()
Inet1.Execute "
http://アドレス ", "GET"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Select Case State
Case 12
Debug.Print "Content-Type = "; Inet1.GetHeader("Content-type")
Debug.Print "Content-Length = "; Inet1.GetHeader("Content-Length")
Debug.Print "Last-modified = "; Inet1.GetHeader("Last-modified")
Inet1.Cancel '受信もしたいならここでGetChunk繰り返せ
End Select
End Sub
ヘッダ全部が欲しいならWinsock使った方がいいかもな。
>>681 どうもです。できました。
それにしてもInetコントロールは良く分からないですね。
683 :
デフォルトの名無しさん :01/12/28 01:46
>648 Ctrl+A→Del押すだけじゃん。 >660 Loadイベントの最後あたりで、Me.Showしてから、SetFocusする手もある。 ようは、見えないコントロールにフォーカスは当てられないってこと。
684 :
デフォルトの名無しさん :01/12/28 10:37
Textの特定の文字を置換するにはどうすればいいのですか? InStr関数がよくわかりません。 やりたいことの例↓ アボーン アベーン アブーン と言う文章の「ーン」を検索して「~ソ」に置換したいのです。
>>684 Replace("アブーン","ーン","~ソ")
686 :
デフォルトの名無しさん :01/12/28 12:16
>684 Text1.Text = Replace(Text1.Text, "ーン", "~ソ") ほかの「ーン」が変換されたくなかったら、 各4字で計3回やればいい。
687 :
デフォルトの名無しさん :01/12/28 12:52
VBでウィルスは作れますか?
689 :
デフォルトの名無しさん :01/12/28 22:53
690 :
デフォルトの名無しさん :01/12/28 22:54
メニューとかの名前を付けて保存(A)とかの下にボーダーがありますが これってどうやって出すんですか?
692 :
デフォルトの名無しさん :01/12/29 00:04
>>692 すいません。ありがとうございます。
ちなみにこういうのってMSDNとかでどのように検索すれば出てきますか?
検索してみたのですがいまいちでして…
694 :
デフォルトの名無しさん :01/12/29 00:25
>>693 「メニュー」をキーワードにすると、「メニュー エディタで作成」という
項目が見つかるはず。
>>693 MSDNライブラリ(ヘルプ)の「メニュー (Menu) コントロール」っていう
一番基本的なページに書いてあるじゃん。
全部読めとは言わないけど、ヘルプの目次ぐらいは目を通しておくといいよ。
ヘルプの引き方もプログラミング能力の一部だからね。
えらそうでスマソ。
696 :
デフォルトの名無しさん :01/12/29 00:41
メニューコントロールに限らないのでは? コマンドボタンでも使うよ。
>>693 スマソ 区切り線と勘違いした。
「保存(&A)」にするとよろしいかと
698 :
デフォルトの名無しさん :01/12/29 07:44
質問してもいいですか?
701 :
デフォルトの名無しさん :01/12/29 13:38
WinSockを使って(OCXじゃないよ)ソケットの送受信データを監視できない? あと、使用中のソケットの列挙方法を教えてくれ。 あと、複数のイベント(FD_WRITEとか)をハンドラしたいんだけど…。
>689 サンクスレス ウィルス作るためにVBマスターしてみます
703 :
名無しさん :01/12/29 19:45
拡張子変更ってどうやるんですか
704 :
デフォルトの名無しさん :01/12/29 19:49
>>702 なんか感謝してないみたい(w thanksless
VB5なんですが・・ DBGRIDをデータと連結しないで使ってるサンプルどっかにない? (なんだか訳わからんぞ、これ)
707 :
デフォルトの名無しさん :01/12/30 00:42
>>701 具体的にどういうもんを作りたいからそうしたいのん?
送受信データ監視ってそういうイベントとメソッドあるでしょ?
FTP関係?P2Pみたいなの作んの?
あのー、秋葉に逝ったときに VC++5エンタープライズが7000円で 売ってたけど買いですか? ちなみ割れじゃなくて中古ソフトとして。
>706 ってか、意味あるんかソレ? DataをBoundするGridだからGridなんであって...
ヘルプの中にあるバージョン情報とかってMsgBoxとかで作るの?
>>710 それでもいいし、Form で作ってもいい。
それよりも、「プロジェクト」-「フォームモジュール」-「バージョン情報」で
簡単にバージョン情報が追加できる。
712 :
デフォルトの名無しさん :01/12/30 16:31
ボタン押したら新規にディレクトリを作る方法を教えて下さい。
MkDir
715 :
デフォルトの名無しさん :01/12/30 18:41
コンボボックスってAppearanceで2Dに設定しても2Dにならないのですが、 他に何か設定しないといけないのでしょうか。
716 :
デフォルトの名無しさん :01/12/30 19:57
すみません、質問です 文字列の置き換え(Replace)で、「改行」を探知できますでしょうか ある文章から「改行」を詰めたいんですけど よろしくお願いします
>>716 改行を消したいって意味?
vbCrLfを指定するだけじゃ・・? 違った?
718 :
デフォルトの名無しさん :01/12/30 20:50
719 :
デフォルトの名無しさん :01/12/30 23:08
>716 空行を無くしたいなら、vbCrLf & vbCrLf → vbCrLf でオッケー。 もしスペースだけの行があったら、先にそれを始末する必要があるけど。
720 :
デフォルトの名無しさん :01/12/30 23:11
test
721 :
デフォルトの名無しさん :01/12/31 07:06
>>702 ここの過去ログだけでもそれなりのものは作れそうだが
CommonDialog1.Filter = "画像ファイル(*.BMP)|*.bmp" でBMPファイルを開けるのですが 画像ファイル(BMP.JPG.GIF) というように1つのフィルターで複数開けるようにしたいのですが どのようにすればよいのでしょうか?
723 :
デフォルトの名無しさん :01/12/31 09:45
>>722 CommonDialog1.Filter = "ピクチャ (*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif"
725 :
デフォルトの名無しさん :01/12/31 11:19
VBAはそこそこ出来るけど、 VBとどう違う??? VBはやっぱ難しい? アホな質問でスマソ。
726 :
P061198129228.ppp.prin.ne.jp :01/12/31 12:59
プロジェクト-フォームモジュールの追加で 追加したフォームなどをメニューエディタで作った項目から 開くにはどのようにしたらよろしいのでしょうか?
>>725 VBとVBAでは言語規則は殆ど同じ。
言語というよりコントロールの使い方がキモやね。
違うところといったらVBはコントロールとかが作れるってことかな。
(EXEが作れるかどうかという違いも当然あるけど)
その分難しいといえば難しいけど、
リンゴとミカン、どっちがおいしい?って聞いてるみたいなもんだよ。
好みや使い方でも変わってくる。
でもまぁ、VBAでできることは全部VBでできるけど
逆は無理なことがあるってかんじかな。
728 :
デフォルトの名無しさん :01/12/31 13:06
>>726 Load frmSecond
frmSecond.Show
730 :
デフォルトの名無しさん :01/12/31 13:47
質問です。お願いします。 Cドライブのルートから、全ディレクトリ名とファイル名を ----------- ■C:\ [DIR] Documents and Settings,Program Files,WINNT・・・ [FILE] AUTOEXEC.BAT,CONFIG.SYS・・・ ■C:\Documents and Settings\ [DIR] Administrator,All Users,Default User・・・ ■C:\Documents and Settings\Administrator\ [DIR] Application Data,Cookies,Favorites・・・ [FILE] NTUSER.DAT,ntuser.dat.LOG・・・ ・ ・ ・ ■C:\Program Files\ [DIR] ・・・ ----------- こんな風にTXTファイルに書き出したいんですけど、どうもループの かけ方がうまく考えられません。どなたか上手い考え方あれば ご教授ください。お願いします。
731 :
デフォルトの名無しさん :01/12/31 13:59
>>731 うわ。過去ログ見てないのバレバレっすね;
ありがとうございました。
>>732 どゆこと?
プログラムの勉強しる
Do...Loop に条件式指定しないで If...Then Exit Do って書き方ってあまり良くないですか? それとcontinueないから全然Do...Loop使えないんですけど。
737 :
デフォルトの名無しさん :01/12/31 15:27
>>736 いいんじゃないの?
continueないと不便だけど、Ifでなんとかできるでしょ。
738 :
デフォルトの名無しさん :01/12/31 16:19
Labelの中で改行ってできますか?
>>738 Label1.Caption = "AAA" & vbCrLf & "BBB"
740 :
デフォルトの名無しさん :01/12/31 22:05
VB6で、 Data Environmentを追加したいのですが方法がわかりません。 プロジェクト→コンポーネント→デザイナタブ、の中にData Environmentチェックボックスが存在しません。 また、表示→データビューウィンドウ→DataEnvironmentの追加を選ぶと、 「ActiveXコンポーネントはオブジェクトを作成できません」というエラーになります。どなたか対処法を教えていただきたいのですが?
こんちわ~、以前ウイルス作成者の疑いをかけられた者です。あの プログラムは努力の末、完成しました。でもウイルスを作ろうと思 ったのでは決してありません。現在はデータベースを構築し、筆王 に近い形のアプリを作成したいと思っています。あれぐらいなら可 能だと思うのですが、みなさんはどう思われますか。 味噌を言えば、はがきの文面をどのようにして、VBで作成するかで すが、まずはデータベースから。分からない事があったら、またお 願いします。
>>741 こんちわ。多分、貴方を以前ウイルス作成者ではないかと疑ったと
貴方が思っている者です。
心配しないでください。あれくらいの事がわからない奴に
ウイルス程度でも作れるとは思ってませんから。
市販アプリと同じようなものが作れると思ってしまうのは
初級後半~中級者が陥りやすい罠ですが、誰もが通る道ですので
気にしないでがんばってくださいね。
まぁ俺も厨房っちゅうことだ(藁
俺でわかることなら答えるんでまたきーてくれや。
743 :
デフォルトの名無しさん :02/01/02 02:22
標準コントロールやOCXに頼らず自前で描画すりゃVBで作った ようには見えないモノも十分作れます。 ただし、そこまでしてVBを使う事に意味があるかどうかは各々 の価値観次第です。
744 :
デフォルトの名無しさん :02/01/02 02:57
すみません質問があるんですけど。。。 繰り返し公式なんですけど x2=a*x1+5*x1/(1+x*1^2)+y1,y2=-x1 におけるカオスを求めたら アニメーションするプログラムであることがわかったんですけど これだけではだめな見たいなんです
745 :
デフォルトの名無しさん :02/01/02 09:24
正方形のpictureboxを、平行四辺形に、さらに台形へ、さらに菱形に...と 変形する簡単な方法を、どなたかご存知ないでしょうか? 教えてください。
747 :
名無しさん :02/01/02 12:10
>>746 ピクチャボックス自体は大きさしか変わらない。
描画したものを変形させるってことなら計算。
748 :
デフォルトの名無しさん :02/01/02 12:41
>>746 フォームの形なら比較的簡単に変えられますが、、、
ピクチャボックスは分かりません スマソ
>746 PictureBoxの中に表示されてる画像もせっとで変形って事? それとも、枠のみ変形(画像自体は変形しない)って事? 前者は難しい。 後者なら、簡単だじゅ。
すみませんお願いします わたし独りの力じゃどうにも。。。
画像自体も変形すると言うことです。
>>751 ピクチャボックスだけならこんな感じかな? イカサマくさいけど
フォームにピクチャボックスを配置して、次のコードをコピペ
'標準モジュール
Option Explicit
Public Declare Function SetWindowRgn Lib "user32" ( _
ByVal hWnd As Long, _
ByVal hRgn As Long, _
ByVal bRedraw As Boolean) As Long
Public Declare Function CreatePolygonRgn Lib "gdi32" ( _
lpPoint As POINTAPI, _
ByVal nCount As Long, _
ByVal nPolyFillMode As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" ( _
ByVal hObject As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
Public Const ALTERNATE = 1
Public Const WINDING = 2
'フォーム Option Explicit Private mlngRet As Long Private mlngFormation As Long Private Sub Deformation(lngFormation As Long) Dim hRgn As Long Dim lpPoint(1 To 4) As POINTAPI Select Case lngFormation Case 1 lpPoint(1).x = 100 lpPoint(1).y = Picture1.Top lpPoint(2).x = Picture1.Width lpPoint(2).y = Picture1.Top lpPoint(3).x = Picture1.Width - 100 lpPoint(3).y = Picture1.Top + Picture1.Height lpPoint(4).x = Picture1.Left lpPoint(4).y = Picture1.Top + Picture1.Height Case 2 lpPoint(1).x = 100 lpPoint(1).y = Picture1.Top lpPoint(2).x = Picture1.Width - 100 lpPoint(2).y = Picture1.Top lpPoint(3).x = Picture1.Width lpPoint(3).y = Picture1.Top + Picture1.Height lpPoint(4).x = Picture1.Left lpPoint(4).y = Picture1.Top + Picture1.Height
Case 3 lpPoint(1).x = Picture1.Width \ 2 lpPoint(1).y = Picture1.Top lpPoint(2).x = Picture1.Width lpPoint(2).y = Picture1.Top + Picture1.Height \ 2 lpPoint(3).x = Picture1.Width \ 2 lpPoint(3).y = Picture1.Top + Picture1.Height lpPoint(4).x = Picture1.Left lpPoint(4).y = Picture1.Top + Picture1.Height \ 2 Case 4 lpPoint(1).x = Picture1.Left lpPoint(1).y = Picture1.Top lpPoint(2).x = Picture1.Width lpPoint(2).y = Picture1.Top lpPoint(3).x = Picture1.Width lpPoint(3).y = Picture1.Top + Picture1.Height lpPoint(4).x = Picture1.Left lpPoint(4).y = Picture1.Top + Picture1.Height End Select hRgn = CreatePolygonRgn(lpPoint(1), 4, WINDING) Call DeleteObject(mlngRet) mlngRet = SetWindowRgn(Picture1.hWnd, hRgn, True) End Sub
Private Sub Form_Load() mlngFormation = 1 With Picture1 .BorderStyle = 0 .Top = Me.ScaleTop .Left = Me.ScaleLeft .Height = Me.ScaleHeight .Width = Me.ScaleWidth End With End Sub Private Sub Form_Unload(Cancel As Integer) Call DeleteObject(mlngRet) End Sub Private Sub Picture1_Click() Call Deformation(mlngFormation) mlngFormation = mlngFormation + 1 If mlngFormation > 4 Then mlngFormation = 1 End Sub
実行してピクチャボックスをクリックしてみて はずしてたらスマソ 画像の変形は面倒
ピクチャボックスの背景は白で、 スケールモードはピクセルにしてね
758 :
デフォルトの名無しさん :02/01/02 15:23
>>750 ワラタ。おちつけ。
質問の要点が分からん
>>758 すみません返信ありがとうございます
この繰り返し公式のプログラムを実行すると、
アニメーションするんですが、
これ以外にも意味があるらしいんです
ありがとうございました。早速ためしてみます。
761 :
デフォルトの名無しさん :02/01/02 17:00
インストールしたらテキストファイル(Readme)をデスクトップに作りたいんですけど、 デスクトップってインストールしている環境によってPATHが違うじゃないですかー。 これって、どうやって指定したら良いんですかい?
762 :
デフォルトの名無しさん :02/01/02 17:10
763 :
デフォルトの名無しさん :02/01/02 22:56
>>759 何を聞きたいのか、それでは解りません。
765 :
デフォルトの名無しさん :02/01/04 00:17
>761 オレのデスクトップに、ファイルやショートカットを 勝手に置くようなアプリは100回削除してやる!
766 :
デフォルトの名無しさん :02/01/04 01:59
VBから既存のエクセルファイルを参照(読み書き)して上書き保存したいんですけど 成功してもバックグランドでEXCELが解放されなくて残っちゃうんですけどどうすれば いいんしょうか? ちなみにソースはこんな感じ 出先なんでスペルミスとかあるかもしれないけど起動と読み書きと閉じることは成功 してます。 誰か教えてください。 dim exl as object dim wb as object dim ws as object set exl=createobject("excel.application") set wb=exl.application.workbooks.open(既存のエクセルファイルのフルパス) set ws=worksheets(上記エクセルファイルの参照するシート名) ここから開いたエクセルファイルの読み書きをする wb.save wb.close exl.Quiet set ws=nothing set wb=nothing set exl=nothing
767 :
デフォルトの名無しさん :02/01/04 02:20
>>766 本質的なことではないかもしれないけど、
exl.Quiet → exl.Quit
ではないかと
そりゃ黙らせただけじゃ終了せんわな。
>>767 ただのスペルミスです、無視してください(恥 >>768 黙らせた後どうしたらよいのでしょうか?
これで多分いいはず Set ws = Worksheets("Sheet1") ↓ Set ws = wb.Worksheets("Sheet1") exl.Quiet ↓ exl.Quit
>>770 ありがとうございます、試してみます。
772 :
デフォルトの名無しさん :02/01/04 13:46
InetコントロールでHTTPでバイナリファイルを取得したいんですけど GetChunkにicByteArrayを渡した後の処理が分かりません。 こっち系のサンプルが乏しいものでよく分かりません。
>>772 なにをしたいの?
「GetChunkにicByteArrayを渡した後の処理」って
貴方がなにをしたいかによって変わってくるよ。
それともGetChunkをどこでやればいいのかとかがわからないとか?
それならヘルプみてみ。ばっちり書いてあるよ。
icByteArrayだろうがicStringだろうが流れはかわらんからね。
バイト配列の使い方がわからないならそれ以前の問題やね。
774 :
デフォルトの名無しさん :02/01/04 22:47
あげておきます。
775 :
デフォルトの名無しさん :02/01/04 23:29
とても厨房な質問なのですが、 TextboxやLabelの左枠と文字の間隔って変えられないでしょうか。 ----------------- |←ココ→ああああ ----------------- やっぱ無理すかね・・・?
776 :
名無しさん :02/01/04 23:35
>>775 スペース挿入、ってこんな簡単な事じゃないんだろうね
777 :
デフォルトの名無しさん :02/01/04 23:48
クリックしたら特定のファイルを開く(HTMLファイルとか) のってどうすればいいですか? OLEコンテナとかで開けばいいんですか。
>777 関連付けられたアプリならShellExecuteっていうのは既出だが
>>775 VBだけでやるなら、PictureBoxの中に
BorderStyle=0にしたTextBox置けばいいんでない?
(背景色を合わせれば見た目わからんよ)
いやならTextBoxにEM_SETRECTでも送ればできるんでないかな。
>>776 、
>>779 ありがとうございます。
Labelを2重にしました。盲点でした。スゲー。
ちなみにEM_SETRECTって何ですか?
ヘルプ見たら全部英語でした。。。
>>780 SendMessageとかのAPIでEM_SETRECTというメッセージを
TextBoxに送ると、上下左右のマージンを変えられるんよ。
(ただしMultiLine=Trueの場合ね)
コンテナにコントロールを入れて使うってのVBではよくやるよ。
Enabled=Falseにしたときにグレーにしたくない場合とか
PictureBoxやFrameとかのコンテナにTextBoxを入れて、
コンテナの方のEnabledを変えるんよ。
すると入力はできなけど見た目は変わらないってのができる。
Enabledを変更するコントロールが多いときなんかも便利。
Lockだとフォーカスが移っちゃうけどこれだと移らないしね。
ちなみにLock=TrueにしてもShift+Insで変更できちゃうんだよね。
このへんきちんとしてないプログラムって多いだろうな。
782 :
デフォルトの名無しさん :02/01/05 01:47
>>781 さん
僕、
>>780 さんじゃないですが、初心者です。
ほんと勉強になります。
その「ちなみに」を回避するのって、
キーコード取って禁止するしかないんですか?
Write#なんかでテキスト書き出したら、こうなるっしょ? Write #1, #02/01/05# ↓ "02/01/05" このダブルクォーテーションを付けない方法はないのかい?
>>778 すいません。
ヘルプで検索したら全部英語でした…
786 :
デフォルトの名無しさん :02/01/05 11:08
>>783 Writeじゃなく、Printで書き出せばおっけー
>>782 それが一番楽なんでない?
KeyDownでKeyCode=0すれば無効にできるよ。
フォームのKeyPreview=Trueにできるならば
フォームのKeyDownイベントにかけばいいだけだし。
790 :
デフォルトの名無しさん :02/01/05 21:01
空のフォーム一つの実行ファイルでメモリ3MB消費するのはおかしい?
基礎中の基礎を聞いて申し訳ないのですが、 dim total as integer dim i as integer total=0 for i=1 to 10 total=total+1 next i という書き方だとようするにtotal=total+1を10回おこなう という意味なんですか?そして結果totalが10になるという事 ですか?
dim?
「ぢm」ってよく書いちゃうね。 そろそろ流行語に選ばれても良いと思う。
GM
796 :
デフォルトの名無しさん :02/01/06 02:28
くだらない質問ですみません。 HDDの中からテキストをロードするやり方をおしえてください。 Label3.Caption = loadtext("c:\file\index.txt") みたいな感じではだめなのでしょうか?
>>796 Open ステートメントを使うよろし
詳しくはMSDNで
798 :
デフォルトの名無しさん :02/01/06 02:50
Label3.Caption に出したいのですがどうすればいいのでしょうか? どうかおしえてください。お願いします。m(_ _)m open (c:\file\index.text) for output
799 :
デフォルトの名無しさん :02/01/06 02:53
Open index.Txt For Output As Label3.Caption ではダメみたいです。 どうすればいいのでしょうか・・・
800 :
デフォルトの名無しさん :02/01/06 03:06
>>799 Dim strBuff as String
Dim intFileNum as Interger
intFileNum = FreeFile()
Open "C:\file\index.txt" For Input as #intFileNum
Line Input #intFileNum, strBuff
Close #intFileNum
Label3.Caption = strBuff
Dim intFileNum as Interger ↓ Dim intFileNum As Integer
>792 試してみるのが一番早いし身になるぞ。 >total=total+1を10回おこなう ちょっと違う。 iが10になるまでtotal=total+1を繰り返し行うという意味。 んで、totalの値は毎回変化するから... あとは自分で試してみてや。
803 :
デフォルトの名無しさん :02/01/06 03:24
できました!!!!!!!!!!!!! ありがとうございました。 もうひとつあるのですが、 ファイルが file(1).txt file(2).txt file(3).txt とたくさんあって i番目の時にfile(i).txtを選ぶようにするにはどうしたらいいのでしょうか?
804 :
デフォルトの名無しさん :02/01/06 03:28
>>803 Open "C:\file(" & i & ").txt" For Input as #intFileNum
805 :
デフォルトの名無しさん :02/01/06 04:03
Dim strBuff_1 as String Dim strBuff_2 as String Dim intFileNum_1 as Interger Dim intFileNum_2 as Interger intFileNum_1 = FreeFile() intFileNum_2 = FreeFile() Open "C:\file\index_1.txt" For Input as #intFileNum_1 Line Input #intFileNum_1, strBuff_1 Close #intFileNum_1 Open "C:\file\index_2.txt" For Input as #intFileNum_2 ←ここ Line Input #intFileNum_2, strBuff_2 Close #intFileNum_2 Label3.Caption = strBuff_1 Label4.Caption = strBuff_2 こんなふうにしたら矢印のとこでエラーがでてしまったのですが freefile()がたぶん原因だと思うのですが、どうすればいいのでしょうか?
FreeFile関数はOpenの直前で実行。 これ定説。
807 :
デフォルトの名無しさん :02/01/06 05:05
Open "\tekisei\toi"&i&"\toi.txt" For Input As #intFileNum_toi
この文のおかしいところってわかりますか?
エラー候補でAsらしいんですけど・・・
>>804 ってファイル名だけじゃなくてフォルダ名にも有効
なのでしょうか?
808 :
デフォルトの名無しさん :02/01/06 05:19
>>807 &の前後にスペースを入れる
ファイル名はドライブ名から指定する
例
Open "C:\tekisei\toi" & i & "\toi.txt" For Input As #intFileNum_toi
809 :
デフォルトの名無しさん :02/01/06 11:45
winXPにvisualstudio6.0エンタープライズ版をインストしたところ、「ヘルプを表示できません」 とだけでてヘルプが見れません。さらに、入力候補のウインドウも出てきません。 C++だと、「ファイルが見つかりません。インストしなおしてください」と出ました。 何回再インストールしなおしても同じ状況です。何か考えられる原因は無いでしょうか
グラフィカルボタンを複数作成していて下記のようなものを作りました。 If Image2(0).Tag = "up" Then Image2(0).Picture = Image2(2).Picture Image2(0).Tag = "down" Else Image2(0).Picture = Image2(1).Picture Image2(0).Tag = "up" End If ボタンを押すと押した時のボタンの画像にはなるんですが 他のボタンを押した時に前に押していたボタンの画像を元に戻したいのですが 何を加えればよいでしょうか? なにぶん初心者なもので助言いただければと思います。
>>810 Forですべてのグラフィカルボタンの画像をup画像に変更。
もしくは、静的変数で前押したボタンのindexを記憶させておく。
VB使いじゃないんで考え方の説明しかできないが。
>809 その前にMSDNはインストールしたんかい?
813 :
デフォルトの名無しさん :02/01/06 13:25
>812 VSの後にインストしました。
814 :
デフォルトの名無しさん :02/01/06 14:24
フォームのサイズを起動時に 640*480にしたいのですが どうしたらよいのですか? ScaleMode 3にしても 0 に変わってしまうところが いまいち。
基礎中の基礎を聞いて申し訳ないのですが、 private sub comand1_click() form1.forecolor=qbcolor(4) form1.line (2000,1000)-(3000,1500) end sub だとちゃんとでるのですが、 private sub comand1_click form1.line (2000,1000)-(3000,1500) form1.forecolor=qbcolor(4) end sub だとでません。 これはプロパティーは先に書かなきゃいけないという決まりがあるんでしょうか?
816 :
デフォルトの名無しさん :02/01/06 15:07
>>815 うん。あくまで、指定した前景色で描かれるということで、後から
変更できるわけではないよ。
817 :
デフォルトの名無しさん :02/01/06 15:08
>>814 フォームサイズは、Twips単位じゃなかったっけ? だとすれば、
TwipsPerPixelX(Y)で計算してあげればおっけーでしょ。
WM_GETMINMAXINFOとかを使うまでもないやね。
818 :
デフォルトの名無しさん :02/01/06 15:09
>>810 なぜ、CommandButtonを使わない?
>>818 すいません。
ボタンの感じを出したくなかったのでグラフィカルボタンに
しました。
820 :
デフォルトの名無しさん :02/01/06 15:37
TwipsPerPixelの使い方がわかりませんー MSDNみてもわかりませんー どうやったら640*480のウィンドウできますかー
>820 これくらいは検索しる!答え出とるやんか!
822 :
デフォルトの名無しさん :02/01/06 15:44
数字を大きい順に並べ替えるプログラムの作りかた教えてください。 テキストボックス五個用意してコマンドボタンを押すと並べ替えられる奴。 お願いします。
>822 ソートとかで検索しる
824 :
デフォルトの名無しさん :02/01/06 15:58
820 計算式はわかりましたがScaleHeightが変わりませんー これってどうしてなのですか?? WidthとHeightは変わるのに ScaleHeightが変わってくれないとサイズが合いません。 APIつかってタイトルバーのサイズ取得しないとだめですか?
825 :
デフォルトの名無しさん :02/01/06 16:22
配列の中身を1つずつ調べたいんですけど、 ループさせる時に「配列の最後」ってどうやってとれば良いのですか?
これからVBを始めたいのですがどちらを買えばイイのでしょうか? 検索して調べてみても良く分からないので… Microsoft Visual Basic V6.0 Enterprise Edition アカデミック\20,500 Microsoft Visual Basic V6.0 Professional Edition アカデミック \13,000
827 :
デフォルトの名無しさん :02/01/06 16:42
Professionalで充分。
すみません、付け加えさせてください。 動的配列というのに挑戦してるんです。 適当に配列増やしていたら、今、いくつあるのかが分からなくて 困っているのです・・・。
あのもっと安く開発できるのは無いのですか?
自己解決しました。Uboundかー。 スレ汚しすみません。
831 :
デフォルトの名無しさん :02/01/06 17:07
>>826 VB以外にすれば? Delphiとかならフリー版もあるし。
>>828 winMXに繋いで「Visual Basic V6.0」で検索して
「すいません、頂いてもよろしいでしょうか?」とかIM入れて
「そっちのリスト見せてくれる?」とか逝かれ犯罪者に言われて
「では、頂かせて頂きます」
とかすればロハで入手出来るよ
それがどう言う事かは分かるよね
何度もすみません。 private sub form1_load form1.forecolor=qbcolor(4) form1.line (2000,2000)-(3000,1500) end sub だとでないのですが、これはプロシージャがcommand1等にしなきゃいけないのですか
834 :
デフォルトの名無しさん :02/01/06 17:14
824あげ
>>831 スレ汚しついでに、
ファイルマネージャを作るのにはどの言語がイイのでしょう
持たせたい機能は
あるフォルダ以下からすべてのファイルを拡張子別に抽出
拡張子ごとにフォルダに分けるなどです。
836 :
デフォルトの名無しさん :02/01/06 17:39
板違い くだらない質問スレにでも逝ってください
838 :
名無しさん@お腹いっぱい。 :02/01/06 18:11
wshの勉強はじめたんだけど、いきなりつまづきました。 Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") WSHShell.Run "C:\Program Files\Windows Media Player\WMPLAYER.EXE" メディアプレーヤ起動するだけなんだけど、ファイルが見つからないって 言われてしまいます.なんで???
839 :
デフォルトの名無しさん :02/01/06 18:28
>>838 とりあえず、ファイルの存在くらい確かめてみない?
840 :
名無しさん@お腹いっぱい。 :02/01/06 18:30
>>839 レスありがと。ファイル名の両側にchr(34)付けて解決しました。
理由はわかんないけど
>>824 >計算式はわかりましたがScaleHeightが変わりませんー
>これってどうしてなのですか??
あんたがなにをやってるのかなんてわかんねーよ。
どうしてなのですか?ってこっちがききてーよ。
640*480のウィンドウってウィンドウサイズが640*480Pixel?
それともクライアント領域が640*480Pixel?
それによってやり方が変わってくるぞ。
ウィンドウサイズを640*480にするなら
Me.Width = wx + 640 * Screen.TwipsPerPixelX
Me.Height = wy + 480 * Screen.TwipsPerPixelY
クライアント領域を640*480にするなら
Dim wx&, wy&
Me.ScaleMode = 1
wx = Me.Width - Me.ScaleWidth
wy = Me.Height - Me.ScaleHeight
Me.Width = wx + 640 * Screen.TwipsPerPixelX
Me.Height = wy + 480 * Screen.TwipsPerPixelY
>>833 form1のAutoRedrawがfalseになってないか?
なぜそうなるのかがわからないうちは
とりあえずAutoRedraw=Trueにしておけば問題ないぞ。
ちっとメモリ食うけどな。
>>840 「"」chr(34)を両端につけないと、
「C:\Program」「Files\Windows」「Media」「Player\WMPLAYER.EXE」
という4つの引数が渡されたと勘違いしちまうんよ。
空白を含むファイル名のときはそうしないといけないんだな。
844 :
名無しさん@お腹いっぱい。 :02/01/06 19:40
>>843 了解。そういう動きなんだから仕方ない。次の質問です。
起動したMPにコマンドを送ろうとしたんだけどACTIVATEの動きが変です。
WSHShell.AppActivate "Player"
この命令は対象が最小化されているときや別画面がACTIVEの時はうまく動かない。
どんな状況でも確実に画面をACTIVEにする方法はないかな
何度ももうしわけありません。 以下の質問どなたかご返答お願いします。 ファイルの読み込みの際、C:からではなく相対パスでの読み込みはできますか?
846 :
デフォルトの名無しさん :02/01/06 22:00
>>841 ありがとう。
結局フォームのサイズを変えたいときは
「ScaleWidthとScaleHeightをいじる」のではなく
「WidthとHeightをいじる」でよいのだろうか。
ファイナルアンサー?
>>845 相対パス指定出来るよ。
カレントディレクトリを使うやり方は、
CurDrv と CurDir を変更すればよい。
普通は、App.PathでExeのパスを取得して、
sFileName = App.Path & "\Log\MyLogFile.Log"
などとしてフルパスにしちゃうかも。
848 :
デフォルトの名無しさん :02/01/07 00:19
キャラクターコードの一覧表みたいなのって どこにあるというのですか! 探すとないんですが。
ないよ。
850 :
デフォルトの名無しさん :02/01/07 00:38
>848 アスキーコードのことなら、MSDNヘルプに載ってるよ。
851 :
デフォルトの名無しさん :02/01/07 01:12
アスキーコードとキャラクターコードは一緒のこと?
852 :
デフォルトの名無しさん :02/01/07 01:26
1バイトの英語用キャラクターコードがアスキーコードだ。 文句あるか?
853 :
デフォルトの名無しさん :02/01/07 01:27
たとえば50から100の間の 乱数を発生させるにはどうしたらよかとですか??
854 :
デフォルトの名無しさん :02/01/07 01:48
>853 0から50の間の乱数を発生させて、それに50を足す。
>>846 サイズを変更するにはWidthとHeightでOK。
WidthとHeightは親ウィンドウ(コンテナとか)のScaleModeに従う。
フォームだったらデスクトップになるわけや。
Scale~ってのはクライアント領域の座標を指定するときのプロパティ。
ScaleModeでクライアント領域をどういう尺度で見るかを指定する。
ScaleMode=0,ScaleLeft=0,ScaleWidth=1ならば、
その中の座標は0~1で指定することになるわけや。
(座標0.5のところに何か描画するってした場合、
そのウィンドウがどんなサイズのときも必ず中心に描画されるって訳)
856 :
デフォルトの名無しさん :02/01/07 08:46
>>853 MSDNからコピペ
任意の範囲の整数の乱数を生成するには、次の式を使ってください。
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
>>847 >CurDrv と CurDir を変更すればよい。
この表記、MSDNで検索してもでてこなかったのですが、、、
>普通は、App.PathでExeのパスを取得して、
>sFileName = App.Path & "\Log\MyLogFile.Log"
>などとしてフルパスにしちゃうかも。
も含めて、
>>800 を使っておしえていただけないでしょうか?
858 :
デフォルトの名無しさん :02/01/07 12:12
プログラムが"C:\Program Files\MyProg"にあり、 "C:\Program Files\MyProg\file\index.txt"を開く場合 Dim strBuff As String Dim intFileNum As Integer Dim strFullPath As String 'フルパス Dim strSoutaiPath As String '相対パス strSoutaiPath = "\file\index.txt" strFullPath = App.Path & strSoutaiPath intFileNum = FreeFile() Open strFullPath For Input as #intFileNum Line Input #intFileNum, strBuff Close #intFileNum Label3.Caption = strBuff
859 :
デフォルトの名無しさん :02/01/07 12:30
>>154 これ、俺も知りたいんだが、解決できた?
フォルダ内のavi、mpeg、rmとかの画像を抜いてリストを作り、
エロ動画CDRを整理したい・・・
susieプラグインで、aviをBMPが入った書庫のように扱うというのが
あったけど、プログラムから使えるのは
それくらいしかみつからないな・・・
他になんかあったら情報ぷりーず。
860 :
デフォルトの名無しさん :02/01/07 12:49
>>859 >>154 はマルチポストっぽかったので無視してた。
どうやら別のほうで回答してもらったようです。
この回答に対する返事もお礼もなかったようですが
>> 今回はVBでMediaPlayerに表示される画像の静止画のキャプチャを考えています
>が、
>> Bitbltでスクリーンコピーすると動画の部分だけが真っ黒になってしまいます。
>> またBitblt以外でのキャプチャ法はありませんでしょうか?ご教授お願いいたしま
>す。
>
>私はキャプチ映像をWindows Media Fileへ変換するツールを作成中です。
>私のほうは動画ですが。
>参考にならなかったらすみません。
>私の方法はWindows Media エンコーダのSDKを使用しています。
>
http://www.microsoft.com/japan/windows/windowsmedia/wm7/encoder.asp >
>マニュアルなどが英語のため理解に苦しんでいますが、
>キャプチ映像の動画・静止画へのエンコードは出来ました
>>668 遅くなって申し訳ありません、無事できました、ありがとうございますです。
862 :
デフォルトの名無しさん :02/01/07 15:50
ImgThumbnailでサムネイル表示する方法教えてくれ。 一枚だけなら出るんだけど、ディレクトリ内の全てのをだしたいのよ。
863 :
デフォルトの名無しさん :02/01/07 16:57
>>862 kodakimg.exe で複数のサムネイル表示ってできる?
出来なさそう。っていうか複数ファイル選択できないですね。
MIDの子フォームを Show で表示させた際に、 自動的に親フォームの中央にちらつきせず表示させるには どうすればよいのでしょうか? 一応、以下のコードをLoadに記述してますが、 これだと移動前の位置で表示されるので画面がちらつきます。 frmy.Move (Screen.Width - frm.Width) \ 2, (Screen.Height - frm.Height) \ 2 何か良い方法はないでしょうか?
866 :
>>844 :02/01/07 19:51
本人なんだが、アクティブかける前にあえて起動コマンドをもう一度発行する ことで解決しました。
>>857 すまん、CurDir ChDrive ChDir だったよ。
正解は
>>858 が書いてくれたようだ。
古いやり方を説明すると、ドライブごとにカレントディレクトリを記憶しているので。
CurDir でカレントドライブとカレントディレクトリを取得。
ChDrive でカレントドライブを変更。
ChDir でカレントディレクトリを変更。
あとは、Openのファイル名でファイル名だけを指定すれば開ける。
ただし、UNC表記(\\Computer\Share\Fileなど)には対応できない。
868 :
デフォルトの名無しさん :02/01/07 21:33
>>860 ありがとう。これ調べてみます。
しかし、俺にはちょっと難しそうだ。
とりあえずVBを初めてみたんですが目的のようなもの(作りたいプログラム) がないのでどうも身が入りません。 何かこんなの作ってみれば?みたいなのあれば教えてください。
870 :
デフォルトの名無しさん :02/01/07 21:40
>>869 日ごろ自分がコンピュータを使っていて、
面倒に感じること、誰かやってくれねーかな
と思うことを、プログラムにやらせる
871 :
P061198129176.ppp.prin.ne.jp :02/01/07 21:49
>>870 そういう奴に限って普段パソコンをメールとネットくらいにしか
使ってないんだよ。
>>869 ひたすらドキュメント(MSDNとか)読み漁ってみるのはどうだろう。
「こんな機能あるんだ」→「こんなことできるな」
という思考展開がありうる。
874 :
デフォルトの名無しさん :02/01/08 01:36
>862 1枚出るなら、それを繰り返せばいいのでは?
875 :
デフォルトの名無しさん :02/01/08 05:44
VBでCoolBarを作っている最中なんですが、なぜかHeightを調節できません。 唯一、Resizeイベントで調節できましたが、切れた感じになってしまって使え ないんです。どこをいじれば調節できるようになるんでしょうか。よろしくご教授 くださいm(_ _)m
プログラム実行中に、リストボックスのColumnsを変更する方法、ないんでしょうか?
877 :
VBマスター :02/01/08 11:39
Dim strClassName As String Dim objClass As Object strClassName = "Class1" Set objClass = New strClassName という具合に任意のクラスのインスタンス化って可能ですか?
879 :
デフォルトの名無しさん :02/01/08 11:59
>>875 CoolBarコントロールは初耳です。
>>876 実行中実行した場所に通るコード上に Columnsプロパティを変更
するコードを記述します。
>>877 実行したら判ります。
880 :
VBマスター :02/01/08 12:02
>>879 エラーが出ることはわかっています。
できる方法はないのでしょうか?
他のステートメントを利用(例えばCreateObject)しても
無理ですか?
>>876 このプロパティを実行時に 0 に設定したり、0 からほかの値に変え
ることはできません。つまり、実行時に複数の列のリスト ボックス
コントロールを、1 列のリスト ボックス コントロールに変更した
り、その逆に変更することはできません。(from MSDN Jan 200)
>>880 VBでは実行時に変更できないと思います。
Windows Common Control の List View コントロールとかでは
だめなんですか?
>>875 貼り付けるグラフィックスの Height にしかなんねぇんじゃね?
884 :
ぶっちゃけ :02/01/08 16:34
これからVBを勉強しようかと思っているんですが、良い参考書とか あったら教えてほしいのですが.
>>884 MSDN。
このやりとりも結構多いね(w
>>881 うぅ~、わかりました。ありがとうです。
887 :
デフォルトの名無しさん :02/01/08 18:58
889 :
デフォルトの名無しさん :02/01/08 19:14
>>887 "HEAD”をリクエストして"Last-Modified”を取得
"Last-Modified”が返ってこない場合は知らん
Yahoo は返ってこなかったけど
Private Sub Command1_Click()
With Inet1
.Execute "
http://pc.2ch.net/test/read.cgi/tech/1006922992/ ", "HEAD"
Do While .StillExecuting
DoEvents
Loop
End With
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Select Case State
Case icResponseCompleted
Debug.Print Inet1.GetHeader("Last-Modified:")
Inet1.Cancel
End Select
End Sub
ありがとうございます さっそくやってみます
892 :
名無しさん :02/01/09 00:10
ole dragdropでファイルをドラッグしてパスを得る時 path = data.Files(1) とした時、path(string型)に格納されたデータに "c:\windows\***.exe" てな具合にダブルコーテーションがつくのだが 付けない方法ってありますか? 一々Mid関数などを使って削除しないとダメ?
893 :
デフォルトの名無しさん :02/01/09 00:15
>892 付いてないと、スペース入りのフォルダやファイル名で困ることになる。 両端をカットするぐらい、どってことないじゃん。
894 :
デフォルトの名無しさん :02/01/09 00:16
>>892 対象のコントロールが何かわからないけど、ピクチャボックスだと
ダブルコーテーション付かないね。
削除するなら Replace$ の方が楽かと
895 :
名無しさん :02/01/09 00:22
>>893 実はshell関数で立ち上げるアプリのパスにドラッグした
パスを付けたいのでドラッグした時点で付くダブルコー
テーションが邪魔だったわけです。
>>894 対象のコントールはコマンドボタンです。なるほど、ピクチャ
だと付かないのですか。Replace$は初めて聞きました。
MSDNで調べてみます。
896 :
デフォルトの名無しさん :02/01/09 01:15
>>895 コマンドボタンでも付かないような
「新規テキスト ドキュメント.txt」をドロップしても普通に開きますが
Private Sub Command1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim strFile As String
strFile = Data.Files(1)
Debug.Print strFile
Shell "notepad.exe " & strFile, vbNormalFocus
End Sub
>>877 >>880 そもそも、何がしたいかわからんけど。
これは、出来るんじゃない?
Dim s As String
Dim o As Object
s = "ADODB.Connection"
Set o = CreateObject(s)
FactoryMethodみたいなことをしたいなら、
Select Case s
Case "CON"
Set o = New ADODB.Connection
Case "RS"
Set o = New ADODB.Recordset
End Select
とかかな。
898 :
デフォルトの名無しさん :02/01/09 01:22
>894 Replaceは関数なので、$をつけないほうがいい。 "が付くのは、コマンドボタンじゃなくて、Command関数だろう。 つまり、起動前のアイコン状態でドロップされた時。
899 :
デフォルトの名無しさん :02/01/09 01:29
>>898 Left$ Right$ Mid$ Chr$ 等も
やはり $ をつけない方がよいのでしょうか
>>898 >>899 $をつけたほうが良い、つけないとVariantで帰ってくるのでリソースの無駄。
$をつけようがつけまいが関数です。
901 :
デフォルトの名無しさん :02/01/09 01:38
>899 それはどっちでもいいんだけど、いちおう付けないほうが推奨されてるかな。 引数エラーでも、""とか返してくれるし。 ただ、Replaceだけは別格で、MSDNヘルプでも、Replace$の項目がない。 いちおう、正常に動作するけど。
>>898 つけない方がいいというか、Replace$なんて関数はないね。
>>899 $が付く関数はString型を対象とし、
つかない関数はVariant型を対象とする、
という違いがあるので、その違いを踏まえた使い分けをすべき。
あくまで文字列を対象にしたいんだって時には$を付けとくと、
As Integerな変数を放り込んだ時にコンパイルエラーがでるから、
それが幸せだと思える人は幸せになれる。
思えない人は付けないでおけばいい。
すまそ、Replaceに関しては、つけない方がいいみたい。 先日、↓を読んだもので過剰に反応してしまった。 実際に使うときは、そんなに気にするものでも無さそう。 「プログラミングVisualBasic6.0 Vol.1基礎編」p.247 > VBAドキュメンテーションでは、すべての文字列関数について、末尾の$文字が付 > かない新しい$のつかない関数を使用するように勧めている。しかし実行速度の観点 > からいえば、これはお勧めできる方法ではない。$の付かない関数は、文字列結果を含 > むバリアント型を返すので、バリアント型が文字列に再変換されてからでないと、式 > での再利用や文字列変数への割り当てが出来ない場合が多い。これは時間の浪費であ > り、得るものが何もない。非公式のベンチマークによれば、Left$関数は$のつかない > 関数の最高2倍の速さである。同様の論法が、両方のフォームに存在する別の関数、 > LCase、UCase、LTrim、RTrim、Trim、Chr、Format、Space、Stringなどにも > あてはまる。
904 :
デフォルトの名無しさん :02/01/09 01:59
>903 バリアントのほうがメモリ食うのは知ってたけど、速度的にそんなに差が出るかな。 数値型への変換ならともかく、もともと文字列型にゴミがついてるようなもんなんだし。
905 :
デフォルトの名無しさん :02/01/09 02:08
この2つ比べると1.5倍ぐらいの差がある For i = 0 To 10000000 strTest = "TEST" strTest = Left$(strTest, 1) Next i For i = 0 To 10000000 strTest = "TEST" strTest = Left(strTest, 1) Next i
漏れもテストした。 Private Sub Command1_Click() Dim sngTimer As Single Dim sTest As String Dim s As String Dim n As Long Dim nLoopMax As Long nLoopMax = 10000000 m_sTest = String(nLoopMax, "*") sngTimer = Timer() For n = 1 To nLoopMax s = Left(sTest, n) 's = Left$(sTest, n) Next Debug.Print "Timer=" & (Timer() - sngTimer) End Sub 結果 Left$のとき Timer=3.625 Leftのとき Timer=6.438477
無知なので何から手をつけていいのか分かりません。どうすればよいのでしょうか? ○下に示した10人の選手の名前、打数、安打数のデータを 配列に代入してから、各選手の打率を求め、 打率が高い順に並べ替えて、選手名、打数、安打数、打率を リーグ別に表示するプログラムを作れ。 選手名 リーグ 打数 安打 小笠原 2 576 195 ペタジーニ 1 463 149 ・・・・・・・・・・・・・・他八人
授業をちゃんと聞きましょう。
>>896 サンクス。どうやら勘違いだったようです。スマソ。
下のでいけました(簡略化してますが)。
Dim strFile As String, Path As String
strFile = Data.Files(1)
Path = ********.exe(アプリケーションのパス)
Shell path & " " & strFile, vbNormalFocus
どうやらアプリのパスとファイルのパスの間に空白が
入っていなかったケアレスミスでした
他の皆さんお騒がせしました。でもおかげでReplace
や$について勉強になりました。
>>908 そこを何とかお願いします。
授業聞いても教科書見てもよく分からないんです。
911 :
デフォルトの名無しさん :02/01/09 03:46
>>910 n次元の配列にデータ放り込んで、
割ったりソートしたり
912 :
デフォルトの名無しさん :02/01/09 03:52
>>911 ごめんなさい。よく分からないです。かなり深刻みたいです。
今VBのサイト一杯見てるんですが、どうも・・・
できたらもう少し詳しく具体的にお願いします。
914 :
デフォルトの名無しさん :02/01/09 04:08
>>913 バリアント型の配列を10人分作る
↓
varData(1) = Array("小笠原", 576, 195, 0, 2)
こんな感じにデータを放り込む
で良いのかな?
915 :
デフォルトの名無しさん :02/01/09 04:15
>>914 本当にありがとうございます。
でもちょっと
>バリアント型の配列を10人分作る
というのがわからないんですが・・・たびたびすいません
918 :
デフォルトの名無しさん :02/01/09 04:20
>>916 配列の宣言の仕方しってるの?
バリアント型については?
919 :
デフォルトの名無しさん :02/01/09 04:20
>>917 何時まで?
それはつまり作ってコードを貼り付けてくれってことか?
>>918 >>919 教科書に書いてあるので大体分かります。
一応十二時までなんですが。。。
>それはつまり作ってコードを貼り付けてくれってことか?
それが一番ありがたいんですけど、、
というよりいちいち質問に答えるよりそっちの方が早いかも・・・
分からないことだらけですいません。
>>906 は間違えて m_sTest としていた
sTest に直したら 1時間くらい終わらなかったのでやめた。
>>907 動けばいいや的なプログラム。
’Form1
Private Sub Form_Load()
Dim oPlayers As clsPlayers
Set oPlayers = New clsPlayers
With oPlayers
Call .SetTestData
Call .PrintIt
Debug.Print ""
Debug.Print "SortByBattingAverage"
Call .SortByBattingAverage
Call .PrintIt
Debug.Print ""
Debug.Print "SortByLeague"
Call .SortByLeague
Call .PrintIt
End With
End Sub
'clsPlayers Option Explicit Private m_oCollection As Collection Private Sub Class_Initialize() Set m_oCollection = New Collection End Sub Public Sub SetTestData() Call Me.AddNew("小笠", 2, 576, 195) Call Me.AddNew("ペタ", 1, 463, 149) Call Me.AddNew("山田", 1, 444, 150) Call Me.AddNew("田中", 2, 555, 200) Call Me.AddNew("渡辺", 2, 333, 120) Call Me.AddNew("鈴木", 1, 200, 100) Call Me.AddNew("吉田", 1, 500, 111) Call Me.AddNew("安田", 2, 888, 88) Call Me.AddNew("広田", 2, 456, 30) Call Me.AddNew("中村", 1, 520, 200) End Sub Public Sub AddNew(sName As String, nLeague As Long, nTimesAtBat As Long, nHits As Long) Dim oPlayer As clsPlayer Set oPlayer = New clsPlayer With oPlayer .sName = sName .nLeague = nLeague .nTimesAtBat = nTimesAtBat .nHits = nHits End With Call m_oCollection.Add(oPlayer) End Sub Public Sub PrintIt() Dim oPlayer As clsPlayer For Each oPlayer In m_oCollection oPlayer.PrintIt Next End Sub
Public Sub SortByLeague() Dim oNewCollection As Collection Dim oPlayer As clsPlayer Dim n As Long Dim isInserted As Boolean Set oNewCollection = New Collection For Each oPlayer In m_oCollection isInserted = False For n = 1 To oNewCollection.Count If (oPlayer.nLeague < oNewCollection.Item(n).nLeague) Then Call oNewCollection.Add(oPlayer, , n) isInserted = True Exit For End If Next If (isInserted = False) Then Call oNewCollection.Add(oPlayer) End If Next Set m_oCollection = oNewCollection End Sub Public Sub SortByBattingAverage() Dim oNewCollection As Collection Dim oPlayer As clsPlayer Dim n As Long Dim isInserted As Boolean Set oNewCollection = New Collection For Each oPlayer In m_oCollection isInserted = False For n = 1 To oNewCollection.Count If (oPlayer.nBattingAverage < oNewCollection.Item(n).nBattingAverage) Then Call oNewCollection.Add(oPlayer, , n) isInserted = True Exit For End If Next If (isInserted = False) Then Call oNewCollection.Add(oPlayer) End If Next Set m_oCollection = oNewCollection End Sub
'clsPlayer Option Explicit Public nLeague As Long 'リーグ Public sName As String '選手名 Public nTimesAtBat As Long '打数 Public nHits As Long '案打数 Public Property Get nBattingAverage() As Double nBattingAverage = Me.nHits / Me.nTimesAtBat End Property Public Sub PrintIt() Debug.Print Me.sName & "," & Me.nLeague & "," & Format(Me.nBattingAverage, "0.########") End Sub
しかし 900 さんのコードは厨にはもったいない これコピペして提出したら間違いなく パクったでばれるな
配列を使っていないという罠
>900さん
なんといったらよいか・・本当にありがとうございます。
>>922 すいません。場違いですよね。すぐ消えます。
929 :
デフォルトの名無しさん :02/01/09 04:43
>>927 というよりも配列の宣言ができなさそうな
人間が書くレベルのコードではないと思われ
930 :
デフォルトの名無しさん :02/01/09 04:47
そうだね。バリアントすらあやふやなやつは、クラスなんて使う レベルじゃないと思う。
931 :
デフォルトの名無しさん :02/01/09 06:14
ヘルプ見てもAPIってさっぱり分かりません。 具体的にどういう感じで使うのか例を示していただけませんかな? 暇な方おられれば・・。
932 :
デフォルトの名無しさん :02/01/09 06:53
933 :
デフォルトの名無しさん :02/01/09 07:25
APIを使ってUDPの送受信を行いたいのですが、 そういった事ができる関数は、どうやって調べたらいいんでしょうか。
934 :
デフォルトの名無しさん :02/01/09 07:28
>>933 winsockコントロールじゃダメなの?
935 :
デフォルトの名無しさん :02/01/09 07:31
こんにちは、はじめまして。 江坂(えざか)と言います。 今回は、簡単に自己紹介させて頂きます。 私は、28歳で社会人5年目です。 現在、東京のコンピュータ会社でシステム・エンジニアとして 働いています。 私の趣味は、パソコンと音楽鑑賞です。 パソコンは、子供の頃から好きで仕事と趣味に使っています。 音楽は、洋楽、邦楽のどちらも好きです。 あと、自然が好きでよく山にピクニックやハイキングに 行ったりします。 また、近くの川や海に行ったりすることも好きです。 こんな私ですが、よかったらお返事ください。 最後に、私のプロフィールを書いておきます。 よろしくお願いします。 江坂より ☆プロフィール☆ ■名前:江坂 博 ( えざか ひろし ) ■年齢:28才 ■身長:170cm ■体重:65kg ■血液型:A型 ■誕生日:1973年12月19日生 ■兄弟続柄:次男 ■最終学歴:大学卒 ■住所:東京都日野市 ■出身地:三重県四日市市 ■最寄駅:京王線・高幡不動駅 ■職業:システム・エンジニア ■休日:土、日、祝日 ■趣味:パソコン、音楽鑑賞 ■タバコ:吸わない ■お酒:付き合い程度 ■ギャンブル:しない ■宗教:特になし ■好きなタイプ:心のやさしい人、家庭的な人 p.s.今、付き合っている彼氏はいますか? 私は、今付き合っている彼女はいません。
>>897 レスどうもです。
前者はActiveXなのでできますが、普通のクラスはできないのです。
後者はクラスが増えるたびに追加しないといけないですね。
これが通常のやり方なら仕方ないですが。
>935 ネタはマ板で(略
938 :
デフォルトの名無しさん :02/01/09 09:16
これ(
>>935 )は削除依頼出しておいてもいいのか?
>>938 いろんな板に貼り付けられてるので賛成。
940 :
デフォルトの名無しさん :02/01/09 10:59
あるファイルをOPENメソッドでプログラム内で新規に作っているのですが、 出来上がったファイルの更新日付が、何故か不自然な日付になってしまうのです。 (1997年8月1日12時37分) なんど作っても同じ日付になってしまいます。 ファイル作成日付はちゃんと作成された日付になっているのに。 これは何が悪いのでしょうか。 '********************** Open strFilename For OUTPUT as #1 Print #1,strMessage Close #1 'ほんとにこれだけの単純なソースなのですが。。。
941 :
デフォルトの素人 :02/01/09 11:55
ディストリビューションウィザードを使って配布しようと思うんですが、 その時、フォントもインストールするようにしています。 しかし、インストールが終了したあとシステムを起動しても、なぜか インストールしたはずのフォントが無効になっています。 インストールされてないのかな? と思ってコントロールパネルから フォントを開いて見ると、ちゃんと追加されています。 その後、もう1回システムを起動したら、今度はフォントがしっかり表示 されていました。 インストールが終わったら、再起動しないといけないんでしょうか? インストール終了後、自動で再起動させる方法があったら教えてください。 よろしくお願いします。
>>924 しまった打率の高い順になのに、低い順になってた。
For Each は Index 順とは限らないのに、依存しているし。
ソートのとこは、判断式のとこだけ関数にくくりだせばよかったのかな。
>>936 さすがに、クラスモジュールを文字列で生成するのは無理かと。
ひとつの関数の中に生成処理がまとまっているので、我慢するしか。
逆に、どういう状況でその処理が必要になるかに、興味あるなー。
>>940 違うファイルを見ていませんか?
943 :
デフォルトの名無しさん :02/01/09 12:17
>>942 ついに彼のレポートの〆切時刻が来ましたね。
彼は巧いことしのいだのでしょうか。
>>942 いえ、そんなことはありません。
このプログラムで作られるすべてのファイルが同じ更新日付になってしまうのです。
VBの設定の方がおかしいとかなのでしょうか。
>>943 配列を使ってないから仕様的にはアウトになりません?上のソース
>>934 Delphiでは、APIを使ったサンプルを見かけたので、
VBでも同じ事ができないか・・・と。
それに、あまりコンポーネントに頼り過ぎてると進歩しませんし。
946 :
デフォルトの名無しさん :02/01/09 14:05
>>946 ありがとうございます。
おかげで、いくつか資料が手に入りました。
948 :
デフォルトの名無しさん :02/01/09 15:46
分割ソフトを作りたいのですが、今いち参考になるような TEXTがないんです。 だれか教えてくれませんか?
949 :
デフォルトの名無しさん :02/01/09 16:04
950 :
デフォルトの名無しさん :02/01/09 16:07
>>948 Binary でオープンして適当に切り分けたら?
951 :
デフォルトの名無しさん :02/01/09 16:07
言葉足らずで申し訳ないです。 ファイルを分割・結合するソフトです。
953 :
デフォルトの名無しさん :02/01/09 16:21
>>952 ありがとうございます^^
参考にして勉強します。
954 :
デフォルトの名無しさん :02/01/09 17:45
すみません、ご教授を・・・ VBScriptなのですが、 配列で、例えば 1,2,3,4 となっている所を、2の所にnull入れたら 1,,3,4 ってなりますよね。これを 1,3,4 って配列に変えたいのですが 若輩者ゆえどうしたらいいかわかりません。 簡単かもしれませんが教えてください。お願いします。
955 :
(-_-メ) :02/01/09 17:50
★重要告知★ 『 OKWeb 』 及び 教えてGoo は最悪だ ! 利用する奴ははっきり言って馬鹿の象徴 !! 馬鹿の証明しているに過ぎない !! "OKWeb" を利用すると 頭が変になり、馬鹿になる !! 気をつけろ !!! それにOKwebを利用するだけで『ウィルス』に感染してしまうから 絶対利用はするな !!
956 :
デフォルトの名無しさん :02/01/09 17:52
VBはわからんけど。 while(j<元配列のサイズ){ if(Src[j]==null)j=j+1; Dest[i]=Src[j]; }
間違い。 i=0;j=0; while(j<元配列のサイズ){ // ↓配列からはみ出てないかの判定もして。 while(Src[j]==null){ j=j+1; } Dest[i]=Src[j]; }
958 :
デフォルトの名無しさん :02/01/09 19:30
>>956-957 を参考にさせてもらって
VBSで書き直すとこんな感じかな
Dim Src
Dim Dest()
Dim i, j
Dim strBuff
Src = Array(1, vbNullString, 3, 4)
i = 0
j = 0
While i <= UBound(Src)
If Src(i) <> vbNullString Then
ReDim Preserve Dest(j)
Dest(UBound(Dest)) = Src(i)
j = j + 1
End If
i = i + 1
Wend
For i = 0 To UBound(Dest)
strBuff = strBuff & Dest(i)
Next
MsgBox strBuff
複数のコントロールが重なっている状態で、 ZOrderを使い、前面・背面移動を切り替えた場合に 各コントロール毎に表示されている重なり位置は取得できるのでしょうか?
厨房的発想 でも2つ問題がある 1.null 入れてはダメ。 2.セパレイターが問題。 <script language="VBScript"> <!-- Dim A() Dim B Dim X ReDim A(3) A(0) = 1 A(1) = 2 A(2) = 3 A(3) = 4 A(3) = -1 X = Join(A, ",") X = Replace(X, "-1", "") If Right(X, 1) = "," Then X = Left(X, Len(X) - 1) If Left(X, 1) = "," Then X = Right(X, Len(X) - 1) X = Replace(X, ",,", ",") B = Split(X, ",") MsgBox UBound(B) --> </script>
すいません、ちょっと伝わらないと思ったので補足します。 コントロールはまったく同じではないのですが、 部分的に重なっているものとします。 最前面側 「コントロールC」 「コントロールA」 「コントロールB」 最下面側 上のような状態で重なっているものとして、 コントロールA = 1 コントロールB = 2 コントロールC = 0 の様な、ZOrderに対応した値を取得することは可能なのでしょうか? m(_ _)m よろしくおねがいします
963 :
デフォルトの名無しさん :02/01/09 23:16
>959,961 自前のコードでコントロールのZOrderを切り替えてるんだろ? だったら、それでどういう順番になるか、わからないとおかしい。
そろそろお引越しの予感。 誰かやんないと。 俺がやれって?(w
965 :
デフォルトの名無しさん :02/01/10 09:16
ネットワークに繋がっているPCがいくつかあるとします。 たとえばPC001・PC002・PC003の3台。 で、このネットワークに入れるユーザがいつくかあるとします。 たとえばHOGE・WOW・MAO・AFOなど やりたいことは、各パソコンから相互に自分以外のパソコンにログインしている ユーザ名がわかるようにしたいのです。 たとえば、PC001を使用している人は、PC002と3に今ログインしているユーザ名 を取得したい。 自分のパソコンにログインしているユーザ名は簡単に取得できますが、 ネットワークに繋がったパソコンの現ログインユーザ名は取得できないのでしょうか よろしくお願いします。
>>962 画像やテキストを張り付けてレイアウトするソフトを
作成しているのですが、
Form上でZOrderを使い重なりを変更するには良いのですが、
そのデータを保存し、再度表示させる際に、
重なりの情報を取得しておかないと、元の状態に戻せないので・・・
>>963 自前のコードですけど、コントロールの重なりが実際は複雑なので・・・
実際は例として書いたように、単に重なるだけでなく、
各コントロールの移動、コントロールの追加、削除が発生するので、
移動元、移動先などでZOrderに対応する管理を行うことは難しいです。
簡単にZRoderに対応する値が取得できれば、
そういった管理を行う必要もないので、おたずねしました。
>>968 親切に教えていただいて、ありがとうございます m(__)mペコリ
MDIFormの最大化、最小化ボタンを無効にしたくて、APIを利用してForm上に 表示しないようにしたのですが、ボタンの存在した個所で右クリックでメニューが表示されてしまい、 そこから最小化、最大化が出来てしまいます。(ダブルクリックでもサイズ変更されてしまう) どなたか無効にする方法をご存知であれば教えてください。
971 :
デフォルトの名無しさん :02/01/24 17:09
VB を買おうと思うのですが、今なら何を買えばいいですか?
972 :
デフォルトの名無しさん :02/01/24 22:45
ビットマップの画像を、透過色を使用して表示したいのですが簡単な方法はありませんか?
973 :
デフォルトの名無しさん :02/01/24 22:47
>>971 もうすぐ VB .NET がでるからそれまで待てば?
974 :
デフォルトの名無しさん :02/01/24 22:48
>>973 MSの新ソフトをさっそく買うほどバカではありません。
975 :
デフォルトの名無しさん :02/01/24 22:49
>>974 それならいっそVBやめてKYLIXにしよう
976 :
デフォルトの名無しさん :02/01/24 22:51
KYLIXってPASCALですよね? 私はVBがやりたいんです。 でもそのまえにHSPやるかも。
>>971 マジならPro。急がないなら様子を見て.NET。金があるならVisualStudio。
お勧めはVC++。
>>972 マスク画像とカラーデータ作ってXorとAndで描画。
978 :
デフォルトの名無しさん :02/01/24 23:05
今、MSのページ見てきた。 >WebClassデザイナでは、ブラウザーに依存しないHTMLベースのアプリケーションを作成でき、Webサーバーに対する優れた開発手法を提供します。 とか書いてある。だったら、MSのページでまっさきにやれ、って感じ(w
979 :
デフォルトの名無しさん :02/01/24 23:09
今、MSのページ見てたんだが、 >なお、日本語版 VB で作成された実行ファイル (EXE) 等は、日本語 Windows 上でしか動作しません。英語環境で動作させるには英語版 VB でコンパイルしたものを使用する必要がありますのでご注意ください。 と書いてある。漏れは、英語圏の人にも自分のアプリを使ってもらいらので、英語版のVBを買う必要があるのだろう。
980 :
デフォルトの名無しさん :02/01/24 23:21
>>972 TransparentBlt()やAlphaBlend()でどう?
>>979 日本語版でまずいのは、一部のコンポーネントだけ。それらを
使わなければおっけーだよ。
981 :
デフォルトの名無しさん :02/01/24 23:42
えーと、とりあえず、6の日本語版のラーニングを買おうと思うのですが、これで何か不具合ありますか?
982 :
デフォルトの名無しさん :02/01/24 23:48
983 :
デフォルトの名無しさん :02/01/24 23:52
作ったEXEを配れない、とか変な制限は無いですよね?
984 :
デフォルトの名無しさん :02/01/24 23:53
そういえば、Delphi の無料版は、シェアウエア作れなかったな。
>>983 このスレの290-320あたり見てみ。ラーニングの辛さが分かるぞ。
>>981 VBを触ってみたいだけで
ラーニング買ってバカにされても気にしないなら何も言わない。
色々と作りたいと思ってるならやめとけ。
安物はなぜ安いのか、理由があるからだ。
987 :
デフォルトの名無しさん :02/01/25 00:10
>>986 いま読んできました。プロって8万もするんですね。
ラーニングがうんこなのは理解できましたが、8万はちょっと検討しないとすぐには買えないなぁ。
988 :
デフォルトの名無しさん :02/01/25 00:11
>981 アカデミックパック買えないの? 親戚の子とか使って。 それとここ前スレなんだけど、最初上げた犯人は誰?
990 :
デフォルトの名無しさん :02/01/25 00:22
>安物はなぜ安いのか、理由があるからだ。 MSの商品は売れているものほど(シェアが大きなものほど)値段が 高いからその点は留意すべし。VBはラーニングだと個人ユースでも 不便に思うことが多いように思う。 もしヴィジュアルな統合開発環境をさわってみたいだけならdelphiの パーソナルをすすめます。買っても5千円前後だしダウンすればタダ。
>>988 一応それは詐欺の一種では・・・?
とか言いながらも俺も友人に買ってもらったがw
埋めちゃえ 992
993