前のログ 次のログ

No.3100 印刷について  投稿者:あか [01/11/08(木)18:13分]

こんにちは。


VBからレポートを印刷する際、コモンダイアログを表示せずに、
設定(印刷の向き)を変更したいのですがわかりません。

どなたか解る方がいましたら教えてください。
よろしくお願いします。

No.3099 RE:SETUPファイルの作成について  投稿者:NAO★ [01/11/08(木)17:46分]

出来ないマシン(OS)では何かエラーメッセージのようなものが出るのですか?

それともインストールは普通に出来ているのに、実行できないとか?

もうちょっと状況がわからないと書きようがないなあ

VB付属のディストリビューションウィザードではなく、
Visual Studio Installerを使ってみるなんて手もあります。
http://www.microsoft.com/japan/developer/vstudio/vsi/

No.3098 SETUPファイルの作成について   投稿者:ぷー [01/11/08(木)17:06分]

いつもいつもお世話になっております、ぷーです。


以前、W2K・VB6(SP5)でディストリビューションウィザードを
使用して作ったSETUPファイルがME・98でインストールが出来な
い・・・!などという問題が起きていたのですが、何が原因なのかよくわ
かっていません。

ディストリビューションウィザードについて本などではやり方は書いてあ
るのですが、一つ一つの説明はあまり書いていない(わかりづらいだけ
かも・・・)と思われます。

VBで使用しているコントロール(OCX)やdllが原因なのでしょうか?
最初に書いた問題のソフトはダイアログコントロールくらいしか追加して
いないのですが。

