(´-`).。oO(VB初心者質問スレ Part12)
1 :
デフォルトの名無しさん :
02/07/14 19:29
2 :
デフォルトの名無しさん :02/07/14 19:33
2ゲットにだー
いまだに1のテンプレ変わらんの?ブビィ
>>4 ListBoxに5個登録して、
For i = 0 To lstItem.ListCount - 1
lstItem.Selected(i) = True
Next i
ってやってみましたが、なんか一番上のチェックしかつきませんでした。
>>6 全部できるけど?
Private Sub Command1_Click()
For i = 0 To List1.ListCount - 1
List1.Selected(i) = True
Next i
End Sub
Private Sub Form_Load()
List1.AddItem "0"
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
End Sub
7ではない。
>>6 それでなったよ。なんか選択状態がちょっとおかしいみたいだけど。
OSとかサービスパックとかのせいかな?ちなみに俺はwin2000SP2、VB6SP5
>>7 それでやってもなりません。
えっと、一回コマンドボタンを押すと、
一番上が選択され(反転表示)、
チェックがつきます。
もう一度押すと、1番上が選択されたまま上から2番目も選択され、
2番目にチェックがつきます。
もう一度押すと、1番目、2番目が選択されたまま、更に3番目も選択され、
3番目にチェックがつきます。
5回押すとようやく全部チェックがつき、
すべてが選択された状態になります。
当然styleプロパティが1-チェックボックスになってるので、
マルチセレクトはできないはずなんですが、なぜかマルチセレクトされちゃってます。
えっと、Windows98se,VB6sp5です。
>>9 マルチセレクトっぽくは俺ん所もなる。実行後4と5行目が選択状態になってる。
選択状態がおかしいってのはそういうこと。
最後にlstItem.Refreshしたらどうなる?
うわ。 すんません。 Clickイベントの中でチェックされてる項目を調べてるコードがあったんですが、 それを外してみたらちゃんと動きました。 (MouseDownに引っ越し) これが悪さしてたんですね・・。 アホですんません。 色々ありがとうございました。
13 :
デフォルトの名無しさん :02/07/14 20:39
textに文字を入れさせ、if文によって、文字が9文字以下ならOK。 10文字以上ならダメって感じにしたいのですが、文字の量を判断するにはどうすればいいのでしょうか?
Lenだろ?
16 :
デフォルトの名無しさん :02/07/14 20:48
VB厨は氏ね!
心配しなくともそのうち絶滅する
>>13 脊髄反射でここ来ないで少しはヘルプ読めよ
すいません。SQL文の話になるんですが、文字列の中にシングルコーテーションを含む 検索はシングルコーテーション2こ並べてクリアできますよね。でも%_を検索 したいときってどうすればいいですか?
マルチポストカコ(・∀・)イイ!
と思ったら誘導されてたのか
>>22 あちこちのスレで浮気しちゃ駄目よ。
みんなもう寝てるから、時間を開けてまた来たら?
25 :
デフォルトの名無しさん :02/07/15 01:49
strName = "名無しさん" とかしたときに、この変数のアドレスを取得できないでしょうか。Cみたいに。 関数のアドレスだとAddressOfみたいので取得できるみたいですけども・・・ 先生助けて。
>>25 何のために取得したいのか知らんが隠し関数のStrPtrで取得できる
29 :
デフォルトの名無しさん :02/07/15 11:11
ListViewを詳細表示にして表の用に使ってるのですが、 ListView.ListItems(index).ListSubItems(key) = "書き換える文字" という感じにリストビューの中身を書き換えると、 ListView全体に再描画がかかってチラつきます。 チラつかせないようにListViewを書き換えるにはどうしたらいいですか?
>>28 出してみます。物凄く単純なんですけど。。。
Dir("パス", vbDirectory + vbHidden + vbSystem)
"パス"のところにはネットワーク上のフォルダのフルパスが入ってます。
Win98seで実行すると"."が返ってきます。
Win2000で実行するとエラーになってerr.Descriptionは「Bad file name or number」です。
WinNT で実行すると""(空文字列)が返ってきます。
2000・NTはいづれもadministrator権限ユーザーで実行しています。
対象フォルダはエクスプローラーではアクセスする事が出来ています。
31 :
コギャル&中高生 :02/07/15 11:46
32 :
デフォルトの名無しさん :02/07/15 16:11
あのう、VBでテキスト入力された値が小数以下(**.*とか)かどうかを スマートに判定するにはどうしたらよいでしょか。 Midでピリオドを探すしかないのですかね?教えてください。
33 :
デフォルトの名無しさん :02/07/15 16:16
>>30 それではソース出したとは言わんと思われ。
34 :
デフォルトの名無しさん :02/07/15 16:19
MidよりはInStrのほうが
>>32 ヒント:小数を整数化したらどうなるか。それを使ってできないか。
わかるまで考えれ。パズルと同じだ。
>>34 それだったら25.0等と入力して期待を裏切ってやる。
個人的には小数点がピリオドじゃない場合もあるから ピリオドを使うのは好きじゃないんだよな。
39 :
デフォルトの名無しさん :02/07/15 16:39
40 :
デフォルトの名無しさん :02/07/15 16:47
少数点以下何桁かって整数何桁をlog使って出すように計算で求められんのかな?
42 :
デフォルトの名無しさん :02/07/15 16:54
>>41 やって見れ、できるから。
但し最小桁以外は0にしないと…
小数以下つうのは,どういうこと?
小数点以下に意味のある数字が連なっているということ?
それとも1より小さいつうこと?
前者なら
>>35 で
後者なら1と比較しれ
44 :
デフォルトの名無しさん :02/07/15 16:58
「小数を整数化」という言い方が間違ってると思われ。
単に「整数化」する。
それと元の数値を比較すると・・・
って事じゃないの?
>>35 サン
45 :
デフォルトの名無しさん :02/07/15 16:58
てか、束胃腸演算を知らないのか?
46 :
デフォルトの名無しさん :02/07/15 17:03
キーフックをしたいんですけど、やりかたを教えてもらえませんか?
すみません。言葉が足らない、というか間違ってました
入力値として受けたいのは整数で(金額や、数量など)
その項目に、25.5などといった少数以下を使用した不正な値が渡されたかを
チェックしたいのです。
ですが申し訳ないことに、
>>35 氏の整数化の意味がわかりません
すみません。すみません。
整数化した物を リアルに変えて 元の値と比較、ですよね?
>>49 そうよん。だからカーディナルな変数でやっちゃ駄目。
>>42 いや、最小桁以外が0の時はわかるんだが、そうじゃない場合。
53 :
デフォルトの名無しさん :02/07/15 17:22
ComboBoxでリスト内容を選択したときに上がるイベントは もしくは変更された事を検知する方法はどうすればいいの? リストにあるデータを選択するだけではChange イベントが 発生しないようだし。
>>30 パスの部分は "\\サーバー\共有" の形ですか?
だとしたら、"\\サーバー\共有\" とするとうまくいくかも。
>>33 ん。こんなもんですよ。
ホントはDirの戻り値を変数に入れてるくらいです。
この質問はもうダメっすかね?
レスもないし没という事にしておいてください。
続はどうにかしてみます。
ありがとう。
>>54 諦めた直後にレスがっ!
現在は "\\サーバー\共有" の形です。
"\\サーバー\共有\" で試してみました。
WinNTでは値が戻りました!
おそらく2000もいける事でしょう。(現在2000マシン使用中でテストができません。)
ありがとう!ほんとにありがとう!
>>51 んなものいったん文字列処理かけるとか、negative処理かけるとか、なんとでもやりようはあるじゃん
58 :
デフォルトの名無しさん :02/07/15 23:13
Winsockコントロールを使ってサーバー上にあるテキストを読み取りたいのですが、どうすればいいでしょう。
ローカルや、microsoft.comに接続して Get /index.html ってやったのは成功しました。
どうやら www.***.**.** みたいなページは出来るみたいです。
wwwでは無いページが駄目みたいです。具体的に言うと
ttp://members13.tsukaeru.net/nasumi/index.html みたいな感じのページがDLできません。どうやったらいいですか?
>>58 members13.tsukaeru.net
に接続しろ!
一応接続はしてる。 Private Sub Command1_Click() If sckMain.State <> sckClosed Then sckMain.Close DoEvents End If sckMain.RemotePort = 80 sckMain.RemoteHost = "members13.tsukaeru.net" sckMain.Connect End Sub Private Sub sckMain_Connect() sckMain.SendData "GET /nasumi/index.html" & vbCrLf & vbCrLf End Sub Private Sub Command2_Click() sckMain.Close sckMain.LocalPort = 0 End End Sub Private Sub sckMain_DataArrival(ByVal bytesTotal As Long) Dim strBuff As String sckMain.GetData strBuff txtHTML.Text = txtHTML.Text & strBuff & vbCrLf End Sub
>>60 できたよ。
Option Explicit
Private Sub Command1_Click()
Winsock1.RemoteHost = "members13.tsukaeru.net"
Winsock1.RemotePort = 80
Winsock1.LocalPort = 0
Winsock1.Connect
End Sub
Private Sub Winsock1_Connect()
Winsock1.SendData "GET /nasumi/index.html HTTP/1.0" & vbCrLf
Winsock1.SendData "Host: members13.tsukaeru.net" & vbCrLf
Winsock1.SendData vbCrLf
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData
MsgBox strData
End Sub
>>61 ありがとうございますた!
接続した後にhost: 〜.net みたいなのをおくらにゃならんのですか。送らなくても出来るとこがあるんでわけわかめです。
どうやら俺はhttpプロトコルを勉強しないと駄目のようですネ。
>>29 ですが、不可能ですか?
分かる方ご教授願います。
64 :
デフォルトの名無しさん :02/07/16 02:15
ある変数の中身が数値であるか否かの判定方法キボンヌw
>>64 If Isnumeric(変数) Then
ここ来る前にヘルプ読もうな。
ペイントソフト作ってるんですが マウスダウンしたところからマウスアップまでの大きさの円を描く方法と 描画したものの中身を塗りつぶす方法がわかりません。
67 :
デフォルトの名無しさん :02/07/16 08:06
推薦図書スレとこちらで迷ったのですが、あちらはあまりVBの話題が出ていないようなので。
現在Cでプログラムを書いてコンソールで動かしているアプリがあるのですが、
これをGUI化しなければならなくなりました。
GUI作るのは
VC++→面倒
VB→簡単
と聞きましたので、今のプログラムをVC++でDLL化し、VBで作ったGUIから利用しようかと思っています。
こういう用途でVBを利用する場合、お勧めの書籍はありますでしょうか?
VBは全く触ったことがありません。
webで調べてみたのですが、
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-0802-2 こういう感じの、VB寄りの本があればいいなぁ、と思っています。
>>67 そういう人は、迷わずC#にしとけ。
VBと同じ様にGUIが構築できて、かつ、コードはほとんどCと同じ
感覚で使えるぞ。
>>67 Borland C++ Builder という選択肢もあるよ
とか書くとM$マンセーな皆様に袋叩きにされる罠
>>67 いや、この人は業務か何かで、C#もBCBも無い環境で事を成さねばならないのでは?
素直にVB本を漁るのが吉。
VB本といってもCとのデータ連携を詳しく紹介したのなんてあるかあ? 下手すりゃネット上の情報の方が豊富かも。
もともとのメイン処理がCで書いてあって、それをDLL化して VBで画面つくるんだよね。 VBって構造体の記述もネストできないし、 スタティックな変数も64KB未満でないと駄目だし、 VBで確保したエリアをDLLに渡す部分も、ちゃんと リニアなエリアが確保されてるのかどうか良くわからんし、 VB使ったことが無いんだったらお勧めしません。
VBって考えてる以上にクソだよ。 妙な幻想は抱かないのが吉
>>71 dllから呼ぶのだから、API使うのと変わりないでしょ。
漏れはそういうふうにdllの方を作ったけどね。
>下手すりゃネット上の情報の方が豊富かも。
この部分は納得、同意。
>>72 > VBって構造体の記述もネストできないし、
たいした問題ではないと思いますが。同等のことは出来ますし。
> リニアなエリアが確保されてるのかどうか良くわからんし、
数値配列は連続した領域に割り当てられることが保証されてますけど、
それじゃ不十分って意味ですか?
> VB使ったことが無いんだったらお勧めしません。
これには同意します。
>>72 構造体はネストできます。
64KB未満でなくていけないのは構造体内の固定長配列/固定長文字列の合計サイズです。
VBで確保したエリアについてはMSDNに書いてあるので良くわかってから使ってください。
>>75 同等のことはできますね。
でも、見通しが悪くないですか?
VBで画面を作って、処理は、DLL側でっていう
作りにするとおそらくVB側とDLL側で同じデータ構造を
定義する必要が出てくると思うんですよ。
で、もともとはCで書いてあるんだからC用の構造体の定義は
すでにある。それを元にVB用の構造体の定義をつくる。
そのとき、もともとのC用の定義は、構造体をネストしてって記述に
なっている。VB用の定義上はそれが許されない。
ぱっと2つの定義を見て同じだってみれないんです。
>リニア...
最初VB+DLLでプログラム作ったとき、
自分で構造体を定義してそれをREDIMで
エリアを確保して、そのエリアのアドレスをDLLに渡して
DLL側でそこに書き込むってことをやろうとしたとき、
大丈夫かなぁって不安になりました。
VBって変数に初期値をセットしないとメモリが割り当てられない
とか(本当?)、String型は単純なバイト並びじゃないとか、
ちょっと支離滅裂ですが、C言語しか使ったこと無い人が
VB+DLLという形でプログラムを作ろうとすると、
予想以上にデータの受け渡しに戸惑うと思う、という事が
言いたいだけですはい。
>>もしかして漏れだけ?
>>77 構造体定義の中に構造体定義をネストするほうが見通しが
悪いと俺は思うのだが。
まあ,他でネスト内部の構造を参照しないような、その場所だけの
定義だけだったらそれでもかまわんだろうけど。
>>77 もしかして、前スレで ユーザー定義型の配列をDLLに渡そうとして、
はまってた人ですか?
> 同等のことはできますね。
> でも、見通しが悪くないですか?
あんまり気にならないですけど。
というか、私が構造体のネストを使わないだけか。
> VBって変数に初期値をセットしないとメモリが割り当てられない
> とか(本当?)、
そんなことは無いです。
少なくとも参照した時点(つまりDLLに渡した時点)では初期化されてます。
> 予想以上にデータの受け渡しに戸惑うと思う、という事が
> 言いたいだけですはい。
> >>もしかして漏れだけ?
いや、私も最初はその辺で戸惑いましたよ。
80 :
デフォルトの名無しさん :02/07/16 13:51
唐突ですいません。 VBで作成したEXEで戻り値を返すにはどいしたらいいのでしょうか? どなたかおながいします・・・。
81 :
デフォルトの名無しさん :02/07/16 14:24
質問です label1.label2.label3の中の数字が一致したとき label4の数字が1増えるっていう風にするには どうすればいいでしょうか? ちなみにlabel1.label2.label3にはそれぞれ違うタイマーの数字が入ります なんか意味わかんない文章ですがよかったら教えてほしいです お願いします
if文って知ってるか?
>>80 気になったので調べてみました。
結論:ムリ
.dllでかかれた部分をモジュールへ変更してるんですが ハンドルデータの取扱いがよく分かりません。 Cのソースで theHogeP = GlobalLock(theHogeH); theHogeP->*** = XXX; GlobalUnlock(theHogeH); のtheHogeP->***の部分をどうVBへ変換したらよいのか だれか教えてください
>>84 それはVBが分からないというよりCが分かって無いのでは。
>>84 CopyMemory theHogeP + オフセット , XXX , 長さ
かな?もしくは、ユーザー定義型を作って、いったんそっちに移すって手もあります。
dim hoge as ユーザー定義型
CopyMemory hoge,theHogeP,長さ
hoge.*** = XXX
CopyMemory theHogeP,hoge,長さ
>>85-86 一応Cは理解してるつもりだが。
Cで書いた自作.dll(動作確認済み)をモジュールへ変更してる
とこなんでVB<->Cの変換部分がよくわかんないんだよ。
具体的にはPRINTDLGのなかのDEVMODEの値を変更したいんだけど
#ACCESS2000のPrinterオブジェクトがつかえない対策
>>87 Thanx!!!
追加でもうひとつ質問なんだけど
この場合のCopyMemoryみたいにAPIに構造体をわたす時は
ポインタ渡しになるの?値渡しになるの?
#単純にVBだと考えれば参照渡し(≒ポインタ渡し?)と考えて
#いいんだろうか…
>>89 > この場合のCopyMemoryみたいにAPIに構造体をわたす時は
> ポインタ渡しになるの?値渡しになるの?
Declare 宣言でByRefを指定すればポインタ渡し、ByValを指定すれば値渡しになります。
どちらも指定しなければ、ByRef(ポインタ渡し)です。
詳しくは MSDN の 「DLL および Windows API へのアクセス」 を参照してください。
>>89 追記
ユーザー定義型の値渡しは出来ません。
>>79 その節はどうもお世話になりました。
最近 C# を買ってみました。
私には、こっちのほうが全然わかりやすいです。
95 :
デフォルトの名無しさん :02/07/16 21:10
WAVE使いたい 教えれ
>>77 VBのStringはBSTRです。
先頭に文字列長 + その後に実際の文字列(終端文字なし)
>>80 ActiveX EXEにすれば、メソッドの戻り値を返せますが?
(そーゆー意味ぢゃない?)
標準EXEでやるなら、終了処理で、結果コードをINIファイルに吐くとか?
(インチキ臭いというか、ルール違反というか・・・)
>>94 基本的に、C / C++ 向けに書かれたAPIサンプルコードをVB用に書き直すのは、
C、VBの両方の知識がないとむずかしいような気がする。
(それとも、APIビューアーか、WEB検索で探すか)
この例は、たまたま知ってる(仕事で使ったことはないけど)ので、サンプルが
掲載されているサイトを紹介しときます。
Win 2000 なら、NTとおなじコードで動くはず。(未確認)
しかし、TerminateProcess って使っていいもんかね?
「強制終了」だから、望ましくないと思うのだけど。
(終了処理が正常に行われない、リソースのリーク等の問題があるのでは?)
100 :
デフォルトの名無しさん :02/07/16 23:29
VBでコンソールアプリケーションつくるにはどうすれば良いのでしょうか?
101 :
コギャル&中高生 :02/07/16 23:30
>>98 ありがとう うまくいきました!
これってデバッグで動かすとVB自体も終了しちゃうんですね。
コモンダイアログについての質問です。 ShowSave等で前回保存した場所を記録している様なのですが、 その情報はレジストリのどの部分に書き込まれているのでしょうか? 環境はWindows2000, VB6.0です。
105 :
ななし@車輪の再発明野郎 :02/07/17 04:38
>>103 知らないけど・・・同等機能を独自に実装するんじゃダメなの?
調べるより作った方が早いと思うんだけど。
>97氏 有難う御座います 助かりました
カップヌードル食べてるときにさ、ふと魔がさして 発泡スチロールの容器を横からフォークでブスリと 差してみたんだよね。そしたら3つの穴からスープが ピューッと出てきて止まらないんだ。 あわてて穴に口を付けてスープを吸ったけど全然 止まらないんだ。熱くて火傷しそうだったし、そのまま 流しに持っていった。ようやく落ちついてカップの中を 見たら麺がまだ残ってた。我ながらアフォだと思った。
108 :
デフォルトの名無しさん :02/07/17 09:39
>>103 そこまで見当ついててなんでレジストリ検索しないかなー
109 :
デフォルトの名無しさん :02/07/17 10:42
110 :
デフォルトの名無しさん :02/07/17 11:15
みなさんにとってはくだらない質問だと思いますが もう一度質問します どうしてもif文の使い方がいまいちわかりません もしlabel1とlabel2とlabel3の数が一緒ならlabel4が1増えるっていうのができない a=a+1 if label1=label2=label3 then label4="" & a & "" ってやると、どうしてもlabel1とlabel2の数が一緒になるだけで1増えてしまいます 何が間違ってるんでしょうか? お願いしますm(__)m
なぜlabel1とlabel2の値がlabel3になってしまうのか よーく考えてみること。
>>115 自分の書いたソースをとことん見つめ直すのも勉強だと思われ・・・。
VBはヨクワカランガ if($label1 eq $label2 && $label1 eq $label3){ $label4++; } っということが必要であるかと。
119 :
デフォルトの名無しさん :02/07/17 16:17
>>115 label1=label2=label3
これをandつかってばらしてみる、label1=label2 and label2=label3
そうか、IF文を2つ書いてやってみる
だけど、こんなんでうまくいくのか?
115を読んだら「数」だな if ($label1 == $label2 && $label1== $label3){$label4++} に訂正。
>>115 分からないのであれば、分かるようにかけ。
例えば君なら下記のようになるんじゃね。
if label1 = label2 then
if label1 = label3 then
if label2 = label1 then
if label2 = label3 then
if label3 = label1 then
if label3 = label2 then
a=a+1
label4="" & a & ""
endif
endif
endif
endif
endif
endif
endif
>>115 「label1=label2」という比較式は、
label1とlabel2が等しければTrueを返す、そうでなければFalseを返す。
つまり、label1とlabel2が等しいときは、
>if label1=label2=label3 then label4="" & a & ""
この文は、
If True = label3 Then
という文と同じだ。
label3の値が"1"など0以外を意味する数字の文字列であったり、
"True"だったり、数値の-1だったりするとこの式は成り立つ。
そういう理由で、
>ってやると、どうしてもlabel1とlabel2の数が一緒になるだけで1増えてしまいます
となる。
実行時エラー484のおこしかたってわかる人いないでしょうか? 何が原因で出てるのかをつかみたいのですが、再現性がなくって。。。
Err.Raise 484 VB標準のエラーじゃない。
126 :
デフォルトの名無しさん :02/07/18 07:39
(´-`).。oO(Label.Captionってなってないと、見てて気持ち悪い・・・)
>>124 480 AutoRedraw イメージを作成できません。
481 ピクチャが不正です。
482 プリンタ エラーです。
483 プリンタ ドライバは指定されたプロパティをサポートしていません。
484 システムからプリンタ情報を受けるときに問題が発生しました。プリンタが正しく設定されているかを確かめてください。
485 ピクチャの形式が不正です。
486 フォームのイメージをこのプリンターで印刷することはできません。
Dim qry As QueryDef Dim qRs As DAO.Recordset Set qry = qmDb.QueryDefs("クエリーX") Set qRs = qry.OpenRecordset(dbOpenDynaset) を実行すると qRs.RecordCount = 1 になっていた。(実際は1500件) で Set qry = qmDb.QueryDefs("クエリーX") Set qRs = qry.OpenRecordset(dbOpenDynaset) qRs.MoveFirst qRs.MoveLast とするとqRs.RecordCount = 1500 でOK なんでか? わかる人 手をあげて
129 :
デフォルトの名無しさん :02/07/18 10:10
>>128 レコードセットは一度MoveLastで最終桁まで取らないと
RecordCountでは総数が取れないんだよ。
>129 MoveLastしなくても取れる場合があるから、そうとは限らないしょ。
>>130 ちゃんとヘルプに書いてあるよ。
そりゃRecordSetにデータが1つしか無いなら
MoveLastしなくても確実に取れるよ。
結局、カーソルでレコード総なめするような
コードは書くなって事だよ。だってパフォーマンス悪いだろ?
>>131 ループさせるとしても初期値と比較の分だけしか違わないかと。
ヘルプ読んだ? >Recordset オブジェクトでアクセスされたレコード数、またはテーブル タイプの > Recordset オブジェクトか TableDef オブジェクトのレコード総数を返します。 ってある。必ずしもレコード数が返る訳では無い事に注意だ。 つまり、 取れる場合がある→取れない場合もある→取れる事が保証されていない→取れない って考えとく方が痛い目を見ないで済むかと。
>132 クラサバでそれやったら、場合によっては絞め殺されるぞ...
>133 なるほど 「MoveLastしときなさい」ってことですね。 arigatou
>>132 んー・・イマイチ意味がワカランが。スマン。
何の初期値の事かな?
パフォーマンスが悪いって所の事をつっこまれてるとしての返答だが、
この場合、データ量が1500件程度ならいいが
10万件や30万件のデータ量になるとカーソルタイプにもよるが
極端にパフォーマンスが悪化するって事が言いたかったんだな。
>>135 なんだよ。
やさしくヘルプの引用してやらないと礼も言ってくれないのか。
クッソーーーっ グレてやる!!
世知辛い世の中やな。 (TーT)
>>138 PC初心者板にはそういう人間たくさんいるぞ。
まぁ、所詮はVB厨だとあきらめるのが吉。
140 :
コギャル&中高生 :02/07/18 12:35
知ってる。ちょっと逝ってみたかっただけ。ヾy( ̄ー ̄)
SQLで件数取得すればええやん。
145 :
デフォルトの名無しさん :02/07/18 13:11
>>138 NO付け忘れでし!気分を害してスマソ。
で、MoveLastは遅い(
>>136 )
とあるけど他に方法ありますか?
次はきっちり礼をしますのでヨロシク
>>128-136 ADOレコードセットなら、MoveLastしなくてもRecordCountは取れる。
パフォーマンス面でお奨めできないのは、DAOの場合と同様。
SELECT COUNT(*) しなさい。(件数が返る)
ADOやめてoo4oにしる!
ADOでやると-1が帰ってきて困る時があるYO 素直にCOUNT(*)。これ定説。
COUNT(*)の後で1件追加されたら困るYO!
RecordCountで取得した後で一件追加されても困る
どうすりゃいいのさ
ロックすれ(w
155 :
デフォルトの名無しさん :02/07/19 17:28
156 :
デフォルトの名無しさん :02/07/19 17:29
割り込みで呼び出された処理の最中に,ほかの割り込みが呼び出されることはありますか? それとも割り込み処理中は,暗黙的にほかの割り込みがdisableされているのでしょうか。 または,割り込み処理中に,自分と同じ割り込みが呼び出されることはありますか? たとえば,0.01秒に1回のTimer割り込みの処理が0.01秒以内で終わらなかった場合, 同じ割り込みが2度パラレルに処理されることはありえるのでしょうか。
ファイル処理(だと思うのですが)について質問です。 複数の画像が入っている1つのTIFファイルを複数のBMPファイルに変換する事は可能なのでしょうか?
158 :
デフォルトの名無しさん :02/07/19 17:45
159 :
デフォルトの名無しさん :02/07/19 17:57
みなさん、こんにちは VB6.0からOracle8.0.5にoo4oを使用して接続しているのですが、 処理が長いストアドを実行した場合に、タイムアウトさせたいのですが、 どのようにすればよいのでしょうか? 現在、処理が長いとVB側は延々と待ち続けるので、 これを10秒越えるとタイムアウトエラーで終わるようにしたいのですが m(__)m よろしくおねがいします
>>156 DoEventsを呼ぶか、イベント発生のきっかけとなるような処理(TextBoxのTextプロパティを変更する、
FormのRefreshメソッドを呼ぶなど)をしない限り、イベントプロシージャ実行中にイベントは発生しません。
>>157 自前でそういうコードを書くか、そういったライブラリを用意すれば可能です。
VB自体にはTIFFを扱う機能は無かったと思います。
162 :
デフォルトの名無しさん :02/07/19 18:16
>>160 ご回答ありがとうございました。
重ねて質問なのですが,「イベント処理中に別のイベントは呼び出されない」というのは
「別のイベントは受け付けられるが,呼び出しの順番待ちがかかる」ということでしょうか?
その場合,処理中のイベントが終了したときに,待機中だった別のイベントがまとめて
次々に呼び出されるということでしょうか。
また,たとえば0.01秒に1回のTimerイベントがあった場合に,別のイベントの処理に
1秒かかっていた場合は,その1秒の処理が終わったときに0.01秒のイベントが100個
呼び出し待ち状態になっているということでしょうか?
どうかよろしくおねがいいたします。
WM_TIMERと同じで、メッセージキューの中にWM_TIMERとか WM_PAINT以外のメッセージが無い限り呼び出されないはず >Timerイベント
>>161 ライブラリも考えたんですが、自分で作った方が色々と面倒が無くていいかな
と思ってはいました。
一度TIFファイルをバイナリエディタで開いてみたんですが、ヘッダ部分の
フォーマットが理解できませんでした。
BMPファイルのフォーマットはなんとか理解できたんですが、TIFからBMPに
にどの様に変えるのかが解らなくて・・・・
ライブラリのソースをみればいい。
>>162 基本的に順番待ちだが、Timerイベントはすっぽかします。
>>163 ?
Sub Command1_Click()
Dim StartTime As Double
StartTime = Timer()
Do While ((Timer() - StartTime) < 10.0)
Loop
End Sub
Sub Timer1_Timer()
Debug.Print ".";
End Sub
Timer1.Interval = 100 にして実行すると、Command1を押してる間は
Timer イベント がきてないみたい
168 :
デフォルトの名無しさん :02/07/19 23:16
>>162 1回だけ。
つまり、Timer処理ルーチンに入ったとき、設定時間をすぎていれば、
実行して、経過時間を0にリセットするだけ。
しかも、最小単位がWin9x系では90ms、NT系では55ms。
インターバルをこれ以上小さくしても意味がない。
ストアドプロシジャが時間喰ってるとしたら、 ストアドプロシジャの中で何か手を打たないとVB側からは 何もしようがないみたいな。
プログラムって何ですか?いろいろ知識をつけていきたいのですが 何から聞けばイイのか分からないくらいアレなので、 とりあえずこんなクサレ質問から。マジです。お願いします。
>>170 この板で見かけたカタカナを片端からサーチエンジンにかけて、
その意味がわかるようになれば、立派にやっていけます。
>171 ありがとうございます!ではとりあえず単語をメモって それぞれの意味を憶えてきます。
>>172 その心意気やよし! とりあえず
ちょうどきゅう
ぷろぐらむ
いい
あれ
くされ
まじ
でふぉると
かたかな
さーちえんじん
めも
からだ!
# マ板あたりにスレ立ててやってね。
174 :
デフォルトの名無しさん :02/07/20 02:45
ウィンドウのサイズを変えた時に、そこにくっつけたオブジェクトのサイズも 全体に合わせて変化するようにするにはどうしたらいいですか。
>>175 高くて買えない
と思ったけど、用語が分かって助かりました。
ありがとうございます。
177 :
デフォルトの名無しさん :02/07/20 02:57
>>175 なんかスゲー投げ遣りなレスだな。しかもBOC・・・。
>>174 マジレスすると変化前と変化後のフォームのサイズの割合を計算して
Dim objControl As Object
For Each objControl In Me.Controls 〜 Next
でフォーム上のコントロールコレクションをループして、高さと横幅をその割合で
変化させたらいいと思う。
178 :
デフォルトの名無しさん :02/07/20 02:57
179 :
デフォルトの名無しさん :02/07/20 03:20
TextboxのmultilineをTrueにしてカーソルの行の位置と列の位置を取得するにはどうすればいいですか? ご教授お願いします
180 :
デフォルトの名無しさん :02/07/20 03:27
>>179 SelStartプロパティで何文字目にカーソルがあるかわかる。
これは改行コード込みなので、
・そこまでのCR LFコードの数を数えたら行がわかる
・CR LFコードからどのくらい後ろなのかを数えたら列がわかる
181 :
デフォルトの名無しさん :02/07/20 03:32
>180 ヒントありがとうございます。頑張ってやってみます
>>177-178 ありがとうございます。買わないでも、できる人はできるってことですね。
やってみます。
>>179 Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim lngRow As Long
Dim lngCol As Long
Call subGetTextRowCol(Text1.Text, Text1.SelStart, lngRow, lngCol)
Debug.Print CStr(lngRow) & " - " & CStr(lngCol)
End Sub
Private Sub subGetTextRowCol(ByVal strTarget As String, _
ByVal lngSelStart As Long, _
ByRef lngRow As Long, _
ByRef lngCol As Long, _
Optional ByVal strDemiliter As String = vbCrLf)
Dim strArray() As String
Dim strStartToSel As String
lngRow = 0
lngCol = 0
strStartToSel = Left$(strTarget, lngSelStart)
strArray() = Split(strStartToSel, strDemiliter)
On Error Resume Next
lngRow = UBound(strArray()) - LBound(strArray())
lngCol = Len(strArray(UBound(strArray())))
On Error GoTo 0
If lngRow = -1 Then
lngRow = 0
End If
If Err.Number <> 0 Then
Err.Clear
lngCol = 0
End If
Erase strArray()
End Sub
>>182 下のプログラムみたいにやってみたけど、元のコントロール位置を保存してないと、
精度落ちから、かなりずれてくるね。特に押しつぶしたあと元の大きさに広げてみると悲惨。
Private mlngFormHeight As Long
Private mlngFormWidth As Long
Private Sub Form_Load()
mlngFormHeight = Me.Height
mlngFormWidth = Me.Width
End Sub
Private Sub Form_Resize()
Dim dblChangedSizeH As Double
Dim dblChangedSizeW As Double
Dim objControl As Control
dblChangedSizeH = CDbl(Me.Height / mlngFormHeight)
dblChangedSizeW = CDbl(Me.Width / mlngFormWidth)
For Each objControl In Me.Controls
With objControl
.Height = CLng(.Height * dblChangedSizeH)
.Top = CLng(.Top * dblChangedSizeH)
.Width = CLng(.Width * dblChangedSizeW)
.Left = CLng(.Left * dblChangedSizeW)
End With
Next
mlngFormHeight = Me.Height
mlngFormWidth = Me.Width
End Sub
185 :
デフォルトの名無しさん :02/07/20 15:54
>183 コードを書いていただきありがとうございます。理想のうごきができました。 あともうひとつ質問ですがツールバーにテキストボックスやオプションボタンをつけることはできるのでしょうか?
>>185 配置したいコントロールをCtrl + Xで切り取ってから、ツールバーをクリックして選択し
Ctrl + Vで貼り付ければOKかも
申し訳ありません、どうかお教えいただきたく書き込みしております VBScriptで「名前を付けて保存」のダイアログボックスが どうしても作れません コモンダイアログコントロール (Comdlg32.ocx)を インストールするところまではわかったのですが 皆様どうかお願いします。
>皆様どうかお願いします。 ふ。
189 :
デフォルトの名無しさん :02/07/20 18:02
>>187 インストールできたら
[プロジェクト]メニューの[コンポーネント]クリックして
リストの中から[Microsoft Common Dialog Control 6.0]選んでOKね。
フォームに貼り付けて
CommonDialog1.ShowSave で実行。
VBSですが何か。
∧ ∧ / ヽ ./ .∧ / `、 / ∧ /  ̄ ̄ ̄ ヽ l::::::::: .l |:::::::::: -=・=- -=・=- | .|::::::::::::::::: \___/ | ヽ::::::::::::::::::: \/ ノ VBSだとぉ〜〜〜?
MsgBox "名前を付けて保存"
193 :
デフォルトの名無しさん :02/07/20 19:51
VB6.0で、ディレクトリが存在するか確かめるにはどうしたらいいですか?
MkDir "ディレクトリ" MsgBox "ディレクトリは存在します"
RmDir "ディレクトリ" MsgBox "ディレクトリは存在しません"
過去ログ(Part6)で解決しました。気をつけます。
198 :
デフォルトの名無しさん :02/07/20 21:52
bregexp.dllを使って"hoge"を"boke"に変換したい時 lngRtn = Replace("s/hoge/boke/g", strTarget) こんな感じにするみたいなんですが、bokeのところを変数にしたい時は どうしたらいいんでしょうか? このReplaceと普通のReplaceと同時に使えるようにする方法でもいいです。
199 :
デフォルトの名無しさん :02/07/20 21:55
>>198 馬鹿ですか?馬鹿だよね、きっと。
>bokeのところを変数にしたい時
よくこんなことも分からんで金もらってるなあ、あんた。
$bokeが変数とすると lngRtn = Replace("s/hoge/$boke/g", strTarget)
201 :
デフォルトの名無しさん :02/07/20 22:10
>>199 金なんかもらってないですよ。真面目に使い出したのは昨日なんです。
買ったのはずっと昔なんですが。
>>200 ↓のようにやると、2個目のMsgBoxは$strNew$strNewと表示されます。
Private Declare Function Replace Lib "bregexp" _
(szRegstr As String, szTarget As String) As String
Private Sub Form_Load()
Dim strTarget As String
Dim strNew As String
strTarget = "hogehoge"
strNew = "boke"
MsgBox Replace("s/hoge/boke/g", strTarget)
MsgBox Replace("s/hoge/$strNew/g", strTarget)
End Sub
×bokeのところを変数にしたい時は ○bokeのところに変数を使いたい時は
>>201 VBならVBらしくbregexpなんか使わないでRegExpオブジェクトを使え。
204 :
デフォルトの名無しさん :02/07/20 22:13
200は激烈馬鹿だな。馬鹿さが凄いよ。
>
>>200 >↓のようにやると、2個目のMsgBoxは$strNew$strNewと表示されます。
当たり前だろ。どこに変数がある?眼はみえてるか?
>>203 どうもです。さっそくそのRegExp探してみます。
206 :
デフォルトの名無しさん :02/07/20 22:15
何を使おうが一緒だよ。
>>198 200のミスに気付かないと。
201は自分です。 200ってもしかしてネタなんですか。
動いてるぞ $_='198はhoge';$boke='馬鹿'; s/hoge/$boke/g; print $_;
>>208 動いたって言うのは、Perlの話だったりしますか?
ShellExecute("perl hoge.pl")
"s/hoge/" & strNew & "/g"
>>212 ありがとうございます!ホント助かりました!
214 :
デフォルトの名無しさん :02/07/20 23:03
>>198 200のアホさが分かった?お前もひどいけど。
>>214 >>200 はネタで引っ張りすぎだからイヤだが
偉そうにネタにマジレスしているお前は馬鹿だ。
>>215 ふーん、俺にはあんたが一番偉そうに見えるけど。
わざわざ
>>217 書いた時点で、大馬鹿にしか見えなくなったね。
219 :
本気の名無しさん :02/07/21 00:41
Wpeというツールは起動させたソフトに送られてきているパケットのデータを見たり、そのソフトからパケットを送ったりしているようにみせたりすることができるんですが、 これはVBでは作れないんですか? もし作れるとしたらなにか参考になるソースまたはページはありませんか?
>>219 取りあえず少しでも大それたことしたいと思ってるならはじめからVBなんぞ選ぶな。
221 :
デフォルトの名無しさん :02/07/21 00:51
>219 VBオンリーでは作れないと思ったほうがいい。
224 :
本気の名無しさん :02/07/21 10:26
>220 >221 ご返事ありがとうございます。 やっぱり所詮はVB Wpeのようなソフトは作れないのですか がっくり
パケットモニタってやっぱりAPI呼び出しだけでは無理なんでしょうね? デバドラが作れるくらいじゃないと無理ですよね。
>>225 しかも最近は自分宛のパケットしか飛んでこない罠。
>>226 いやいや、盗聴目的ではないのでそれはいいんですが。
ロケットマウスのようにマウスを自動で移動させてクリックさせたりとか させてみたいんですが、 これはVisualBasicではできるのですか?
229 :
デフォルトの名無しさん :02/07/21 13:44
>VisualBasicでは VBはなんだって可能です。でも、VBでAPIやポインタを扱えない お前には無理です。
>>230 / ̄ ̄ ̄ ̄\
(____人 )
(-◎-◎一 ヽミ|
( (_ _) 9)
( ε (∴ |_ ズ・・・・ザ・・ザァ
____ヽ______/ヽ___)( ̄( ̄ ̄ ̄|)
(ミ_|__( (ミ_|____) ヽ. ヽ:::::ヽ:::::::ヽ
( ⌒ヽ:/::::::::丿
ヽ | ‖:::::::丿 (´⌒(´⌒
\ | ‖::::ノ (´⌒ (´⌒
ゝ____丿__‖ノ_(´⌒ (´⌒
232 :
デフォルトの名無しさん :02/07/21 14:58
ニューラルネットワークを使った 簡単な文字認識を行うプログラムどこかに公開されていませんか?
>>230 > VBはなんだって可能です。
なら、マルチスレッドで複数のフォームを並行的に更新するアプリを書い
てみな。
>>234 マルチスレッドを使わないで複数のフォームを並行的に更新するアプリは書けるけどな。
>>237 ほら。君にも作る方法わかってるじゃん。
>>238 で、スレッドは一般的にどう実装されてるか知ってるかい?
スレッド以外って言うから期待しちゃったよ。
>>239 マルチスレッドは手段であって目的じゃないよ。
久しぶりに来てみたらなんか荒れ気味だな。 >234 VC++使ってもいいしActiveXEXEでも出来るぞ。
>>238 何するかと思ったら精度の悪いTSS。
それをスレッドの代わりになるとかいっちゃあ。
VBを使い始めて二ヶ月になるんですが 行き詰まってしまいました。 Form1で計算して出た結果(数字)を Form2で使いたいときってどうしたら良いですか。 教えていただけませんか?
245 :
デフォルトの名無しさん :02/07/21 21:29
初心者による実験結果報告。 Form1で Public hensu As Long とやって、Form2で MsgBox Form1.hensu とやると表示できた。 ホントのところは知らない。
246 :
デフォルトの名無しさん :02/07/21 21:32
>>244 なんてフォームのなんていう変数ってかんじで指定してやる。
それが、
>>245 のいう
Form1.hensu
V B 厨 。 オ ブ ジ ェ ク ト 指 向 全 然 わ か っ て お り ま せ ん。
>>245 ,246
ありがとうございます。
Dim でなく Public で宣言するのと
表示させる時の指定の仕方(Form1.hensu ってふうに)を
変えればいいみたいですね。
うまく表示されました。
感謝です!!
>>234 >なら、マルチスレッドで複数のフォームを並行的に更新するアプリを書い
>てみな。
だから言ってるだろ?
VBでAPIやポインタを扱えない
お前には無理です。って。
脳みそあんのか?
>>250 ほう、API でできるとな。ちなみに、VB のコントロールがマルチスレッ
ドに対応してねー事ぐらいは知ってるよな。
いきがるのは止めたら ? 今時恥ずかしいだけだよ。
まっ、VB 厨だからしょうがないか...。
アホの234についでに言っとくがIDEでの実行は無理だからな。 exeにしてからじゃないとIDEが落ちるからな。
>251 アホまるだしだな。専門卒か?
自分自身(アプリ自身)をアウトプロセスサーバとしてレジストリに登録して
自分自身を呼び出せば出来るよ(海外では常識なんですが)
>>251 COM知りませんって言ってるようなもんだよ。
>>252 プププ、まだ言ってら。ヴァッカじゃねーの。IDE なんて関係ないよ。
「VB のコントロール」と書いてあんのに、脳みそ腐ってない ?
まあ、マルチスレッドプログラムなんて書いたことないんだろーね。
君には、一生無理だろうから、おとなしく、VB で API とポインタ
(もどき) 使ってな。その方が、君も君の回りも幸せだよ。
>>254 Createthreadとは大違いな大袈裟な処理だな。
>>254 頭悪いなぁ。
> アウトプロセスサーバ
どこが、マルチスレッドなんだよ。
これだから、VB 厨は...。
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Public Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hwnd As Long, ByVal lpString As String) As Long Public Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hwnd As Long, ByVal lpString As String, ByVal hData As Long) As Long Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long Public Declare Function RemoveProp Lib "user32" Alias "RemovePropA" (ByVal hwnd As Long, ByVal lpString As String) As Long Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long と ObjPtr関数 で可能 つーか、 「VBじゃマルチスレッドできないだろアフォ」つーのは昔から低脳VC厨と決まっておる。
正直、VBでマルチスレッドは可能。 Createthreadで実現できる。でも252にあるように 開発中にデバッグしたらあぼーんする。
ところで皆さんはVB.NETへの頭の切り替えはできましたか? 僕は急に難しくなったので困っています。
あぼーんするなら使えねえジャン
>>261 VB6でクラスやらインタフェース継承やらをやってないから
そういうことになる。自業自得だ。
ポリモーフィズムが分からんのは悲惨だよ。マジで。
>>268 >ポリモーフィズム
そもそも名前が覚えられん。
だから多態で一生通す。
>>266 いきなりVB.NETで多態をやるのが難しいのならVB6で練習しとけ。
みなさーん ここは初心者質問スレですよー。
>>266 270は無視しとけ、.NETで出来なければ無理
VB初心者スレを覗くVC厨っていつもアフォ臭いことばっか言うな
>>272 なんでやねん。概念さえ理解すれば.NETでも簡単にできるだろ。
276 :
デフォルトの名無しさん :02/07/22 02:18
IEとかで、表示されてる文字列の上でダブルクリックすると 単語(日本語の場合は、必ずしも単語となるとは限らないですが) が選択されますよね。それと同じようなことをカーソル(マウスカーソルじゃなくて) があるところでやるにはどうしたらよいのでしょう。
InStrRev, InStrを使って、カーソルがあるところから前方、後方に、境目を探すように すればいいんでしょうか?
278 :
デフォルトの名無しさん :02/07/22 09:48
>>279 実装ではなく、設計レベルでの質問。(VB6.0 Or VB.NET)
(開発チームにスキルの低い糞メンバーが多数紛れ込んでいるという前提で)
API関数はラッピングすべきでしょうか?
私的には、ある程度以上のスキルがあれば、APIだからといって隠蔽する必要は
ないと思ってますが、一般論としてどうでしょうか。
ラップするということは、多かれ少なかれ、クラス設計を考えない訳には行かず、
設計コストを上回る利点(再利用性、保守コストの軽減)がなければ意味がない
と思ってますが、実際のところ、APIのラッパー化で大きな成果(品質面、コスト
面で)を挙げた経験のある方、いらっしゃいますか?
>>279 >(開発チームにスキルの低い糞メンバーが多数紛れ込んでいるという前提で)
>ある程度以上のスキルがあれば
言ってることが矛盾してるので答えようがない。以上。
>278 文字コードの範囲でグループ分けしているんじゃないか? 例えば、「表示されてる文字列の上でダブルクリックすると 」だと、 [表示] [されてる] [文字列] [の] [上] [で] [ダブルクリック] [すると ] みたいなかんじ。
>>279 あくまで俺の意見だがAPIだからという理由だけでラッピングするのはお勧めしない。
たとえばAPIのSleep。これをラッピングしても利点はほぼないといえる。
しかし、ファイル入出力APIなどはVBのファイル入出力ステートメントより
FileSystemObjectの方が使いやすいようにラッピングする利点がある。
(もっともファイル入出力APIを直接使う理由はあまりないだろうが)
また文字列を扱うAPIの場合、APIの呼び出しの前後に文字列領域の確保・
vbNullCharの削除が毎回発生するのでこれもラッピングした方がいいかもしれない。
ただクラスではなく標準モジュールとしてラッピングでも良いと思う。
繰り返すが、APIと言う理由だけでラッピングする必要はないだろう。
APIも宣言が違うだけであってただの関数と同じとみなす。
単純なAPIはそのまま使い、クラスの方が良い場合はクラスとし、VBで使うのが
少しだけ面倒な場合は標準(or クラス)モジュールで軽くラッピングすればよいだろう。
なおクラスの方が良い場合は、クラスとはなにか?どんなときに使用すればよいかが
わかっていれば、簡単にわかるだろう。あとクラスにする場合も全体的な設計こそやるが、
使うと決まってない機能まで実装する必要はない。拡張性さえあればよい。
>>282 コメント感謝。参考とさせて頂きます。
> あとクラスにする場合も全体的な設計こそやるが、
> 使うと決まってない機能まで実装する必要はない。拡張性さえあればよい。
確かにそれが最大の利点ですね。
用語についての質問です。 例えば、TextBox.Textプロパティを変更すると、TextBox_Changeイベントが 発生しますが、これって、「トリガ」という表現でよいのでしょうか? (「トリガ」だと、なんだか、RDBの用語のような気がしますが?)
メッセージハンドら?
イベントハンドラ?
単純に「イベント」でええやん。
>>285-287 メッセージ(イベント)を発生させる「原因」を何と呼ぶのかと疑問に
思ったのですが・・・。
>>288 原因はさまざまでしょ。
その場合は「テキストボックスへの入力」では。。。
一般的な言い方は知らん
>288 意味が通じるならなんでもいいと思うぞ。
てーせー
292 :
デフォルトの名無しさん :02/07/22 20:51
Visual Basicは簡単ですか?
ちゃんとやろうとすると簡単ではない。 ただし、VC等のように最初の一歩が極端に難しいわけでもない。
>>292 敷居は低いが次の敷居がさらに高くなる。
>292 最初は簡単。後になると難しいっていうか辛い。
>>279 >実装ではなく、設計レベルでの質問。(VB6.0 Or VB.NET)
>(開発チームにスキルの低い糞メンバーが多数紛れ込んでいるという前提で)
設計以前の問題。
プロジェクト立ち上げる奴のスキル、見る目、人望がないだけ。
>API関数はラッピングすべきでしょうか?
要求仕様から仕様決定、言語選定を間違っていると思われ。
業務アプリでVB使うときにAPIの使用はほとんどの場合不要。
コストベースで考えれば自明。
あのさ、インターフェイス継承っていうのかしらん♪ implementsってありますよね! これはメンバを明示的するという意味があるだけですか? Dim なら変数を使いますよっと明示するわけですが! implementsはベースクラスのメンバと同じ名前のを使いますよっと 明示するために使うだけなのですか!?
>>297 Implementsの本来の役割はCOMインタフェースの実装のためにあります。
300 :
デフォルトの名無しさん :02/07/23 01:01
おまえら、なんかココの雰囲気が殺伐としてるぞ。 なんぞイヤな事でもあったか?
暑くてみんな汗だらだら。
>>296 ずいぶんな言われようだが、別に、俺がプロジェクトを立ち挙げた訳じゃない。
こんなメンバーでは無理だと内心おもっているが、上の人間が、今のメンバーで
やり繰りすることしか考えてない。
自分は、もうすぐよその部署に異動になるので、はっきり言ってもうどうでもよい
(てめえら、後は勝手にやれ、という心境)のだが、一応、設計ドキュメントとか
標準化規約(今頃VBのコーディング規約なんて・・・)は残していくことになってる
ので、どうしたものかと思案してるところです。
> 業務アプリでVB使うときにAPIの使用はほとんどの場合不要。
> コストベースで考えれば自明。
極論過ぎ。
INIファイルの読み書きひとつとっても、標準入出力関数では、生産性が上がらないし、
ShellExecuteやプロセスの監視なんかはAPI使わずにどうやって実装するというのだろうか・・・?
(「C++使え」とかいうのはなしね。VB使うという前提なんだから)
激しく板違いですが、自社の開発メンバーが糞ばかりでまともなコードが書けない状況で、 外注要員を上手く使うことで、プロジェクトを成功(品質面でも、コストパフォーマンス面 でも)させた経験のある方、いらっしゃいますか? (外注メンバーのコントロールって、自社開発以上にむずかしいと思うのだが・・・)
あるテキストファイルの中から指定したキーワードの数を出力するプログラムを作りたいのですが、 数を出力するにはどのようにすればいいのでしょうか? キーワードの頭の位置を帰す関数しか見当たらなくて困っています。 ご教授ください。
>305 (len(srcstr)-len(Replace(srcStr,SearchStr,"")))/len(searchstr) とか。
307 :
デフォルトの名無しさん :02/07/23 14:45
>>307 あ、やっぱり。
でも、うちの会社、てめーらに技術がないなら、外注に○投げしさえすれば
すべてが解決すると思い込んでるバカが多い。(上も、下も)
受け入れ検証や、完成後のPG保守をどうするつもり(たぶん、目先のこと以外
何も考えていないと思うが)なんだと、小一時間(以下、略)
>>306 その手があったか。
InStr関数をループで回すのは、文字列が大きいと遅いし、RegExpの
マッチオブジェクトを使う方法しか思いつかなかった。
bmpからpngに変換するDLL、またはサンプルソースありませんか?
libpng
313 :
デフォルトの名無しさん :02/07/23 19:19
314 :
だめだめさん :02/07/23 19:40
DBGridで引っ張ってきたアクセスのテーブルのフィールドの値を 取得してほかのオブジェクト(たとえばテキストボックス) に出力することってできますかねぇ?
>313 グローバルだから当たり前なんだが。 アトムを使い続けたいならフォアグラウンドか どうかで判定してもいい。 ただ、ホットキーならフォームのKeyPreview=trueにして KeyPressとかで判定した方が楽で確実だぞ。
>314 普通に出来るはずだが。
317 :
だめだめさん :02/07/23 20:19
フィールドの指定の仕方がわかりませんです。 やりたいことは分かっててもコードがさっぱりです。
>>315 ありがとうございます。
一番最初の奴がForegroundにある奴を操作するようにすればいいんだ
というところまで分かったのですが、その先が分かりません。
これからKeyPressでやる方を勉強してみます。
>>219 Winsock2ならVBでもできそうだよ
320 :
デフォルトの名無しさん :02/07/23 22:11
別ウィンドウにマウスのクリックイベントを 取得、送信する方法がわかりません。 どのようにしたら可能でしょうか?
>>316 だから、314は「だめだめさん」だってばよ。
323 :
デフォルトの名無しさん :02/07/23 22:22
>>320 質問です
@別ウィンドウっていうのは、別exeなんでしょうか?
Aそれとも同一プロジェクト内のサブフォームなんでしょうか?
@なら、別ウィンドウにプロパティを持たして、クリックイベント時に
プロパティの値を設定すればいいのでは?
Aなら@と同様にするか、グローバル変数で値を設定するのでは
だめでしょうか?
>>323 質問です。
機種依存文字って知ってますか?
>>324 失礼しました ついうっかりです
1.別ウィンドウ・・・・
2.それとも・・・
1.なら、・・・
2.なら1.と同様に・・・
と、読み直して下さい
>>321 、323
SendKeysのようなものがあればと思ったのですが
やはりフックするしかないですかね。
なんとか頑張ってみます。
327 :
eibu ◆c61exE6E :02/07/23 23:00
>>314 手元にVBがないから確認できないけど
DBGridのRowColChangeイベントに(他のChangeイベントでもいいぞ。)
Text1.Text=DbGrid.カレントフィールド(どんなメソッドか忘れた。)
みたいにしてみぃ。
後は自分で調べるのも勉強。
>>320 取得はフックしないと無理。
・・・でもなんかいけそうな方法が
浮かんだので今度試して見よ。
送信はSendMessageを使う。
コマンドボタンならBM_CLICKでいい。
通常のウィンドウならLBUTTONDOWN&LBUTTONUP。
VB製のクリックイベントを発生させたい時は
マウスをキャプチャしてないといけないので注意。
つーか、マジでVBでグローバルフックができない理由がわからん。 ActiveX DLLも普通のDLLの一種だろ。
>>329 ActiveXDLLはCOMを使ったOCXの一種で
普通のDLLとは全然違うぞ。
>>330 でもActiveX DLLもLoadLibraryできるぞ。
グローバルフックはDLLじゃなくてもできるらしいぞ。どこかのHPで見た
333 :
デフォルトの名無しさん :02/07/24 07:53
333げとーっズサー >331 マジ?xxxObject関連じゃない
>>330 ちょっとだけ、ツッコミ。
OCXはコンテナが必要。また、コンテナがロードされている間は破棄できない。
上記2点で、OCXとActiveXDLLとは異なります。
(COMに詳しくないので、これ以上の説明はボロが出そうだが・・・)
335 :
デフォルトの名無しさん :02/07/24 10:07
VBで標準入出力を扱うコードがGoogleはたくさん見つかるのですが、 うまく行きません。やり方を教えてください。
>>335 > うまく行きません。やり方を教えてください。
具体的で回答しやすい質問の典型ですね。(嫌味)
やり方、ということですが、「うまく行くように」コーディング
すれば、「うまく行きます」。
(投げやり)
>>336 嫌味を嫌味と書いた時点からそれは嫌味ではないかと。
>>80 標準出力の話だったら
結論:(厳密な話は知らないが)できる
342 :
デフォルトの名無しさん :02/07/24 13:08
VB6 プロジェクトを VS .NET で開いてアップグレードしようとしても '状態 : Form1...プリプロセッサ処理を実行しています。' で失敗するんだが。。。 VB6 のプロジェクトがどんな内容であろうと結果は同じ 最初のモジュールで引っかかるよう どうすりゃいい?
343 :
デフォルトの名無しさん :02/07/24 13:50
多分とても簡単な質問だと思うのですがコマンドボタンを押したときに自分のホームページの中にファイルを作成する方法を教えてください。 まだVB歴が短く右も左も分からないような状態なので詳しく教えていただけると助かります。お願いします。
>>343 ぜんぜん簡単な質問じゃない上に
丸投げは(・A・)イクナイ
345 :
ぷらねっと :02/07/24 14:36
INET コントロールでPROXY認証(!)を経由して通信(HTTP)を 行うにはどうすればよいですか。INET コントロールでなくても何か方法が あれば教えてほしいです。よろしくお願いします。
>>343 つぅか用語もまともに知らないくせにプログラミングなんぞ5億年早い。
347 :
デフォルトの名無しさん :02/07/24 15:28
>>345 inet1.Proxy = "串名"
inet1.AccessType = icNamedProxy
348 :
ぷらねっと :02/07/24 15:41
347さん、ありがとう。 しかしユーザ名とパスワードを要求するような PROXY には、それでは 対応できないのです(345は説明不足でした)。 他の方もご存知でしたらぜひ教えてください。よろしくお願いします。
349 :
デフォルトの名無しさん :02/07/24 16:50
VB6からXMLファイルを読み込むことになったのですが、 どのようにして行うのが一般的な手段なんでしょうか? サイト検索などもしてみましたが事例がほとんど見当たりませんでした。 ポインタだけでも示してもらえれば幸いです。
あらら。やっぱり甘かったですかね。出直します。
352 :
デフォルトの名無しさん :02/07/24 21:07
リッチテキストエディットボックスコントロールで、Textプロパティを使って、 例えば frmMain.rtfMain.Text = frmMain.rtfMain.Text & "hogehoge" などとすると、設定されていた書式情報が消えて、デフォルトになってしまいますよね。 これをなくして(=現在までの書式情報を消さないで)文字列を追加するには どうすればいいのでしょうか? Visual Basic 6.0 Service Pack 5 Rich TextBox Control 6.0 SP4 です。
フレキシブルグリッドで、scrollbarsプロパティを3にしておくと、表を表示しきれなくなると自動的にスクロールバーが出現しますが、 スクロールバーが水平・垂直それぞれ、出ているかどうかって判定はできますか? スクロールバーが出るとグリッドの表示領域がそのぶん狭くなりますが、その正確なサイズを知りたいのです。 よい方法はないものでしょうか。
フレキシブルグリッドていうかVBしらないけど、GetWindowLongで WindowStyleを調べるとか。
>>354 グリッドが固定なら表の縦横数で
水平、垂直になる数は把握できるけど
それじゃだめなの?
>>355 Windowstyleに、スクロールバーに関するものはありますでしょうか?
ネットで調でてもイマイチ要領を得ません…。
>>356 はい。表全体のサイズではなくて、グリッドのスクロールバーに隠れずに表示可能な領域のサイズが知りたいんです。
スクロールバーが出現している時は、width又はheightプロパティ - 約16ピクセルであり、
スクロールバーが出ていなければ、width又はheightプロパティほぼそのままの値となるのですが、
スクロールバーが出現しているかどうかを判定する方法が判らないんです。
358 :
デフォルトの名無しさん :02/07/25 10:44
ASPもちょいと混ざるけど質問させてください。 標準EXE⇔ActiveXEXE⇔ASPファイル→クライアントPCへ表示 てなかんじで標準EXEで生成されるデータをVBで作成したActiveXEXEでメモリ受け渡し。 ASPでCreateObjectしてクライントにデータ渡しをしようとおもっています。 とりあえず今作成しているActiveXEXEでローカル環境内での複数プロセスでのメモリ 私は行えてるんですが、ASPを経由したときにメモリが全く取得できませぬ… ASPやIISの設定を触ってみるもどうにもならず、メモリの共有を行うActiveXEXE自体を 作り直したほうがいいのかなぁ・・・と思って書込みした次第であります。 いろいろ調べてるうちにCreateFileMappingとかいうAPIを使えばできるとかできないとか いう情報もでてきたのですが・・・ どなたかよろしくおねがいします。
>>357 スクロールバーが出現しているかどうかの判定はこれでいけると思います。
Public Const 水平スクロールバーに収まる値 as Long = "事前に調べた値(-16済)"
if 水平スクロールバーに収まる値 > 1個のセル.Width * 横セル数(項目数) then
msgbox "グリッドに収まってる"
else
msgbox "水平スクロールバー表示"
endif
訂正 ×Public Const 水平スクロールバーに収まる値 as Long = "事前に調べた値(-16済)" ○Public Const 水平スクロールバーに収まる値 as Long = "事前に調べた値" 水平スクロールバーに収まる値 = グリッド.Width
VB4を使って、エクセルで選択しているシートをすべて印刷するにはどのようにコードを書いたらいいのでしょうか? わかる方がいらしたら教えてください。よろしくお願いします。
>361 Excelで「マクロの記録」を使用し、実現したい操作をマクロ化する。 記録されたVBAコードを参考に、VBからExcelObjectを操作するコードを書く。 以上。
>>359 なるほど、自分で計算してスクロールバーが出現してるかどうか判断するわけですね。
水平・垂直のカラミで少々面倒ですが、とりあえずしその方法で実現できました。
ありがとうございました。
自己レス COMの構成の設定をちょっといじってみたら、現段階のActiveXEXEでも動作しました。 お手数おかけしました。
ファイル(*.VBP、その他)の命名について質問です。 昔のDOS形式(8.3)に収める必要(LongFileNameになると、何らかの問題が発生する、 等)はありますか? 8文字以内に収めると、機能に対応した命名がむずかしく、わかりにくくなると思う のですが、どうでしょうか?
古いOSで動かさない限り問題ないハズ
>>366 NT4.0(SP3以上), 2000(SP2以上)限定なら問題ないでしょうか?
あとは、インストーラ作成ツール(グレープシティ製等)のバグ等で
問題が出ないかどうかですが・・・。
>>367 なぜインストーラーにソースファイルの
ファイル名が関係すると思うのか小一時間(略
>>368 ソースファイルはともかく、実行ファイル名はふつう、プロジェクト(*VBP)
名と同名にするでしょ?
>>369 んなこたーない
それは単なるあなたの習慣でしょ
>>369 実行ファイル名と同じ名前の.vbpを作りますが何か?
>>371 ですよね、ふつう。
わざわざ変更したら、作業ミスの原因になりかねないと思うんだけど。
人それぞれってことだね
>>372 老婆心ながら、余計な反感買うような書き方はしないほうがいいかと。
上にもそうじゃないって書いてる人いるし、なにが普通かは
その人によるでしょう。自分の基準だけで決めつけたような書き方は
しないほうがいいと思いますよ。
>>371 追記
漏れは是が非でも8文字以内に抑えます。
>>374 ご忠告感謝。m(_ _)m
人それぞれ、ということは、プロジェクトとしてのルールを決めないと、
統一性が取れなくなる恐れがある、ということですね。
>>375 参考になります。
>>423 それはVB6では無理。VB.NET買えよ。
>378 ワラタ
380 :
デフォルトの名無しさん :02/07/25 22:27
381 :
デフォルトの名無しさん :02/07/25 22:51
クラスって具体的にどういう時に使うものですか。 例を挙げて貰えると嬉しいです。 (つか、もしかして無くても困らないのでしょうか…)
>>381 まぁ、いいんじゃない?
VBのはあってもなくても大して変わらないだろうし。
>>352 と同じことが起きて、困っているのですがどうにかして、解決できませんか?
>>383 >>352 with frmMain.rtfMain
.SelStart=Len(.Text)
.SelText="ぼけ"
end with
ってやればいいだけじゃないの?
あまりにも当たり前すぎるのでオイラ勘違いしてる?
>>385 ありがとうございます。なるほど、カーソル位置に挿入という考え方が
あったのですね。
助かりました。
>>381 標準モジュールのみの実装に(生産性の)限界や、人生の不条理を感じたときに
使います。したがって、非効率な作業に何の疑問も感じないおめでたい人には
一生ご縁がありません。
>>388 >標準モジュールのみの実装に(生産性の)限界や、人生の不条理を感じたときに使います。
そして己の伴侶の無能さを再確認し、絶望へと。
391 :
デフォルトの名無しさん :02/07/26 09:39
VB6とJAVAを組み合わせてプログラムできますか? JAVAで行ったイベントを、VB6のほうで受け取れるカンジで・・・。
392 :
デフォルトの名無しさん :02/07/26 10:07
質問厨ですみません。 いま、VB6.0とWinXPを使っているのですが、 Graph32.ocxがうまくレジストリに登録できないのです。 登録にはRegsvr32を使いました。 Win98の時は問題無かったのですが...。 #Graph32.ocxなんてタコなコントロールを使っているのが悪いのは #わかっているのです。ただ、他の人が書いたソースを修正している #ので...。
>>392 ・うまくレジストリに登録できない だけではなにが起きてるか分からない
・Graph32.ocx って何? どっかの製品? それとも標準でそんなのあったっけ?
どっちにしてももう少し詳しく書いたほうがいいと思われ。
勘では、関連DLLかなにかが不足してるんだと思うけども。
Graph32.ocx… Copyright _ 1994, 1995 Bits Per Second Ltd (´-`).。oO(XPで使えるのかなぁ)
395 :
デフォルトの名無しさん :02/07/26 10:52
>>393 どうもLoadLibraryに失敗しているようです。そう言う意味で関連DLLが
不足しているというのは当たっていると思います。
とりあえず、バイナリでのぞいてなにが足りないのかチェックしてみます...。
Graph.ocxは昔のVBとの互換用にいまでもVBのメディアには収録されてい
ます。新規に使うのはお勧めしないとMSは言っております...。
とりあえず力づくでインストールする方法も試してみるとして、
「こうやってインストールしたら使えたよ」ってな方おられませんかね。
>>394 そうですよね...。個人的にはこんなocx使いたくないんですがね...。
396 :
デフォルトの名無しさん :02/07/26 11:16
VB6→ADO接続→Accessの勉強をしています。 リレーショナルデータベースの更新の仕方について教えて頂きたいのですが、 例) →tbl社員 コード 支社コード 部署コード 氏名 01 01 01 モナー 02 01 02 モララー 03 01 03 ギコ 04 02 03 しぃ →tbl支社 支社コード 支社 01 東京 02 大阪 03 神奈川 →tbl部署 部署コード 部署 01 総務課 02 経理課 03 庶務課 安易ですがこうなっているとして、それぞれ対応しているコードにリレーションが はってあるとします。ここに新しく「大阪/庶務課/シラネーヨ」が入社した時のtbl社員の 更新の仕方が分からないのです。 ユーザから「大阪」「庶務課」「シラネーヨ」と入力を受けたら、RecordSetで一つ一つの テーブルから「大阪」に対応したコードを確認→tbl社員を更新としていくのですか? テーブル数が増えると手間がかかって仕方ない気がして、何か正しい方法があるのでは と思った次第です。 長文スマソです。よろしくおながいします。
というわけで、バイナリを覗いてgsw32.exeとgswdll.dllが必要なことがわかりました。 と思ったら、英語のReadme.txtにこの2つもいっしょにコピーしとけ!と書いてありました。 まとめると、 1.graph32.ocx, gsw32.exe, gswdll.dllをしかるべきフォルダにコピー 2.regsvr32 で graph32.ocxを登録 3.ウマー でした。 いろいろアドバイスありがとうございます。 #インストーラもチェックしとかんといかんな...。
>>396 つーかコンボボックスか何かで選ばれた時点で
そのもの(たとえば大阪)のコードは取得できるはずでしょ
そのように組むのが吉
>>398-399 ああ、なるほど。
やはり、一つずつコードを取得するのが正解でしたか(面倒)。
>>399 さんがおっしゃられる様にコンボ選択時に取得するっていうのは
思いつきませんでした。グローバル変数ってヤシですよね。
やってみます。ありがとうございました。
>>400 コンボで選択時に取得までは合ってるけど、
それとグローバル変数は全然関係ないぞ!!
まあ、がんがれ
>>401 Privateの変数にでも格納しておくのではないのでしょうか。
グローバル変数ってこの事じゃないのですか…ああ、僕、恥ずかしいなぁ。
すみません…。調べます。
コンボ選択時に取得・・・ほんとにみんなそうやってんの? 選択するたびにいちいちDB読みに行くのか。 ユーザーにストレス溜まりそうって思うの俺だけ?
405 :
デフォルトの名無しさん :02/07/26 20:34
>>403 同意です。
私達の場合はフォームのロード時にコンボボックスを作成するのですが、
そのときに、コンボボックスのItemdataプロパティにマスタのコードを
格納しておいて参照します。
これだと選択→DB検索なんて事をしなくていいですよね!
ごめん。寒気がした。
まあAccessMDBですからありなんじゃないでしょうか。
409 :
デフォルトの名無しさん :02/07/27 01:23
桁数指定ってどうやるんですか? 例えば99っていう数値を3桁指定で099って表示させたいんですが。
410 :
デフォルトの名無しさん :02/07/27 01:27
411 :
デフォルトの名無しさん :02/07/27 01:34
>>410 ごめんなさい、調べたんですが使い方がわかりません(´Д`;)
教えてください
412 :
eibu ◆c61exE6E :02/07/27 01:48
>>396 データベースの更新にはエラーチェックが不可欠。
たとえば大阪を大坂と入力されていたらtbl支社にアクセスして
大坂という支社が存在するのか、間違いなのかを確認する訳だな。
だから手間の事を言ったらデータベースプログラムは書けない。
>399が言うようにコンボなり、リストなりにしておけば
エラートラップのコード量の節約になる。
しかし>400で変数って書いてるけど、コンボの表示に
02:大阪
としといてLeft関数で前2桁を取った方が簡単だぞ。
413 :
デフォルトの名無しさん :02/07/27 02:07
>>411 例えば、
Dim strWord as string
strWord = Format("99",000)
strWordの中身は、"099"になっているはずです
414 :
デフォルトの名無しさん :02/07/27 02:11
VBでDOSコマンドもどき(例、dirやtype)はどうやって作るの? 既存DOSプロンプトで、aaaaa.exeってやると出力がダイアログで なく既存プロントに文字列で表示されるようにしたいのだが。 参考になるトコあったら教えてください。
415 :
デフォルトの名無しさん :02/07/27 02:53
おい、コラぁ!VBって簡単なんだから414の質問に答えろ!
417 :
デフォルトの名無しさん :02/07/27 04:34
>>413 × Format("99",000)
○ Format(99,"000")
>>414 APIを使って標準出力に出力するようなコードを書いてから、
EDITBIN.EXEでSUBSYSTEMをCONSOLEにすればいい。
もしくはリンカに細工をする。
ADOのprepareプロパティーでSQLステートメントをプリコンパイルすることで 実行速度を稼ごうと思っていますが、プリコンパイルされたSQLのWhere区を 書き換えたりとか出来ますか? (JDBCだとことも無くやってのけるようですけど)
421 :
デフォルトの名無しさん :02/07/27 10:09
>418、419 ありがとう!調べているが意味がさっぱりわからん。 とりあえずこれから勉強する。
422 :
デフォルトの名無しさん :02/07/27 11:28
VBのコントロールで、多角形を描くコントロールは ありますか?
>>422 Shapeコントロール。四角形という多角形が描けるぞ。
三角形以下や五角形以上はサポートしていないので注意が必要だ。
要はPictureBoxで自分で描け。
424 :
デフォルトの名無しさん :02/07/27 19:04
ツリービューの背景色を変えたいのですが、プロパティーないし インターネットで検索してみましたがそれらしいのが ありませんでした。アドバイスおねがいします〜m(_ _)m
427 :
デフォルトの名無しさん :02/07/27 20:09
>>425 流石です、ありがとうございました。ソースおってみます。(^^)
ありがとうございました。m(_ _)m
>>420 よく知らんけどParametersを使えばいいんじゃないの?
MSDNの「ADOの高度な機能」に次のように書いてあるよ。
> Preparedプロパティは、複数のパラメータ セットを使って実行を行うときにも使用できます。
> アプリケーションは、パラメータ セットが変わるたびにクエリー文字列を再構築するのではなく、
> 実行のたびに異なるパラメータ セットを指定することで、パラメータ化されたクエリー文字列を
> 何度も実行することができます。ただし、パラメータ化されたクエリー文字列を1回しか
> 実行しないのであれば、クエリー文字列を準備する必要はありません。
>>425 自分のことを言っているの? よくいるよね。自分が何も知らないから
他人も知らないと勘違いして、しかも偉そうにしている人。レスするなら何かかけよ。
>>426 サブクラス化、とか、SendMessageだけでは、答えになっていない罠。
どのメッセージをパクって、どう弄るのか、どのメッセージを送るのか、がわからないと、
調べようがない罠。
横ツッコミ、失礼。m(_ _)m
>>428 なんとな〜く、それっぽいんですが絶望的なほどサンプルも資料も
ないので、光が見えてきません・・・。
CommandオブジェクトにあらかじめセットしておくSQLの
パラメータ入力を受けたい部分は、どう記述しておくのかが、
全然わからない、調べても見つからない、本当に出来るのか?オイ
って感じです。
素直にストアドプロシージャ使えってことなんですかね。
とりあえず検索のキーワードが増えました。有難うございます。
>>430 つーか、MSDNみた? サンプルもちゃんとのってるよ。
432 :
デフォルトの名無しさん :02/07/28 09:44
>>431 MSDNは読みました。乗ってるサンプルは、「何度も全く同じSQLを投げる場合」の
実行時間の測定をする方法で、Where区など、若干内容が変わる方法については
記述がありませんでした(TДT)
434 :
デフォルトの名無しさん :02/07/28 12:59
>>433 JDBCと同じ方法でいけるんですか?!!
>>432 不思議だなぁ。なんでちゃんと記述してあるのに気づかないんだろう?
プログラマの適性ないんじゃない。
436 :
デフォルトの名無しさん :02/07/28 22:41
(Excelのユーザフォームのタブインデックス変更ウィザードにあったと思うのですが) リストボックス(グリッドかもしれない)の順番をドラッグで変えるやり方が 知りたいです。例えばリスト3番目を掴み、4番目と5番目の間にドロップすると そのアイテムが4番目にくる、みたいな。 アイテムを掴む(選択する)ことは容易ですが、落とした位置に入れるというのが 出来ません。 何のコントロールを使うかも含めておながいします。 あ、環境はVB6です。
437 :
デフォルトの名無しさん :02/07/28 23:14
>>436 コントロールはリストボックスだけ。
ドラッグ&ドロップは自前コードで書く。
そんなにむずかしくない。
これが書けないようなら、VBあきらめたほうがいい。
>>437 て、手厳しいですね。まぁ夏ですしね。
分かりますた。頑張ってみます。
申し訳ないのですが、どなたかヒントだけくださいませんか? Dragした所の「順番」(リストの4番目など)を取得することは出来るのでしょうか。 もしかして、MouseUpイベントなどのX,Yみたいな座標を使うのですか? 座標から順番を割り出すなんて初級レベルの僕に出来るのかな…。
sageちゃったのでageさせてもらいます。
441 :
デフォルトの名無しさん :02/07/29 10:28
ドロップダウソリストにしたコンボボックスのアイテムをコード上から 変えるにはどうしたら良いですか。.Textが読みとり専用になってしまって。
442 :
デフォルトの名無しさん :02/07/29 11:43
a = 0 b = 0 If a = b = 0 then Label1.caption = Zero Else Lavel1.caption = Value End if と、した場合、「Value」が表示されて、aやbに値を入力した場合は「Zero」が表示されます。 「a = b = 0」って表現の仕方が悪いからだと思うのですが・・・どうしてでしょう? よろしくおねがいします。
ちょいと前のレスに書いてあった気がするが a = b = 0 は b = 0 が a に格納される(b=0なので"True") 0はFalse(だったよね(;´Д`))なので上記のとおりコードが実行される。 If a = 0 and b= 0 Then とか If a = 0 Then If b = 0 Then とやるべし。
444 :
デフォルトの名無しさん :02/07/29 12:02
>>443 > a = b = 0 は b = 0 が a に格納される(b=0なので"True")
その書き方は、可読性に難があるので、私なら、
a = (b = 0)
としますが。
446 :
デフォルトの名無しさん :02/07/29 13:22
ていうかBooleanとIntegerを混ぜて使うなよ 話はそこからだ
447 :
デフォルトの名無しさん :02/07/29 13:29
0と0以外という使い方で普通に混ぜますが? Byte型で。
448 :
デフォルトの名無しさん :02/07/29 15:49
449 :
デフォルトの名無しさん :02/07/29 16:01
質問です。 現在パールで掲示板(日記)を作って稼動させているのですが vbの方から日記に書き込みをすることは可能でしょうか? 通常通り送信フォームから送信してもいいのですが 日記なので出来れば送信フォームは無しの方向で行きたいと思っているのでお願いします。 もし出来るようであれば具体的にどのような事について勉強すれば出来るようになるか教えていただけると助かります。
450 :
デフォルトの名無しさん :02/07/29 17:13
451 :
デフォルトの名無しさん :02/07/29 17:19
文字列を実行するようなプログラムを書きたいのですが、うまくいきません。 気持ちとしては、 dim a as long dim mystring as string mystring = "a = 2" という感じの気持ちでぜひmystringを実行したいのですが、どなたか方法をご存知のかたはいませんでしょうか。 もしくは、stringとしてのaを何らかの方法で変数として値を与えるというのでも良いのですが。 できれば、配列にも対応していればよりベターです。 よろしくお願いします。
452 :
デフォルトの名無しさん :02/07/29 17:47
特に「文字列を実行する」が謎。
>>451 上に同じく・・・
もしかしてこういうこと?
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
x = mystring(a, 3)
x = mystring(b, 5)
Text1.Text = a & "," & b
End Sub
Public Function mystring(ByRef a As Long, ByRef b As Long)
a = b
End Function
>>449 perlで掲示板ってことはWEBだよね。
あんたWEBの仕組みわかってるの?
ひょっとしてパクッたソース動かしただけでしょ。だったら作ったとかいうな。
456 :
デフォルトの名無しさん :02/07/29 19:05
>>435 結局やりたいことはMSDNで見つからなかったけど、試行錯誤の上出来るようになりました。
皆さんどうもです。
>>451 452-454には難しすぎて理解できなかったようだな。さすがVBスレ
VBScriptならExecute/Eval
VBなら不可能。
459 :
436=439 :02/07/29 19:14
>>436 =
>>439 です。
誰か、こんな危篤な僕に救いの手をさしのべてはもらえませんか…。
>>437 さん曰く「そんなむずかしくない」そうですが、全く糸口がつかめません…。
>>459 流し読みだが
そのリストボックスの先頭が何番目かとひとつのアイテムの高さがわかれば
位置がわかるよね。簡単ジャン
あ!439に書いてあった。やっぱり流し読みはやめよう
462 :
436=439 :02/07/29 19:27
>>460 レスありがとうございます。
先頭の割り出し方が全然分からないのです。
スクロールされると先頭が変わるってのは分かるんですが…。
位置はピクセル計ってみます。
>>462 TopIndexっていうプロパティがあるじゃん
>>463 ホントだ!
あとはピクセルを計れば…。
頑張ってみます!ありがとうです。
>>464 アイテムの高さも取得できるんだがね。ちょっと今サンプルがないけど
>>465 プロパティで、っすか?
ちょっと探してみます。
>>466 それはプロパティじゃなかった気がしないでもない
>>466 うう…。
APIなんかの知識はまったくありません…。
素直にピクセル計った方が良いでしょうか。
>>468 とりあえず、はかっといたら
はい。はかります。ありがとうございました。
>>470 わかったTextHeightだ。APIじゃないよ
472 :
デフォルトの名無しさん :02/07/29 20:45
>>458 451です。私の気持ちを理解していただいてありがとうございました!?
なんか、うわさによるとEvaluateというのがExcel4(?)時代にあったらしいのですが、(私の実験によると)もはやexcel2000ではdim等で定義した変数には使えないようです。
後は、Run で別のサブモジュールを呼ぶということも考えたのですが、あんまりうまくいかなかったので。(runの場合は、引数を許さないのでしょうか?)
たとえば、Excelのワークシートに変数名を書き込んだ状態でマクロを流せばその横のセルに吐き出すみたいな感じのことができたらきれいなプログラムが書けるかなぁなどと思った次第なので質問させていただきました。
では。
で、Evaluateじゃ不満なのか?
>>475 "_" 使って改行してますが、何か?(違
>>479 これっぽっちも面白くない。やれやれだぜ。
481 :
デフォルトの名無しさん :02/07/30 00:24
¥n
482 :
デフォルトの名無しさん :02/07/30 00:27
>>480 477は本来、面白さを含んだものじゃないだろう?
悲惨な477と482が居るスレはここですか?
484 :
デフォルトの名無しさん :02/07/30 01:11
VBから、perl機能を使いたいのですが出来るので使用か? perlから、WIN32APIが使用できるようなので、できそうかな? と調べてみたのですが、よくわからないので、質問してみました。
485 :
デフォルトの名無しさん :02/07/30 01:19
486 :
デフォルトの名無しさん :02/07/30 01:21
>>perlから、WIN32APIが使用できるようなので、できそうかな? 他の人に言うなよ。お前のためだ。 shellexecで*****.plを実行
そんなに遅れぎみか?俺の発想。 >shellexecで*****.plを実行 ありがとう。
>>484 VS.NET買ってから、Perl.NET買えばいいよ
なんでWin32APIがPerlで使えることがVBでperlの機能を使えることになるんだ。 perlでVBの機能が使えるってならわかるが
インターネットコントロール使ってブラウザの作成した場合、リンク先のアドレスはどうやって表示するんですか?
491 :
デフォルトの名無しさん :02/07/30 10:31
472です。 適度に改行しないといけないことを知りませんでした。 ごめんなさい。 やりたいことを具体的に書くために例をあげます。 (例) VBA内で変数を以下のように定義します。 Dim ZZZ1 as long Dim ZZZ2 as long ……… Dim ZZZ1000 as long 何でもいいのですが、せっかくなので数字を与えてあげます。 ZZZ1=1 ZZZ2=2 ……… ZZZ1000=1000 そこでワークシートのA1にZZZmと文字列で書くと ワークシートのB1にm (=ZZZmにセットされた値)が返されるような マクロが書きたいのですが。 ちなみに(上とは別件ですが)以下のようなモジュールはうまく流れてくれないのですが、 やはりEvaluateの使い方が間違っているのでしょうか。 Sub test() Dim ZZZ As Long Evaluate("ZZZ") = 5 Cells(1, 1) = ZZZ End Sub
>>491 Excel の質問だったんか?板違いだろがヴォゲ!
ZZZm -> m ならなんとでもできるぞ(W
=SUBSTITUTE(A1,"ZZZ","")
=REPLACE(A1,1,3,"")
=MID(A1,4,LEN(A1)-3)
・・・
さもなくば名前の定義でも使え!
>>491 暑いからってそんなに声を荒げなくてもよかろう。
これまでの流れからして、VBAに関しても識者から
返答が得られてるようだしね。
貴方もきちんと返答してるようだし。この照れ屋さんめー。
もっとマターリしませう。
494 :
デフォルトの名無しさん :02/07/30 11:24
変数名を文字列で与えて、その名前の変数を参照する とか、そういう話でしょ? これ、どうやるんですか?知りたい。
こういうのですか? Sub SriptingDictionaryTest() Dim Dic As Object Set Dic = CreateObject("Scripting.Dictionary") Dic.Add "ZZZ1", "1" Dic.Add "ZZZ2", "2" ' .... Dic.Add "ZZZ1000", "1000" Cells(1, 2).Value = Dic.Item(Cells(1, 1)) End Sub VB 連想配列で検索しました。
>>495 訂正
Sub ScriptingDictionaryTest()
と
Cells(1, 2).Value = Dic.Item(Cells(1, 1).Value)
>>491 変数名が宇宙語で定義されているため、凡人には解毒不能です。
498 :
フルーツチンポ :02/07/30 13:36
VBで女の子にモテモテになるにはどうすればいいですか? よろしくお願いします。
>>498 それなりにカコイイ動作をするゲームを作る。
保証はしない。
>>498 ヴァーチャルボーイを装着して電車にでものってなさい。
>>491 みんなが「何をやりたいの」って聞いてるのは手段じゃなく目的を聞いてるんだよ。
その手段を実現することが目的?んなわけないよね。
目的がわかんなきゃEvaluateを利用できるかどうかもわからん。
とりあえずEvaluateの使用法は間違ってる
503 :
デフォルトの名無しさん :02/07/30 14:41
教えてください。 今ADOでSQLServer2000を使った仕事をしているのですが、 INDEXとSEEKがうまくいきません。 実行時エラー3251 現在のプロバイダはIndex機能に必要なインターフェイスをサポートしていません。 と出てしまいます。 ソースはこんな感じなのですが、何がいけないのでしょうか。 Dim MyRs As ADODB.Recordset Dim SetFlg%, i& Dim SQLKEY As String Set MyRs = New ADODB.Recordset SQLKEY = "SELECT * from T_Communication" MyRs.Open SQLKEY, PobjSQLSession, adOpenKeyset, , adCmdText MyRs.Index = "PlimaryKey" MyRs.Seek Array(SetsubiType, SetsubiCd), adSeekFirstEQ
>498 マヂレスすると、VBAでExcelやWordのマクロを極めなさい。 事務系の職場ではモテモテでしょう。たぶん。
506 :
koyukoto :02/07/30 15:03
>174
カリフ・ムスタァスィムがフレグ汗に処刑されたのは間違いないのですが、
これはムスタァスィムが頑迷に抵抗したためだそうで、
その処刑にムスリム側の一部に神罰を恐れる声があったようです。
これに対してフレグの西征軍にクーヒスタン占領後従軍していた
当代イスラム世界最高の大碩学ナスィールッディーン・トゥースィーが
正統カリフ、ウスマーンやアリーが殺害されたときも
天変地異は一切起こらなかったことを例に挙げてカリフの処刑に何ら問題ないと解答しています。
ただカリフの処刑は皇帝モンケの聖勅(ヤルリグ)に基づいたものであったかどうかは
確認していないのでご存じの方はお教えいただきたいのですが・・・
ちなみに『集史』の日本語訳は「フレグ・ハン紀」と「アバカ・ハン紀」が
矢島洋一先生のHPでみることが出来ます。ご参照のほどを。↓↓
http://www.bun.kyoto-u.ac.jp/~yyajima/index.html
あっ。。。。。
>>503 Seekって使ったこと無い。
全件引っ張ってきてSeekで探すより
最初から条件に合うものだけ引っ張ってきた方が速くないか?
という話は置いといて、エラーメッセージ内容からすれば
使ってるOLE DBプロバイダがIndex機能に必要なインターフェイスを
サポートしているかどうかを調べるのが先だと思うがどうよ?
>>505 尊敬はされるかも知れんがモテはしない。
人によっては逆にキモがられる。
いいように使われる=モテるって意味なら話は別だが
バカバッカリ
>>509 レスありがとうございます。
Supportsメソッドで調べたところFalseでした。
サポートしてないと言うことですよね。
Seek使わない方が良いのかな。というか使えないのか。
ありがとうございました。
>>491 if cell(A1) = "ZZZ1" then cell(B1) = ZZZ1
if cell(A1) = "ZZZ2" then cell(B1) = ZZZ2
:
:
:
でよいのでは?
>>513 それを可変的にやるにはどうしたら?ってことなんじゃない?
515 :
デフォルトの名無しさん :02/07/30 16:48
VBAで(VBでも可),DLLから関数或いはサブルーチンを呼び出したいんだけど ,public declare 〜・・・だと,どうしてもDLLの名前を入れるところは, 固定文字列でなければならない.そこで,C言語でDLLを呼び出すときに使う LoadLibraryを使いたいんだけど,うまくいかない.誰か教えてくださーぁい! (願わくは)簡単な例を示して欲しいんだけど・・・
>>509 私も使ったことはないので、憶測ですが、
(1) 全体のレコード件数が比較的少ない(数千〜1万件程度のオーダー)
(2) DBがJetである。
(3) SQLで問い合せると、条件が複雑すぎて、パフォーマンスが低下。
といった特殊な状況なら、Seekメソッドが威力を発揮するかもしれない。
>>511 不明瞭な質問に明確な答えを期待されてもねえ。
せめて日本語ぐらいちゃんと書けってこった。
ましてそれが糞仕様だとまともに答える気も失せる。
その結果が
>>492 なんだろうな。
>>514 可変といっても変数は可変じゃないからさー
519 :
デフォルトの名無しさん :02/07/30 18:28
VBには夢がある
>>519 どこが?
ネタにしても、つまらなすぎ。(30点)
521 :
デフォルトの名無しさん :02/07/30 20:25
VBとVBAって何が違うんですか? 調べたんですが、違いがよく分かりません。 よろしくお願いします。
0〜99999999のある数値が、8桁日付(yyyymmdd)として有効かどうか判定するには どう書くのが良いでしょうか。ちなみに今はこんな風に書いてます(aaa=ある数値)。 If Len(CStr(aaa)) = 8 And IsDate(Left$(aaa, 4) & "/" & Mid$(aaa, 5, 2) & "/" & Right$(aaa, 2)) Then もうちょっとシンプルに書けないかなーと思って。よろしくお願いします。
Ifの条件にAnd入れるくらいならIf二つ使え
>>523 >>524 ありがとうございます。
もとはIF2つです。ここでの質問用に1つにしてみました。
そのほうが見やすいかな、と思って。余計なことしました。
こんな書き方もあるよ、っていうのは無いでしょうか?
>>511 バカガッカリだったらかわいかったのに。
>>498 VB売ってまずは金を作れ。
次それを漏れに渡せ。そうすりゃ、きみをモテモテにしちゃろ。
528 :
デフォルトの名無しさん :02/07/30 23:16
ADOのRecordsetで取得したデータをサブルーチンに渡したいのですが サブルーチン側の引数の型をどうして良いか分かりません。 例えば、「Recordset!社員名」を渡したい時、サブルーチン側の Private Sub Test(RecordsetData as ○○○) ↑○の所を何にすりゃあ良いのでしょうか。 おながいします。
>>529 tnksです。
Recordsetごと渡して、Recordset側に物を入れたいのですが…。
Private Sub Test(RecordsetData as ○○○)
RecordsetData = "Koizumi"
みたいに。無理言ってますか。
531 :
デフォルトの名無しさん :02/07/31 00:13
Objectじゃだめでしょうか?
普通Recordsetだろ。
ADOを参照設定してるのならADODB.Recordset でなければObject つーかそのレコードセット宣言時と同じ型
534 :
eibu ◆c61exE6E :02/07/31 00:54
>>522 IsDate(Format(aaa,"####/##/##"))
>>530 無理言ってないよ。
しかしコードの方にムリがありそうだな。
535 :
デフォルトの名無しさん :02/07/31 06:15
プログラムでキーボードを打ったような操作をするにはどうしたらいいんでしょうか?
SendKeys
537 :
デフォルトの名無しさん :02/07/31 07:05
Aだったらsendkeys(a)でOKなんでしょうか? ちなみにnumpadのときはどうすればいいんでしょうか?
ヘルプくらい嫁
>530 Recordsetを渡しゃいいじゃん。 Private Sub Test(RecordsetData as Recordset) って。
540 :
デフォルトの名無しさん :02/07/31 08:41
最近VBを始めた初心者なんですが、 VSの統合環境がなじめず、使い慣れたエディターを使いたいのですが、 状況は、エディターでソースを保存しても、VSがソースファイルが更新された事を 認識してくれず、変更が反映されず困ってます。 プロジェクトの保存と読み込み繰り返せば可能ですが、 もっとよい方法無いでしょうか。
>>534 :eibu
ありがとうございます!
Format$(aaa,"yyyy/mm/dd"))とかやってエラー食らってたんですよ。アホだー
>>522 Public Function IsDateEx(ByVal strArg As String) As Boolean
IsDateEx = IsDate(Format$(strArg,"@@@@/@@/@@"))
End Function
(
>>534 とほぼ同内容)
>>535-536 キーコード送信に頼る実装は問題が多い。
SendKeysには、かの有名なNumLock問題があるし、keybd_event (API)を使った
としても、ターゲットのWindowがActiveになっていなければ、意図とは別のWindow
にキーコードが送信されてしまう恐れがある。
という訳で、別の実装を検討した方が無難です。
>>542 ありがとうございます。
こちらは文字列&文字数固定ですね。
試してみたのですがIsDateはスペースを含んでてもTrue返すんですね。
これでFalseが返ってくればLen(CStr(aaa)) = 8 も要らなくなる!と思ったのに残念!
Formatが任意の文字で文字数固定できればIsDateでFalse返せるのになー。
>>543 んな小さいことでなやんでないで次に行け
バイナリファイルについての質問です。 ファイルを削除せずに中身をput,get,inputBなどを使っていじる事によって そのファイルのファイルサイズを減らす事は出来ますか? それともバイナリファイルを小さくするには必要な部分だけバイト配列などで 一度格納してファイルを削除し、同じファイル名で書き出すんでしょうか?
546 :
デフォルトの名無しさん :02/07/31 13:38
Validateイベントを使って入力チェックをしているのですが、 Labelをクリックしたときも、フォーカスは移動しないにもかかわらず、 Validateイベントが発生してしまいます。 CausesValidateを指定したコントロールのみでイベントを発生させる方法か、 LabelがクリックされたことによるValidateだと見分ける方法はないでしょうか? タッチパネルでLabelClick時にKeyCodeを送信しているので、 値を入力してる最中にValidateが発生して難儀しております。
>>545 APIのSetEndOfFileを使うしかないと思います。
# APIを使わずにやる方法があれば私も知りたい。
>>547 あら、そんなAPIがあったのか・・・
ファイル関連のAPIで何か便利そうなものがあるかもしれないので探します。
レスサンキュー。
549 :
デフォルトの名無しさん :02/07/31 14:56
フォームを開く時にデータベースからコンボボックスにデータを流し込み、 入力できないようにStyleをVbComboDrop-DownListにしてるのですが、 フォームが開ききった時にそのコンボボックスのTextが空っぽなのが 気になります。初めからTextに1番目の項目を選択させておくには どうしたら良いのでしょうか。
550 :
デフォルトの名無しさん :02/07/31 15:08
メインフレームにファイル転送(エクスポート)する命令ってない?
>>550 メインフレームて一口に言ってもたくさん種類があるが...
553 :
デフォルトの名無しさん :02/07/31 15:49
>>550 サンクス
6680エミュレータのインポート・エクスポートってFtp処理なの?
富士通GS-8400&GS-8900だけど…
555 :
デフォルトの名無しさん :02/07/31 16:16
>549 コンボボックスのListIndexプロパティに表示したい項目のインデックスを代入すれ。
>>546 CausesValidate プロパティを持つ他のコントロールで代用すれば
つーかそもそも Validate イベントなんかに頼らんほうがいいかと
どうしてもやりたけりゃフックすれば
Validate の直前に Label だけ WM_*BUTTONDOWN がとれるっしょ
>>546 タッチパネル部を別フォームで作成する。
>>557 LostFocus時にチェックするよりは、Validateを使ったほうが
スマートかなあと思いまして。
WM_LBUTTONDOWNがValidateの前に取得できるか試してみます。
>>558 一度別フォームで作ったのですが、TextBoxのLostFocusイベントが
発生してしまったので、Labelにしました。
そしたら今度はValidateが、、、
タッチパネルをソフトウェアキーボード風にしてしまったのが間違いだったか。
ありがとうございます。もう少し試してみます。
560 :
デフォルトの名無しさん :02/07/31 21:22
VBでDataEnvironmentを使って、 フォームにデータを表示させたのですが、 テキストボックスに値を入力するだけで Updateを呼んでいないのに値が更新されてしまうみたいなんです。 Updateを呼ばないと更新されなくするにはどうすればいいのでしょうか。
561 :
デフォルトの名無しさん :02/08/01 09:52
VB6のディストリヴューションウィザードで MSXML4.DLLを含めたら、セットアップ時に登録できないって エラーが出てしまったんだが、ほかに何のファイルを登録 すればいいんだろう。ご存知の方、よろしくおねがいします。
がいしゅつ(既出)? VB.NETは今までとずいぶん違うらしいよ。
563 :
デフォルトの名無しさん :02/08/01 15:34
未だに「がいしゅつ」という語を使っているのは2ch初心者です。 最近知った言葉なので使ってみたく、自慢したくて仕方が無いようです。 そういう人間に有意な相関として知ったかぶりの厨房が挙げられます。 つまり「がいしゅつ」というという語を使っている人間は 厨房です。 わざわざカッコ付で既出と書いてるのも いかにも厨房らしくて笑えます。
未だに「ちゅうぼう」という語を使っているのは2ch初心者です。 最近知った言葉なので使ってみたく、他人にそれを知っていることを 自慢したくて仕方が無いようです。 そういう人間に有意な相関として知ったかぶりのアホが挙げられます。 つまり「ちゅうぼう」というという語を使っている人間は アホです。 わざわざsageないのも いかにも低能らしくて笑えます。
565 :
デフォルトの名無しさん :02/08/01 15:45
コピペは低脳な証拠だにょ。そんな感じでは明らかにあなたがあほですねん。
566 :
フルーツチンポ :02/08/01 15:46
とにかくスレと関係ないことを話題にしている奴が全員アホです。
あ、でもどちらかといえば奴らよりも俺の方が世界一のアホです。
568 :
デフォルトの名無しさん :02/08/01 16:09
569 :
デフォルトの名無しさん :02/08/01 17:03
お聞きしたいのですが、コンボボックスでドロップダウンしたときに、リスト部だけ 幅を広げたいのですが、可能でしょうか? できるようであればご教授願います。
570 :
デフォルトの名無しさん :02/08/01 17:20
>>569 未だに「コンボボックス」という語を使っているのはVB初心者です。
最近知った言葉なので使ってみたく、自慢したくて仕方が無いようです。
そういう人間に有意な相関として知ったかぶりの厨房が挙げられます。
つまり「コンボボックス」というという語を使っている人間は
厨房です。
いかにも厨房らしくて笑えます。
>>569 wParam にピクセルで幅を指定します
下のサンプルは 500 になってます
Private Const CB_SETDROPPEDWIDTH = &H160
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Form_Load()
SendMessage Combo1.hWnd, CB_SETDROPPEDWIDTH, 500, ByVal 0
End Sub
574 :
デフォルトの名無しさん :02/08/01 17:43
>>572 ありがとうございます。ここで引っかかっていたので大変助かりました。
575 :
デフォルトの名無しさん :02/08/01 18:24
VBはプロレルみたいだな(藁
576 :
デフォルトの名無しさん :02/08/01 19:03
ACCESS内にクエリを作成したのですが、 そのクエリをVBから実行させることはできるのでしょうか? たとえばクエリ名を指定するだけなど、 のクエリ名をopenstringにしても実行されず ”PROCEDURE クエリ名”を使うのかなとおもたけどちがったので、 あればその方法を教えてください
577 :
デフォルトの名無しさん :02/08/01 19:04
ミスしました。 のクエリ名をopenstring −> クエリ名をopenstring
578 :
デフォルトの名無しさん :02/08/01 19:09
Windows の音量を弄るには、どうすればいいですか?
すいません。 openするときに以下のどれかを指定してrecordsorceにクエリ名を入れると実行されないでしょうか MSDE引用 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 定数 説明 adCmdText プロバイダが Source をコマンド文字列による定義として評価することを指定します。 adCmdTable ADO が Source に名前を付けられたテーブルからすべての行を返す SQL クエリを生成することを指定します。 adCmdTableDirect プロバイダが Source に名前を付けられたテーブルからすべての行を返すことを指定します。 adCmdStoredProc プロバイダが Source をストアド プロシージャとして評価することを指定します。 adCmdUnknown Source 引数に指定されたコマンド タイプが不明であることを指定ます。 adCmdFile Source 引数に指名されたファイルから永続化 (保存) された Recordset を復元することを指定します。 adAsyncExecute Source 引数を非同期実行することを指定します。 adAsyncFetch Initial Fetch Size プロパティに指定された初期量の残りの行を非同期でフェッチすることを指定します。フェッチされたことがない行が要求された場合は、要求された行が利用可能になるまでは、メイン スレッドはブロックされます。 adAsyncFetchNonBlocking フェッチ中にブロックされたことのないメイン スレッドを指定します。要求された行がフェッチされたことのない場合は、現在の行が自動的にファイルの最後に移動します。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
すいません・・・・・ adcmdstoredprocでrecordsorceをクエリ名にしてみたら、うまくいきました。
リアル初心者ですみませんs。 WinsockをつかいTCPで接続しあった場合、 倉→SendData "<返信ください>" 鯖←GetData "<返信く" 鯖←GetData "ださい>" みたいに、データがぶつ切りになって送信(受信)してしまうことはありますか? ためしにHTTPサーバーで適当なものをGETしてみたら、ぶつ切りでデータが送られてきました。 簡単なサーバーを作りたいんですが、"LOGIN"(例)コマンドがぶつ切りで送られた場合の処理をしてないので、 しなくてはならないのかな、って思い書き込みしました。
>>581 データの受け取りはステートの監視が必要じゃなかったけ?
まだ受け取ってる最中じゃないの?
>>581 Winsockで例えば100バイトの塊を2回SendDataしたとしても
相手側でDataArrivalイベントが2回おきて
100バイトづつ2回GetDataできる訳ではない。
50バイトづつの4回になるかもしれんし、200バイトの1回かもしれん。
タイミングにもよるし、間にどんな機器/回線が入るかわからんから
データの区切りはアプリ側で制御してやらんといかんぞ。
ひとつの塊の終わりは改行にするとか、
送るデータの先頭にバイト数を入れておくとか
受信データはバッファリングしてそういう制御をせにゃあかん。
あとタイムアウトの処理と切断時の処理もきちんとやらんと泣きみるで。
まぁ要するに回線は信用しちゃいけねぇってこった。
なんか偉そうでスマンな。
584 :
デフォルトの名無しさん :02/08/02 00:17
>>582 一括で受信することはありえないっぽいです。
1MBとかのデータを送信した場合、
受信側は1つの変数に1MBの情報をつめなきゃならんぽいので。
>>583 やっぱりそうですか…。
つーことは、例えば倉から鯖にコマンドを送るときは
送られてきたデータに改行が無ければ改行が来るまで待って、
改行が来たら前来た奴とくっ付けて1つのコマンドとして理解する…
というわけですね。
先頭にバイト数の奴は、そのバイト数のデータがぶつ切りで来たら欝なんで、
改行でやってみようとおもいます。
さっそくその処理の方法でも考えます…。
585 :
デフォルトの名無しさん :02/08/02 01:18
複数のクラスで、構造体を共有したいんだけど、 どすればいいの?
許す
587 :
デフォルトの名無しさん :02/08/02 10:40
>>585 「定義」を共有したいのか、実体(「インスタンス」という表現でいいのかな?)を
共有したいのか、文面からイマイチ読み取れません。
589 :
デフォルトの名無しさん :02/08/02 13:11
ディレクトリのサイズを取得するにはどうすればいいですか?
再帰的に全部足す。
591 :
デフォルトの名無しさん :02/08/02 13:45
いや、一気に。
フォルダをつかんでプロパティを見る
593 :
デフォルトの名無しさん :02/08/02 13:55
なるほど。ありがとうございました。
秋葉原の交通博物館でもぼやがあったそうな こりゃ、ぼやぼやできませんね・・・
595 :
デフォルトの名無しさん :02/08/02 14:06
ある拡張子について、関連づけられてるアプリケーションが あるかないかはどうやって判断すればいいでしょうか たとえば doc であればWordが関連づけられている、 xxx には何も関連づけられていない などのように。
>>595 レジストリHKEY_CLASSES_ROOT内にあるかないか
>>597 ,598
サンクス!
FindExecutable APIを使うのがスマートなやりかた
みたいですね。
度忘れしてしまったので、ここでお聞きしたいのですが str = 1,2,3,4 配列=関数(str , ",") 結果↓ 配列1=1 配列2=2 配列3=3 配列4=4 となるような関数あった気がするんですが、どなたかおしえていただけないでしょうか?
>>600 Split関数?その方法ならArray関数でもいいと思うが。
600げとおめ。
>>601 はう
そうでした。
split関数でした。
ふむむ
いざ使いたいと思ってもこの関数は忘れてしまうと、メモってたファイルを検索することもできなかった。f(^_^)ぽりぽり
どうもありがとうございました。
603 :
デフォルトの名無しさん :02/08/03 02:21
IEで現在表示中の内容をユーザーに1クリックで印刷させたくて
いろいろ検索した結果
<html>
<head>
<!-- ブラウザオブジェクトを宣言する -->
<OBJECT ID="thebrowser" WIDTH=0 HEIGHT=0
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</OBJECT>
<SCRIPT LANGUAGE="VBScript">
<!--
'--- 印刷ルーチン
On Error Resume Next
Sub EnlivenPrint
On Error Resume Next
thebrowser.ExecWB 6, 2
End sub
-->
</SCRIPT>
</head>
<body>
<FORM>
<INPUT TYPE="BUTTON" VALUE="印刷" ONCLICK="EnlivenPrint()">
</body>
</html>
の様な形で実現できそう(たしか動作報告もあった)なのですが、
.ExecWBの引数に関わらず印刷ダイアログが出てしまいます。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/oen_a2z_5k38.asp によれば、.ExecWBメソッドはolecmdexecoptの値として
OLECMDEXECOPT_DODEFAULT = 0,
OLECMDEXECOPT_PROMPTUSER = 1,
OLECMDEXECOPT_DONTPROMPTUSER = 2,
OLECMDEXECOPT_SHOWHELP = 3
を取れるようになっていて、実際VBでフォーム上のWebBrowserコントロールに対し
Private Sub Command1_Click
WebBrowser1.ExecWB 6, 2
(もしくは WebBrowser1.ExecWB olecmdid_print, olecmdexecopt_dontpromptuser )
End Sub
とすると印刷ダイアログを出さずに印刷を実行できます。
この.ExecWBメソッドの振る舞いの違いに頭を悩ませているのですが
何か解決方法はありますでしょうか?。
((;゚Д゚)ガクガクブルブル
>>603 nn
| ||| 新型ブラクラ誕生のヨカーン
(;゚Д゚)
(●●ドキドキ
⊂| ))
.∪∪
グロ画像大量印刷on職場の予感
>>606 (((((((( ;゚Д゚)))))))ガクガクブルブルガタガタブルガタガクガクガクガクガク
608 :
603 sage :02/08/03 04:26
覚悟はしてたけどブラクラされますよね、やっぱり。 やりたいことはスタンドアロンのPCとタッチパネル使って WEBベースの情報端末を作りたい、と。 PCになれてないじっちゃん、ばっちゃんに印刷ダイアログ触らせたくない だけなんだけどな。
>覚悟はしてたけどブラクラされますよね、やっぱり ブラクラされてどうすんだよ(泣)。ブラクラ扱いを覚悟してたって事で。
610 :
教えてですみません :02/08/03 11:17
b1 = a Mod 2 'aを2で割った余り c1 = Int(a / 2) 'aを2で割った整数値 b2 = c1 Mod 2 'aを2で割った整数値を更に2で割った余り c2 = Int(c1 / 2) 'aを2で割った整数値を更に2で割った整数値 b3 = c2 Mod 2 '以下同様 c3 = Int(c2 / 2) b4 = c3 Mod 2 c4 = Int(c3 / 2) b5 = c4 Mod 2 c5 = Int(c4 / 2) b6 = c5 Mod 2 c6 = Int(c5 / 2) b7 = c6 Mod 2 c7 = Int(c6 / 2) b8 = c7 Mod 2 c8 = Int(c7 / 2) 上記の処理をですね。。
611 :
教えてですみません :02/08/03 11:18
b1 = a Mod 2 'aを2で割った余り c1 = Int(a / 2) 'aを2で割った整数値 For p = 1 To 7 b(p + 1) = c(p) Mod 2 'aを2で割った整数値を更に2で割った余り c(p + 1) = Int(c(p) / 2) '以下同様 Next p ってやってもうまくいかないんですが・・どこがおかしいんでしょう・・ VBは昨日から触り始めたすP−初心者なんですが・・
>>611 c(0)に初期値を入れてないとか。。。
5000円、2000円を除いた金種計算あたりかな?
金種計算じゃないな。2進数へ変換とかか。 Int(c(p) / 2)は (c(p) - b(p+1) ) \ 2でもいいな。
ありがとうございます。 何とかうまくいきました〜!
615 :
教えて・・ :02/08/03 19:04
すいません、vb初心者です。教えてください。 VBからCで作ったDLLに、二次元配列を参照渡しで渡すことって可能ですか? 下のようにすると、違った数値が返ってきてしまうんです。 ****VB側**** Declare Function SearchChar Lib "HOGEHOGE.dll" (ByRef lngTABLE As Long, _ ByVal lngREF As Long) As Long Dim lngTABLE(10, 2) As Long Dim i As Long Dim lngREF As Long lngREF = 4 For i = 0 To 9 lngTABLE(i, 0) = i lngTABLE(i, 1) = 10 Next MsgBox lngTABLE(lngREF, 1) '←10と表示される MsgBox SearchChar(lngTABLE(0, 0), lngREF) '←違う数値が返ってくる ****DLL側**** HOGEHOGE_API int _stdcall SearchChar(int lngTABLE[][2],int intREF) { int i; i = lngTABLE[intREF][1]; return i; } 知っている方いたら教えてください。
616 :
ListViewコントロールのソートについて :02/08/03 21:09
ListViewコントロールのソートについて質問があります。 コントロール付属の機能でソートはできるようになったのですが、 数値項目も文字列としてソートされてしまいます。 数値としてソートさせるにはどうしたらよいのでしょうか? これをソートすると 20 100 5 以下のようにソートされてしまう 100 20 5 できれば以下のようにソートさせたい 5 20 100
617 :
デフォルトの名無しさん :02/08/03 22:55
質問なんですが、 テキストボックスにAccessのデータを連結させて表示させ、 そのテキストボックスの値を書き換えた後、Updateさせずに、 データをMoveで動かすと、”操作はキャンセルされました” とエラーが出てしまうのですが、 エラーが出ないようにするにはどうすればよいのでしょうか。
>>617 On Error Resume Next
>>616 たぶん、数値ではソートできんので、前0で埋めて桁を揃えた文字列の隠し列を
作ってそれでソートする。
>>615 配列のインデックスの順番がたぶん違う。
とりあえず解決したです。 できてみればなんて事ない理由でしたが、プログラム経験とかなかったもんで。 とりあえずマイクロソフトのことはきらいになったけどな(笑)。 ブラクラ扱いされたことだし、ちょっといじくり廻したら(自分みたいな低能でも) 解決できる程度のことなんで、解決方法は書かないよ。
>>619 なるほど・・・やはりそうですかー
エクスプローラとかはファイルサイズとかでソートしてるんで
できないかなぁと思ったんですが甘かったですね^^;
どうもありがとうございました〜。
VBAの質問です。 本気で悩んでいるので出来れば助けてください。 FormAからFormAのサブフォーム(FormA_S)を呼びだしたいんだけど、 FormAにどうやったら「君のサブフォームはFormA_Sだよ」と 教えてあげられるのですか? また、 変数 = CurrentDB() でカレントDBを変数に入れてるんだけど、カレントDBは どこできまっているのですか?
624 :
デフォルトの名無しさん :02/08/04 18:10
>>622 APIとか使えば出来る。調べるのがめんどくさいから検索してくれ。
>>616 それ出来るコンポーネント、昔作りましたが、あげましょうか?
Delだけど
>>627 616じゃないけどほしい。
VBで使えるコンポーネントですよね?delで開発した。
いままでフレキシブルデータグリッドコントロール使ってたけど、
format関数使うのもいいかとおもうけど
>>628 それくらいどうして作れないの?
と言う皮肉かと。
631 :
デフォルトの名無しさん :02/08/05 12:52
>>605 日の丸掲揚などが学校などで義務付けられた時、反対派の方が圧倒的に多かっ
たし、卒業式か何かを受けない人も多くいました。
アジアの国は、中東をみても解るように引きずってしまうものだと思います。
泥沼化しないためにも関係国が歩み寄らないといけないと思います。
個人だって先祖の恨みみたいなものありますし。。。
何が真実で何が嘘なのか完全にはわからない。
マスコミはまったく信用できないですしね。
韓国などが隔たった歴史教育を行ってるのも知ってますよ。
日本でも最近になって歴史を美化した教科書がでましたし。。。
>>631 で、それと滅び行くVBとなんの関係が?
633 :
デフォルトの名無しさん :02/08/05 13:19
コンボボックスを2D表示する術をご教授下さい。 Appearanceを0-フラットに設定しても3Dで表示されるのです。
634 :
鳩料理大好き :02/08/05 14:17
>>633 ドライブの準備ができているかどうかを調べるには、Drive オブジェクトの IsReady プロパティ
失礼 スレ間違えました。
ワラタ
>631へのレスなら更にナイスだったな
>635が、「できました!!ありがとう!!」だったら更に(略
皆さん、そんなことで論議せず、
>>633 の質問をおながいしたいのですが…(w;
owner draw
643 :
デフォルトの名無しさん :02/08/05 16:29
マウスの消し方教えてください。 環境:Win2000 VB 6.0 こんな感じです。
マウスをはずす
645 :
デフォルトの名無しさん :02/08/05 16:30
マターリしててイイ板だね。
>>642 ありがとう。グラフィックかー。
よく分からないけど、研究してみます。
>643 Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long 入れて Do Until ShowCursor(False) < 0 Loop >644のOSはWin3.2?
649 :
デフォルトの名無しさん :02/08/05 17:53
>>644 まずパソコン本体の後ろに刺さってると思うので抜いてください。
そして強酸の中にほおりこんでみてください。
マウスが消えます。
猫を飼えばいいんじゃないでしょうか
>>652 まじめな顔と古典的のギャップがすばらしい。
>652 ですよね。
>>643 つまんねーネタが続いてるのでマジレスすると、
何も描いてないアイコンを用意して、それをマウスポインタに
割り当てるのが一番手っ取り早くて安全。
API使わなくていいし。
確かに一番手っ取り早くマウスポインタは見えなくなるけど
クリックとかは出来ちゃうよね?それでいいのかどうか。
何にせよ
>>643 の聞き方は稚拙。遊ばれてもしょうがない。
657 :
デフォルトの名無しさん :02/08/06 13:12
強酸にほりこめば、何でも溶けると思っている
>>650 は
むしろおめでたい
溶鉱炉の中に放り込めば溶けるよ。>>マウス
もうそれ関係のネタ、つまんないからやめていいよ マジで。
660 :
デフォルトの名無しさん :02/08/06 14:58
Accessなんですが、ADOのエラーなのでこちらに投稿させて下さい。 家で作った、Accessのフォームを会社で開こうとするとエラーが出て開けないのです。 家では問題無く開けるのですが。 ADOで接続していて、Connection.Openの時に、 「プロバイダが見つかりません。正しくインストールされていない可能性があります」 というエラーが出ています。 環境はAccess97を完全インストールでインストールし、 Microsoft ActiveX Data Objects 2.0 Libraryを参照設定に入れてます。 おわかりの方、おながいします。
>>660 Provider=Microsoft.Jet.OLEDB.4.0 -> 3.51
662 :
デフォルトの名無しさん :02/08/06 15:41
>>661 サン
激しく3.51にしています。
Provider=Microsoft.Jet.OLEDB.3.51;
664 :
デフォルトの名無しさん :02/08/06 15:49
>>660-663 マジレスすると、
日本国内では韓国の通貨ウォンの両替、再換金が出来る場所はほとんどありません。
665 :
デフォルトの名無しさん :02/08/06 15:52
>>664 でもそうすると、牛乳を麦茶で割るとコーヒーになるぞ!
>>667 いや正しい麦茶の作り方はこうだ。
1..まず水出しは絶対止めろ、お湯だしが基本だ
2.水も出来れば市販の天然水を使え
3.水道水を使う場合はよく沸騰させカルキを飛ばしておく事
4.その際ヤカンの蓋は取っておかないとカルキは飛ばないので注意しろ
5.水の量も多すぎては当然薄くなるのでキチンとチェックしろ
6.濃くしたいからと言ってパックを長時間いれておくと苦味が強くなるぞ
7.煮出す時間は量や自分の好みもあるのでここは馴れしかない、何回も試すことが重要だ
これだけでもかなり味が変わってくるが、更に美味い麦茶を求めるんだったら麦自体にも
こだわるといいぞ、ただこの時は高いのを選ぶと言うわけではなく安くても自分の口に合う
ものを探すのが重要だ
以上、単純なように見える麦茶道も実はかなり深いぞ
>>663 4.0だと通りました。
なんだ、これ。
スレ汚し申し訳ないっす。
>>664 ほほう、興味深い。
670 :
デフォルトの名無しさん :02/08/06 19:48
Visual Basic 6.0について質問したいんですが、 下記のプログラム(変なコードですが試行錯誤の途中なんです)を実行して コマンド1をクリックしたところ、テキストボックスには 「1900/01/07 19:27:52」 と出てきました。ほかに「qq」を使っているところもなく、 プログラム自体を下記だけにして実行しても同じ結果になりました。 osはwin2000、SPは当てていません。 よろしければ原因をお教え願えないでしょうか。 Private Sub Command1_Click() Dim qq As String qq = Len(Time) Text1.Text = Time + Str(qq) End Sub
671 :
デフォルトの名無しさん :02/08/06 19:52
>>670 何故Date型にDate型のサイズをを追加しとるのだ?
わけ分からん。
674 :
デフォルトの名無しさん :02/08/06 20:25
>>671 今回は目的とかなくて、色々やってみただけなんです。
ファイルの保存とか一からやりなおそうと思いまして。
で、今の時間の文字数を文字列として付け加えて、とか
気が向くままに作ってみたらこうなったんです。
それで見たこともない動作をされたので質問に来た、
というわけです。
なんか全体的にわかりにくくてごめんなさい。
675 :
デフォルトの名無しさん :02/08/06 20:30
>>670 のを一部変更
Text1.Text = Time + 1
でコマンド1をクリック→テキストに「1899年12月31日」と表示された。
謎。
文字列追加は&だろ
>>670 Timeの戻り値の型のことをよく調べるんだな。
678 :
デフォルトの名無しさん :02/08/06 20:36
∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´Д`) < VB 命! / \ \_____ /ノl ,ヘ \ ⊂/ | \ \⊃ | /⌒> _) | .| く_っ __. | | \  ̄⊂ノ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
∫ _____ ∧,,∧ ∬ / ミ,,゚Д゚彡っc□ < ま、ヘルプ見ろや。 _と~,, ~,,,ノ_. \ ミ,,,,/~), │ ━┳━  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ .じ'J ̄ ̄| ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
>>671-679 「&」と「+」間違えてました。まじですんません。
勘違い(゜Δ゜:)コワー
逝ってきます…
>>680 何でそういう結果が出てくるかは調べたのか?
調べれば謎でもなんでもない事がわかるはずだ。
てかデータ型ぐらい理解してからプログラム作りなよ。まじで。
もしかして
>>670 のプログラムの変数は全部宣言無しのVariant?
>>682 宣言してんじゃん。Variantじゃないじゃん。もしかして理由わからないの?
アホか 全部Variantで何が悪い
>>684 型無いとクラス型のオブジェクト指向が死ぬほどややこしくなるぞ。 by PHPユーザ
アホか Variantを自在に使いこなしてこそ真のVB使い。PHPなんかと一緒にするな
>>687 まぁ、同意。
どんどん他の言語への敷居が高くなっていくな。
>>686 PHP使いが型がどうこうなんて語るなや.
>>689 訂正。
型無いとクラス型のオブジェクト指向が死ぬほどややこしくなるぞ。 by CとC++とC#とDelphiとJavaとPerlとPHPのユーザ
>>687 一応同意。だが
Variant型ばかり使うのは使いこなしているとはいっえなーい。
>>690 なるほど、そういうことか. 理解した.
アホか 全部Variantで何が悪い アホか 全部Variantで何が悪い アホか 全部Variantで何が悪い アホか 全部Variantで何が悪い アホか 全部Variantで何が悪い
686=690はあほです。 PHPの変数はVariant型そのものじゃねーか。
697 :
デフォルトの名無しさん :02/08/07 01:33
初歩的なことなんだけど、 Sub aaa( prm1 As Long ) End Sub Sub bbb( prm1 As Long , prm2 As Long ) End Sub aaa (1) aaa 1 bbb( 1,1) 'これだけが構文エラーになる、なんで??? bbb 1, 1
call
解説 プロシージャを呼び出すとき、キーワード Call は省略できます。 キーワード Call を使って、引数が必要なプロシージャを呼び出す場合は、 引数リスト (引数 argumentlist) をかっこで囲む必要があります。 キーワード Call を省略するときは、引数リストを囲むかっこも省略しなければなりません。 Call 構文で組み込み関数またはユーザー定義型関数を呼び出す場合、 その関数の戻り値を取得することはできません。 配列全体を引数として渡す場合は、配列名の後ろに空のかっこを付けてください。
つまりヘルプ読めと。
ありがと! ん〜、理解は出来たけど・・・ すっきりしない! 早くVBの仕事終らしたい。
702 :
デフォルトの名無しさん :02/08/07 03:13
正規表現扱えるのないすか?
704 :
デフォルトの名無しさん :02/08/07 06:42
formに図形処理をあつかったプログラムを作るとき 処理毎にclsとかやってるんだけど ちかちかしちゃって困ります。 どうしたらいいでふか?
705 :
デフォルトの名無しさん :02/08/07 07:58
>>704 out &h31,0
これでVRAM表示が消えてグラフィックのアクセスが高速になるので、
この間にcls
で、消したところで、
out &h31,8
でVRAM表示の復活。
706 :
デフォルトの名無しさん :02/08/07 10:04
初心者で申し訳ありません。 どうかご教授願います。 VBのリッチテキストBoxでマウスの右メニュー (元に戻す、切り取り、コピー、貼り付け・・) は出せないのでしょうか。 テキストBoxは可能なのですが・・。 どうかよろしくお願いします。
708 :
デフォルトの名無しさん :02/08/07 10:16
>>706 喜怒哀楽の様々な感情で、大声で Ahhhhh!
>>706 同じVB使いとして情けないよ。MSDN読めヴァカ。
>>29 無理ですか?
可能でしたらご教授願います。
今はテキストボックスに文字を書いてコマンドボタンを押して実行って感じに してるんだけどそれだと何かと不便でして テキストボックスに文字を書いてEnterを押すと実行するようにしたいんだけど どの関数使えばいいの?
712 :
デフォルトの名無しさん :02/08/07 15:48
VB6のディストリビューションウィザードでパッケージ化されたものを インストールしようとすると 「Path or File Not Found」って出て、OKを押すと 「セットアップするファイル'C:\××××\Package\\@○○○.exe'が見つかりません。」 って出て、インストールできないんですけどどうすれば良いですか? OSはWinXPHomeです。 家にあるWin98のマシンではちゃんとインストールできました。
>>712 ユーザー名が全角日本語だから。
対策方法も真っ黒ソフトのKB調べれば出てるよ。
715 :
デフォルトの名無しさん :02/08/07 15:54
>>711 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn
'ここに処理を記述
End Select
End Sub
あとFormのプロパティKeyPreviewをTrueにするんだっけ?
>>711 コマンドボタンのDefaultプロパティをTrueにするだけでOK。
718 :
デフォルトの名無しさん :02/08/07 16:01
>>718 knowledge base
それより
>>717 でそのものズバリの答えがもらえてるね まさにKBの。
>>713 ,714,717,719
ありがとうございます
キロバイト
722 :
デフォルトの名無しさん :02/08/07 17:13
テキストボックスでEnterを押すと、次のコントロールに フォーカスを移したいのですが、以下の様にすると、 漢字変換の際の「決定のEnter」を取得してしまって困ってます。 どうにかならんでしょうか。 Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then SendKeys "{Tab}" End Sub
>>722 それ以前に、SendKeysでTAB移動すると
Win9x系ではしょっちゅうハングるからやめたほうがいい
keybd_event API使うのが吉。
725 :
デフォルトの名無しさん :02/08/07 17:24
If FN_NumST > 0 Then '既にナンバリングしたファイルがある場合 FN_NumEND = InStrRev(str_List(cnt), ")", -1, vbBinaryCompare) FN_Num = CInt(Mid(str_List(cnt), FN_NumST + 1, (FN_NumEND - 1) - FN_NumST)) + 1 FSO.CopyFile FN_Path & str_List(cnt), FN_Path & Mid(str_List(cnt), 1, FN_NumST) & FN_Num & ").xls" FSO.DeleteFile FN_Path & str_List(cnt) str_List(cnt) = Mid(str_List(cnt), 1, FN_NumST) & FN_Num & ").xls" Else '初めてナンバリングファイルを作る場合 FSO.CopyFile FN_Path & str_List(cnt), FN_Path & Left(str_List(cnt), Len(str_List(cnt)) - 4) & "(2).xls" FSO.DeleteFile FN_Path & str_List(cnt) str_List(cnt) = Left(str_List(cnt), Len(str_List(cnt)) - 4) & "(2).xls" End If
727 :
とにかくガンバ :02/08/07 17:38
>>723 ども。SendKeyではどうして98はハングするのでしょうか。
APIって使ったことないですが、これを期に勉強してみます。
>>724 できますた。ありがとうございます!
こんな事でハマってたのが馬鹿みたいです…。トホホ。
>>728 どうしてと言われたら、SendKeysのバグ、としか言いようがない
知らないとはまるので要注意だよ
つーかその理由なら次にフォーカスを移したいコントロールにSetFocusすりゃいいじゃん。
733 :
デフォルトの名無しさん :02/08/07 18:14
そうか?別に悪くないだろ。 いや、それ以前にそんなインターフェースはWindowsで動くソフトとして間違ってると思うけどな。 間違っててもクライアントからそうしろって言われてるんだからしょうがないだろってか。
>>731 そのコントロールが配列で、IndexとTabIndexがきれいに揃ってる時には有効だけど
そうでない場合にはかなーり面倒なことになると思われる。
>>732 理由を書こうよ。
>>733 その認識はおかしいと思う。ユーザーの操作性が良くなるんだから間違っちゃいないでしょ。
Enter押下時や文字数がある数に達した時フォーカスを移すのは基幹系ではよく行なわれている。
セットアップ時のシリアルNo入力とかもそうなってるよね。
SetFocusで移動するとValidateイベントが発生しない。
>>734 いやエンターでフォーカス移動はおかしいだろ。
俺も仕方なくすることあるけど、気持ち悪い。
普通tabキーでするもんだ。
>>736 確かにWindows標準ではない。でもまるっきり否定するのはおかしい。
例えば金額を次々に入力するプログラムで、Enterでフォーカス移動すれば
片手で入力できる。理にかなってると思わない?
どちらが優れていて多くの人に支持されるか、一目瞭然だと思うけど。
>>731 それだとコントロールのフォーカスの移動する順番までコードで
管理しないといけなくなるから大変さ。
>>736 >いやエンターでフォーカス移動はおかしいだろ。
おかしいおかしくないの問題とは別かと。
例えば、
携帯電話の数字ボタンの配置逆順にしますとか
言われたら不便でかなわんな。NTTがそれが標準だといいきったらどうするで。
J-Phoneがうちは従いません。従来どおりでいきますと。
そういうことさ。
慣れりゃ、数字ボタンが逆順だろうが誰も問題ないが、慣れるまでが大変だ。
慣れさせるのがいいか、機械を合わせるのがいいか、
どっちがいいの悪いのという問題とは違う。
740 :
へろっぴゅ :02/08/07 21:43
Labelにメールアドレスを書いたのですが このメールアドレスの部分をクリックするとウェブ上のアドレスを クリックした時みたいにメッセージの作成などができるように するにはどうすればよいのでしょうか?
741 :
デフォルトの名無しさん :02/08/07 21:55
formにラベルとかのコントロールを動的に貼り付けてるんだけど、 ????_clink() とかのメソッドはどういうふうに、動的に実装したらいんだべか?
正直TABでフォーカス移動は直感的じゃない。 始めてWindowsを触ったときTABでフォーカス移動するのを素直に納得できたか? TABを入力できるコントロールでフォーカス移動するときめんどいし。 俺的には、テンキーやカーソルの所にフォーカス移動キーがほしい。 つーか、tab shift-tabと同じ働きのキーをつけるだけなんだから マルチメディアキーなんかつけずにフォーカス移動キーをつけてくれ。
>>740
超、適当だけど
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
Call ShellExecute(Me.hwnd, "open", "mailto:
[email protected] ", "", "", 1)
End Sub
そりゃ確かにとっつきにくいかもしれんよ、Tabは。 でもWindowsはインターフェースを統一化させ、 初めて触れるアプリでも直感的操作ができる事を目指したOSでしょ? だからインターフェースガイドラインなんてのもあるわけで。 Tabキーでフォーカス移動ってのは当たり前。 エンターキーで移動は確かに使いやすいかもしれないけど、当たり前ではない。 他のアプリと統一化させる事は重要だと思うよ。
レベル低くなったなぁ
レベル高くなったなぁ
>>745 使いにくいのを当たり前と思うのは良くないよ。
UI操作を統一させるのは同意。
ただフォーカス移動としてtabを使用したのは間違いに近いと思う。
とはいってもEnterを含め他に使えるキーがないのも事実。
だからキーボードに新たにキーを追加するのがいいと思うのだが。
これはUI操作を統一させることの障害にはならないだろう。
749 :
デフォルトの名無しさん :02/08/07 23:07
点Aと点Bの角度を求める時とかってどうしてます? 僕は If (bx - ax)> 0 Then siita = Atn((by - ay) / (bx - ax)) If (bx - ax)< 0 Then siita = Atn((by - ay) / (bx - ax)) + 3.14159 とかやってるんですが ほかに効率のいい方法知りませんか?
750 :
デフォルトの名無しさん :02/08/07 23:13
あ〜くたんじぇんと
Obj.Controls.Addでコントロールオブジェクトフォームに貼り付けた時の
表示の優先順位はどやって設定したらいいでしょう?
>>742 まさに「それ!」
ありがとうぉぅ〜
>>751 自分で研究しようよ。一番奥にもってきたい順で表示。
ところでなに作るの?掟破り?
753 :
デフォルトの名無しさん :02/08/07 23:27
>>749 siita = Atn((by - ay) / (bx - ax))
If (bx - ax)< 0 Then siita = siita + 3.14159
755 :
デフォルトの名無しさん :02/08/07 23:49
picture1に描かれている物をpicture2にそのままコピーするにはどうすればいいですか? 厨房ですいません。
>>756 ソフトそのものがコピーだからヘルプはありません
>>752 >自分で研究しようよ。一番奥にもってきたい順で表示。
コントロールオブジェクトを、追加、削除を繰り返すので、
順番では対応できないんですよ。
自分なりに調べてはいるんですが、今のとこ解決方法が見つからず、
質問させてもらったんすけど、どうでしょう?
>ところでなに作るの?掟破り?
B2B向けの情報管理ツールですけど。
>>745 >他のアプリと統一化させる事は重要だと思うよ。
ある意味、そのせいでEnterキーでフォーカス移動しなくちゃならなくなる罠。
#そういう要求がでるところは、他アプリも全部Enterキー操作だから。
おれは、なるべくTabキーを薦めはするが、
最終的に客の要望にあうように作る。
コストとWindows標準でないことと操作性との天秤で客が決めることだしな。
>>759 > コストとWindows標準でないことと操作性との天秤で客が決めることだしな。
同意。だがWindows標準でないことのコストを知らないというか無関心な奴が多すぎ。
0からユーザインタフェース作るよりWindows標準ユーザインタフェースを
踏まえて(Windowsを使う以上逃れられん)作るほうがコスト高いんだぞ。
Windows標準ユーザインタフェースを熟知せにゃならんし。
Webでフォームを埋める時だってtabじゃん。
この2chの書き込みでも、名前メール本文とtabで移るぜ。
enterではない。
enterでフォーカス移動するブラウザってあるのかな?
やっぱり標準はtabでenterはイレギュラーだろ。
でも
>>759 の言うように、仕事で作るんであれば客の要望は絶対だから、
そんな我が儘通せないけどな。
>>763 イレギュラーなのは承知のこと。
そのイレギュラーなことの問題点、解決策を考えるのは
イレギュラーで終わらすより、よっぽど意味がある。
767 :
デフォルトの名無しさん :02/08/08 00:31
ENTERはコボラーにとって神聖なキーでございまふ
>>763 Webなんてほんとの最近じゃん。
Win上での話しならそりゃ汎用アプリだから当たり前だと思うが。
UNIXユーザならTabキーとCtrlキー入れ替えてる罠。
そんなことより、Enterでデフォルトボタンが働いてポストされたり、
Escでキャンセルが働いてリセットされるのが最悪だぞ。
VectorにそんなDLLがあった気がするな>Enterでフォーカス移動 基本的には勧めないし、客にも説明するけど、他との兼ね合い等で 問題なければ一応実現はさせるけどな。
770 :
デフォルトの名無しさん :02/08/08 06:53
>769 わざわざDLLなんて使わなくても、簡単に書けるのに。
>>768 別にWebに限定したわけでなく、例の一つとしてあげただけだろう。
772 :
デフォルトの名無しさん :02/08/08 09:22
VBユーザの人に質問なんすけど、VBでbtreeのようなデータ構造を 書く時ってどうやってるの?
VBでプログラム作れば意識して作りこまなくてもTabでフォーカス移動になる。 それはそれでWindows標準ということでよろしい。 インターフェースの統一は守られてるじゃん。なにを言ってんだか。 で、その他に操作性を考慮してEnterでフォーカス移動の機能をつける。 そうすればユーザーはTabでもEnterでも好きな方を使える。それの何が悪いのか。 ブラウザは例の一つとしてあげただけと言うがEnterでフォーカス移動も例の一つじゃん。 ブラウザはEnterでリンク先に飛ぶ。あるプログラムはEnterで次のテキストボックスに飛ぶ。 それぞれ使いやすいようにそうしてるわけでしょ。 何も全てのプログラムにEnterでフォーカス移動の機能をつけろと言ってるわけじゃない。
テキストボックスの入力欄が複数あり、 下の方にOKボタンとキャンセルボタンがある場合、 エンターはデフォルトボタンに設定されてるOKボタンを押すのと同じ動きをするのが 標準ではないのかな。 Wordの設定画面もVisual Basicの設定画面も、 テキストボックスにフォーカスがある状態でエンター押せば、 OKボタンを押したのと同じで確定されダイアログが閉じる。 それ標準。 そうやってユーザーが覚えてるのに、 テキストボックスでエンター押したら確定されずに 次のテキストボックスへフォーカスが移ったってのは、 標準から外れたインターフェースになっちゃわないか? タブで移動ができればいいだけでなく、エンターの動きだって考慮しないとだめだろう。
>>774 しかも逆パターンも発生するしな。
enterでフォーカス移動を覚えたユーザーが、
Windows標準であるインターフェースに触ったとき、
フォーカス移動しようと思ってテキストボックスでenter押したら、
OKボタンが押されちゃった〜とか。
>>773 はそこらへんの考え方が欠落してる。
type treenode parent as long left as long right as long value as variant end type
>>774 ダイアログではenterを押せばOKボタンを押したことになるがダイアログ以外ではどうかな?
AccessアプリもExcelもenterでフォーカス移動する。
>>775 それはたいして問題にならない。enterでフォーカス移動を要求する所は
大抵そのアプリ専用としてPCを使う。Windowsなどと意識しないで。
ゲームでもtabでフォーカス移動を使用しないのは普通だしな。
ただゲームとは違い通常のGUIコントロールを使用するので
Windows標準と矛盾しないように考慮しなければいけないがな。
>>774 言ってることはもっともだ。でもそれだとまずい、そうじゃない方がいいってものもある。
例えば全項目入力必須のプログラムなら全項目埋まった時に初めてデフォルトTrueにした方がいいだろう。
でもそれで終わるのではなく、入力がされてないテキストボックスがあればEnterで自動的にそこに飛ぶようにすれば
操作性は格段に向上するとは思わない?
それとユーザーの大多数はWindowsの標準操作なんてものは知らないし興味も持って無い。
Ctrl+SやメッセージボックスをEnterで閉じれる事を知らないユーザーが多数いるのを知ってる?
確かに初めて使う時は標準操作のほうがとっつきやすい。標準操作を知ってた場合に限ってだけど。
でも良く使うソフトは操作なんてすぐ覚える。その時標準操作のみって事が効率の足かせになる事はないかな。
標準を考慮する事は大切。だけどそれが絶対、それしか許さないと考えるのはどうだろうか。
世間一般に出すソフトは標準入力の方がいいと思うけど、限られた所で頻繁に使われるものは
標準以外の操作も考慮するのもいいと思う。
俺は基本的には標準以外の操作はつけないけどね。ユーザーに標準操作を覚えて欲しいし、めんどくさいし。
でも操作性を考慮したものを触ると、親切だな、使いやすいな、って思うよ。
それと聞きたいんだが、自分個人で使うものも標準操作絶対で作るの? 長文スマソ>ALL
アフォばっかだな
余計な機能の実現に苦悩する
>>722 もそれを肯定する連中モナー
>>780 は自分で考える事ができない、言われた事しかできないアフォなんだろうな・・・
苦悩するから成長する。
>>780 は人に教えてもらうまで成長しないんだろうな。
どうみてもアフォなのに放置できないアフォ(俺含
VBでおかしいなとおおもったことに、 sub command1_click() command1.enabled = false いろんな処理 command1.enabled = ture end sub とやっても実際、ボタンコントロールが使える状態に戻ってないことがあるんですが私だけかな? こんなときはcommand1.enabled = tureを連続で2行書くとうまくいくんですが。 doeventsをはさんでみてもなおったりなおらなかったりする。 sub command1_click() command1.enabled = false いろんな処理 command1.enabled = ture command1.enabled = ture end sub
ワラタ
オモロw つーか=入力した時点で候補がでるだろ。
ツレーんだろ、色々と。
(゚∀゚)テュァ!!
釣られ
ture = 釣れ ですよ。 タイプ早いからtrueがtureになっただけだよ。 あとはぜんぶこぴぺ。 みんなそんなにかんたんにつられないでください
うわっ 寒っ
負け惜しみにしても寒いな。 はい次の方ー
知らないの? VB2まではtureで通るよ これくらい言っとけ>792
一昨日から、Controls.Addで動的貼り付けで、 表示の優先順位を変更する方法探してるんだけど ん〜、もうダメポ。 そもそも、そんな事出来ない? ヒントでもいんで、情報あったらよろしくぅ
>>797 表示の優先順位がなんのことかよく分からんがZOrderメソッドじゃだめか?
ていうかあげ足取りどもうっさいんだよ
わかったからもう帰って良いよ。 心配しなくても5分後にはみんな忘れてるんだから。
>>800 おいそろそろママのおっぱいの時間だぞ?
ため口はいてないで、早く学校かえれや
>>802 >
>>801 > 釣れた(w
ってへぼいやつだな?
しょんべたらしてびびってんじゃねーのか?
ってびびってんじゃねーぞ?こら
>>798 れすどうも。
オブジェクトがFormなら、それでOKなんだけど、
Labelとか、TextBoxとかだと、そのメソッドが無い
もれも、見っけたとき「おぉ、これは使えるか?!」と思ったけど、
だめやった。
799-804 わかったから、大人しくしててくれ、な。
>>806 なに上からものいってんだよ?
ないてあやまれや!
手震わしながらキーボードうってんじゃねーのか?
>手震わしながらキーボードうってんじゃねーのか? 自分の実況?
2chだな〜〜、結構結構。
>>808 煽りの分際がよ
いっちょまえの口きいてんじゃねえよ
はよあやまってみろや
ちびってできねぇんだろが?
なんか偽者が荒らしてるけど無視してください。785と私以外偽者です。 tureはtrueのtypoだとして一回じゃ元に戻らないことってありませんか?
>>812 ahoga
お前と俺しかいねぇよたこが!
てめえが一番わかってんだろうが。
かわいいことやってんじゃねぇぞ?
ほらほら
お前こそ5分後には忘れてやるから消えろや
VBのソフト買ったんですが、難しいですね… プログラマーになりたい。なんて思っているのですが、 数字、計算、数学、グラフなどが苦手だし嫌いです。 適性がないとだめですか。
>>812 俺の所ではならないが。
ロジック的におかしい所がないか調べてみては。
>>814 大丈夫、VBしか使えない人はプログラマじゃありません。
>>816 答えになってない。お前プログラマに向いてないんじゃない。
>>816 煽りしてんじゃねぇぞこら
バンしてまうぞ?
おもろいなーw
>>798 >>811 てへぇ!
でけましたぁ〜。
ありがとうございます。
これからは、見落としが無いようによく確認します。
816,817,818 だから、しゃべんなって。
どーでもいいが、ZOrderがメソッドなのが気になる。 名前からプロパティでZ位置を取得・設定するのかと思った。
823 :
デフォルトの名無しさん :02/08/08 18:37
microsoft Visual Studio 6.0SP5ってのが雑誌についてたんですけど これをインストールしたらVBが使えるんでしょうか? これはいわゆる「評価版」ってやつですか?
>>823 一応マジレス・・・・
それはバグを修正するためのもの。Visual Studio6.0がインストールされていないと使えない。
>>824 あーそうですか 評価版ってもう手に入らないんでしょうか?
>>821 お前マジであれだろ
煽りしたいだけだろ
お前はマジバン!
>>815 そうですか。もう少し調べてみます。ありがとうございます。
>>825 そういうことにしたいんですね。
>>828 おたくっておもしろいな
必死こいて仲間を引き入れたい気持ちがあらわれてるな
831 :
デフォルトの名無しさん :02/08/08 19:03
>>826 VBの参考書(?)にはついているものがあるみたいだけど。
>>830 あーあもうあきたな。
ロボットと話してる気分だ。
毎度毎度同じパターンでよぉ
こんなきもいやつが2CHにいるわけだな・・・・・・。
心病んでるぞお前(藁
>>832 ねぇねぇ、ちょうど一年ぐらい前になんかやらかさなかった?
物凄く似てるんだけど(w
785ってあほちん?ばかちん?
840 :
デフォルトの名無しさん :02/08/08 21:48
初心者質問です(^O^)/変数Aに"?,?,?,?"と入れたいんですが、 A="?,?,?,?" では"?"がきちんと代入出来ませぬ〜(T_T) どーしたもんか教えてやって下さいm(__)m
その顔文字はここでは叩かれる元だからやめておけ
初心者 質問 です (^O^)/ 変数 Aに "?,?,?,?"と 入れたいん ですが、 A="?,?,?,?"では "?"が きちんと 代入 出来ませ ぬ〜 (T_T) どーした もんか 教えて やって 下さい m(__)m
845 :
デフォルトの名無しさん :02/08/08 22:17
>>841 携帯からなんで改行の仕方が分かりませんでした(涙)
>>843 ぷーんだ。 ちょっぴし凹んださ。
初心者 質問 です (^O^)/変数Aに"?,?,?,?"と入れたいんですが、 A="?,?,?,?" では"?"がきちんと代入出来ませぬ〜(T_T) どーしたもんか教えてやって下さいm(__)m
>>846 お前女か?
だったら、漏れが優しくおしえてやる
へへへ
で、質問の意味が分からん
850 :
デフォルトの名無しさん :02/08/08 23:24
>>846 まず、どういう方法で変数Aの中身を確認したのか、書け!
/* これに代わるの無い? */ #if 0 これでもいいけど。 #endif
ブロックでコメントアウトすりゃぁいいだろ
853 :
デフォルトの名無しさん :02/08/08 23:40
854 :
デフォルトの名無しさん :02/08/09 01:06
>851 'あるよ。 #if aa = 0 then ' これでもいいけど。 #end if ん?
#If False Thenの方がいいと思うが。
857 :
デフォルトの名無しさん :02/08/09 11:19
If KeyAscii = 48 〜 57 Then 上のように48〜57の間の時、みたいに範囲を指定することって できないのでしょうか。一つずつIf Then ElseIfしていくのは 超面倒なんですけど。
48 ≦ KeyAscii ≦ 57 だったら If 48 <= KeyAsci And KeyAscii <= 57 Then
If (KeyAscii - 8) \ 10 = 4 Then
>>857 俺なら
Select Case KeyCode
Case 48 To 57
End Select
だな。
キー制御が複数ある場合はSelect文使った方が
見やすいし、内容によっては速くなるよ。
>>861 頭イイ!
皆さん、ありがとうございます。
>>861 さんのは、アフォなので理解できませんでした…。
分かりやすいので
>>862 さんのを使いたいと思います。
本当にありがとうございました。
>>840 ってなんだったの?A="?,?,?,?" て普通に出来るよね?
>>865 きょうび、トリッキーなコードはいいコードとは言わないよ
よほどクリティカルな個所に使う場合を除いて。
連続で申し訳ないのですが、 Select Case KeyAscii Case 48 To 57 このCase文を否定形にしたいのですが、やり方が分からないです。 Case Not 48 To 57 としても駄目でした…。
Select Caseもやめとけ。 If 48 <= KeyAsci And KeyAscii <= 57 Then を関数にしろ。
871 :
デフォルトの名無しさん :02/08/09 13:38
VB5がただで配布されていると聞きましたが、どこでしょうか? MSのダウンロードページを探したのですが、よくわかりませんでした。
(´-`).。oO(なんでこんな下らない質問が尾を引いてるんだろ・・・)
>>870 関数化するにしても
Select Caseのがいいよ。
>>872 ・低レベルな話題なので誰でも話題に入れる。
・しかしこういう基本テクニックすら知らないVBユーザ多いから。
>>873 >>870 が言いたいのはこういう関数だと思うよ。
Public Function IsNumericKey(iKeyAscii AS Integer) As Boolean
If (&h30 <= iKeyAsci And iKeyAscii <= &h39) Then
IsNumericrKey = True
Else
IsNumericKey = False
End If
End Function
Select Caseはテーブルに展開されるから速いってのは
本当だろうか?
>>875 ついでに(ByVal iKeyAscii AS Integer)にしておけ。
> Select Caseはテーブルに展開されるから速いってのは本当だろうか
ジャンプテーブルに展開されるのは確かめた。
でも今回のようにCase 48 To 57じゃたぶんダメ。
Caseの後が数値で不等号とかがない時だけだと思う。
C/C++でジャンプテーブルに展開されるときの条件と同じと考えていいんじゃないかな。
なんだか僕のせいでスミマセン。 初心者スレって言葉に甘えてしまって… Ifが良いのかSelectCaseが良いのか分かりませんが、 関数化して使い回せるようにしてみます。 ありがとうでした。
>>875 いや、それは理解してるが・・・Selectでいんでないの?という話。
Public Function IsNumericKey(iKeyAscii AS Integer) As Boolean
Select Case iKeyAscii
Case &h30 To &h39
IsNumericrKey = True
Case Else
IsNumericKey = False
End Select
End Function
>Select Caseはテーブルに展開されるから速いってのは
>本当だろうか?
微々たるもんだから、速度で判断するのはどうかと。
↓速度実験してるページ。
http://homepage2.nifty.com/yk2yk2/mn/tips/index.htm
>>876 いやByValにすると変数をコピーする時間がもったいないから
ByRefでいいのさ。きっと。
>>878 そのページは正確じゃないな。たしかにあの通りだとIfが速いが
比較の個数を増やすとSelect Caseが速くなる。
Sub Main()
Dim i As Long, s As Single, tmp As Long
s = Timer
For i = 0 To 50000000
If tmp = 1 Then
tmp = tmp + 1
ElseIf tmp = 2 Then
tmp = tmp + 1
ElseIf tmp = 3 Then
tmp = tmp + 1
ElseIf tmp = 4 Then
tmp = tmp + 1
ElseIf tmp = 5 Then
tmp = tmp + 1
ElseIf tmp = 6 Then
tmp = tmp + 1
ElseIf tmp = 7 Then
tmp = tmp + 1
ElseIf tmp = 8 Then
tmp = tmp + 1
ElseIf tmp = 9 Then
tmp = 0
Else
tmp = 1
End If
' Select Case tmp
' Case 1
' tmp = tmp + 1
' Case 2
' tmp = tmp + 1
' Case 3
' tmp = tmp + 1
' Case 4
' tmp = tmp + 1
' Case 5
' tmp = tmp + 1
' Case 6
' tmp = tmp + 1
' Case 7
' tmp = tmp + 1
' Case 8
' tmp = tmp + 1
' Case 9
' tmp = 0
' Case Else
' tmp = 1
' End Select
Next i
MsgBox Timer - s
End Sub
何度も本当にすみません。ラスト教えて下さい。 先程の数字以外の入力防止コードを実行し、普通に数字以外の 入力が出来なくなったのですが、 数字→それ以外と連続押しした際にまれに入力できてしまう ことがあるようです。例えば「4R」とポポン!とほぼ同時押しした際、 「4R」と入力出来てしまいました。 どうやら、KeyPressイベントが起きていないようです。 しかし、WindowsのIP入力する欄で同様の操作を行っても、 「R」は入力されません。 これを防止する術はあるのでしょうか。 つか、この操作が出来るのって、もしかして僕の端末だけですか?
>>881 CTRL+Vで貼り付けてもいい? SHIFT+INSERTで貼り付けてもいい? マウスで貼り付けてもいい?
>881 KeyUpかKeyDownにしてみれば?
Case 48 To 57 にする理由は見やすいからです。 Select文が、内容によっては速くなるというのは、例えば if i = 1 or i = 3 or i = 5 or i = 7 or i = 11 then select case i case 1,3,5,7,11 という分岐があってiが1だったとします。この場合 select文はi = 1を判定した時点で判定が終了しますが if文はi = 1,i = 3,i = 5,i = 7,i = 11全ての判定を行うからです。 ************************************************** 524 :デフォルトの名無しさん :02/07/30 21:17 Ifの条件にAnd入れるくらいならIf二つ使え ************************************************** と言ってるのもおそらくこの理由からじゃないでしょうか。 今回の質問は48 To 57だけですが、キー制御時は結構↑こういう状況多いので。 キー制御時ぐらいでは微々たる差ですがループ時には結構効果が出るのでは。
>>882 いや、ペーストは別途、防止しています。
そうじゃなくて、
>>881 に書いたような現象を防げるかということです。
KeyPressをクリアしてしまうような。
(できれば、どなたか同じように実験していただけるとありがたいのですが…)
>>883 KeyUp、KeyDownもクリアしてしまうようです。
イベント自体起こりません。
>(できれば、どなたか同じように実験していただけるとありがたいのですが…) ならまずコード出そうよ。
>>885 きっとChangeイベントは発生するはず。
それでどうすればいいかは知らん。
888 :
デフォルトの名無しさん :02/08/09 15:04
質問! VBでミリセカンド単位の時間を計算するのに、何か良い方法あるかな。 例えば、2002080912315977っていう(yyyymmddhhmmss**)Stringを元に、 差を計算する場合…、Dateだと秒までしか扱えないし…。
>>886 すみません…。
テキストボックスのKeyPressイベントで
>>878 さんのコードを呼んでいただくだけです。
で、テキストボックス上でポポン!とほぼ同時押しで
「4」→「R」と押して下さい。
>>887 どうもです。何か考えてみます。
APIを使ってもVBはぱっとしない・・・
>>888 QueryPerformanceCounter
API使ったらVBじゃないだろ 見えないとこで使うなら許可
890がぱっとしない。
>>891 ええっ!?
Windows98+VB6です…。なんでだろう。
うーん…いろいろ考えてみます。
すみませんでした…。
>892さん あーっと、精度の良い実行速度測定法ではなくて、単純に ふたつのミリセコンドを含む時間を演算するのに適したデータ型は何か? ということを聞きたかったのです。解りづらかったですね。 (計算対象の時間は文字列として既にある状態からの計算) でも、QueryPerformanceCounterで戻り値に使われている型を調べればヒント になるかもしれないですね、ちょっと調べてみます。
>>896 基本的に日付や時刻の差を求めるときは、数値で行います。
VBのDate型も1899/12/30 00:00:00からの経過時間を
日数を整数とした浮動小数点で保持しているはずです。
ミリ秒を含む文字型で比較する場合は、
ミリ秒を含まない文字列を取り出して、DateDiffしたものに1000を乗じ、
ミリ秒だけの差をそれに足してやればいいのでは?
C、もしくは、JavaのステートメントとVBのステートメント対応表みたいの どっかに無いですか? 「Cプログラマーの為のVBの部屋」みたいな。
言語仕様すっくりしない。 はぁ〜鬱。
901 :
デフォルトの名無しさん :02/08/09 22:45
>>840 変数の宣言ってしてる?ってーかしってる?
private sub form_load()
dim A as string ←変数の宣言
A=?,?,?,?
end sub
Private Sub Command1_Click()
text1.text=A
End Sub
ってやればコマンドボタン押すとテキストボックスに
「?,?,?,?」って出てくるけど。
ちなみに俺が始めて作ったプログラム。どうでもいいか。
902 :
デフォルトの名無しさん :02/08/09 22:52
>>901 あのころが一番楽しかったかも試練。
俺もほとんど同じコードから始めたよ。
>>898 そういうページを俺が作ってる。でも最近停滞中。
気が向いたら出来てるかもしれん。
>>901 ちょっと待て。恐ろしく糞なツールだな。>VB
そんなんで動くのか・・・
>>904 お前ヴァカ?
他の言語でも同じだろ。
((;゚Д゚)ガクガクブルブル お前らある意味神だ
>>904 今時RADも知らん奴はプログラマ辞めたら。
>>901 それだと、テキストボックスには何も表示されないと言ってみる。
>>907 どーゆー文脈でRADが出てくるんだ??
Dimの位置がちがーう
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´_ゝ`) √| < なんだ、やっぱりクズ共の吹き溜まりかよ / |\/ ノ \ __ / ム / ̄\__ \_______ \ ( 丿 \ /\ ) ||\ ̄  ̄\  ̄)\ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| 期待して損したぜ
通りすがりは早く通りすがっていただきたい
すがられてもなぁ…
へへへ ちんこ?
""でもくくられてないので、そもそも実行できない罠。
VBユーザって文法の時点で崩壊してる人間がいるのか。
一部を取り上げてそれを全体と見るヤシがいますね
922 :
デフォルトの名無しさん :02/08/10 05:15
923 :
デフォルトの名無しさん :02/08/10 05:23
>>902 のレスにある「ほとんど」とはそういう意味か
925 :
デフォルトの名無しさん :02/08/10 06:23
しょうもない質問ですみません。VB6で、 1. コードが書いてある窓をマウスを使わずに最大化して表示する方法 2. ツールボックス等をマウスを使わずに閉じる方法 を教えてください。
926 :
デフォルトの名無しさん :02/08/10 07:59
角度を求めるときアークタンジェントを使って角度を求めると とてもめんどくさい式になります。 どうにかしてください。
>>927 siita=atn(y/x)
if x<0 then siita=siita+3.14159
if siita<0 then siita=siita+3.14159*2
929 :
デフォルトの名無しさん :02/08/10 08:50
rnd(1)この関数の(1)って何ですか?
>>921 特に積分しても問題ないと判断しました。
>>928 VB には atan2 とかないし
それが一番カンタンなのでは
関数にすれば呼び出し側は1行ですむ
ぜんぜんめんどくさくないと思うが
>>925 1. [Alt]+[-] , [X]
2. [Shift]+[F10], [H] または [App], [H]
>>932 ありがとうございます!
2の方は、なんかできないのですが、1の方だけでもだいぶ助かりました。
ADOを使用してAccess2000に接続したいのですがどう書けばよいのでしょう? お願いします。
935 :
デフォルトの名無しさん :02/08/12 00:39
ageとく
936 :
デフォルトの名無しさん :02/08/12 06:29
Hello World について聞きたいんですが、 Private Sub Command1_Click() Msgbox "Hello world" End Sub こんな感じのプログラムのことですか?
937 :
デフォルトの名無しさん :02/08/12 06:39
>>934 ODBCであらかじめ設定しとくか、MDBをダイレクトに指定しよう。
939 :
デフォルトの名無しさん :02/08/12 08:00
>>937 ウィルスかブラクラっぽい。インフォシークはブラクラが多い気がする
940 :
デフォルトの名無しさん :02/08/12 08:13
941 :
デフォルトの名無しさん :02/08/12 08:59
>>939 ニューソクにもコピペあったよ、怖すぎる
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´_ゝ`) √| < まあここは厨がかなり多いからな / |\/ ノ \ __ / ム / ̄\__ \_______ \ ( 丿 \ /\ ) ||\ ̄  ̄\  ̄)\ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| 期待して損したぜ
943 :
デフォルトの名無しさん :02/08/12 09:44
>>926 関数にしたほうが。グッド。
>>939 ポケモン現象だと思われ。漏れも大昔作った。
1000getしたい
構造体の配列を効率よくファイルに読み書きする方法伝授して下さい。
>>944 素直に先頭ポインタ指定してfwrite
946 :
デフォルトの名無しさん :02/08/12 15:53
ダイアログを出さずにフロッピーディスクを クイックフォーマットする方法はないでしょうか?
897さんres遅れましたが、thanksです。 1000を乗じ…ってのが良くわかりませんでしたが、 なんとかなりそうです。
948 :
デフォルトの名無しさん :02/08/12 16:17
VB6でメールソフトを試作しているのですが MAPISession、MAPIMessageコントロールを使用して 添付ファイル付きのメールを送信する方法がわかりません 又、受信側の添付ファイルの取り出し方も同様です 過去ログにも一応目を通したのですが、それらしい記述は見つけることが出来ませんでした 何かアドバイスなどありましたらお願いします
>>948 RFC読めや。
これだからVB厨は・・・。
次はBASE64コントロールはどこにありますか?だろうな。
>>949 お前単に叩きたいだけだろ。よかったな初心者が出てきて(プ
解決・・はしてませんが、いろいろ調べたところ、 かなり高度なようなので、他の方法を考えたいと思います。
>>953 「VBからダイアログ出さずに」だと難しいと書いてありましたが、
そうでもないんですか?
>>953 946じゃないけど、formatコマンドだと確かに
ダイアログは出ないけど、結局キーインは求められるのでは?
サイレンスフォーマットしたいってのが質問の意図のように思われ。
952だが 申し訳ない。よく考えずにレスしてもうた。 echo |format a: /q とかやってもラベル入力求められちゃうな。ごめん
If Int(r / 2) = r / 2 Then r = r + 1 より r = r + (Not r And 1) の方が早いと知った夏の日
r = r or 1 ?
>>958 ごめんその方が単純でした。俺何やってんだろ…逝ってくる
>>957 元のやつも普通、
If r Mod 2 = 0 Then r = r + 1
と書かない?
ところでrが整数の場合の話だよね? そうでないと958も960も957の1行目の互換とはなりえない。
>>961 rは整数。しかもMod使えないくらい大きな数。
初歩的な質問だと思うのだけど、 イニシャライザーについてだけど、 Dim NumOfWord As Long = 100 とか、 Dim NumOfWord( 3 ) As Long = {1,2,3} みたいな事したいんだけど、イイ方法おしえて。
>>963 上のは
Const NumOfWord As Long = 100
でできる。下のは知らん
>>965 もれも最初、Constの記述を見つけたから
そのまま、
Dim NumOfWord As Long = 100
これが通ると思ったんだけど、通らない。
ガクリ!
俺の技を伝授しる。 漏れは、いつもエディータはWZを使ってるので、統合環境は苦痛だったのだが、 この技を身に付けてから、快適だ! [ALT]+[F] [R] [ALT]+[F] [1] 伝授してやる、使ってみろ。
そろそろ新スレ頼む>1
>963 宣言直後に代入文を書く以外の方法は無かったと思われ。 言語仕様っつー事であきらめて。
>>963 >>971 VB.NETなら初期化できますが。(As New 宣言の意味が従来とは違います)
だから、質問する人は、バージョンを書いてね。
次スレはちゃんとタイトルのAA変えろよ
974 :
デフォルトの名無しさん :02/08/13 11:01
ADO初心者でデータベースの勉強をしているのですが、 レコードセットを取得する段階で本を見ながらSQLというのを書いています。 このSQLについて教えて下さい。 データベースの各レコードに「コード」を振っていて、 「指定したコードの次のコード」のレコードを取ってきたいのですが、 WHEREの所に何と書けば良いか分かりません。 例えば、コードを25と指定して、その次のコードの物(順当に行けば26)を 取ってきたい訳ですが、レコードを削除すると、26が欠番になる可能性が あるので、+1と指定することができません。 これは何かやりようがあるのでしょうか。 お願いします。
(*´д`*)アハァ… VB初心者質問スレ Part13 ↑これで。
>>972 VB.NET質問スレは別にあるんだから、ここは基本的には
VB6以前のの質問と思っていいのではないかな?
もちろん、環境くわしく書くに越したことないけど。
>97 コードを昇順に並べて全件取得。 んで、25番の次にあるデータを取得すればよろし。 WHEREはいらない。
978 :
デフォルトの名無しさん :02/08/13 11:52
>>975 新スレよろ
>>974 WHERE コード>25 ORDER BY コード
で最初の一件ひろってくればいい
>>977-978 どうもありがとです。
レコードセットとSQLの使い方が今一つ分かっていませんでした。
勉強します。
>>975 の
(*´д`*)アハァ… VB初心者質問スレ Part13
↑これ賛成。
ClientHeight , ClientWidth と ScaleHeight , ScaleWidth の違いは?
>>980 裏技教えてやるよ。
<F1キーでヘルプが出る>
983 :
デフォルトの名無しさん :02/08/13 19:29
VB6のMSHFlexGridで SelectionMode=1(flexSelectionByRow) に設定しているんですが、このときに 選択している(複数の)行はどのようにしたら わかるのでしょうか?
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < 新スレまだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
(´-`).。oO(新スレまだ?)
新スレ立ってなくても(゚ε゚)キニシナイ!!
まだかまだか
988 :
デフォルメの名無しさん :02/08/13 19:33
987
まもなくここは 乂1000取り合戦場乂 となります。 \∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/ //三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ∪ ∪ ( ) ( ) ( ) ) ,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ,,、,、,,, ( ) ( ) ( ) ( )
990
1000
∩) (´´ (´⌒(´ ∧∧ノ つ ズザーーーーーッ(´⌒(´ ⊂(゚Д゚⊂ ノ ∧∧≡≡)ズザーーッ(´⌒;;;≡≡ ∧∧(゚Д゚⊂⌒`つ∧∧≡(´⌒;;;≡≡≡ ∩) ⊂(゚Д゚⊂⌒`つ≡⊂(゚Д゚⊂⌒∧∧≡≡)(´⌒;;;≡≡ ∧∧ノ つ ズザーーーーッ∧∧(´⌒(´ ⊂(゚Д゚⊂⌒`つ≡(´´ (´⌒(´ ⊂(゚Д゚⊂ ノ ∧∧≡≡)⊂(゚Д゚⊂⌒`つズザーーッ(´⌒;;;≡≡ ∧∧(゚Д゚⊂⌒`つ∧∧≡(´⌒;;;≡≡≡ ⊂(゚Д゚⊂⌒`つ≡⊂(゚Д゚⊂⌒`つ≡(´⌒;;;≡≡≡  ̄(´⌒(⌒;;∩) (´´ ∧∧(´⌒)ズザーーーーッ ∧∧ノ つ ⊂(゚Д゚⊂⌒`つズザーーーーーッ(´⌒(´ ⊂(゚Д゚⊂ ノ ∧∧≡≡)ズザーーッ(´⌒;;;≡≡ ∧∧(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーッ
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
995?
995 :
デフォルトの名無しさん :02/08/13 19:37
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < チンスレまだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
カチャ ( ゚д゚) ;y=ー( ゚д゚)・∵. ターン .| y |.\/ | y |
∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´_ゝ`)< 1000ゲット ( ) \_____ | | | (__)_)
(゚∀゚≡゚∀゚)
(´・ω・`)
わ ,..-―-、 今 | /:::::::::::::::::l 1000 や ∩ /::::::::::::::::::::| ,、 番 ! -―-、 |⌒ヽ/::::::::::::::::::::::| _/|ノ ゲ /´Y (´ヽ ,、 l: : : i::::::::::::::::::::::::|-―'´: :丿 ッ ,、 _し' l lヽJ/|ノ \: |∧/l/|ノレ : : : :/ ト Y: : `ー`ー-―'´一': : | /: : : : : : : : : : ::i-‐'′ や \: : : : : : : : : : : : / /: : : : : : : : : : : | | Y: : : : : : : : :r'´ /: : : : : : : : : : : :| /: : : : : : : : : :| /: : : : : : : : : : : : | /:: : : : : : : : : ::| / : : : : : : : : : : : : | /: : : : : : : : : : : | /: ::_: : : : : : : : : :| `77ー--┬r一'  ̄/ / ̄`ー-┬r-' l'´) ├| l'´) |~| し' (ニ⊃ し' (ニ⊃ __ /〃 ┼‐┼〃__ /\ ノ __ __ , -――-、 /\ノ ヽ/\l::::::::::::::::::::\ /: : / ,..-―-、/) |: : :|::::::::::::::::::::::/: : / /⌒Y (_ノ /) |: : :|:::::::::::::::::::::|: : : /  ̄l ̄l、 ) /`〉 ヽ:: :|::::::::::::::::::::l: : :/ l: : :`ー--‐'‐'´: :/ \|∧ハ/l/: ::〈 \: : : : : : : : : :く |: : : : : : : : : : `ー-┐ ,.、 l: : : : : : : : : :`ー―┐ ,、 |: : : : : : : : : : : : : : |二lニノ ヽ.: : : : : : : : : : : : : :|ニノ |: : : : : : : : : : : : : : | ヽ: : : : : : : : : : : : :| ヽ: : : : : : : : : : : / \: : : : : : : : :/ \ : : : : : : /  ̄ ̄ ̄ ̄ ノ|  ̄ ̄ ̄ ノ) ノしノ し'( ノ)__ノ (ノ( '――――-'′ '-――一-'′
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。