前のログ | 次のログ |
No.3350 RE:VBでの印刷処理 投稿者:匿名 [01/12/04(火)15:44分]
RS-232Cなら・・・(こっちしか知らない(^_^;))
送信タイムアウトや CTSの確認で 「電源が入っていないのではないか?」
が検知できるのではないでしょうか。
・・・で送信バッファーをクリアすれば
>電源をつけたら印刷物が出てきてしまいます。
・・・と言う事はないと思います。
電源ON中のエラーはプリンターから 返って来ると思います。
バーコードプリンターにもよりけりなので なんとも言えませんが・・・。
No.3349 MAPIMessagesで送信してくれない。 投稿者:ゆうこ [01/12/04(火)15:11分]
VB 5.0(SP3) MAPIMessagesコントロールを使用してメールの自動送信のプログラムを作成しています。
下記の用にメールアドレスなどを指定して
Index = Me.MAPIMess.RecipCount
MAPIMess.RecipIndex = Index
MAPIMess.MsgSubject = "送信するメールのタイトル"
MAPIMess.MsgNoteText = "送信するテキストの内容"
MAPIMess.MsgReceiptRequested = ReturnRequest
MAPIMess.RecipDisplayName = "送信先アドレス@hotmail.com"
MAPIMess.Action = vbMessageResolveName
MAPIMess.RecipType = vbRecipTypeTo
下記の用にダイアログを開き
MAPIMess.Action = vbMessageSendDlg
送信ボタンを押すと送信され 実際にメールも届いているのですが
下記の用にダイアログを開かない。にすると
MAPIMess.Action = vbMessageSend
送信中のウィンドウは表示され 完了し あたかも正常終了したように見えるのですが
実際にはメールが届いていません。
どなたか ご存知の方居ませんか?。
No.3348 IE5のイベント取得方法について 投稿者:たここ [01/12/04(火)14:49分]
解決方法が見つかりました。
HTMLページを表示している場合、InternetExplorerオブジェクトのdocumentプロパティは、
HTMLドキュメントオブジェクトを返しますので、DocumentCompleteイベントなどを利用して、
このdocumentプロパティを取得し、そこから、HTMLタグを辿ればOKかと思います。
なお、タグの辿り方はいろいろありますが、例えばそのタグにidが定義されている場合は、
getElementByIdメソッドを使って取得できます。あるいは allプロパティで列挙することもできるでしょう。
詳細は、MSDNライブラリの"Web Workshop"か、DHTML関係の解説書などを参考にしてみてください。
とのことです。
お騒がせしました。
某掲示板より
No.3347 re: カウントを取りながらインサートしたい 投稿者:とと [01/12/04(火)14:48分]
ゴメンナサイ。間違いありました。
Cnt = 0
Do Until rs.Eof
If paramSID <> rs.Fields("設備ID").Value Then
~~~~~~~※間違いでした
If Cnt > 0 Then
insertSetsubiDL = "insert into 設備マスタDL(設備ID,
開始予定時刻, 終了予定時刻, 検査総数) " _
& "values (" & paramSID & ", #" _
& paramTimeS & "#, #" _
& paramTimeE & "#, " _
& Cnt & ")"
qy.ActiveConnection = conn
qy.CommandText = insertSetsubiDL
qy.CommandType = adCmdText
qy.Execute Rows
End If
'1件目の処理
Cnt = 0
paramSID = rs.Fields("設備ID").Value
paramTimeS = rs.Fields("作業開始予定時刻").Value
paramTimeE = rs.Fields("作業終了予定時刻").Value
End If
'件数カウント
Cnt = Cnt + 1
'開始時刻
If paramTimeS > rs.Fields("作業開始予定時刻").Value Then
paramTimeS = rs.Fields("作業開始予定時刻").Value
End If
'終了時刻
If paramTimeE < rs.Fields("作業終了予定時刻").Value Then
paramTimeE = rs.Fields("作業終了予定時刻").Value
End If
rs.MoveNext
Loop
No.3346 VBでの印刷処理 投稿者:向井克己 [01/12/04(火)14:19分]
バーコードプリンターをVBを使って操作しているんですが
プリンターの電源が付いていない時に印刷処理をイけてエラーを出したいの
ですが(つまり印刷処理が失敗した時、印刷物が出なかった時)
印刷処理をぬけてプリンターの電源をつけたら印刷物が出てきてしまいます。
うまくエラーを出す方法があれば教えてほしいのですが。
よろしくおねがいします。
No.3345 Re:ListBoxの格納文字数 投稿者:ゆう(U) [01/12/04(火)14:07分]
> ListBoxにデータを格納したのですが、1行のデータ長が長いのか
> 途中でデータが切れてしまいます。
「リストボックスコントロール」の幅を超えている
だけなのではないですか?
文字数を確認してみてください。
例)
Debug.Print Len(List1.List(List1.ListIndex))
> ListBoxの1行の最大格納バイト数はいくらでしょうか。
試してみてください。
例)
List1.AddItem String(1024, "A")
Debug.Print Len(List1.List(List1.NewIndex))
※1024を変更しながら・・・
No.3344 Re:画像を90度回転表示する方法 投稿者:ゆう(U) [01/12/04(火)13:49分]
原因がわかりました・・・
BITMAPINFOの定義に問題があったのと、DCに選択された
状態のままGetDIBits/SetDIBitsした事が失敗でした。
今度ので動作確認してみてください。
※Win2000(SP2)/VB6.0(SP5)/32Bit Colorで動作確認済み
なお、プロジェクトのプロパティで条件付きコンパイル引数
WinXX=-1(BITMAPINFO用)を環境に合わせて変更してください。
※詳しくは「条件付きコンパイルの使い方」を参照
サンプル)
Private Declare Function CreateCompatibleDC Lib "gdi32" _
(ByVal hDC As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" _
(ByVal hDC As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" _
(ByVal hDC As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long) As Long
Private Declare Function SelectObject Lib "gdi32" _
(ByVal hDC As Long, _
ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" _
(ByVal hObject 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 Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(ByRef pDest As Any, _
ByRef pSource As Any, _
Optional ByVal ByteLen As Long = 4&)
Private Declare Function GetDIBits Lib "gdi32" _
(ByVal aHDC As Long, _
ByVal hBitmap As Long, _
ByVal nStartScan As Long, _
ByVal nNumScans As Long, _
ByRef lpBits As Any, _
ByRef lpBI As BITMAPINFO, _
ByVal wUsage As Long) As Long
Private Declare Function SetDIBits Lib "gdi32" _
(ByVal hDC As Long, _
ByVal hBitmap As Long, _
ByVal nStartScan As Long, _
ByVal nNumScans As Long, _
ByRef lpBits As Any, _
ByRef lpBI As BITMAPINFO, _
ByVal wUsage As Long) As Long
Private Declare Function GetObject Lib "gdi32" _
Alias "GetObjectA" _
(ByVal hObject As Long, _
ByVal nCount As Long, _
ByRef lpObject As Any) As Long
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Private Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
#If Win95 Or WinNT4 Or Win98 Or WinNT5 Then
bV4RedMask As Long
bV4GreenMask As Long
bV4BlueMask As Long
bV4AlphaMask As Long
bV4CSType As Long
bV4Endpoints As Long
bV4GammaRed As Long
bV4GammaGreen As Long
bV4GammaBlue As Long
#End If
#If Win98 Or WinNT5 Then
bV5Intent As Long
bV5ProfileData As Long
bV5ProfileSize As Long
bV5Reserved As Long
#End If
End Type
Private Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End Type
Private Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As RGBQUAD
End Type
Public Sub PicRotation(ByRef myPicture As PictureBox)
Const DIB_RGB_COLORS = 0&
Const SRCCOPY = &HCC0020
Dim myBMP As BITMAP
Dim myBMPINFO1 As BITMAPINFO
Dim myBMPINFO2 As BITMAPINFO
Dim lhDC As Long
Dim lngHDC As Long
Dim hDC_Def As Long
Dim lngHDC_Def As Long
Dim hBitmap As Long
Dim lngHBITMAP As Long
Dim lngResult As Long
Dim bytArray() As Byte
Dim bytArray2() As Byte
Dim lngColorBytes As Long
Dim X As Long, Y As Long
Dim lngWidth As Long, lngHeight As Long
Dim blnReDraw As Boolean
Dim blnVisible As Boolean
Dim myContainer As Object
With myPicture
'継続表示属性を・・・
blnReDraw = .AutoRedraw
.AutoRedraw = True
'表示状態を・・・
blnVisible = .Visible
.Visible = False
'コンテナーがピクチャーボックス・フォーム以外なら
If Not (TypeOf .Container Is PictureBox Or .Container Is .Parent) Then
'コンテナーを待避
Set myContainer = .Container
'フォームをコンテナーにしておく(Scale系メソッド等を使うため)
Set .Container = .Parent
End If
'BITMAP 構造体を取得
lngResult = GetObject(.Picture.Handle, Len(myBMP), myBMP)
'サイズを取得
lngWidth = myBMP.bmWidth
lngHeight = myBMP.bmHeight
'メモリ上にDCを作成
lhDC = CreateCompatibleDC(.hDC)
lngHDC = CreateCompatibleDC(.hDC)
'ビットマップオブジェクトの作成
hBitmap = CreateCompatibleBitmap(.hDC, lngWidth, lngHeight)
lngHBITMAP = CreateCompatibleBitmap(.hDC, lngHeight, lngWidth)
'メモリDCへビットマップを割付
hDC_Def = SelectObject(lhDC, hBitmap)
'元絵をコピー
lngResult = BitBlt(lhDC, 0&, 0&, lngWidth, lngHeight, .hDC, 0&, 0&, SRCCOPY)
'メモリDCからビットマップを解除
lngResult = SelectObject(lhDC, hDC_Def)
'元絵を抹消
Set .Picture = LoadPicture("")
'BITMAP 構造体を取得
lngResult = GetObject(hBitmap, Len(myBMP), myBMP)
'サイズを取得
lngWidth = myBMP.bmWidth
lngHeight = myBMP.bmHeight
'バイト数/ピクセルを取得
lngColorBytes = myBMP.bmWidthBytes \ lngWidth
'幅を4の倍数にバイト数調整
lngResult = (lngWidth * lngColorBytes + 3) And &HFFFFFFFC
'配列を確保(元画像用)
ReDim bytArray(0 To lngResult - 1, 0 To lngHeight - 1)
'BITMAPINFOを取得
myBMPINFO1.bmiHeader.biSize = Len(myBMPINFO1.bmiHeader)
lngResult = GetDIBits(lhDC, hBitmap, 0, lngHeight, ByVal 0&, myBMPINFO1, DIB_RGB_COLORS)
'色情報を取得
lngResult = GetDIBits(lhDC, hBitmap, 0, lngHeight, bytArray(0, 0), myBMPINFO1, DIB_RGB_COLORS)
'BITMAP 構造体を取得
lngResult = GetObject(lngHBITMAP, Len(myBMP), myBMP)
'サイズを取得
lngWidth = myBMP.bmWidth
lngHeight = myBMP.bmHeight
'バイト数/ピクセルを取得
lngColorBytes = myBMP.bmWidthBytes \ lngWidth
'幅を4の{数にバイト数調整
lngResult = (lngWidth * lngColorBytes + 3) And &HFFFFFFFC
'配列を確保(加工後用)
ReDim bytArray2(0 To lngResult - 1, 0 To lngHeight - 1)
'BITMAPINFOを取得
myBMPINFO2.bmiHeader.biSize = Len(myBMPINFO2.bmiHeader)
lngResult = GetDIBits(lngHDC, lngHBITMAP, 0, lngHeight, ByVal 0&, myBMPINFO2, DIB_RGB_COLORS)
'色情報を取得
lngResult = GetDIBits(lngHDC, lngHBITMAP, 0, lngHeight, bytArray2(0, 0), _ myBMPINFO2, DIB_RGB_COLORS)
'色の転記
For Y = 0 To lngHeight - 1
For X = 0 To lngWidth - 1
Call CopyMemory(bytArray2(X * lngColorBytes, lngHeight - (Y + 1)), _ bytArray(Y * lngColorBytes, X), lngColorBytes)
Next
Next
'元の色情報は不要
Erase bytArray
'絵を作成
lngResult = SetDIBits(lngHDC, lngHBITMAP, 0, lngHeight, bytArray2(0, 0), _ myBMPINFO2, DIB_RGB_COLORS)
'新しい色情報も不要
Erase bytArray2
'縦横を変更
.Move .Left, .Top, _
.Container.ScaleX(.Container.ScaleY(.Height, .Container.ScaleMode, vbPixels), _ vbPixels, .Container.ScaleMode), _
.Container.ScaleY(.Container.ScaleX(.Width, .Container.ScaleMode, vbPixels), _ vbPixels, .Container.ScaleMode)
'メモリDCへビットマップを割付
lngHDC_Def = SelectObject(lngHDC, lngHBITMAP)
'更新後の絵を・・・
lngResult = BitBlt(.hDC, 0&, 0&, lngWidth, lngHeight, lngHDC, 0&, 0&, SRCCOPY)
'メモリDCからビットマップを解除
lngResult = SelectObject(lngHDC, lngHDC_Def)
'後始末
lngResult = DeleteObject(hBitmap)
lngResult = DeleteObject(lngHBITMAP)
lngResult = DeleteDC(lhDC)
lngResult = DeleteDC(lngHDC)
'新Pictureに設定
Set .Picture = .Image
'元のコンテナーに戻す(Left/Topは元のまま)
If Not (myContainer Is Nothing) Then
Set .Container = myContainer
Set myContainer = Nothing
End If
'表示状態を元に戻す
.Visible = blnVisible
'継続表示属性を元に戻す
.AutoRedraw = blnReDraw
End With
End Sub
No.3343 RE:HTMLから自動的に画像の取り込みを行うには? 投稿者:NAO★ [01/12/04(火)13:49分]
アイデアだけ。
インターネットトランスファー (Inet) コントロールでHTTPプロトコルを
使って取りこんだらどうでしょうか?
No.3342 カウントを取りながらインサートしたい 投稿者:やすきち [01/12/04(火)11:57分]
[OSのVer]Windows2000
[VBのVer]VB6.0
レコードセットをループしながら別テーブルに一件ずつインサートしたい
のですが、行き詰まっています。どなたか教えてください。
現状は、
レコードセットA(項目:設備ID、検査開始時間、検査終了時間)があります。
このレコードには設備IDが同じで検査開始、終了時間が異なるデータが複数あります。
テーブルX(項目:設備ID、検査開始時間、検査終了時間、検査総数)があります。
今、レコードセットAを一件ずつループさせて設備IDごとにカウントをとって
テーブルXの検査件数にインサートしたいのです。かつ、レコードセットAの設備ごとに
最古の検査開始時間と最新の検査終了時間をテーブルXにインサートしようとしています。
例をあげると、レコードセットAに以下のようなレコードがあるとします。
設備ID 検査開始時間 検査終了時間
1 2001/1/1 17:00 2001/1/1 19:00
1 2001/1/1 18:00 2001/1/1 20:00
1 2001/1/1 19:00 2001/1/1 21:00
1 2001/1/1 20:00 2001/1/1 22:00
このレコードを、テーブルXにインサートすると
設備ID 検査開始時間 検査終了時間 検査総数
1 2001/1/1 17:00 2001/1/1 22:00 4
となるようにしたいのです。
自分でもやってみたのですが、件数を取る時点ですでにうまくいかず困っています。
以下に自分の書いたコードを書いておきます。
Dim StID as Long
Dim paramSID as Long
Dim paramTimeS as Date
Dim paramTimeE as Date
Dim qy as ADODB.Command
For i = 1 To rs.RecordCount
If StID = rs.Fields("設備ID").Value Then
Cnt = Cnt + 1
paramSID = rs.Fields("設備ID").Value
paramTimeS = rs.Fields("作業開始予定時刻").Value
paramTimeE = rs.Fields("作業終了予定時刻").Value
Else
If Cnt = 1 Then
paramSID = rs.Fields("設備ID").Value
paramTimeS = rs.Fields("作業開始予定時刻").Value
paramTimeE = rs.Fields("作業終了予定時刻").Value
End If
insertSetsubiDL = "insert into 設備マスタDL(設備ID,
開始予定時刻, 終了予定時刻, 検査総数) " _
& "values (" & paramSID & ", #" _
& paramTimeS & "#, #" _
& paramTimeE & "#, " _
& Cnt & ")"
qy.ActiveConnection = conn
qy.CommandText = insertSetsubiDL
qy.CommandType = adCmdText
qy.Execute Rows
StID = rs.Fields("設備ID").Value
Cnt = 1
End If
Next i
よろしくお願いします。
No.3341 HTMLから自動的に画像の取り込みを行うには? 投稿者:tora [01/12/04(火)11:07分]
会社のネット上に検索システムがあり検索したページに表示されたHTMLから 自動的に画像の取り込みを行うにはどうしたらよいでしょうか
(ページには1個の画像(gif)が必ず貼り付けてあります)
・ftpはつかえません。
・会社のシステムも変更できません。
まったくアイデアイが浮かびません.よろしくおねがいします。
No.3340 ListBoxの格納文字数 投稿者:vino [01/12/04(火)11:02分]
ListBoxにデータを格納したのですが、1行のデータ長が長いのか
途中でデータが切れてしまいます。
ListBoxの1行の最大格納バイト数はいくらでしょうか。
教えて下さい。
No.3339 Re:ツリービューについて 投稿者:ゆう(U) [01/12/04(火)10:54分]
●読みやすいように改行を入れてください
> そこで、ツリービュー初期化し、またDBの内容をツリービューに展開させるのですが、
> こうしますと一番最初のツリービューの状態になってしまいます。
の削除や更新をDBに反映させておけばいいだけでしょう。
※DB更新が許されていなければ、変更・削除の履歴を
保存し、再表示後に履歴の内容を反映させるだけ…
更新・削除用に、NodeのキーをDB内のIndex(一意)に
しておくとか・・・
No.3338 ツリービューについて 投稿者:マー坊 [01/12/03(月)23:01分]
ツリービューについてお聞きしたいことがありまして投稿させて頂きます。
DBのデータをツリービューに表示します。そしてマウスでクリックをして子ノードを 増やしていきます。その後にツリービューに表示されている内容を削除、 または更新などをします。そのとき、ただ削除や更新をするだけでは、 ツリービューに表示されている内容は削除や更新などをする前の内容しか ツリービューには表示されません。そこで、ツリービュー初期化し、 またDBの内容をツ梶[ビューに展開させるのですが、こうしますと一番最初の ツリービューの状態になってしまいます。
私としては削除や更新した時のツリービューの状態にしたいのですが、 その方法がわかりません。何かいい方法をアドバイス下さい。お願い致します。
No.3337 IE5のイベント取得方法について 投稿者:たここ [01/12/03(月)16:18分]
こんにちは。
VB6でIE5を操作しているのですが、IEで発生したイベント(submit、linkなど)を
取得したいのですが、方法がわかりません。
どなたか教えていただけませんか?
宜しくお願いいたします。
-------------------------------------------------------------------
No.3336 RE:RE:ActiveForm ? 投稿者:靴下カタオ [01/11/30(金)23:14分] http://www.KenAshizuka.com/
NAO★さん、どうもすみません。
コードを Form1 に記述していました。
MDIForm1 に移すことによって、
正常に動くようになりました。
ご返事がおくれてすみませんでした。
とうもありがとうございました。
No.3335 RE:ドラッグで範囲指定(ドラッグ・アンド・ドロップ) 投稿者:あき☆彡 [01/11/30(金)19:16分]
>それをもう1つのリストボックスにドラッグドロップするには
>どうしたらよいのでしょうか??
参考になると思います。
↓
http://www.microsoft.com/japan/developer/library/jptech/MSDNNews/drgdrp.htm
それでは、頑張って下さいね。
No.3334 Re:ドラッグで範囲指定 投稿者:NAO★ [01/11/30(金)19:03分]
ドラッグで範囲指定するには
MultiSelectプロパティを2(拡張)にすればいいのですが
ドラッグしたままコントロールの外に出ても範囲選択モードが効いたまま (上下に動かすと選択範囲が変わる)なので
ドラッグ・アンド・ドロップ出来ないと思います。
操作方法をShiftキーを使って複数選択するようにするとか、
ドラッグ・アンド・ドロップを止めてポップアップメニューでコピーするように変えるのが楽そうです。
試していませんが、MouseMoveイベントを監視して
マウスがコントロールの外に出たらMultiSelectを1に変えるという方法も使えるかも…
と思ったのですが、MultiSelectプロパティは読み込み専用だったのでダメですね。
No.3333 ドラッグで範囲指定 投稿者:もも [01/11/30(金)16:45分]
リストボックスでドラッグによる範囲指定を行いたい、
それをもう1つのリストボックスにドラッグドロップするには
どうしたらよいのでしょうか??
No.3332 RE:配列の削除 投稿者:NAO★ [01/11/30(金)16:18分]
やりたいことがエクセルとか表の行削除のようなことを
やりたいみたいなので配列の削除にこだわるのだと思いますが
たとえば
削除したい行に絶対に使用しないような削除キーワード
をつけて、表示や、保存するときにキーワードのある行は
処理を飛ばすようにしたらどうでしょう?
Array(0)="1行目"
Array(1)="2行目"
Array(2)="_%%_削除行_%%_" このキーワードがある行は表示しない
Array(3)="4行目"
No.3331 配列の削除の解決報告 投稿者:banana [01/11/30(金)16:16分]
Eraseステートメントは、配列全ての削除だったのですね。
NAOさん、はなちゃん、あきさんに教えていただいた方法で行ってみます。
ありがとうございました。
No.3330 RE:配列の削除 投稿者:NAO★ [01/11/30(金)16:01分]
配列の最後の要素ならRedimを使うという手もありますが
配列の途中の要素をなくすという事は無理です。
たとえば
Arr(0)
Arr(1)
Arr(2) ←これだけ削除するのは無理だけど、これ以降の要素(2)(3)(4)をまとめて削除は可能
Arr(3)
Arr(4)
削除というか、要素の数を変更という感じですね。
今回の場合、空文字列を代入ぐらいしかできないでしょう
PSD(1, i)=""
PSD(2, i)=""
No.3329 RE:配列の削除 投稿者:花ちゃん [01/11/30(金)15:56分]
>(1,i) (2,i)と指定をしたい場合は、どのように行えばよいのでしょうか?
>Erase PSD(1, i), PSD(2, i)
要素の変更ではないようなら、配列の中身をクリアしたらどうですか?
PSD(1, i)="" :PSD(2, i)=""
No.3328 RE:RE:配列の削除 投稿者:あき☆彡 [01/11/30(金)15:49分]
>(1,i) (2,i)と指定をしたい場合は、どのように行えばよいのでしょうか?
それは配列の削除ではなく、
単に(1,i) (2,i)をクリアしたいと言う事ですよね。
PSD(1, i) = ""
PSD(2, i) = ""
とすれば良いのでは?
No.3327 RE:配列の削除 投稿者:banana [01/11/30(金)15:42分]
(1,i) (2,i)と指定をしたい場合は、どのように行えばよいのでしょうか?
配列の削除で行のみの削除は出来ますか??
教えて下さい。
No.3326 RE:配列の削除 投稿者:NAO★ [01/11/30(金)15:13分]
Erase 文は配列のすべての要素を初期化すると考えた方がいいでしょう
ですのでErase PSD (1,i)といった指定の仕方ではなく
Erase PSD
という指定の仕方しかできません。
No.3325 RE:配列の削除 投稿者:あき☆彡 [01/11/30(金)15:08分]
>配列の削除を行いたいのですが、Eraseステートメントの部分で「配列がありません。」
>というエラーになってしまいます。
>何が行けないのでしょうか?ヘルプを見たのですがイマイチ分からないのですが・・。
>Erase PSD(1, i), PSD(2, i)
PSDは配列ですがPSD(1, i)やPSD(2, i)は配列ではないからです。
テキストと比較してるから型はStringでしょうか?
TypeName 関数で変数を見てみると・・・
Debug.Print TypeName(PSD)
は
String()
とStringの配列ですが、
Debug.Print TypeName(PSD(1,1))
は
String
となります。
PSD(1,1)はStringなので、
「配列がありません。」
とエラーになってしまいます。
Erase PSD
はStringの配列なのでエラーにはなりません。
う〜ん(−−; 上手く説明できません・・・(^^;
No.3324 配列の削除 投稿者:banana [01/11/30(金)14:26分]
配列の削除を行いたいのですが、Eraseステートメントの部分で「配列がありません。」
というエラーになってしまいます。
何が行けないのでしょうか?ヘルプを見たのですがイマイチ分からないのですが・・。
Private Sub Command2_Click()
i = 1
Do While txt.Text <> PSD(1, i)
i = i + 1
If i = MaxRec Then
Exit Do
End If
Loop
If txt.Text = PSD(1, i) Then
Erase PSD(1, i), PSD(2, i)
End If
'ファイルの削除
'Kill App.Path & "\sample1.txt"
End Sub
No.3323 Re:数値の移動について 投稿者:みかん [01/11/30(金)10:44分]
数値の移動をキューを参考にしてしていろいろやってみたのですが
初心者の私には難しかったので今回は他を変更して移動させずにする方向で解決しました。
よねKENさん、NAO★さん、アドバイスいただいて本当にどうもありがとうございました。
またどうぞよろしくお願いします。
No.3322 ACCESSでフィールドをコピーするには? 投稿者:TOKO [01/11/29(木)23:18分]
質問させていただきます。ACCESSの質問でもいいでしょうか?
mdbファイルを開くと、自動的に
テーブル内のフィールド1に"A"というデータがあれば、
フィールド2に"あ"。
テーブル内のフィールド1に"B"というデータがあれば、
フィールド2に"い"
というデータを入れる処理をしたいのですが、
アドバイスいただけないでしょうか
よろしくお願いします。
No.3321 ビューでのカウント 投稿者:AKT [01/11/29(木)21:33分]
こんにちは。
ビューをSQL文を使ってコードで作成する際、
1レコードごとに1からカウントするSQL文はあるのでしょうか?
すみませんが教えてください。
よろしくお願いします。
No.3320 データレポートでのデータカウント 投稿者:AKT [01/11/29(木)18:30分]
こんにちは。
データレポートで1レコードのデータずつNo(1〜)をつけていきたいのですが
RptFunctionテキストボックスだと詳細セクションに貼り付けできないので
他のでやってみようと思ったのですがうまく行きません。
コードでカウントはできるのでしょうか?
知っておられるからいましたらよろしくお願いします。
No.3319 EXCELファイルの更新について 投稿者:さいちゃん [01/11/29(木)18:07分]
AAA.XLSを開いていて→VBでBBB.XLSファイルを開いて
→シート名(B01)に’XXX’文字転送→BBB.XLSファイルを更新して終了。
この場合、カレントレコードがありませんのエラーが表示されて更新できません。
どなたか知っている方よろしくお願いします。
No.3318 RE:コンボボックス 投稿者:花ちゃん [01/11/29(木)13:17分]
これか
Private Sub Combo1_Click()
Text1.Text = Combo1.Text
End Sub
これを試して下さい
Private Sub Text1_GotFocus()
Text1.Text = Combo1.Text
End Sub
No.3317 RE:ActiveForm ? 投稿者:NAO★ [01/11/29(木)12:37分]
今気がついたけれど
プログラムをMDIForm1に記述して「ますか?
Form1に置いたままじゃないですか?
No.3316 コンボボックス 投稿者:ken [01/11/29(木)10:48分]
はじめまして。いつも参考にしてもらっています。CSVファイルの書き込みなどとても参考になりました。
ちょっと緊急の質問なんです。コンボボックスで指定した(例)商品コードの名前をテキストボックスに
表示したいのですが、いい方法はありますか?ボタンとかは使わないので、コンボボックスで選んだら、
すぐ名前が表示されるみたいにしたいのですが。アクセスだとcolum(0)だったかな?使うんですけど。
わかりましたら、お願いします。
No.3315 RE:ActiveForm ? 投稿者:NAO★ [01/11/29(木)9:18分]
試してみましたが、ちゃんと動きましたよ。
考えられるとしたら、メニューの名前が変わっているんじゃ無いでしょうか?
メニューm11をクリックしたときにちゃんとm11_Clickに処理が行っていますか?
m11_Clickにブレークポイントを設定して、メニューをクリックしたときに
処理が止まるか試してみてください。
メニューエディターでメニューを作成したときに
「名前」項目にm11とかm12といった名前を設定しましたか?
まちがって「キャプション」にm11とか設定していませんか?
No.3314 RE:RE:ActiveForm ? 投稿者:靴下カタオ [01/11/29(木)1:19分] http://www.KenAshizuka.com/
NAO★ さん、どうもすみません。
以下のことをやりました。
(1)Form1 のメニューをすべて削除し、
削除したのと同じメニューを MDIForm1 に作りました。
(2)Project1 のプロパティで「スタートアップの設定」で
最初に起動するフォームを MDIForm1 に変えました。
こうして実行すると、MDIForm1 が起動され、
子フォームは表示されていませんでした。
つまり、NAO★ さんがおっしゃったとおりに
なっていると思います。
しかし、これで、m11 をクリックしても、
何も起こりませんでした。
ActiveForm の前に Me.をつけても、
結果に変わりはありません。
念のためにコードを書くと次のようになります
−−−−−−−−−−−−−−−−−−−−−−−−−
Private Sub m11_Click()
Dim f As New Form1
f.Show
End Sub
Private Sub m12_Click()
If Me.ActiveForm Is Nothing Then Exit Sub
Me.ActiveForm.ActiveControl.Text = ""
End Sub
Private Sub m13_Click()
If Me.ActiveForm Is Nothing Then Exit Sub
Unload Me.ActiveForm
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−
(NAO★ さんから教わったとおりです)。
以上ですが、私にはもう何もわかりません … (^^;。
何かおわかりになりましたら、また教えて下さい。
よろしくお願いします。
No.3313 Reポインターの考え方 投稿者:NAO★ [01/11/28(水)17:46分]
C言語的なポインターというのはVBでは使用できません。
たとえば文字列から1文字づつ抜き出すにも通常
Mid$関数を使って取り出します。
(Byte型の配列に文字列を入れればポインター風に処理も出来ますが)
普通の配列ぐらいならポインターを使わなくても
添字を変数で扱えばいいと思います。
また、配列の動的な確保、廃棄もRedim関数を使えば可能です
No.3312 ポインターの考え方 投稿者:puu [01/11/28(水)16:00分]
VBでポインターって出来るのですか?
配列の更新や削除を行いたいのですが。
No.3311 RE:タスクトレイにアイコン追加 投稿者:さおとめ [01/11/28(水)15:45分]
”NAO★”さん、”花ちゃん”さん
ありがとうございます!
”花ちゃん”さんのいわれる通り やってみます。
(アニメーションGIFの要領ですね)
No.3310 RE:タスクトレイにアイコン追加 投稿者:花ちゃん [01/11/28(水)15:23分]
1.アニメーションさせたいアイコンを用意しておきタイマーで入れ替えてフォーム上で
アイコンをアニメーションします。
2.タスクトレイに登録したら、アイコンを入れ替えます。
Private Sub Timer1_Timer()
Dim lngResult As Long
IconNo = IconNo + 1
If IconNo > 12 Then IconNo = 0
Me.Icon = imgIcon(IconNo)
pnid.hIcon = Me.Icon
lngResult = Shell_NotifyIcon(NIM_MODIFY, pnid)
End Sub
No.3309 Re:タスクトレイにアイコン追加 投稿者:NAO★ [01/11/28(水)15:06分]
アニメーションアイコンというのはアニメーションカーソルファイル(.ani)の事だと思いますが
MouseIconプロパティの説明などを見るとVBでは.aniファイルに対応していないようです
WindowsAPIなどでごりごりとやるか、VB.NETが出るまで待つしかないようです。
No.3308 Re:GotFocusイベントについて 投稿者:NAO★ [01/11/28(水)14:41分]
すみません。またボケた事書いていたようです。
変数を使ってもClickイベントの後にもう一度GotFocusイベントが
発生するわけないので、ダメですよね。
(Clickイベントのプロシージャの最後に、
GotFocusのイベントプロシージャをCallするというのも
ありでしょうが)
MouseDown → GotFocus → MouseUp → Click
の順でフォーカスが発生するみたいなので
Clickイベントの代わりにMouseDownイベントを
使ってみたらどうでしょうか?
No.3307 Re:数値の移動について 投稿者:NAO★ [01/11/28(水)13:32分]
過去ログ3020から始まる「キュー」が参考になると思います。
No.3306 Re:GotFocusイベントについて 投稿者:NAO★ [01/11/28(水)13:30分]
訂正
'フラグを元に戻す
Flag = False
でした
No.3305 Re:数値の移動について 投稿者:みかん [01/11/28(水)13:28分]
よねKENさん、早々とお答えいただいてありがとうございますv
すっきりしたコードに感激です。
早速試してみたのですが今回はどうしてもずらしていく必要がありますので
本当にややこしい質問で申し訳ありませんが
ずらしていくいい方法がありましたら引き続きどうぞよろしくお願いします。
No.3304 Re:GotFocusイベントについて 投稿者:NAO★ [01/11/28(水)13:26分]
イベントの順序そのものは変えることが出来ませんが
変数を利用してクリックイベントが起こったときだけ
処理をするようにすれば実現できると思います。
'General部に記述
Private Flag As Boolean
Private Sub Text1_Click()
Flag = True
End Sub
Private Sub Text1_GotFocus()
'フラグが立っていなければ処理を抜ける
If Flag = False Then Exit Sub
'フラグを元に戻す
Flag = True
'何らかの処理
End Sub
No.3303 GotFocusイベントについて 投稿者:なつ [01/11/28(水)12:05分]
GotFocusイベントは、ClickイベントやKeyDownイベントなどの前に起こるのですが、
GotFocusイベントとこのClickイベントやKeyDownイベントが同時に起こるようにするには
どうしたらよいでしょうか?
または、Clickイベントが起きてから、GotFocusイベントが起こるようにしたいのです。
分かる方がいらっしゃいましたら教えてください。
No.3302 タスクトレイにアイコン追加 投稿者:さおとめ [01/11/28(水)12:01分] http://members5.tsukaeru.net/mkvb/
タスクトレイにアイコンを追加する場合(WinAPI)
アニメーションアイコンを登録できないのでしょうか?
FomObject.Icon
となっていますが、フォームにアニメーションアイコンは
登録できません。
ご存じの方いらっしゃいましたら お願いいたします。
開発環境:Windows2000 VB6 SP5
No.3301 Re:数値の移動について 投稿者:よねKEN [01/11/28(水)11:17分]
> 1番目をLabel1、2番目をLabel2・・と言う風に表示させていって、
> 5番目の数字がLabel5まではいった時に、古いデータを消していって、
> 6番目の数字をLabel5、Label5にあった数値をLabel4・・・と、
> 1秒ごとに数値をずらしていって前の数値は消していきたいのですが
> 何か良い方法はないでしょうか?
どうしても値をずらしていく必要があるのなら別ですが、
単に5つ最新の値を保存しておきたいだけなら、循環させる方が
コードもすっきりするし処理の負荷も少ないですよ。
イメージはこんな感じ。FormにTimer1とLabel1という名前でコントロール配列を5つ配置して
以下のコードを実行して下さい。
Private Sub Timer1_Timer()
Static c As Integer
Label1(c Mod 5).Caption = c
c = c + 1
End Sub
前のログ | 次のログ |
VBレスキュー(花ちゃん)
Visual
Basic6.0 VB6.0