どなたか同じような現象を体験した方がいらっしゃいましたら、是非その時の
体験談などをお聞かせくださいませ(^^ゞ

宜しくお願い致します。


No.3097 RE:IsDate関数はうそつき?    投稿者:NAO★ [01/11/08(木)14:17分]

>・・でも""0099/01/01"は2099年じゃなく1999年?えっ?


これは年を二桁でもっていた時との互換性のためです。
200年問題が間近に迫るまでは YY/MM/DD の形式で日付を処理することが
普通でしたので、
昔のデータを読み込むときにうまく処理できるよう、年が二桁の時は
・0〜29までは2000年〜2029年
・30〜99までは1930〜1999年
と自動的に変換するようです。

IsDate関数でチェックする前、あるいは後に
検査前の文字列から年や月、日を切り出して
範囲をチェックすれば良いと思います。

# IsDateは閏年のチェックはちゃんとしてるのですね。

No.3096 RE:IsDate関数はうそつき?  投稿者:よねKEN [01/11/08(木)13:42分]

>未入力のチェックはできるのですが、日付として正しい値が

>入力されたかどうかチェックしたいのです。

IsDateだけですまそうとするのは無理です。
テキストボックス等に入力させるときに入力制限はどうやっているのでしょうか?
入力をYYYYMMDDとかYYYY/MM/DDという入力などに限定して、
それが自分の想定する日付として正しいかを判断する関数を自作しましょう。

日付が妥当かどうかの判定は難しくありません。

月を見て、1〜12の間か?
 月が2なら、年を見てうるう年かどうか?
  うるうどしなら、日が1〜29の間か?
  うるうどしでないなら、日が1〜28の間か?
 月が2以外なら、日が1〜それぞれの月の月末日の間か?

といった流れで判断できます。

>・・でも""0099/01/01"は2099年じゃなく1999年?えっ?

頭の00は意味がないとみなして、99、00と同じ扱いにしているため、
99→1999、00→2000となっているのでしょう。

No.3095 RE:IsDate関数はうそつき?  投稿者:ももちゃ [01/11/08(木)13:11分]

ゆう(U)さん、NAO※さんありがとうございます。 


未入力のチェックはできるのですが、日付として正しい値が
入力されたかどうかチェックしたいのです。

たとえば!"2001/01/01"を入力したいのならちゃんと"2001/01/01"
じゃなきゃだめ!という感じです。

・・でも""0099/01/01"は2099年じゃなく1999年?えっ?

No.3094 Re:IsDate関数はうそつき?  投稿者:ゆう(U) [01/11/08(木)12:46分]

> IsDate("0000/01/01") でTrueが帰るのはなぜ???

「CDate 関数」で結果を調べるとわかります。

「IsDate 関数」でチェックしきれない部分も
含めたチェック用関数を自作する・・・

No.3093 RE:IsDate関数はうそつき?    投稿者:NAO★ [01/11/08(木)12:25分]

久しぶりに私でも答えられそうな質問が(^^;


>IsDate("0000/01/01") でTrueが帰るのはなぜ???
Cdate("0000/01/01") を実行してもらうとわかりますが
2000/01/01に変換されますので正しいのです。

もし未入力のチェックをしたいのでしたらデフォルト値を
9999/99/99にしてチェックしたらどうでしょうか?

No.3092 IsDate関数はうそつき?  投稿者:ももちゃ [01/11/08(木)11:34分]

みなさんこんにちは。

二度目の投稿になります。

IsDate("0000/01/01") でTrueが帰るのはなぜ???

こじゃ入力検査ができない(>_<)

No.3091 RE:MSFlexGrid コピーあんど貼り付け方法  投稿者:ちゃぶ [01/11/08(木)10:45分]

花ちゃん 有難うございました。

No.3090 VBからASへ接続  投稿者:頭爆発 [01/11/08(木)10:16分]

はじめましてぇ〜

VBでDB2に接続したのですが、OLEDBでも、ODBCでも
でも、どちらとも、
ブックマークがサポートされていません。とでます。
カーソルタイプも全部試しましたし、
どうすればよろしいのでしょうか?
recordcountが-1ですし、レコードを把握できていないようです。

No.3089 Re:Re:リッチテキストボックスにてFindメソッドが効かない    投稿者:kuma [01/11/07(水)22:28分]

ゆう(U)さん。早速の御返答ありがとうございます。


ご紹介いただきましたサイトを拝見しプログラムを修正したところ問題なく解決しました。

ありがとうございました。

No.3088 オラクルのodbcping  投稿者:takky [01/11/07(水)19:19分]

sqlサーバーですとodbcpingがありますが

oracleですと同様の機能を果たすものは存在しますか?
oracle7です

No.3087 Re:リッチテキストボックスにてFindメソッドが効かない  投稿者:ゆう(U) [01/11/07(水)14:50分]

●左のフレームの「VB関係専用掲示板」をクリックしてから

 更新[F5]すると重複しません。

> リッチテキストボックスにてFindメソッドを使い文字列の検索をしています。
実は・・・の仕様(確か仕様で逃げられた)があります。

MSのサポート技術情報で見つかるはずですが、
内部的にバイトで扱っているので文字数で
指定しても正常に動作しない・・・
って感じだったはずです。

※サポート技術情報で詳しい内容を
 確認してみてください。
http://www.microsoft.com/JAPAN/support/kb/articles/J046/0/32.htm?LN=JA&SD=SO&FR=0

No.3086 Re:グラフについて    投稿者:T.N [01/11/07(水)14:18分]

>手っ取り早いのは、常に表示域のデータを使って、グラフを

>描きなおすと簡単です。
>※線だけを表示するなら、速度はそれほど気にならないと
> 思いますし・・・

ゆう(U)さんご返答ありがとうございました。
どのコントロール、OLEを使用するかも問題になっているのですが、
ゆう(U)さんに教えていただいた方法参考にがんばってみます。
どうもありがとうございました。また何かあったときはよろしくお願いいたします。

No.3085 リッチテキストボックスにてFindメソッドが効かない  投稿者:Kuma [01/11/07(水)14:07分]

リッチテキストボックスにてFindメソッドを使い文字列の検索をしています。

仕様としてはFindメソッドにて検索ヒットしたのち、 その位置の後ろから再度同一文字列を検索したいと思っています。

メソッド仕様:
RTextBox.Find(string, start, end, options)

しかし、"start"を指定しているにも関わらず"start"位置よりも前の値を取得してしまいます。
検索する文字列は単語単位ではなく、単語に含まれる文字列です。 (つまり前後にスペースは入っていない)

どなたか原因・解決策がわかる方お願いします。


------------------------------------------
Private Sub Command1_Click()
Dim intStart As Integer

intStart = 0
Loop1:
intStart = RichTextBox1.Find("Test", intStart + 4, , rtfNoHighlight)

If intStart <> -1 Then
Text1.Text = Text1.Text & "," & intStart
GoTo Loop1:
End If

End Sub
------------------------------------------
※ ちなみにFindメソッドの"Options"の値は他に"0"と"8"を試しましたが結果は同じでした。
※ RichTextBox1に含まれるテストデータのレングスは 50,000バイトほどです。
※ 上記のプログラムでは毎回同じものを取得してしまうため結果としてループしてしまいます。
  (intStart = -1 にならない)

No.3084 Re:Err処理について  投稿者:ゆう(U) [01/11/07(水)13:39分]

●投稿後にはいきなり「F5更新」せずに、左のフレームで掲示板を指定してから「F5更新」

 をすると、重複しないですよ

> ただ今回の場合はどこで落ちているのかがはっきりしないため ERLを使用した方法では全行に埋め込まねば
> ならず少し無理があります。
明らかにエラーになりえない部分には必要はないですよね?
※VB/COM内部的なバグは考えないとすると…
 既知のバグはサポートで確認するとして…

> また今後のことを考えて明確なエラー処理をいれたいのですが、 やはりコードにごりごり書き込む以外ない
> のですよね?
必要な部分には入れないといけないでしょう。

運用の問題で、エラーとなる可能性があるならエラーを
発生させる前にデータチェックは必須ですし・・・

本来エラーを未然に防ぐ仕様にしておけば、それほど
不測のエラーが発生する場所は多くはないと思います。

不確定なデータを処理する場所にはそれなりのエラー処理
は必須ですし・・・
※そこへ行くまでに不正なデータをチェックとか

正しいデータで正しい操作をしても発生するエラーは
開発時にデバックできるはずですよね?
※意地悪な動作確認をすると結構見つかります

ただ、Ctrl+Alt+Delはドウナッテモかまわないから
終了したいという事なので私はチェックはしません。
※押さなければならない状態にはならないような
 チェックはもちろんします


> C言語の埋め込みマクロの_FILE_や_LINE_のようなものはないのでしょうか?
VB6.0には残念ですがないと思います。
※少なくとも聞いた事はありません

「シンボリック デバッグ情報を作成」とかなら
コンパイラのスイッチで可能ですが・・・

No.3083 Re:Err処理について  投稿者:つよぽn [01/11/07(水)12:42分]

ゆうさん、どうも丁寧な回答ありがとうございました。

ただ今回の場合はどこで落ちているのかがはっきりしないため ERLを使用した方法では全行に埋め込まねば
ならず少し無理があります。
また今後のことを考えて明確なエラー処理をいれたいのですが、 やはりコードにごりごり書き込む以外ない
のですよね?
C言語の埋め込みマクロの_FILE_や_LINE_のようなものはないのでしょうか?
すみません。回答いただけたら幸いです

No.3082 RE:VBによりEXCELを操作したい 投稿者:花ちゃん [01/11/07(水)11:50分]

Excel 単独で使用してソートした時と同じようにVBからもソートできます。

ここのHPのExcel&Word関係を見て下さい。

No.3081 RE:エクセルシート名が不明の時  投稿者:花ちゃん [01/11/07(水)11:44分]

過去のログ No.1704番を参考にして下さい。

No.3080 Re:グラフについて  投稿者:ゆう(U) [01/11/07(水)11:31分]

> 今まで表示されていたデータも残しつつ、新しいデータも更新していきたいのですが


■ :何も無い状態(Cls)
□ :背景(メモリ線など)のみ
A〜:グラフと背景

┌────────┐
│■■■■■■■A│
└────────┘
         ̄最小描画単位
この様に最小描画単位を描く、プロシージャ(Draw1)を作成する
※値が空ならグラフの背景だけ描画とか
※描画する値と、描画位置を引数

┌────────┐  ┌────────┐
│□□□□□□□A│ →│□□□□□□A■│
└────────┘  └────────┘
  ↑ここから ↑までを ↑ここから ↑まで

移動する(実際には描画されている絵をコピーする)為の
プロシージャ(Shift1)を作成する
※移動範囲・移動先を引数

上の二つのプロシージャを使うと・・・

1.初期値は空のグラフ
  空の値でDwar1を使い描画域を埋める
  空のグラフを描画するプロシージャを作成してもOK  
┌────────┐
│□□□□□□□□│→
└────────┘
2.Shift1でグラフの絵を左に移動させる
3.右端にDraw1で値Aのグラフを描く
 ┌────────┐ ┌────────┐
→│□□□□□□□■│→│□□□□□□□A│→
 └────────┘ └────────┘
4.Shift1でグラフの絵を左に移動させる(Aの絵も移動する)
5.右端にDraw1で値Bのグラフを描く
 ┌────────┐ ┌────────┐
→│□□□□□□A■│→│□□□□□□AB│→
 └────────┘ └────────┘

※Shift1とDwar1を繰り返す事でスクロールしながら
 グラフを描くことが可能

 移動方向を逆にして、左端にグラフを描き足せば
 逆のスクロールも可能

ただ、表示されているピクチャーボックスなどでそれをすると
描き換え時のちらつきが目立つはずなので、表示している
コントロール以外で行った方がいい・・・

という事でした。


> これは折れ線グラフのような線ではなく、滑らかな曲線で
> グラフの線描くということです。
という事は、スプラインやベジェで曲線を書いていくという事ですか?
※PolyBezier関数(API)?

2点間の変化だけでは曲線に出来ないと思いますので、数点
(計測値)の情報がきた時点で描画するという事でしょうか?


手っ取り早いのは、常に表示域のデータを使って、グラフを
描きなおすと簡単です。
※線だけを表示するなら、速度はそれほど気にならないと
 思いますし・・・

No.3079 エクセルシート名が不明の時  投稿者:トラ(匿名) [01/11/07(水)10:57分]

エクセルのシート名が不明の時どうやって名前を取り出したらいいですか?

No.3078 Re:Err処理について  投稿者:ゆう(U) [01/11/07(水)10:31分]

> エラー発生時に発生個所を取得する方法はないでしょうか?

オブジェクト単位であれば・・・
Err.Source
でOKでしょう。

> ステップ実行できれば簡単なのですが離れた場所で障害が
> は発生しているためステップ実行はできないのですが
ということは開発環境ではないのですね?

それなりのコードを組み込まないと、確認は出来ません。

サンプル)
Private Sub Command1_Click()
On Error Resume Next
1: Debug.Print "ABC"
2: Debug.Print 1 / 0 ' Err.Raise 6
3: Debug.Print "DEF"
4: Debug.Print Erl; "行", Err.Number, Err.Description
5: Err.Clear
End Sub

「Erl 関数」は隠し関数なのでヘルプにはありませんが
サンプルの様に、行番号をあらかじめ付けておけば
エラー時の行を特定できます。
※行番号は連番でなくともOK、飛び飛びにつけてもOK
 そのときの動作は自分で確認してみてください

その他「Err オブジェクト」「Error ステートメント」は
ヘルプで調べてみてください。

エラー時のメッセージで行情報を表示するか、Logファイルに
情報を残すかはお好みで・・・
※ログに関しては「App オブジェクト」のLog系のプロパティ
 を参照してください

No.3077 Re:グラフについて  投稿者:T.N [01/11/07(水)10:15分]

>平滑線というのがはっきりしませんが・・・

分かりにくい説明でした、すみません。
これは折れ線グラフのような線ではなく、滑らかな曲線で
グラフの線描くということです。

>┌────────┐
>│0123456789ABCDEF│
>│0123456789ABCDEF│
>│0123456789ABCDEF│
>└────────┘
>         ~最小描画単位
>※0からFはグラフの絵

>とグラフがあった場合・・・

>スクロールヘ1〜Fを0のところから
>0位置まででコピーし・・・
>┌────────┐
>│123456789ABCDEF │
>│123456789ABCDEF │
>│123456789ABCDEF │
>└────────┘
>新たな値を描きこむ
>┌────────┐
>│123456789ABCDEFG│
>│123456789ABCDEFG│
>│123456789ABCDEFG│
>└────────┘
>というのはいかがでしょう?
>
>最小単位の描画をするプロシージャを作成し
>それで描画をする事でスクロール変化で追加
>される絵を描画する・・・
>※表示位置・描画に必要な値を引数にする
> ラージスクロールの場合は、複数ずらす
>
>いきなり先頭から表示とかの場合でも・・・
>表示位置を指定しながら一度グラフを埋めれます。
>※値は既にあるので・・・
>
>
>ずらさずに全て描きなおしでもOKでしょう。
>
>どちらにしても、表示されているコントロールで
>描画メソッドをせずに、隠したコントロールで
>完成された絵を作ってからコピーする。
>※これでちらつきを最小限に出来るはずです

ゆう(U)さんご返答ありがとうございます。
自分は理解力がないので、多少ゆう(U)さんのご意見と異なるところ
があったら教えてください。

自分の解釈としては、「グラフを表示する用」と「新しいデータが
入ってきたときのグラフを作成する用」の二つのコントロールを用意して
裏で新しいデータが入ってる更新されたグラフを作成し、それを表で表示されている
グラフのコントロールに貼り付け、それを繰り返していくという解釈でよろしいでしょうか?
しかし、その方法ですと、今まで表示されていたデータ(新しいデータが入ってきたことに よって表示されなくなってしまったデータ)がなくなってしまうんですよね?
今まで表示されていたデータも残しつつ、新しいデータも更新していきたいのですが・

No.3076 Re:チャートコントロール(MSChart)について  投稿者:Nao [01/11/07(水)9:40分]

>> 我ながら初歩的な質問でお恥ずかしいのですが、チャートコントロール
(MSChart)をツールボックスに

>> 追加したいのですが、どのocxを追加すればいいのか分からないので 教えていただけないでしょうか?
>ocxというよりも・・・
>※MSCHRTxx.OCX

>ツールボックス右クリック or メニューから
>「コンポーネント」−[コントロール]で
>□Microsoft Chart Control x.x (xxx)
>をチェックするとOKです。

ゆう(U)さんの言う通りにやったらできました。
ゆう(U)さんどうもありがとうございました。

No.3075 RE:スクロールバーの問題  投稿者:靴下カタオ [01/11/06(火)23:32分] http://www.KenAshizuka.com/

あき☆彡さん、どうもありがとうございます。

ご返事が遅れてしまいました。申し訳ありませんでした。

お恥ずかしいことですが、Visual Basic ver.6.0 の中で、デザイン時に
「切り取り」と「貼り付け」ができるということを初めて知りました。
そして、あき☆彡さんのおっしゃるとおり、
Image1 を Picture1 に貼り付けることによって、
HScroll1.Max の意味が理解できました。
また、HScroll1.LargeChange や HScroll1.SmallChange も
自分で値を変化させてやってわかりました。

本当にありがとうございました。

No.3074 Err処理について  投稿者:つよぽん [01/11/06(火)18:52分]

エラー発生時に発生個所を取得する方法はないでしょうか?

ステップ実行できれば簡単なのですが離れた場所で障害が
は発生しているためステップ実行はできないのですが
よろしくお願いします

No.3073 Re:グラフについて  投稿者:ゆう(U) [01/11/06(火)16:22分]

> 私のやりたいことは、VBで平滑線で描画したグラフをリアルタイムで表示するということです。

> 稼動中の機器からのデータなので、データがどんどん収集され、 その度にグラフの表示も更新されます。
> 過去のデータは履歴としてグラフ上に残して表示し、 その際グラフ上にデータが表示しきれなくなったら
> グラフをスクロールして、表示しきれなかった部分のグラフも見れるようにします。 そしてスクロールバー
> かなにかを表示させておいて戻せば、今までのデータ表示させるようにしたいのです。

平滑線というのがはっきりしませんが・・・
┌────────┐
│0123456789ABCDEF│
│0123456789ABCDEF│
│0123456789ABCDEF│
└────────┘
         ~最小描画単位
※0からFはグラフの絵

とグラフがあった場合・・・

スクロールは1〜Fを0のところから
0位置まででコピーし・・・
┌────────┐
│123456789ABCDEF │
│123456789ABCDEF │
│123456789ABCDEF │
└────────┘
新たな値を描きこむ
┌────────┐
│123456789ABCDEFG│
│123456789ABCDEFG│
│123456789ABCDEFG│
└────────┘
というのはいかがでしょう?

最小単位の描画をするプロシージャを作成し
それで描画をする事でスクロー虚マ化で追加
される絵を描画する・・・
※表示位置・描画に必要な値を引数にする
 ラージスクロールの場合は、複数ずらす

いきなり先頭から表示とかの場合でも・・・
表示位置を指定しながら一度グラフを埋めれます。
※値は既にあるので・・・


ずらさずに全て描きなおしでもOKでしょう。

どちらにしても、表示されているコントロールで
描画メソッドをせずに、隠したコントロールで
完成された絵を作ってからコピーする。
※これでちらつきを最小限に出来るはずです

No.3072 グラフについて  投稿者:T.N [01/11/06(火)14:30分]

はじめて投稿させていただきます。


VBでのグラフ表示について悩んでいるので、教えていただきたく投稿させていただきました。

私のやりたいことは、VBで平滑線で描画したグラフをリアルタイムで表示するということです。
稼動中の機器からのデータなので、データがどんどん収集され、 その度にグラフの表示も更新されます。
過去のデータは履歴としてグラフ上に残して表示し、 その際グラフ上にデータが表示しきれなくなったらグラフをスクロールして、 表示しきれなかった部分のグラフも見れるようにします。そしてスクロールバー
かなにかを表示させておいて戻せば、今までのデータ表示させるようにしたいのです。

ちなみにMSChartだとスクロールバーを設定できないようなのであきらめました。

説明が長くて分かりにくい文章にってしまいましたが、教えてください、 よろしくお願いいたします。


No.3071 Re:チャートコントロール(MSChart)について  投稿者:ゆう(U) [01/11/06(火)14:29分]

> 我ながら初歩的な質問でお恥ずかしいのですが、
チャートコントロール(MSChart)をツールボックスに

> 追加したいのですが、どのocxを追加すればいいのか分からないので 教えていただけないでしょうか?
ocxというよりも・・・
※MSCHRTxx.OCX

ツールボックス右クリック or メニューから
「コンポーネント」−[コントロール]

□Microsoft Chart Control x.x (xxx)
をチェックするとOKです。

No.3070 チャートコントロール(MSChart)について  投稿者:Nao [01/11/06(火)13:54分]

初めて投稿させていただきます。

我ながら初歩的な質問でお恥ずかしいのですが、チャートコントロール (MSChart)をツールボックスに
追加したいのですが、どのocxを追加すればいいのか分からないので 教えていただけないでしょうか?

No.3069 Re:配列について  投稿者:VB太郎 [01/11/06(火)12:17分]

配列のボタンを作るとプロシージャに

Private Sub cmdGo_Click(Index As Integer)

End Sub
ができるので(ここではボタンの名前はcmdGo)

Private Sub cmdGo_Click(Index As Integer)
select case Index
case 0:''配列ボタン0が押された時の処理
case 1:''配列ボタン1が押された時の処理
case 2:''配列ボタン2が押された時の処理
end select
End Sub
としてみて下さい。

No.3068 配列について  投稿者:mika [01/11/06(火)11:27分]

初心な質問です。コマンドボタンをコントロール配列しています。

そのコマンドボタンをクリック処理した時に起こる処理を変えたい
と思っています。が、

Private Sub command_Btn(0)_Click

とするとエラーになります。
MSDN等で調べたらオブジェクト名の後にIndex番号を()にいれる
と書いてあったのですがなぜえらるのでしょう。
教えて下さい。


No.3067 RE:MSFlexGrid コピーあんど貼り付け方法  投稿者:花ちゃん [01/11/05(月)14:27分]

ここのHPの [MSFlexGrid 関係]の [複数の任意のデータを任意の位置に貼付ける]を

参考にして下さい。

No.3066 MSFlexGrid コピーあんど貼り付け方法  投稿者:ちゃぶ [01/11/05(月)14:19分]

こんにちは。

MSFlexGridにデータが行11列11(固定列行各1)あるとします。
そのMSFlexGridの任意の範囲(例えば行2列2:行4列4)データを
Excelのように一気に"コピーあんど貼り付け"する方法をどなたか知りませんか?

実際に自分が行いたいのは
MSFlexGridの任意の範囲(使用者がマウスで範囲指定)のデータを
Excelのシートにそのデータを貼り付けたい!!
なのですが、どうしていいかわかりません。

任意に指定された列行の始点と列行の終点を求めて、
(そもそも任意の範囲の座標は求められるんですか?)
MSFlexGridのセル(のようにみせている)ひとつひとつを変数に入れて、
その変数でExcelに貼り付ける?ようなやり方ですか?

お願いします。
どなたか助けてください。

No.3065 Re:プレビュー機能について。    投稿者:TAKE [01/11/05(月)10:57分]

ゆうさん、どうもありがとうございました。


No.3064 RE:スクロールバーの問題    投稿者:あき☆彡 [01/11/05(月)4:24分]

期待している動きにならないのはImage1をPicture1のコンテナーにしていないからです。

HScroll1.Max = Picture1.ScaleWidth - Image1.Width
の上の行に
Set Image1.Container = Picture1
を追加してみて下さい。
期待している動きになると思います。
デザイン時にPicture1のコンテナーにすればコードで書く必要はないんですけどね。
Set Image1.Container = Picture1
の行を削除して、
Image1を切り取り
Picture1の上に貼り付けてください。
これでImage1のコンテナーはPicture1になります。

>HScroll1.Value や HScroll1.Max の説明を読みましたが、
>その意味がよく理解できず、HScroll1 のプロパティが
>Picture1 や Image1 のプロパティによって決定されているのが
>なぜなのかがわかりません。
Maxは目盛りの最大値
Valueは現在値
です。
> HScroll1.Max = Picture1.ScaleWidth - Image1.Width
としているのは、
Valueの値をImage1のLeftの指定に使おうとしているからです。
MaxにはImage1がPicture1の右端につく位置を指定しています。
これでImage1はPicture1の左端から右端まで動く様になるのです。

No.3063 スクロールバーの問題  投稿者:靴下カタオ [01/11/04(日)23:34分] http://www.KenAshizuka.com/

いつもお世話になっております。


技術評論社の「Visual Basic 6.0 初級プログラミング入門(上) :河西朝雄著」

で、スクロールバーに関する例題で、
「スクロールバーの移動に連動したアイコンの移動」
というプログラムとして、
次のようなコードを作成しました。

Private Sub Form_Load()
HScroll1.Max = Picture1.ScaleWidth - Image1.Width
HScroll1.LargeChange = HScroll1.Max / 10
HScroll1.SmallChange = HScroll1.Max / 50
Image1.Move 0
End Sub

Private Sub HScroll1_Change()
Image1.Move HScroll1.Value
End Sub

解説の中では、
「スクロールバーの位置と飛行機(Image1)を合わせて移動するには、
Image1 は Form1 上の移動ではなく Picture1 の中を
移動させます。
ピクチャーボックスの左上隅が(0,0)となります。」
とありますが、
実行してみると、Image1 は Picture1 の外にはみ出していて、
スクロールバーを動かしていって、Image1 と Picture1 が
重なったとき、Image1 は Picture1 の下に隠れてしまっています。

この例題に出てくる、
HScroll1.Value や HScroll1.Max の説明を読みましたが、
その意味がよく理解できず、HScroll1 のプロパティが
Picture1 や Image1 のプロパティによって決定されているのが
なぜなのかがわかりません。
できれば、この点についても、教えていただけないでしょうか。
どうかよろしくお願いします。

No.3062 VBによりEXCELを操作したい 投稿者:ぺんた [01/11/04(日)15:54分] http://www.bcap.co.jp/hanafusa/VBdengon/cfa49720@syd.odn.ne.jp

VBによりEXCELを操作したいのですが。

あるEXCELのシート内に
かき、12
バナナ、4
りんご、2
みかん、3
というデータが入っていたとして
数字を降順にソートすると果物名の行も数字と相対的にソート
できるようにしたいのですが。可能なのでしょうか?

No.3061 Insomnia BASIC  投稿者:TOMOHIRO [01/11/04(日)12:02分]

VBでBASICインタープレッタを作りました。Insomnia BASICっていいます。

β版ですのでバグレポートしてくれる人探してます。ちなみにドキュメントは
現在英語ですが日本語バージョンもアップする予定です。
興味のある人は一度どうぞ。Softwareのページからダウンロードできます。

No.3060 Excelで図形に入力した文字列を取得する方法  投稿者:じゅん [01/11/03(土)0:33分]

Excelで図形に入力した文字列を取得する方法



会社で急遽Visual BasicとExcelを組み合わせたプログラムを 作ることになりまして、困っていることがあります。
実現させたいことは
----------------------------------------------------
1.Excel上のシートにテキストボックスを貼り付け、文字を入力する
2.同じExcel上のシートに図形(四角形など)を貼り付け、 「テキストの追加」を選択肢し、文字を入力する
3.Visual Basic上にコマンドボタンをクリックすると、 先ほど作成したExcelシートを読み込み、テキストボックス、 または図形に入力されている文字列を取得し、テキストファイルに出力する
----------------------------------------------------
とりあえず以下のようなプログラムを作成しました。
これはテキストボックスの文字列は取得できますが、 図形に「テキストの追加」で入力した文字列を取得する方法がわかりません。
どなたかお分かりになる方がおられましたら、教えてください。


TxFile = App.Path & "\EX.txt"
Open TxFile For Output As #1
For i = 1 To 3
BoxName = "TEXT" & Trim(Format(i, "0"))
MyXL.ActiveSheet.Shapes(BoxName).Select
ExText = MyXL.ActiveSheet.Shapes(BoxName).TextFrame.Characters.Text
Write #1, ExText
Next i
Close #1
MyXL.Save
MyXL.Application.Quit
Set MyXL = Nothing

No.3059 Re:プレビュー機能について。  投稿者:ゆう(U) [01/11/02(金)19:02分]

> Printer オブジェクトを使って発行しています。

なら「Printer オブジェクト」で使用される
描画メソッドは「ピクチャーボックスコントロール」
にもありますから・・・
スケールとフォントを調整すると出来ますね。

> で、また質問なんですが、PictureBoxだと、改ページがあった場合は
> どうなるんですか?
「Printer オブジェクト」でもページ単位で
描画しなおしますよね?

複数表示でも、スケールとフォントを調整
するだけで対応は可能でしょう。

> 市販ソフト等で、vbで書いた帳票がそのままプレビューできるものがあれば
> それで良いんですが…。どうでしょう。
翔泳社の「Visual Basic マガジン」には
幾つも広告が載っていますし、動作可能な
試用版を載せているものもあったはずです。

No.3058 Re:キュー  投稿者:ゆう(U) [01/11/02(金)18:20分]

> 文字列記述子を書き換える事で似たような事は可能だと

> 思います。
この方法を用いてクラスを作成してみました。

ここのリンクから
「VB初心者友の会」の「こんなことできます!」掲示板
に載せてみました。

不完全かもしれませんので・・・
注意して実行してみてください。

No.3057 Re: リストビューについて  投稿者:アオ [01/11/02(金)6:02分]

よねKENさん

ありがとうございました。ヒントもらったので
ちょっとがんばってみます。
それともう1個お聞きしたいのですが、リストビューの列を
ソートして表示したいのですが、項目に1,2,3,20とあった際に
1,2,20,3と表示されてしまいます。
これを、1,2,3,20と数値としてソートして表示する事は
できないでしょうか?

PS.八日市ってすごくなつかしかった。故郷を離れて10年経ちますが、
そのへんって変わったのかな。

No.3056 Re:MSFlexGridを使用して  投稿者:りゅう [01/11/02(金)0:57分]

ゆうさん、ありがとうございます。

さっそくやってみます。

No.3055 REGSVR32.exeについて  投稿者:マツキヨ ランクE [01/11/01(木)16:20分]

REGSVR32.exeを実行すると実際どこに書き込んでいるんでしょうか?

例)
c:\windows\system\regsvr32 /s c:\test\test.dll
をコマンドプロンプトにて実行します。

