前のログ 次のログ

No.4400 Re: 構造体配列の内容をデータレポートに出力するには    投稿者:CAA [02/4/16(火)17:07分]

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

RSというOBJECT型に構造体名を入れたりしましたが、型が違うとエラーになってしまいました。
とろさんに質問なのですが、VB6で帳票を作成するなら何がいいのでしょうか?
クリスタルレポートはどうでしょうか?
参考になるHPがありましたらお手数ですが教えていただけないでしょうか?

No.4399 Re: 構造体配列の内容をデータレポートに出力するには  投稿者:とろ [02/4/16(火)16:37分]

構造体の配列を使って、

レコードセットのようなものを次のように、
持たせているのですよね。
.str_Kingaku .str_Kubun
↓ ↓
|金額  |種別
---------------
arr_func_Info(0) -> | 1000 |A
---------------
arr_func_Info(1) -> | 2000 |B


DataReport が使えない環境なので、分かりませんが、
レコードセットと同じように考えるならば、
Set DataReport1.DataSource = arr_func_Info
こんな感じだとは思いますが、恐らく無理でしょう...

No.4398 Re: 構造体配列の内容をデータレポートに出力するには  投稿者:CAA [02/4/16(火)16:24分]

とろさんはじめまして。

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

>DataSource には、レコードセットを指定するのですよ。
>"str_" からして、右辺は、 String 型ではないですか?

すべてDBからstring型で定義された構造体配列にヒットしたレコード分格納しています。
できる事なら下記のようにしたいのです。
レコードをセットするという事は構造体に入れた物は一度に出力できないのですか?

|金額  |種別
-------------
| 1000 |A
-------------
| 2000 |B

No.4397 Re: 構造体配列の内容をデータレポートに出力するには  投稿者:とろ [02/4/16(火)14:56分]

> データレポートで質問なのですが、構造体配列の内容を下記のように設定しても
>修飾エラーで代入できません

> どうすればいいのでしょうか?
>
> Set DataReport1.DataSource = arr_func_Info(lngCount1).str_kubun

DataSource には、レコードセットを指定するのですよ。
"str_" からして、右辺は、 String 型ではないですか?

No.4396 構造体配列の内容をデータレポートに出力するには?  投稿者:CAA [02/4/16(火)13:05分]

はじめましてこんにちは、CAAと申します。

データレポートで質問なのですが、構造体配列の内容を下記のように設定しても 修飾エラーで代入できません
どうすればいいのでしょうか?

Set DataReport1.DataSource = arr_func_Info(lngCount1).str_kubun

No.4395 RE:case文の条件で変数を使いたい  投稿者:NAO★ [02/4/16(火)0:31分]

件名の「case文の条件で変数を」とは違うやり方ですが

多分これで質問と同じ事はできてますよね?

Private Sub Form_Load()
Dim idx As String
Dim Case_idx(6) As String

' 処理したいインデックスに標しをつける(例なのでひとつおきに標し)
For i = 0 To 5 Step 2
Case_idx(i) = "show"
Next

Do
idx = InputBox("0〜5までの数字を入力してください (Enterのみで終了)")
If idx = "" Then Exit Do
Select Case Case_idx(CInt(idx))
Case "show":
Debug.Print "form.show"
Case Else
Debug.Print "マッチしない"
End Select
Loop
Unload Form1
End Sub

No.4394 RE:MSFlexGridの最大行数について。  投稿者:NAO★ [02/4/15(月)22:48分]

Longの正の最大値以内(2,147,483,647)なら指定できますが

メモリやシステムリソースの制約を受けるかもしれませんね。

とりあえずウチでは4万件までは試したこと在りますが
遅い以外は問題なさそうです。

No.4393 MSFlexGridの最大行数について。  投稿者:ゆうや [02/4/15(月)22:15分]

こんばんは。わからないことがあるので投稿してみました。

VB6.0 SP5を使っています。
MSFlexGridコントロールの行数のみを事あるごとに増やしています。まだ作成途中なのですが、
行数ってどこまで増やしてもいいものなのか?と疑問に思いました。
String型の変数は2GBまで?とかの制限があると思ったのでコントロールにもあるのかなと思いました。
どなたかご存知の方、教えていただけないでしょうか。宜しくお願いします。

