前のログ 次のログ

No.2850 Re:ファイルの実体は何なのか?  投稿者:よねKEN [01/9/28(金)12:04分]

>  Project1 (Project1)

> |_ Form1 (Form1)
>がデフォルトでできています。
> (1)Project1
> (2)(Project1)
> (3)Form1
> (4)(Form1)
>のうち、(4)は実際のフォームとコードが入っているところでしょうか。
>しかし、(1)から(3)が何なのか、つまり、その概念について、

(1)はプロジェクトのオブジェクト名です。
(2)はプロジェクトのファイル名です。
(3)はフォームのオブジェクト名です。
(4)はフォームのファイル名です。

ちなみに、プロジェクトファイルでは、そのプロジェクトに属するファイル群の
場所(ファイル名)などを管理しているだけで、このファイル自体は ソースコードそのものではありません。

ですので、A.vbpをコピーしてB.vbpを作っても、その中身は同じで、
B.vbpのプロジェクトを開いて、各フォームなどを編集してしまうと、
A.vbpも同様に編集したことになります。
実体はA.frm、A.frx、〜.bas自身です。ただし、EXEファイルを作るための情報は vbpに書かれています。

新規にフォルダーを作り、プロジェクトに絡むファイルはすべてそこに置くようにして、
プロジェクトのバックアップを取るときは、そのフォルダー丸ごとコピーするとよいです。

No.2849 NSCommの使用方法について  投稿者:るる。 [01/9/28(金)11:16分]

 はじめて投稿します。

VBは初めてまだ二ヶ月程度なので、勝手言って申し訳ないですが、
できましたならば私のような初心者でもわかるようにお願いします。

2台(VB6.0/Windouws2000 使用)のパソコンを繋げてあります。
(2台のパソコンをAとBとする)
まずAのパソコンのテキストボックスに入力し、『送信』ボタンを押すと、
Bのパソコンへテキストボックスの内容が送信され、
Bのパソコン上の『受信』ボタンをクリックすると
送信内容がBのパソコンのテキストボックスへ表示される、
と、このようにするにはどうしたらよいのでしょうか?

送信する、とゆうことで、MScommを使用することまでは分かったのですが、
もし、受信するBのパソコンに不備(電源が入ってなかったり、壊れていたり)がある場合を 想定し、対処したプログラムや、受信した内容を表示するプログラムは どのようにすればよいのでしょうか?

一応、自分なりにヘルプを見たりしながら中途半端なプログラムを作ってみたのですが、
理解しないままプログラムを作っているのでトーゼンうまくいきません(T×T)
よいアドバイスや参照できる本などがありましたら、ご教授よろしくお願いします。

>
> ≡A 送信側≡
>
> Private Sub CommandTransmit_Click()
> If mscomon1.PortOpen = True Then
> mscomn1.PortOpen = False
> mscomn1.CommPort = 1 '規定値
> mscomn1.Settings = "9600,N,8,1" '規定値
> mscomn1.InputLen = 0
> mscomn1.PortOpen = True
>
> mscomn1.Output = text1.Text
> End If
>
> End Sub



> ≡B 受信側≡
>
> Private Sub CommandReceive_Click()
> If mscomon1.PortOpen = True Then
> mscomn1.PortOpen = False
> mscomn1.CommPort = 1 '規定値
> mscomn1.Settings = "9600,N,8,1" '規定値
> mscomn1.InputLen = 0
> mscomn1.PortOpen = True
>
> mscomn1.input = text1.Text
> End If
>
> End Sub

No.2848 Re:RE:終了したはずのExcelが残っている    投稿者:みさ [01/9/28(金)9:39分]

おはようございます、みさです。


MIZOさんのアドバイス通り、
Newをはずし、CellsにxlSheetをつけたらエラーは出なくなりました。
どうもありがとうございました。

ただ、オブジェクトを解放した後にctrl + Alt + Delで確認すると、Excelが残っていました
なにか他に根本的な原因があるのでしょうか。
(開発環境はWin95,VB6,SP4,Access2000,Excel2000です)
このような場合、どのような方法でExcelを終了すればよいのでしょうか。

エラーがなくなって繰り返し印刷できるので見た目上は問題ないのですが・・・。

No.2847 ファイルの実体は何なのか?  投稿者:靴下カタオ [01/9/28(金)0:13分] http://www.kenashizuka.com/

フォルダーの中で A.vbp をコピーして B.vbp を作り、これに更新をかけて保存しました。

この時、A.frx はこのまま名前を変えなかった
(名前は同じA.frx でも、A.vbp の中のものと、B.vbp の中のものとは 実体は別だと思ったのです)
のですが、古いものの上にかぶさってしまい、A.vbp の内容が破壊されてしまいました。
このようなことがあまり何度も起こるので、
そもそもの基本的なことを教えていただけないかと、今日は伺いました。
新しいプロジェクトを開くと、
  Project1 (Project1)
|_ Form1 (Form1)
がデフォルトでできています。
(1)Project1
(2)(Project1)
(3)Form1
(4)(Form1)
のうち、(4)は実際のフォームとコードが入っているところでしょうか。
しかし、(1)から(3)が何なのか、つまり、その概念について、
私が読んでいる本では説明してくれていないのです。
できればわかりやすく教えていただけないでしょうか。