TEST.dll はVBにて作成します。
クラス名はClass_testです。
プロシージャ名はtset_testです。

No.3054 VBでエクセルのシートからシートへ  投稿者:ぺんた [01/11/01(木)15:54分] http://www.bcap.co.jp/hanafusa/VBdengon/cfa49720@syd.odn.ne.jp

CGIなどからある文字列をVBで読み込んで、EXCELのあるシートに
その文字列をキーとして含むレコードのデータ全てを他のシートに
コピーするVBの方法を教えていただきたいですが・・・

例えば
カツ丼、丼、カツ
牛丼、丼、牛
チャーハン、炒め物、中華
というエクセルシート上のデータがあったならばCGIにより VBにカツ丼という文字列が入ってくると
VBはほかのシートにカツ丼、丼、カツというデータのみをコピーするようにしたいのですが。
配列を使うのでしょうか?

No.3053 Re:MSFlexGridを使用して  投稿者:ゆう(U) [01/11/01(木)14:58分]

> 例えばカーソルが1行目にある時は3行目を非表示にして、2行目にカーソルが

> ある時は3行目を表示する、といったようなことができるのでしょうか?

ユーザー操作で行の高さを変更させないのであれば・・・

その行の高さを0にすると表示はされません。
※固定列の部分の格子線が少し変化します