No.4392 RE:case文の条件で変数を使いたい    投稿者:NAO★ [02/4/15(月)22:14分]

すみません。2つ、まちがえました。

>まず Case の条件はラベルになるので : (コロン)が必要です。
C言語系じゃないので要りませんでしたね(^^;

あと、質問も読み違えました。
複数の条件を文字列として変数に入れてCaseで使いたいということですね?

変数は使えるけれど、複数の条件としては判断してくれないでしょうね(たぶん)

No.4391 Re2: MSFlexGridの表示方法について(御礼)  投稿者:ゆうや [02/4/15(月)22:09分]

>K.J.Kさん

お返事ありがとうございました。できました。
ヘルプをすみからすみまで見ていませんでした。どうもありがとうございました。

No.4390 RE:case文の条件で変数を使いたい  投稿者:NAO★ [02/4/15(月)22:00分]

まず Case の条件はラベルになるので : (コロン)が必要です。

また
>Case Case_idx:
だと
Case "0,1,2,3,4,5":
と展開されますのでIntegerは絶対にマッチしないでしょう。

多分やりたいのはこういうことかと。
Private Sub Form_Load()
Dim idx As Integer
Dim Case_idx As String
Case_idx = "0,1,2,3,4,5"
Select Case idx
Case Mid$(Case_idx, 1, 1):
Debug.Print "0"
Case Mid$(Case_idx, 3, 1):
Debug.Print "1"
' :
' :
End Select
あるいは Case_idxを配列にしておくほうがいいかもしれません。


どちらにしても、Case に変数を使えるなんて、実行時バインディングをするVBならではのテクニックですね

No.4389 case文の条件で変数を使いたい  投稿者:Jun [02/4/15(月)21:00分]

Select Case 文の条件で、以下の様に変数を使用したいのですが

実行するとエラーになります。
型が違うので当然といえば当然ですが・・・
以下の様な使用法って出来ないのでしょうか?
宜しくお願いいたします。

-----------------------------------------------
Dim idx As Integer
Dim Case_idx As String

Case_idx = "0,1,2,3,4,5"

Select Case idx

Case Case_idx

Form.Show

End Select
-----------------------------------------------

No.4388 Re: MSFlexGridの表示方法について。  投稿者:K.J.K. [02/4/15(月)19:45分]

CellAlignmentプロパティを調べましょう。


No.4387 MSFlexGridの表示方法について。  投稿者:ゆうや [02/4/15(月)19:27分]

こんにちは。分からない事があるので投稿させてもらいました。

VB6.0 SP5を使っています。
MSFlexGridコントロールを使っているのですが、数値だと右寄せ、文字だと左寄せになってしまいますよね
全部を右寄せ、左寄せ、中央揃えとかにしたいのですが、そんな事ってできるのでしょうか。

ご存知の方、教えてください。宜しくお願いします。

No.4386 RE:RE: VBからEXCEL表示  投稿者:みや [02/4/15(月)16:44分]

ありがとーございますっ!!!!


xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(3, 3)).Interior.Color = RGB(128, 255, 255)
上記のように、Cellsの前にxlSheetを書くと、できましたっ!!

すっきりです。
花ちゃん、みゃおさん ありがとうございました。


No.4385 RE: VBからEXCEL表示  投稿者:みゃお [02/4/15(月)16:30分]

>xlSheet.Range(Cells(1, 1), Cells(3, 3)).Interior.Color = RGB(128, 255, 255) 'セルのバックカラー

この行で、Cells が xlSheet.Cells となっていないために、EXCELが終わりきらないようですね。
xlSheet.Range("A1:C3") としておいてもエラーにならなかったと思いますが。


No.4384 RE:RE:VBからEXCEL表示  投稿者:みや [02/4/15(月)16:28分]

タイミングがっ(汗)

アドバイスありがとうございました。