No.2846 RE:RE:「プロシージャの宣言が、イベント、または … 」    投稿者:靴下カタオ [01/9/28(金)0:10分] http://www.kenashizuka.com/

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

全くそのとおりでした。Index をはずした結果、エラーが出なくなりました。
その後、ちょっと失敗して先に進んでいません。 また投稿させていただきたいと思います。よろしくお願いします。

No.2845 Re:Re:別のフォームのイベント操作    投稿者:MDI親子 [01/9/27(木)20:24分]

ゆう(U)さん、ありがとうございました、解決しました!

publicとprivateの違い、本で読んで理解していた
つもりだったんですが、このような場面で影響が
出てくるとは・・・・
もっと勉強します。

No.2844 RE:終了したはずのExcelが残っている  投稿者:MIZO [01/9/27(木)16:22分]

参考程度に・・・あまり詳しくはないので(^^ゞ


まず、
Set xlAppl = New Excel.Application
で、New宣言するのであれば
Dim xlAppl As Excel.Application
のNewは無くていいかと思います。

メモリ上にExcelが残る原因は
xlSheet.Paste _
Destination:=xlSheet.Range(Cells(2, 2), Cells(1 + .RowSel, 1 + .ColSel))
の部分で、Cells(2, 2)とCells(1 + .RowSel, 1 + .ColSel)の
CellsにxlSheetが無い為、無宣言参照(スミマセン、造語です)になってるかと。
xlSheet.Cells〜
にする事で残らなくなると思われます。
簡単なサンプルを作って確認した範囲ではメモリに残らなくなりましたので。

※折角ですから、こちらのHPの『Excel & Word関係』にある
 「VBからExcel及びWordを操作する時の注意事項」の5番辺りを
 参考にさせていただいたら如何でしょう?詳しく解説されていますから。

No.2843 アプリケーションの追加と削除の情報の取得方法  投稿者:aikawa [01/9/27(木)16:05分]

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

題記の件ですが、APIを使い取得したいのですが、
どなたかわかる方いらっしゃいますでしょうか。
ご教授頂けたら幸いです。
宜しくお願い致します。

No.2842 終了したはずのExcelが残っている  投稿者:みさ [01/9/27(木)15:18分]

こんにちは、みさと申します。上記の件でアドバイスをお願いします。


VBからExcelを開いてデータの印刷処理を行っています。
フォーム上にMSFlexGridに表示されているデータを一括コピーし、
既存のExcelファイルを開いてデータを貼り付けします。
その後、Excel側にあるマクロを実行して、印刷を行っています。
印刷が終了したら、オブジェクトは解放しています。
それが下のコードです。

Private Sub cmdFPrint_Click()

Dim xlAppl As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim strSheet As String

Select Case intFuyouFlg
Case 0, 1, 2
strSheet = "消滅以外"
Case 3
strSheet = "消滅"
End Select

Set xlAppl = New Excel.Application
Set xlBook = xlAppl.Workbooks.Open("D:\DiskMng\一覧表.xls")
Set xlSheet = xlBook.Worksheets(strSheet)

xlBook.Application.Visible = True
xlSheet.Activate

With mgFuyoulist
.Row = 1
.Col = 1
.RowSel = .Rows - 1
.ColSel = .Cols - 1

Clipboard.Clear
Clipboard.SetText .Clip, vbCFText
xlSheet.Paste _
Destination:=xlSheet.Range(Cells(2, 2), Cells(1 + .RowSel, 1 + .ColSel))
End With

xlAppl.Run "一覧表.xls!ListPrint", 1, 0

xlBook.Close (False)
xlAppl.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlAppl = Nothing

Exit Sub

印刷処理が終わった後、違うデータで印刷しようとすると
Excelにデータを貼り付ける部分でエラーが出てうまくいきません。

ctrl + Alt + Del で見るとExcelが2つ起動されており、
1度目に印刷を行った時に、Excelが終了せず残ってしまっているようでした。

私の書いたコードはこれで間違いないのでしょか?
また、このような現象を回避する方法はあるのでしょうか。
どなたかご教授下さい、よろしくお願い致します。

No.2841 方向キーイベント取得について  投稿者:ymatsu(匿名) [01/9/27(木)14:36分]

チェックボックスを複数行列にならべて、
方向キーによりフォーカス移動を行いたいのですが

チェックボックスでは方向キーイベントを取得してくれません。
何かできる方法がないでしょうか?

No.2840 Re:別のフォームのイベント操作  投稿者:ゆう(U) [01/9/27(木)12:04分]

> MDIフォームを使用して、子フォームを複数つくり、

> formコレクションでそれぞれの子フォームに順番に
> コマンドボタンクリックイベントを発生させ、処理を
「Forms コレクション」でMDI子フォーム全てに対し
コマンドボタン押下のイベントを発生させるのですね。

> させようとしています。ところが、子フォームの
> メニューにコードを書くと、1つのフォームしか
> 実行せず、また、他のフォーム(処理したいのが
> form1だとするとform2)にコードすると
> 「メソッドまたはデータメンバーが見つかりません」
> というエラーが出て、処理できません。
イベント プロシージャをCallするコードを書いて
いませんか?

PublicとPrivateの違いはご存知ですよね?

ボタンクリックの状態にして、イベント プロシージャを
発動させると問題は解決すると思います。
※ヘルプ参照「Value プロパティ」

> 別のフォームにあるコマンドボタンのクリックイベントは
> 操作できないのでしょうか?どなたか教えてください。
手抜きでは、プロシージャをPubilcにすると他のモジュールから
参照可能になります。
※デフォルトではPrivateで宣言されている

普通ならイベントプロシージャを直接Publicにせずに
新たなPublicプロシージャを作成し、Callします。

No.2839 RE:「プロシージャの宣言が、イベント、または … 」  投稿者:MIZO [01/9/27(木)11:00分]

ピクチャーボックスをコピー・アンド・ペーストで貼り付けませんでしたか?

この場合、Picture1、Picture2・・・とはならずに
Picture1(0)、Picture1(1)・・・という風にオブジェクト配列になります。
(貼り付けようとした時に確認のメッセージが出たはずです)

その場合、以下の
Private Sub Picture1_Click()
ではなく
Private Sub Picture1_Click(Index As Integer)
という宣言になります。

※もし全然勘違いな回答でしたらスミマセン(^^ゞ

No.2838 「プロシージャの宣言が、イベント、または … 」  投稿者:靴下カタオ [01/9/27(木)0:21分] http://www.kenashizuka.com/

前回はどうもありがとうございました。


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

という本で、「モジュール変数を使ったイメージファイルの表示」
としてあげられたサンプルをもとに、次のようなコードを作成しました。

Private Sub Command1_Click()
End
End Sub

Private Sub Picture1_Click()
n = n + 1
If n > 4 Then n = 1

Image1.Picture = LoadPicture("D:\My Documents2\ashizuka\mangalian\katao_1_" _ & Format(n, "0") & ".gif")

End Sub
Private Sub Picture2_Click()
n = n - 1
If n < 1 Then n = 4

Image1.Picture = LoadPicture("D:\My Documents2\ashizuka\mangalian\katao_1_" _ & Format(n, "0") & ".gif")

End Sub


フォームは、Image をひとつ、Command ボタンをひとつ、 Picture をふたつはり付けました。

これで実行したところ、
「プロシージャの宣言が、イベント、又はプロシージャの定義と一致していません。」
というコンパイルエラーを表示し、

Private Sub Picture1_Click

の部分が白抜きになっていました。
何か、コードとフォームの間で記述が一致していないということでしょうか?
何かわかられたら、また教えて下さい。よろしくお願いします。

No.2837 別のフォームのイベント操作  投稿者:MDI親子 [01/9/26(水)17:48分]

はじめて投稿します。MDI親子といいます。

MDIフォームを使用して、子フォームを複数つくり、
formコレクションでそれぞれの子フォームに順番に
コマンドボタンクリックイベントを発生させ、処理を
させようとしています。ところが、子フォームの
メニューにコードを書くと、1つのフォームしか
実行せず、また、他のフォーム(処理したいのが
form1だとするとform2)にコードすると
「メソッドまたはデータメンバーが見つかりません」
というエラーが出て、処理できません。
別のフォームにあるコマンドボタンのクリックイベントは
操作できないのでしょうか?どなたか教えてください。

No.2836 角度を変えたフォントの印刷  投稿者:けんぢ [01/9/26(水)16:52分]

このHPの逆引きヘルプ一覧表の画面・文字等の表示にある

「各種フォントを任意の角度で表示」 を使って
フォームには表示できるけど,Picture1のとこをPrinterに変えただけでは
印刷が出来ないんですが.
何かまたAPIを使わないといけないのかな?

No.2835 Re:コマンドラインの使い方  投稿者:ゆう(U) [01/9/26(水)16:47分]

> コマンドラインから二つの引数をゲットして変数に代入したいのですが

> どういうコーディングをすればいいいのでしょうか?
「Command 関数」はC言語の様に自動でセパレート
してくれません、一つの文字列として渡されます。
※C言語でのargv/argcとはちょっと違う

セパレートする文字を自分で決め、コード内で
セパレートして変数に代入するしかないです。

VB6.0で場合によっては「Split 関数」が便利ですが・・・
セパレートする関数を1つ自作してはいかが?

> また、実行時の引数の記述はどうすればいいのでしょうか?
> 引数にはファイル名(パス付き)を指定します。
Shell "Notepad.exe ""A:\Program Files\sss.txt""" '例1
Shell "Notepad.exe sss.txt" '例2
のようにするとOKです。
※単なる文字列として引数を設定するだけ

当然引数はそのExeで仕様が決められているはずですので、
その仕様にあわせ文字列を連結するとOKです。
※一般的なセパレーターはスペースで、フルパスなどスペースを
 含むような場合は「"」で括るとOKです(例1)。

 複数ファイル名の場合、「"」で括りスペースをいれて
 連結していく「"""aaa"" ""bbb"""」な感じ

No.2834 コマンドラインの使い方  投稿者:seyya [01/9/26(水)16:19分]

コマンドラインから二つの引数をゲットして変数に代入したいのですが

どういうコーディングをすればいいいのでしょうか?
また、実行時の引数の記述はどうすればいいのでしょうか?
引数にはファイル名(パス付き)を指定します。
現在の記述は

実行時の引数
C:\***.***

コマンドライン記述
aa=Command()
bb=Command()

なんですが、aa,bbの二つの変数共に同じ引数C:\***.***
が代入されてしまいます。
よろしくお願いします。


No.2833 Re:イベント内でのプロパティ実行  投稿者:ゆう(U) [01/9/26(水)14:05分]

> CommandBottonのクリックイベントを押下した時に

> ファイルより1行毎にデータを取得しListViewのListItemに設定するとします。
> 設定した列の1番目でソート(プロパティにてKey設定)を行い
> ソートした情報を1行毎に取得し処理を行いたいのです。
何をしたいかイマイチ読み取れません。

1クリックで行う処理は何処までですか?
ファイル1行を読み込む毎にソートするのですか?

> ListItemに設定して ListView.Sorted = True にしても
> この段階でソートはされず、後の処理が出来ません。
> 強制的に、ソートを実行する事は出来ないのでしょうか?
現在のコードとサンプルデータを添付してみてください。
※コードはボタンクリック部分
 デフォルトのプロパティ以外の内容
 サンプルデータのレイアウト
 など

No.2832 プリンターの用紙サイズの設定について  投稿者:みちる [01/9/26(水)13:49分]

いつも参考にさせてもらっています。


質問は、プリントの用紙設定の"PaperSize"定数の所なんですけど
「往復はがき」の大きさがどれに当てはまるか解りません。

大きさは、横が約200o
縦が約145oです。

よろしくお願いします

No.2831 RE:チェックしたすべての内容を一つのセルに表示    投稿者:memi [01/9/26(水)11:08分]

あき☆彡さんありがとうございました。

本当説明が下手で申し訳ありませんm(__)m
教えて頂いた内容を参考にして色々と試してみたいと思います。
解らなくなったら、また質問させて頂きたいと思います。その時
は、御指導宜しくお願い致します(時間がかかるかも知れませんが(~_~;) )
ありがとうございました。

No.2830 RE:他のExEで実行しているWindowを消すには  投稿者:MIZO [01/9/26(水)10:31分] http://www6.ocn.ne.jp/~mzworks

他に起動しているアプリを終了させる、という事でいいのでしょうか・・・?

だとすればAPIを使う事になります。
FindWindow、SendMessage、WM_CLOSEなどを
MSDNやWEBで調べてみて下さい。

No.2829 RE:イメージがなくなってしまう、あるいは見えない?  投稿者:靴下カタオ [01/9/26(水)1:41分] http://www.kenashizuka.com/

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

お恥ずかしいですが、Pictureを設定することも知りませんでした。
また、パラメーターも確かに本のままではうまくいかないようです。
これは色々実験してみないと解決しそうにありませんが、
これからもどうぞよろしくお願いします。

No.2828 他のExEで実行しているWindowを消すには  投稿者:匿名 [01/9/25(火)21:00分]

はじめまして。こんにちは。

困ったときは、いつも参考にさせていただいています。

早速ですが、他のExeで実行しているWindowを
強制的に消す事って出来るのでしょうか?

お願いします。

No.2827 イベント内でのプロパティ実行  投稿者:匿名 [01/9/25(火)20:54分]

教えて下さい。


CommandBottonのクリックイベントを押下した時に
ファイルより1行毎にデータを取得しListViewのListItemに設定するとします。
設定した列の1番目でソート(プロパティにてKey設定)を行い
ソートした情報を1行毎に取得し処理を行いたいのです。

ListItemに設定して ListView.Sorted = True にしても
この段階でソートはされず、後の処理が出来ません。
強制的に、ソートを実行する事は出来ないのでしょうか?

やはりプロパティは、イベント終了後に実行されるのでしょうか?

No.2826 Re:MDIについて・・・  投稿者:ゆう(U) [01/9/25(火)19:02分]

> MDI 親フォームで、タイトルバーを表示したくないのですが、

> どうすればよいでしょうか?
> 誰か分かる方いらっしゃいましたら、教えてください。

VB標準の機能では不可能ですが・・・
API関数でウィンドウスタイルを変更すると可能です。

詳しくはWebで検索して見て下さい。
検索キー
「SetWindowLong」
「WS_CAPTION」
など

No.2825 Re:DataGridのヘッダーのサイズ  投稿者:ゆう(U) [01/9/25(火)18:56分]

> VB6.0、NT4.0でDataGridを使っているのですが、

> このグリッドでヘッダーの高さを変更することは
> できないのでしょうか?
制限がありますが簡単に変更可能です。

ヘルプ参照
「HeadLines プロパティ」
です。

No.2824 Re:中央揃えのラベルの印刷について  投稿者:ゆう(U) [01/9/25(火)18:52分]

> 簡単にピクチャーボックスに配置されているラベルの内容を

> 同じ位置に印刷できる方法は無いのでしょうか?
複数行表示をしていないのであれば、それほど難しい
事ではありません。

「TextWidth メソッド」「TextHeight メソッド」で
文字列のサイズがわかります・・・
それを元にCurrentX/Yを変更しPrintするとOKです。

複数行の場合は、行単位に分割してPrintする必要が
出てきます。

No.2823 Re:リストビューの色設定  投稿者:ゆう(U) [01/9/25(火)18:43分]

> ListViewで、’特定の列だけ’とか’特定のセル(特定の列の中の特定の行)
       だけ’のバックカラーを

> 設定することは可能なのでしょうか。
ListView では難しいです。

VB6.0であれば、ForeColorをセル単位で変更することは
容易ですが、BackColorは変更できません。

オーナードローの技術でも、私の知る範囲では列単位の
BackColorの変更しか知りません。


BackColorもセル単位で変更するのであれば・・・
「MSFlexGrid コントロール」
はいかがでしょう。

No.2822 RE:ListViewに表示している全て情報を取得したい  投稿者:MIZO [01/9/25(火)18:23分]


ListView1.ListItems(?).Text
ListView1.ListItems(?).SubItems(x)
(または、ListView1.ListItems(?).ListSubItems(x).Text)

で、?番目のアイテムのテキスト、及びサブアイテム(カラムx)を参照できます。
For〜Nextなどで回して参照して下さい。


No.2821 MDIについて・・・  投稿者:china [01/9/25(火)16:35分]

MDI 親フォームで、タイトルバーを表示したくないのですが、
どうすればよいでしょうか?

誰か分かる方いらっしゃいましたら、教えてください。


No.2820 ListViewに表示している全て情報を取得したい  投稿者:匿名 [01/9/25(火)13:37分]

はじめまして、


ListViewで表示している選択していない行も、全ての情報を取得したいのです

選択している行を、取得するのはわかるのですが
 ListView.SelectedItem.Text          ' 1列目
 ListView.SelectedItem.ListSubItems(1).Text ' 2列目

初歩的な質問ですみませんよろしくお願いします。

No.2819 VBからExcelに貼り付け   投稿者:匿名 [01/9/25(火)12:46分]

まだ、プログラミングを始めたばかりなのでよろしくお願いします。

今、VB SQL EXCELを使っています。

SQLでデータベースからデータを呼び出し検索して、それをEXCELの自分の作った
表に貼り付ける。というのをやっているにですが、データの量にあわせて、一枚目が
15行まで入り、二枚目は26行入ります。二枚目でも足りなければ、 シートをコピーして貼り付け
そして、その量のあわせて検索、貼り付け、印刷
をしたいのですが、始めたばかりなのでさっぱりわかりません。
本当に初心者なので困ってます。どうか教えてください。
お願いします。 

No.2818 RE:イメージがなくなってしまう、あるいは見えない?  投稿者:MIZO [01/9/25(火)1:24分] http://www6.ocn.ne.jp/~mzworks

以下の手順で実行してみてください。


Image1、Image2にPictureを設定してください。(適当な小さめのビットマップで可)
このままだと最近のマシンスペックでは速すぎて何をしているか分からないので
簡単なウェイトを入れます。mvプロシージャを以下のように変更してください。

Private Sub mv(a As Image)

Dim i As Long

Main.Top = a.Top
Main.Left = a.Left
Main.Picture = a.Picture
Do While Main.Left < Form1.Width - Main.Width
For i = 1 To 100000: Next i
Main.Move Main.Left + 100
Loop

End Sub

実行したらImage1、Image2をクリックしてみましょう。
画面上でビットマップが動くはずです。
遅かったり、速かったりしたらFor文にある100000を変更して試してください。

No.2817 イメージがなくなってしまう、あるいは見えない?  投稿者:靴下カタオ [01/9/24(月)23:56分] http://www.kenashizuka.com/

前回はどうもありがとうございました。


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

という本で、「Image 型引数によりイメージオブジェクトを受け取り、
フォーム上を右に移動させるプロシージャ」として
次のようなプログラムが上げられていました。

サンプル3

Private Sub mv(a As Image)
Main.Top = a.Top
Main.Left = a.Left
Main.Picture = a.Picture
Do While Main.Left < Form1.Width - Main.Width
Main.Move Main.Left + 100
Loop

End Sub

Private Sub Image1_Click()
mv Image1
End Sub

Private Sub Image2_Click()
mv Image2
End Sub

フォームのほうは Image1、Image2、Main の
みっつの Image を はりつけるようになっているので
そのとおりにして実行してみると、
はりつけた Image は見えなくなってしまい、
ドラッグしても何も起こりません
(というより、何かが起こっているのに感知できないのでしょうか?)
Image にタイトルをつけようかとも思ったのですが、
Image にはCaption プロパティはないようなのです。

このコードを見ていただいて、
大体何をやるプログラムなのか、そして
どこがおかしいのか、おわかりになりましたら、
教えていただけないでしょうか。

毎回不甲斐ない質問ばかりで恐縮ですが、
何とぞよろしくお願いいたします。

No.2816 DataGridのヘッダーのサイズ  投稿者:ティ [01/9/24(月)18:20分]

こんにちは。


VB6.0、NT4.0でDataGridを使っているのですが、
このグリッドでヘッダーの高さを変更することはできないのでしょうか?
横幅を変更できることは調べて分かったのですが
高さを変更する方法がどうしても分かりません。
どなたかご存知の方、御教授よろしくお願いします。

失礼します。

No.2815 中央揃えのラベルの印刷について  投稿者:匿名 [01/9/23(日)23:56分]

はじめまして,いつもお世話になっております.

早速ですが,印刷について教えていただきたいのですが.
ピクチャーボックスにある中央揃えのラベルの内容を同じ位置に印刷するには どうしたらよいのでしょうか?
左揃えならcurrentX,Yで位置を決定すれば簡単だと思うのですが, 中央揃えだとどのように位置決定すればよいのか分かりません. 簡単にピクチャーボックスに配置されているラベルの内容を同じ位置に 印刷できる方法は無いのでしょうか?
ご教授よろしくお願いいたします.

No.2814 フォアグラウンド ウィンドウの設定について  投稿者:あき [01/9/23(日)17:06分]

はじめまして、秋と申します。

VB初心者です宜しくお願いします。

環境は、Win2000@VB6.0です。
やりたいことは、あるアプリの
NT4.0@VB5.0からWin2000@VB6.0への
VersionUpです。

前環境では、複数のフォームを立ち上げて
おいて、そのうちのどれかが終了されたと
きにAPI関数の
SetForegroundWindowを使用して、監視フ
ォームをフォアグラウンドにしてあります。

今回、VersionUpしたら、異常時にフォア
グラウンドにならなくなってしまいました。
(デバッグ中はフォアグラウンドになる。)

そして、マイクロソフトのサイトを調べた
ら、セキュリティのため、仕様を変更し
て使えなくしているみたいです。

Win2000@VB6.0にて、フォアグラウンド
を実現させることは、不可能なのでしょうか
?詳しい方がいましたら教えて下さい。

No.2813 リストビューの色設定  投稿者:某公務員 [01/9/23(日)17:04分]

ListViewで、’特定の列だけ’とか’特定のセル(特定の列の中の特定の行)だけ’
のバックカラーを

設定することは可能なのでしょうか。

No.2812 Re:続MSFlexGridが真っ黒に  投稿者:ゆう(U) [01/9/22(土)10:12分]

> ※現在、印刷テストが出来ないので何らかの方法があるかは

>  確認できません(MSFlexGridのまま)
「ReDraw プロパティ」で何とかならないかと思ったんですが・・・
真っ黒ですね。

> もしそういう理由であれば、PictureBoxへhDCを使用し、MSFlexGridの表示内容を
> 写しPictureBoxに描画された内容として印刷させるとOKでしょう。
「MSFlexGrid コントロール」のhWndからhDCを取得し、表示内容を
コピーするコードを試したのですが、固定行・列などや薄い罫線部分
が表示されない状態です・・・
※時間をかけて動作を検証すると解決するかもしれません

代案として・・・
フォームに表示されている全てのコントロールの絵をフォームに
直接描画し、PrintFormでは全てのコントロールを見せない状態
で印刷するのはいかがでしょう。
※非表示にする際フォーカスの移動イベントが発生するので
 フォーカスがらみで修正が必要かも

サンプル)
Private Declare Function GetDC Lib "user32" _
(ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
(ByVal hWnd As Long, _
ByVal hDC As Long) As Long
Private Declare Function BitBlt Lib "gdi32" _
(ByVal hDestDC As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal dwRop As Long) As Long
Private Sub Command1_Click()
Const SRCCOPY = &HCC0020
Dim myDC As Long
Dim lngResult As Long
Dim myControl As Control
Dim blnVisible() As Boolean
Dim i As Long
On Error Resume Next 'Visibleプロパティを持たないコントロール用

With Me
myDC = GetDC(.hWnd)
.AutoRedraw = True
.Cls
.ScaleMode = vbPixels
lngResult = BitBlt(.hDC, .ScaleLeft, .ScaleTop, .ScaleWidth, _ .ScaleHeight, myDC, .ScaleLeft, .ScaleTop, SRCCOPY)
lngResult = ReleaseDC(.hWnd, myDC)
End With

ReDim blnVisible(0 To Me.Controls.Count - 1)
For Each myControl In Me.Controls
blnVisible(i) = myControl.Visible
myControl.Visible = False
i = i + 1&
Next

Me.PrintForm

i = 0&
For Each myControl In Me.Controls
If blnVisible(i) then
myControl.Visible = True
End If
i = i + 1&
Next
End Sub
※コメントは特に書きませんので、動作を見ながら検証してみてください

No.2811 RE:RE:チェックしたすべての内容を一つのセルに表示  投稿者:あき☆彡 [01/9/21(金)23:06分]

>あき☆彡 さん御回答ありがとうございます。

>超初心者なので理解出来ずヘルプを見ながら考えています(~_~;)
>説明不足でごめんなさいm(__)m
いえいえ。
でも今回の説明でも質問内容が・・・
えぇと、
どうしたいのか分りません。。。
ヾ(@^▽^@)ノわははヾ(・・;)ォィォィ

1."a","b","c"・・・といった値は何処に入っているんですか?

2.Check4でText21にアンダーラインを付けていますが、
Check4 : Text4
Check5 : Text5
Check6 : Text6



と対応している訳ではないのですか?
他のCheck5〜Check21の時はどのテキストボックスに
アンダーラインを付けるのでしょう?

3.アンダーラインを設定するだけなんですか?
値は??
Text13をCells(6, 6)
Text14をCells(6, 11)
にしていますが、
どういう法則なのでしょう?
他のTextは何処のセルに??

4.command1とcommand2で使用しているチェックボックスは同じですか?
画面のコントロールは全部で幾つですか?
コマンドボタン 2個
チェックボックス 18個or36個??
テキストボックス 18個

という訳でどういう感じにしたいのか理解出来ないのです。
もしかして私の理解力が欠落してる??(;>_<;)
的確なアドバイスは出来ませんが、
とりあえずコントロール配列にした方が良いでしょう。

例えば、
フォームに
コマンドボタン【Command1】
チェックボックス【Check1(0〜4)】
を配置して下さい。
コントロール配列はオブジェクト名を同じにすれば出来ます。
分らなければヘルプで【コントロール配列】を参照して下さい。

Private Sub Command1_Click()
Dim sWk As String
Dim lIdx As Long
sWk = ""
For lIdx = 0 To Check1.Count - 1
If Check1(lIdx).Value = vbChecked Then
sWk = sWk & Chr(Asc("A") + lIdx)
End If
Next lIdx
Call MsgBox(sWk)
End Sub

チェックされた箇所に対応した。
"A"〜"E"が連結されて表示されます。
これを参考にcommand2の処理は出来ると思います。
command1の方も応用すれば出来るでしょう。
最初は分らない事が多いかもしれませんが、
色々悩んでみるのも大切な事です。
それでは、頑張って下さいヾ(@⌒▽⌒@)ノ

No.2810 Re:続MSFlexGridが真っ黒に  投稿者:ゆう(U) [01/9/21(金)21:08分]

>         ' データをプリンターに送信するコードを記述します。

> frmMultiplySup.PrintForm
> :
> こんな感じでプリンターに送っています。

「PrintForm メソッド」でしたか・・・

ヘルプに
『実行時に Form オブジェクトやピクチャーボックス (PictureBox) コントロールに
 追加されたピクチャーが描画されたときに AutoRedraw プロパティが真 (True) に
 なっている場合は、そのピクチャーを印刷します。
 ActiveX コントロールの出力結果は、 各コントロールのインプリメントに依存します。』
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
とありますので・・・

「MSFlexGrid コントロール」では印刷されないのかもしれません。

もしそういう理由であれば、PictureBoxへhDCを使用し、MSFlexGridの表示内容を
写しPictureBoxに描画された内容として印刷させるとOKでしょう。
※現在、印刷テストが出来ないので何らかの方法があるかは
 確認できません(MSFlexGridのまま)

No.2809 続MSFlexGridが真っ黒に  投稿者:sin [01/9/21(金)18:36分]

 すみません、説明不足でした。


Private Sub cbprint_Click()

Dim BeginPage, EndPage, NumCopies, Orientation, i As Long

On Error GoTo ErrHandler
With frmMain

' [印刷] ダイアログボックスを表示します。
.CommonDialog1.ShowPrinter

BeginPage = .CommonDialog1.FromPage
EndPage = .CommonDialog1.ToPage
NumCopies = .CommonDialog1.Copies
Orientation = .CommonDialog1.Orientation
For i = 1 To NumCopies
' データをプリンターに送信するコードを記述します。
frmMultiplySup.PrintForm
Next
End With
Exit Sub
ErrHandler:

Exit Sub

End Sub

こんな感じでプリンターに送っています。

No.2808 vbからexecute時のプログレスバー  投稿者:hose [01/9/21(金)14:30分]

はじめまして。


VBでACCESSのクエリーやORACLEのストアドを実行しているときに
プログレスバーを進行状況を表示したいんですけど、どうしたらよろしいですか?

ACCESSやORACLE側に制御をわたしてるんで無理でしょうか?

No.2807 Re:リストビューで1行全体に選択反転表示する  投稿者:ゆう(U) [01/9/21(金)14:11分]

> リストビューで1行全体に渡って選択反転表示したいのですが

> 左のコラムしか選択できません。
> どのようにすれば1行全体に選択反転表示する事ができるのでしょうか?
VB6.0なら苦労はないのですが・・・

「LVS_EX_FULLROWSELECT」をWebで検索してみてはいかがでしょう。

参考になるかも・・・
Const LVS_EX_FULLROWSELECT = &H20
Const LVM_FIRST = &H1000
Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + &H37
Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + &H36


SendMessage(API)関数でリストビューのスタイルを変更すると、
一行選択表示やチェックボックス等の機能も追加できます。
※MSのサポート技術情報にもあるかも

> そして、この場合複数選択も可能でしょうか?
一行選択表示が可能になったら試してみては?
※選択されていることに違いはないので、プロパティで
 確認は出来ると思います

No.2806 Re:MSFlexGridが真っ黒に  投稿者:ゆう(U) [01/9/21(金)13:50分]

> MSFlexGridを使って表を作り、その表を印刷する機能を付けたのですが

> MSFlexGridの部分だけが真っ黒になってしまいます。
> 似たようなプログラムと比べてもロジックやプロパティに問題はないと
> 思うのですが・・・
「MSFlexGrid コントロール」には印刷機能がないので、貴方がどの様に
印刷機能を加えているかわからないと回答のしようがありません。

現在の状態で、印刷時に真っ黒くなるという事は白地に黒で印字され
ているということですね?

真っ黒くなる場合を想定すると、「Line メソッド」でBFオプション
をしている・・・くらいしか思いつきません。

現在の印刷部分(方法)を詳しく説明してみてください。

No.2805 MSFlexGridが真っ黒に  投稿者:sin [01/9/21(金)11:54分]

 MSFlexGridを使って表を作り、その表を印刷する機能を付けたのですが
MSFlexGridの部分だけが真っ黒になってしま

います。 似たようなプログラムと比べてもロジックやプロパティに問題はない思うのですが

No.2804 RE:チェックしたすべての内容を一つのセルに表示   投稿者:memi [01/9/21(金)10:39分]

あき☆彡 さん御回答ありがとうございます。

超初心者なので理解出来ずヘルプを見ながら考えています(~_~;)
説明不足でごめんなさいm(__)m

>チェックされたCaptionを連結したいって事ですか?
Captionに文字を設定しておらず、チェックするとtextboxの文字にUnderline が
つくようになっています。

Private Sub Check4_Click()
If Check4.Value = 1 Then
Text21.Font.Underline = True
Else
Text21.Font.Underline = False
End If
End Sub

とし、Check4〜Check21まで同じ様にしています。(textboxも同じ数あります)

command1とcommand2があり、

command1はチェックされtextboxの文字にUnderline がついたものは
excelファイル"aaa"へアンダーラインを

(省略)
  Set xlapp = New Excel.Application
Set xlbook = xlapp.Workbooks.Open("aaa.xls")
Set xlsheet = xlbook.Worksheets("aaa")

 xlsheet.Cells(6, 6).Font.Underline = Text13.Font.Underline
 xlsheet.Cells(6, 11).Font.Underline = Text14.Font.Underline
(省略)

command2はcheckboxをチェックしたらexcelファイル"ccc"へ代入
(省略)
 Set xlapp = New Excel.Application
  Set xlbook = xlapp.Workbooks.Open("ccc.xls")
  Set xlsheet = xlbook.Worksheets("ccc")
 
 checkbox1をチェックしたら
  xlsheet.Cells(6, 6) = a
 checkbox1とcheckbox2をチェックしたら
  xlsheet.Cells(6, 6) = ab
 checkbox1とcheckbox2とcheckbox3をチェックしたら
  xlsheet.Cells(6, 6) = abc
(省略)

という感じにしたいのです。
まだ理解出来てないので、折角のあき☆彡 さんの御回答と噛み合っていなかったら
ごめんなさい。出来れば、もう少し詳しく教えて頂けないでしょうか。
宜しくお願い致します。



No.2803 RE:チェックしたすべての内容を一つのセルに表示  投稿者:あき☆彡 [01/9/20(木)23:55分]

>フォーム上にa.b.c・・〜rまで(合計18ヶ)のチェックボックスを置いています。

>a.をチェックすると、エクセルのセルにa.が表示されます。
>b.をチェックすると、セルにb.が表示
>c.をチェックすると、セルにc.が表示
>a.とb.をチェックすると、a.b.が表示
>a.とc.をチェックすると、a.c.が表示
>a.b.c.をチェックすると、a.b.c.が表示
>この様に、VBでチェックされた全ての内容を一つのセルに表示させたいのですが
>どの様に考えれば良いのかわかりません。一つ一つやっていくとかなり長くなって
>しまうと思うのですが、どのようにすれば1つのセルに複数の内容を表示する事が
>出来るのか、何を用いればスリムに出来るのかがわかりません。
チェックされたCaptionを連結したいって事ですか?
チェックボックスを0〜17の配列で作成すれば簡単に出来ると思いますが、、、
例えばこんな感じ↓これで編集したsWkをセルに設定すれば良いと思います。

Dim sWk As String
Dim lIdx As Long

sWk = ""
With Check1
For lIdx = .LBound To .UBound
If .Item(lIdx).Value = vbChecked Then
sWk = sWk & .Item(lIdx).Caption
End If
Next lIdx
End With

質問内容にあってますか?
それでは、頑張って下さいヾ(@⌒▽⌒@)ノ

No.2802 チェックしたすべての内容を一つのセルに表示  投稿者:memi [01/9/20(木)11:15分]

いつも参考にさせて頂いております。

VBからエクセルを操作していますが、以下内容につきまして何を用いたら良いのか
どう考えれば良いのかわかりません。ヒントを頂けませんでしょうか。

フォーム上にa.b.c・・〜rまで(合計18ヶ)のチェックボックスを置いています。
a.をチェックすると、エクセルのセルにa.が表示されます。
b.をチェックすると、セルにb.が表示
c.をチェックすると、セルにc.が表示
a.とb.をチェックすると、a.b.が表示
a.とc.をチェックすると、a.c.が表示
a.b.c.をチェックすると、a.b.c.が表示
この様に、VBでチェックされた全ての内容を一つのセルに表示させたいのですが
どの様に考えれば良いのかわかりません。一つ一つやっていくとかなり長くなって
しまうと思うのですが、どのようにすれば1つのセルに複数の内容を表示する事が
出来るのか、何を用いればスリムに出来るのかがわかりません。

どなたかヒントを教えて下さい。宜しくお願い致しますm(__)m

No.2801 自己レス:コンパイルすると動きません2    投稿者:TOMO [01/9/20(木)11:04分]

すみません。解決しました。

フォームをロードする前に、コントロールに関する処理を入れていました。
お騒がせしました。

前のログ 次のログ


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