もしくは、必要になった場合「AddItem メソッド」で
位置を指定して挿入するとか・・・
※非表示の時には「RemoveItem メソッド」で・・・
 内容は別途コード内で管理することになります

No.3052 Re:キュー  投稿者:ゆう(U) [01/11/01(木)14:40分]

> Static を使うより Private の方がいいですか?

私的な考えですが、プロシージャ内でStaticを
使うと他所から手が出せなくなるので自由度が
なくなってしまいます。
※絶対手を出してほしくない場合はOKです

この方法では最新データは最古の情報を上書きする
前に最古のデータを処理させる意味でも、プロシージャ
間で共有できる変数の方が良いと思いましたので…

No.3051 Re: リストビューについて  投稿者:よねKEN [01/11/01(木)14:22分]

> 窓(フォーム)を最大化した場合やマウスで窓を大きくした場合に

そのフォームのResizeイベントが起きます。

> フォームの中のリストビューの窓の大きさをリアルに
> 大きくしたいのですが、可能でしょうか?

ResizeイベントにリストビューのサイズをFormのサイズに合わせるコードを書きましょう。
Formのタイトルバーなどの分を含まない内部領域はScale〜なプロパティでわかります。

No.3050 RE:半角全角の判定  投稿者:花ちゃん [01/11/01(木)9:17分]

色んな方法があると思いますが、ここのHPの [文字列処理関係]を参考に

自分で作成して見て下さい。

前のログ 次のログ


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0