xlSheet.Range(Cells(1, 1), Cells(3, 3)).Interior.Color = RGB(128, 255, 255)
こちら↑でできる方法はないのでしょうか?
(色を付ける個所が不特定多数なので(>_<;)

すみません。

No.4383 続・VBからEXCEL表示  投稿者:みや [02/4/15(月)16:24分]

重複書き込みすみません。


再度、チャレンジしたところ、セルのカラーをつける個所で
@xlSheet.Range(Cells(1, 1), Cells(3, 3)).Interior.Color = RGB(128, 255, 255)
としていたところを
AxlSheet.Range("A1:A2").Interior.Color = RGB(128, 255, 255)
と書きかえると、エクセルを開くことができました。
@でもVBを終了させると、色もついている状態で開くことができます。

アドバイスよろしくお願いします。

No.4382 RE:VBからEXCEL表示  投稿者:花ちゃん [02/4/15(月)16:23分]

下記のように変更して試して下さい。

'xlSheet.Range(Cells(1, 1), Cells(3, 3)).Interior.Color = RGB(128, 255, 255) 'セルのバックカラー
xlSheet.Range("A1:B3").Interior.Color = RGB(128, 255, 255)

No.4381 VBからEXCEL表示  投稿者:みや [02/4/15(月)15:12分]

はじめて書き込みます。

No.4203 再びVBからEXCELを表示に関しての質問です。(投稿者 松)
と同様にVBの画面を閉じずにエクセルのシートを保存先から手動で開こうとすると開けません。
花ちゃんのサンプル(No.4205)を実行してみるとできたのですが、
セルに色をつけるとダメでした。
(罫線やセルの結合などはOKでした)

以下↓はNo.4205を元にしたソースです。
(色の所をコメントにするとうまくいきます。)

Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add

'xlApp.Visible = True
xlSheet.Range("A1:B1").MergeCells = True
xlSheet.Cells(1, 1).Value = "15"
xlSheet.Range("A2:B2").MergeCells = True
xlSheet.Cells(2, 1).Value = "15"
xlSheet.Range("A3:B3").MergeCells = True
xlSheet.Cells(3, 1).Formula = "=A1+A2"
xlSheet.Range("A1:B3").Borders.LineStyle = xlContinuous '実線
xlSheet.Range(Cells(1, 1), Cells(3, 3)).Interior.Color = RGB(128, 255, 255)

xlSheet.SaveAs "e:\Temp.xls"
xlApp.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub

No.4380 VBからEXCEL表示  投稿者:みや [02/4/15(月)15:11分]

はじめて書き込みます。

No.4203 再びVBからEXCELを表示に関しての質問です。(投稿者 松)
と同様にVBの画面を閉じずにエクセルのシートを保存先から手動で開こうとすると開けません。
花ちゃんのサンプル(No.4205)を実行してみるとできたのですが、
セルに色をつけるとダメでした。
(罫線やセルの結合などはOKでした)

以下↓はNo.4205を元にしたソースです。
(色の所をコメントにするとうまくいきます。)

Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add

'xlApp.Visible = True
xlSheet.Range("A1:B1").MergeCells = True
xlSheet.Cells(1, 1).Value = "15"
xlSheet.Range("A2:B2").MergeCells = True
xlSheet.Cells(2, 1).Value = "15"
xlSheet.Range("A3:B3").MergeCells = True
xlSheet.Cells(3, 1).Formula = "=A1+A2"
xlSheet.Range("A1:B3").Borders.LineStyle = xlContinuous '実線
xlSheet.Range(Cells(1, 1), Cells(3, 3)).Interior.Color = RGB(128, 255, 255)

xlSheet.SaveAs "e:\Temp.xls"
xlApp.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub

No.4379 Re: 文字数の取得  投稿者:K.J.K. [02/4/15(月)13:17分]

InStrを2回使えば、2番目の"C"の位置がわかりますよね。

で、やはりInStrを使って"E"の位置を求めると。

No.4378 文字数の取得(追加)  投稿者:アンパンマン [02/4/15(月)13:02分]

さっきの追加なんでが、

Text1.Text="ABCDEFGabcdefgABCDEFGabcdefg"
たまにCからEの間に色んな文字が入ってくるんです。
その文字も取得したいのですが、
その時を悩んでいるので、よろしくお願いします。

No.4377 文字数の取得  投稿者:アンパンマン [02/4/15(月)12:56分]

こんにちは。


文字数の取得をしたいのですが、どう書けばいいでしょうか?
例えば、
Text1.Text="ABCDEFGabcdefgABCDEFGabcdefg"
で、2回目の大文字のC〜Eまでの文字数とかを出したいんです。
説明がわかりにくくて、申し訳ないですが、お願いします。

No.4376 カレントレコードがありませんというエラー  投稿者:TAKADA [02/4/15(月)11:53分]

環境:VB6.0 ACCESS2000

重複チェックの為の社員コードでかけているのですが、
SEEKメソッドを使用して、レコードがなかったら
Data1.Recordset.Seek "=", txt_Code.Text
↑で「カレントレコードはありません」
というメッセージが表示されます。
停止はしないのですが、このメッセージを
表示しないようにはできないのでしょうか?
ご教授お願いします。


Data1.Recordset.Index = "金融コード"
Data1.Recordset.Seek "=", txt_Code.Text
If Data1.Recordset.NoMatch = False Then
MsgBox "金融コードは重複しています。", vbCritical
txt_Code.SetFocus
Data1.Recordset.Bookmark = Book
CheckFlg = 1
Exit Sub
Else
Data1.Recordset.Bookmark = Book
End If


No.4375 Re: 英語版OSでDBCS文字を表示するには?  投稿者:けん [02/4/15(月)10:19分]

K.J.Kさん、こんにちは

Midは、どうやらちゃんと動いてるみたいですね。
原因はその他にある様なので
再度、書き直してみます。
今までありがとうございました。

No.4374 Re: VBが自動で作るプロシージャを他から呼びだせるか    投稿者:kiiya [02/4/14(日)10:07分]

とろさん、ありがとうございました。安心して使います。

No.4373 「質問の仕方」の手引  投稿者:NAO★ [02/4/13(土)17:26分]

質問される前に、読んでおくといいと思われる

「質問の仕方」の手引きです。

『技術系メーリングリストで質問するときのパターン・ランゲージ 結城浩』
http://www.hyuki.com/writing/techask.html

少しやりすぎな部分もありますが、見出しの中から見といて
損は無いとこだけを抜き出してみました。

>表題 ―― あいさつではなく用件を書きましょう
>書き出し ―― 最初に問題の要旨を書きましょう
>実行手順 ―― 手順は箇条書きで書きましょう
>結果の予想 ―― 期待した結果を書きましょう
>実際の結果 ―― 実際に起きたことを書きましょう
>ステップ明記 ―― どこからうまく行かなくなったかを書きましょう
>実際の値 ―― 条件を具体的に書きましょう
>エラーメッセージ ―― 必ずコピー・アンド・ペーストしましょう
>判断理由 ―― そのように考えた理由を書きましょう
>文献の引用 ―― 読者の手間を省くように書きましょう
>ソース ―― 関連する部分を抽出して示しましょう
>環境 ―― 自分の環境をはっきり書きましょう
>過去ログ ―― 投稿前に過去ログを読みましょう
>検索エンジン ―― 投稿前に、自分で検索してみましょう
>まとめのメール ―― 投稿した本人が要点を簡潔にまとめましょう

上記のあたりは読んでいただくと
返事を書きやすいかも…

私が書くのもなんですが…

No.4372 RE:VB上のボタンからツールバーを表示する方法  投稿者:ttt [02/4/13(土)13:41分]

花ちゃんさん、NAO★さん、回答ありがとうございます。

試してみたら、両者のやり方でスタートメニュー表示できました。
ありがとうございます。
後、2重投稿申し訳ありませんでした。

No.4371 Re: エディター  投稿者:K.J.K. [02/4/13(土)13:30分]

無理も何も、今はどのようにして実装している、しようとしている、のかが

わからないと、何もアドバイスできませんけど。

普通は、PictureBoxなどにプレビューイメージを描画しますよね。

No.4370 エディター  投稿者:ライ [02/4/13(土)12:59分]

えーとぉ、とりあえず、原型はできていて、

あとはプレビュー機能を追加するだけなんです。

無理でしたら、あきらめますが・・・・

No.4369 エディターのプレビュー (Re: たびたびすいません。)  投稿者:K.J.K. [02/4/13(土)12:21分]

って、今はどのようなことをしているのでしょう。

とりあえず、上手く描画してください、としか言いようがありません。

No.4368 たびたびすいません。  投稿者:ライ [02/4/13(土)12:16分]

こんにちは。

なんとか、いい感じのエディターができたんですが、
保存する前に、どんな感じに仕上がっているのかプレビューできるようにしたいんです。
どんなにがんばってもエラーばかりで(TT)
ご返答お待ちしております。

でわ

No.4367 Re: ウィンドウクラス名の変更  投稿者:K.J.K. [02/4/13(土)12:03分]

単純に仕様を見直すべきかと。

というか、事前の調査をもっとしておくべきだったのでは。

No.4366 Re: ウィンドウクラス名の変更    投稿者:田中美夕 [02/4/13(土)11:00分]

>フォームであるウィンドウのウィンドウクラス名は「ThunderForm(DC)」ですよね。

>これはダイアログと同じでそのまま使うものです。
ぐはっ・・・VC++でも代えるには、特別な処理をしたんだが・・・
くそーVC++と同じで、そのまま使うしかないんですか(泣

いやー、アプリ間メッセージのやり取りで
送信側で
FindWindow("相手のウィンドウクラス名", vbNullString)
でウィンドウハンドルを取得して
GetWindow(hwindow, GW_CHILD)で
そのウィンドウハンドルの子ハンドルを取得し
子のハンドルのウィンドウクラス名が、ある文字列であったら
その子ハンドルを
SendMessage(hwd As Long, msg As Long, wpara As Long, lpara As Long)
のhwd にいれて、相手のアプリにメッセージを送ろうと思ってます。

現在子ハンドルの考えはなしで、
VBで作った送信アプリ、VCで作った受信アプリでは
メッセージ送信の動作確認はできてます。

で、問題なのはVC受信アプリから、VB送信アプリにメッセージを送るのに
VCで、最初に記述したように子ハンドルをつかってSendMessageで送っているため
VBで親のウィンドウクラス名と子のウィンドウクラス名は、必要になります。
そのため、Form1を子ウィンドウ、その親ウィンドウ(?)を用意したいんです。
どうしたら、いいんでしょうか?

VCでは、SDIで作成した場合C***View(ダイアログ)を子ハンドル
親にCMainFrame(ダイアログの周りフレーム?)というものができたのですが・・・


No.4365 re:破損ファイル  投稿者:ライ [02/4/13(土)10:58分]

解決しました。

ありがとうございました。
(HPを作ってるから癖になってました)
でわ

No.4364 Re: ウィンドウクラス名の変更  投稿者:K.J.K. [02/4/13(土)10:32分]

フォームであるウィンドウのウィンドウクラス名は「ThunderForm(DC)」ですよね。

これはダイアログと同じでそのまま使うものです。

質問の内容からすると、ウィンドウテキスト(Captionプロパティ)か
オブジェクトクラス名(Nameプロパティ)のことですよね。どちらも
デザイン時のプロパティウィンドウで変更できますけど。

# あとは、VC++のダイアログエディターから類推できるでしょう。

No.4363 ウィンドウクラス名の変更  投稿者:みゆ [02/4/13(土)1:13分]

VB6.0の新規で標準EXEを選択した場合

Form1ができてます。
このForm1のウィンドウクラス名を変更する方法って
あるのですか?

最近毎日のようにカキコしているなー私って(w

No.4362 Re: 英語版OSでDBCS文字を表示するには?  投稿者:K.J.K. [02/4/12(金)20:19分]

英語版でも、Midなどは問題なく動くはずですけど。

その「あ」という文字をどのように渡しているのでしょうか?

No.4361 re:破損ファイル・・・  投稿者:NAO★ [02/4/12(金)19:43分]

どの段階でファイルが壊れているのかチェックしましょう

1ファイルを作った段階
2ファイルを圧縮した段階
3サーバーにアップした段階
4サーバーからダウンロードした段階
5ファイルを解凍する段階

予想だと3でアップするときバイナリでアップしていない、かな?
でなければ2で使っている圧縮ルーチンがおかしいのでしょう。

No.4360 RE:VB上のボタンからツールバーを表示する方法  投稿者:NAO★ [02/4/12(金)19:38分]

ナイスなタイミングですね。

ちょうど今日書き込んだ
RE:SendInput API で VK_SHIFT が動作不良(Win2000以降)[投稿者 NAO★] [02/4/12(金)11:39分]
で、サンプルのPrivate Sub Command1_Click()の中身を以下のように変更
すればできますよ

Private Sub Command1_Click()
Dim InputEvents(0 To 5) As INPUT_TYPE
Dim KeyEvent As tagKEYBDINPUT
Dim i As Integer
For i = 0 To 5
InputEvents(i).type = INPUT_KEYBOARD
Next
'Windowsキーを押して離す
KeyEvent = keybd(VK_RWIN, 0)
CopyMemory InputEvents(0).ki(0), KeyEvent, Len(KeyEvent)
KeyEvent = keybd(VK_RWIN, KEYEVENTF_KEYUP)
CopyMemory InputEvents(1).ki(0), KeyEvent, Len(KeyEvent)

Call SendInput(2, InputEvents(0), Len(InputEvents(0)))
End Sub


No.4359 RE:VB上のボタンからツールバーを表示する方法  投稿者:花ちゃん [02/4/12(金)19:29分]

スタートボタンを押した状態にしたいなら下記ではだめですか?


Option Explicit
Private Declare Sub keybd_event Lib "user32.dll" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_LWIN = &H5B

Private Sub Command1_Click()
Call keybd_event(VK_LWIN, 0, 0, 0)
Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
End Sub

No.4358 破損ファイル・・・  投稿者:ライ [02/4/12(金)18:43分]

こんばんは。

テキストエディターを作ってみたんですが。
フォルダーに入れる→圧縮する→サーバーへUPする→DLする
このような作業を行って解凍すると破損ファイルと表示されます。
一部の方は、他のアプリケーションで使われていますなどと
メッセージがでて使えないようです。
いったいどうすれば?
気になる圧縮URL↓
http://pureweb.jp/~rai/youiv3.zip

No.4357 VB上のボタンからツールバーを表示する方法  投稿者:ttt [02/4/12(金)18:00分]

はじめまして、

質問ですが、今VBのフォームによってツールバーが隠れた状態になっています。
この画面でVBのボタンを押すことによってツールバーを表示する方法は無いでしょうか?
キーボードは挿していませんので、Ctrl+Escは出来ません。
あくまで、VB上のコマンドボタンからのみです。
ちなみにSendkeys "^{ESC}", Trueは駄目でした。
方法ありましたら教えて下さい。お願いします。

No.4356 Re: 英語版OSでDBCS文字を表示するには?  投稿者:けん [02/4/12(金)17:10分]

K.J.Kさん、どうもありがとうございました

おかげで表示できるようになりました

もう一つ質問があるのですが。。。
今まで文字を一つ一つ表示させてきたのですが
(EX)
str="abcあdef"

For I=1 to Len(str)

str1=Mid(str,I,1)

(中略)

TextOut hDC, X, Y, str1, LenB(StrConv(str1, vbFromUnicode))

Next I

英語版では"あ"が一文字として取り出せないのですが
"str1=Mid(str,I,1)"
    ↑
ここをどう変えれば

bytBuf = StrConv(str1, vbFromUnicode, 1041)
Call TextOut(hDC, X, Y, bytbuf(0), (UBound(bytBuf) - LBound(bytBuf) + 1&))


これを使えるのでしょうか?

No.4355 Re: ファイル読込  投稿者:花ちゃん [02/4/12(金)14:54分]

速さを求めるならバイナリで読み込んだら


左にフレームの ファイル操作関係参照

No.4354 Re: ファイル読込  投稿者:海夢 [02/4/12(金)13:42分]

>> APIを使用してファイルの行単位読込を行いたいのですが、良いアイデアはありませんか?

>>
>> 現状は、ReadFileを使用しファイル一括読込となっているのですができればこの機能に
>> 汎用性を持たせたいのですが…

>なんで、 API なのですか?
>Line Input # ではいけないのですか?

確かにLine Input # でもこと足りるのですが
速さをちょっと追求しようかと思ったのです。で、APIを使用しようかと。。。

No.4353 帳票印字のイメージデータ保存  投稿者:あやめ [02/4/12(金)13:16分]

いつも拝見させて頂いています。


帳票作成を行っているのですが、ヘッダー部のイメージを
どこかに保存する方法はないでしょうか?
ヘッダー部は、7行ぐらいあり、またフォントサイズも可変です。
PictureBoxに保存したのですが、文字が汚くて・・・。

何か良い方法ありましたらご教授のほど宜しくお願いします。

Windows2000,VB6(SP5)

No.4352 RE:SendInput API で VK_SHIFT が動作不良  投稿者:花ちゃん [02/4/12(金)13:11分]

NAO★ さん ありがとうございます。

あれから再度WEBで検索し、片っ端から見ていたら下記で 
”Windows2000 で VK_SHIFTがうまく送れない現象にもスキャンコードを指定することで対応しています。”
と書いていたのを参考にkeybd_event APIと同様に試して見たら動作するようになりました。

http://www.nifty.ne.jp/forum/fdelphi/samples/01243.html


No.4351 RE:SendInput API で VK_SHIFT が動作不良(Win2000以降)  投稿者:NAO★ [02/4/12(金)11:39分]

これでWindows2000では動作しました。

MapVirtualKey APIでスキャンコードを得ることが必要なようです

Option Explicit
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" _
                                  (ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Declare Function SendInput Lib "user32.dll" _
(ByVal nInputs As Long, pInputs As INPUT_TYPE, _
ByVal cbsize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" _
Alias "RtlMoveMemory" (Destination As Any, Source As Any, _
ByVal Length As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SHIFT = &H10
Private Const VK_HOME = &H24
Private Const VK_END = &H23
Private Const INPUT_KEYBOARD = 1
Private Const INPUT_MOUSE = 0
Private Const KEYEVENTF_EXTENDEDKEY = &H1

Private Type tagKEYBDINPUT
wVk As Byte
bScan As Byte
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type
Private Type INPUT_TYPE
type As Long
ki(0 To 23) As Byte
End Type

Private Function keybd(VKey As Byte, Flags As Long) As tagKEYBDINPUT
Dim wk As tagKEYBDINPUT
With wk
.wVk = VKey
.dwFlags = KEYEVENTF_EXTENDEDKEY
.dwFlags = .dwFlags + Flags
.dwExtraInfo = 0
.bScan = MapVirtualKey(VKey, 0)
.time = 0
End With
keybd = wk
End Function
Private Sub Command1_Click()
Dim InputEvents(0 To 5) As INPUT_TYPE
Dim KeyEvent As tagKEYBDINPUT
Dim i As Integer
AppActivate "(無題)(更新) - 秀丸"
DoEvents
For i = 0 To 5
InputEvents(i).type = INPUT_KEYBOARD
Next
KeyEvent = keybd(VK_HOME, 0)
CopyMemory InputEvents(0).ki(0), KeyEvent, Len(KeyEvent)
KeyEvent = keybd(VK_HOME, KEYEVENTF_KEYUP)
CopyMemory InputEvents(1).ki(0), KeyEvent, Len(KeyEvent)
KeyEvent = keybd(VK_SHIFT, 0)
CopyMemory InputEvents(2).ki(0), KeyEvent, Len(KeyEvent)
KeyEvent = keybd(VK_END, 0)
CopyMemory InputEvents(3).ki(0), KeyEvent, Len(KeyEvent)
KeyEvent = keybd(VK_END, KEYEVENTF_KEYUP)
CopyMemory InputEvents(4).ki(0), KeyEvent, Len(KeyEvent)
KeyEvent = keybd(VK_SHIFT, KEYEVENTF_KEYUP)
CopyMemory InputEvents(5).ki(0), KeyEvent, Len(KeyEvent)

Call SendInput(6, InputEvents(0), Len(InputEvents(0)))
End Sub

前のログ 次のログ


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