前のログ | 次のログ |
No.300 Re:DBComboBox制御(投稿者:Kimie) 投稿者:前原@Docon [99/4/02(金)11:23分]
みなさん、こんにちは。
家主殿の未回答リストの中からひとつ。
DBComboBox コントロールの Click イベントには Area パラメーターがついてます。
この値により、DBComboBox コントロールのどの部分がクリックされたのかが判別できます。
それを利用して、Click イベントの中で、連結している Data コントロールの Recordset
プロパティに FindFirst なりを実行してやればできそうです。
'----------------------------------------------------------- Sample Start
Private Sub DBCombo1_Click(Area As Integer)
If Area = 0 Then
Me.Data1.Recordset.FindFirst "hogehoge=nyoronyoro"
Else
End If
End Sub
'------------------------------------------------------------- Sample End
でも、DBComboBox コントロールの Style プロパティや
Data コントロールの RecordsetType プロパティによっては
うまく動いたり動かなかったりしそうです。
また、Data コントロールの矢印ボタンでレコードを移動したり
するとどうなるかはわかりません。(^^;
とりあえず、ヒントということで。
No.299 3月分未回答分 投稿者:花ちゃん [99/4/01(木)20:08分]
皆さん回答ありがとうございます。私には難しい質問には答えられませんので、 今後ともよろしくお願い致します。
3月分で未回答分をまとめてみました。すでに解決済みでしたら連絡願います。
NUMLOCKが消える現象 投稿者:やまねこ [99/3/05(金)18:48分]
プリンターポートの取得 投稿者:とんとん [99/3/10(水)13:22分]
DBComboBox制御 投稿者:Kimie [99/3/10(水)21:35分]
ツールバーのボタンサイズ 投稿者:パーシー [99/3/26(金)11:15分]
ファイル名取得(原題 B%^%&%9・・・) 投稿者:匿名希望 [99/3/28(日)6:47分]
以上5件が未回答になっています。ご存知の方おられましたらよろしくお願い致します。
又、レス等頂いた場合は、お礼なり、再質問なり、レスについてのフォローをお願い致します。
(独自で又は他のサイトで解決済みの場合も連絡願います)
No.298 Re:エクセルについて(投稿者:新人) 投稿者:前原@Docon [99/4/01(木)17:01分]
調子に乗ってもう一件、(^^;
エクセルのシート上のデータをVBのコード上で取得したいということでしょうか?
OLEオートメーション(今もそう呼ぶかは不明(^^;;;;)使えばできます。
詳細な必要が必要であれば、また書き込みしてください。
もしお呼びでない場合は、ごめんなさい。
No.297 Re:VBでできますか?(投稿者:XTC) 投稿者:前原@Docon [99/4/01(木)16:53分]
今日初めてこのページに訪れた前原といいます。
よろしくお願いします。<(_'_)>
もうだいぶ日にちが経っているので解決済みかもしれませんが、
Winsock コントロールを使えば結構簡単にできます。
API からいく場合は結構しびれます。(^^;
BooksOnLineやMSDN Libraryを参照されるといいと思います。
No.296 RE:VB5JP.dllについて 投稿者:花ちゃん [99/3/31(水)23:29分]
ヘルプによりますと、Visual Basic ランタイムファイルの日本語サテライトファイルだそうです。
No.295 VB5JP.dllについて 投稿者:Mari [99/3/31(水)15:06分]
こんにちは。2回目くらいの投稿になります。
ふと思った事で、プログラムには関係ないかとはおもうのですが、、、
VB5.0 で作ったプログラムを起動するとwindows\system\VB5JP.dllが動いていますよね。
このDLLは一体どんな働きがあるのでしょうか?
ちなみにVBのセットアップウィザードで、このDLLを削除してインストーラーを作成し、 VBのはいっていないマシンに
インストールしたところ MSPゴシックの9ポイントの文字が化けてしまっていました。
うぅん。。DLLって難しいですね。。。。
No.294 タイトルバーなしのウィンドウの作成ですが・・・ 投稿者:ゆう(U) [99/3/31(水)14:59分]
前のsTitleReleaceはゆー太郎さんのソースとほとんど違わないので
ゆー太郎さんに申し訳ないので・・・
※シンプル(ベスト)なコードなのでほとんど変化しない
ゆう(U)オリジナルにする為にちょっと機能を追加しました
以前のままではフォームの作業領域の大きさが変化(タイトルバーのサイズ+α幅)
してしまうので自分で、「サイズ変更をしておくか」「無視するか」なので
作業領域の変更が変化しないようにフォームサイズを自動調整する仕様にしました。
※作業領域・・・フォーム内部の大きさ(ScaleWidth/ScaleHeight)です
●MDI親フォームは対象外です
実行するとおかしくなると思いますのでMDI親フォームでは
使用しないで下さい。
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
'==========================================================
'タイトルバーを付ける・外す sTitleReleace2
'==========================================================
' Call sTitleReleace2(myForm, [blnMenu])
' 引数 myForm :フォーム
' blnMenu :表示されているメニュー
' 有 True
' 無 False
'----------------------------------------------------------
'MDI親フォームは対象外です
'----------------------------------------------------------
'外したタイトルバーのスタイルにウィンドウサイズを合わせる
'フォームの内部作業領域が変わらない様にサイズ修正
'タイトルバーを表示していないフォームは無処理です
'----------------------------------------------------------
Public Sub sTitleReleace2(ByRef myForm As Form, _
Optional ByVal blnMenu _
As Boolean = False)
Const GWL_STYLE = (-16&)
Const SWP_NOSIZE = &H1&
Const SWP_NOMOVE = &H2&
Const SWP_NOZORDER = &H4&
Const SWP_FRAMECHANGED = &H20&
Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Const WS_CAPTION = &HC00000
Const SM_CYCAPTION = 4& 'タイトル部の高さ
Const SM_CYSMCAPTION = 51& '小さいタイトル部の高さ
Const SM_CXBORDER = 5& '非立体表示の枠幅
Const SM_CYBORDER = 6& '非立体表示の枠高さ
Const SM_CXDLGFRAME = 7& 'タイトル付き変更不可の枠幅
Const SM_CYDLGFRAME = 8& 'タイトル付き変更不可の枠高さ
Const SM_CXFRAME = 32& 'サイズ変更可の枠幅
Const SM_CYFRAME = 33& 'サイズ変更可の枠高さ
Dim intBorderStyle As Integer
Dim lngWidth As Long
Dim lngHeight As Long
Dim lngTitleHeight As Long
Dim lngFrame_X As Long
Dim lngFrame_Y As Long
Dim lngResult As Long
With myForm
intBorderStyle = .BorderStyle
If intBorderStyle = vbBSNone Then
If blnMenu Then
intBorderStyle = vbFixedSingle
Else
Exit Sub '枠なし
End If
ElseIf (.ControlBox = False) And (Len(.Caption) = 0&) Then
Exit Sub '枠なし
End If
lngWidth = .ScaleX(.Width, vbTwips, vbPixels)
lngHeight = .ScaleX(.Height, vbTwips, vbPixels)
lngResult = GetWindowLong(.hWnd, GWL_STYLE)
lngResult = lngResult Xor WS_CAPTION
'3D枠とフラット枠(この辺の枠幅算出は若干疑問(不安)が残る)
Select Case intBorderStyle
Case vbFixedDialog 'タイトルのみでOK
Case vbFixedSingle, vbFixedToolWindow 'フラットスタイルへ
'非立体表示の枠ではなく、枠なしが採用されている・・・
lngFrame_X = GetSystemMetrics(SM_CXDLGFRAME)
lngFrame_Y = GetSystemMetrics(SM_CYDLGFRAME)
If (lngResult And WS_CAPTION) = WS_CAPTION Then
lngWidth = lngWidth + (lngFrame_X * 2&)
lngHeight = lngHeight + (lngFrame_X * 2&)
Else
lngWidth = lngWidth - (lngFrame_X * 2&)
lngHeight = lngHeight - (lngFrame_X * 2&)
End If
Case vbSizable, vbSizableToolWindow '3Dスタイルのまま
'タイトルをなくすとタイトル付き変更不可の
'枠が採用されているようなので・・・
lngFrame_X = (GetSystemMetrics(SM_CXFRAME) _
- GetSystemMetrics(SM_CXDLGFRAME))
lngFrame_Y = (GetSystemMetrics(SM_CYFRAME) _
- GetSystemMetrics(SM_CYDLGFRAME))
If (lngResult And WS_CAPTION) = WS_CAPTION Then
lngWidth = lngWidth + (lngFrame_X * 2&)
lngHeight = lngHeight + (lngFrame_Y * 2&)
Else
lngWidth = lngWidth - (lngFrame_X * 2&)
lngHeight = lngHeight - (lngFrame_Y * 2&)
End If
End Select
'タイトルバーの高さ調整
Select Case intBorderStyle
Case vbFixedSingle, vbSizable, vbFixedDialog
lngTitleHeight = GetSystemMetrics(SM_CYCAPTION)
Case vbFixedToolWindow, vbSizableToolWindow
lngTitleHeight = GetSystemMetrics(SM_CYSMCAPTION)
End Select
If (lngResult And WS_CAPTION) = WS_CAPTION Then
lngHeight = lngHeight + lngTitleHeight
Else
lngHeight = lngHeight - lngTitleHeight
End If
lngResult = SetWindowLong(.hWnd, GWL_STYLE, lngResult)
lngResult = SetWindowPos(.hWnd, 0&, 0&, 0&, _
lngWidth, lngHeight, _
SWP_DRAWFRAME Or _
SWP_NOZORDER Or _
SWP_NOMOVE)
End With
End Sub
「逆引き・・・」かなり充実してきましたね!
で見直してみたのですが・・・
「テキストファイルの最後の数行を取得する」の
'※半角のカナのみ変換します、カ゛のようなものはカ゛になります。
のコメントは
'半角カナだけを全角カナ変換する関数 fKanaHan2Zen
の方のコメントです(ペーストをミスったカナ私?)
と言う理由で・・・
先の関数はゆー太郎さんのソースコードを参考にした事の注釈入れるか
今回の関数と置換えて下さい。
以上お手数ですがコメントの方もあわせて修正お願いします。
No.293 ビットマップファイルを読みたい2 投稿者:ジョーカー [99/3/31(水)14:26分]
とんさん 御指導ありがとう。
見たところC言語の構造体みたいな感じですが、ファイルのヘッダー情報は
こんな風なんですね。
ところで、Low-High ってなんですか。それと色数が2がモノクロという判断で
よいのですか。
No.292 RE:たまに落ちる 投稿者:花ちゃん [99/3/31(水)6:54分]
まず、サービスパックを最新のものに(SP3)して下さい。
それで、だめなら入れ直す(VBを)
で、多分改善できると思います。
No.291 たまに落ちる!! 投稿者:いの [99/3/30(火)23:25分]
どなたか、教えて下さい。
現在VB5.0(SP0)で開発しているのですが、実行(exeからではない) していると、「このプログラムは不正な処理を行ったので強制終了されます」と言う メッセージが出ます。
プログラム上、そんな複雑な事はしていないのですが、、、、、
詳細を見ると、「KERNEL32.DLL ページ違反」だそうです。
どなたか、心あたりのある方、お教え下さい。
No.290 RE:ファイル関係 投稿者:今回匿名 [99/3/29(月)14:39分]
プロパティダイアログの表示なら、ShellExecuteEX APIですが、
プロパティ情報の取得は、GetFileVersionInfo 等のバージョン
情報関係APIでできると思います。
No.289 RE:FDのシリアルナンバー取得 投稿者:今回匿名 [99/3/29(月)14:26分]
>フロッピーディスクのシリアルナンバーを取得できるAPI
GetVolumeInformation じゃ駄目ですか?
No.288 $B%^%&%9$G%/%j%C%/$7$?$H$-$K!"(B 投稿者:匿名希望 [99/3/28(日)6:47分]
どうも、こんにちわ。
マウスで任意のファイル
(デスクトップ等にある
アイコンをクリックしたときとか)を、
クリックしたときに、
そのファイル名とかの取得を、
したいのですが、知っていましたら、
お教えください。
No.287 FDのシリアルナンバー取得 投稿者:えんこ [99/3/27(土)0:30分] http://ww1.tiki.ne.jp/~aery/
フロッピーディスクのシリアルナンバーを取得できるAPIはないのでしょうか? (というか、FDにシリアルナンバーがあるのでしょうか?)ありましたら是非教えて下さい。
もしなければ、フォーマットした日付でも構いません・・・。
No.286 ツールバーのボタンサイズ 投稿者:パーシー [99/3/26(金)11:15分]
はじめまして。
VB4.0からVB5.0+SP3にコンバートをしています。
既存のプロジェクトを読み込んで実行したところ、ツールバーに貼り付けたボタンの
高さと幅が小さくなってしまいました。
PictureBoxの上にToolBarを配置していて、フォームをロードするときにToolbarの
プロパティのButtonHeight、ButtonWidthに値を設定しているのですが無効になって
しまいます。
ボタンサイズの変更についてどなたか教えてください!!
No.285 マウスを無効にする方法 投稿者:花ちゃん [99/3/25(木)21:07分]
マウスを使えなくする方法はVBの標準では
出来ないと思います。
移動範囲を固定する方法を試していたら
マウスカーソルがロックできました。
反則技かも知れません、使い方次第でマウスが
動かなくなるので注意して下さい。
ここの逆引きヘルプのマウス位置の設定と取得も
参考にして下さい。
コマンドボタンをクリックすると現在マウスカーソルが
ある位置でマウスカーソルがロックされ使えなくなります。
コマンド2ボタンをクリックすると解除されます。
標準モジュールに記入
Option Explicit
'マウスカーソルの移動範囲限定用
Declare Function ClipCursor Lib "user32" _
(lpRect As Any) As Long
'マウスカーソルの移動範囲解除用
Declare Function ClipCursorOff Lib "user32" _
Alias "ClipCursor" (ByVal lpRect As Long) As Long
'座標をスクリーン座標に変換
Declare Function ClientToScreen Lib "user32" ( _
ByVal hwnd As Long, _
lpPoint As MoPoint) As Long
'移動範囲の構造体
Type MouseLook
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'座標の構造体
Type MoPoint
X As Long
y As Long
End Type
Public MoLook As MouseLook
Public logRet As Long
'フォームのイベントに記入
Option Explicit
Private Sub Command1_Click()
Dim LookPo As MoPoint
logRet = ClientToScreen(Me.hwnd, LookPo)
'移動範囲を設定
MoLook.Left = LookPo.X + 10
MoLook.Top = LookPo.y + 10
MoLook.Right = LookPo.X + 10
MoLook.Bottom = LookPo.y + 10
'現在位置でマウスカーソルをロック
logRet = ClipCursor(MoLook)
End Sub
Private Sub Command2_Click()
'マウスカーソルのロック解除
logRet = ClipCursorOff(&H0)
End Sub
No.284 Re:ビットマップファイルを読みたい 投稿者:とん [99/3/25(木)17:41分]
はじめまして。"とん"と申します。これからもよろしくお願いいたします。
>>ビットマップファイルを読んで、ファイルの縦・横サイズと
>>カラーかモノクロかを知りたいのですが、どうすれば
>>よいのでしょう。
まず、BMPファイルをバイナリモードで開いて
↓のBMPヘッダーを参考に情報を抜き出してみてください。
-----------------------------------------------------
ファイルのID(bfType) 2bytes
ファイルのサイズ(bfSize) Low-High 4bytes
予約1(bfReserved1) Low-High 2bytes
予約2(bfReserved2) Low-High 2bytes
ファイルヘッダーのサイズ(bfOffBits) Low-High 4bytes
Infoヘッダーのサイズ(biSize) Low-High 4bytes
イメージの幅(biWidth) Low-High 4bytes
イメージの高さ(biHeight) Low-High 4bytes
プレーン数(biPlanes) Low-High 2bytes
ピクセルあたりのビット数(biBitCount) Low-High 2bytes
圧縮方式(biCompression) Low-High 4bytes
イメージのサイズ(biSizeImage) Low-High 4bytes
水平解像度(biXPelsPerMeter) Low-High 4bytes
垂直解像度(biYPelsPerMeter) Low-High 4bytes
色数(biClrUsed) Low-High 4bytes
重要色数(biClrImportant) Low-High 4bytes
-----------------------------------------------------
No.283 ビットマップファイルを読みたい 投稿者:ジョーカー [99/3/25(木)17:09分]
誰か助けて!
ビットマップファイルを読んで、ファイルの縦・横サイズと
カラーかモノクロかを知りたいのですが、どうすれば
よいのでしょう。 どなたか救いの手を!
No.282 投稿者:MAB [99/3/24(水)20:31分]
実行時にマウスをつかえなくできる方法ありますか
あったらおしえてください
No.281 ファイル関係 投稿者:なんちゃん [99/3/24(水)15:47分]
実行モジュール中で、それ自身のファイルのプロパティは「App.Comments」などで
取得できるのですが、他のプログラムからある実行モジュールのプロパティ(製品名、
コメントなど)を取得する方法を知っていたら、教えてください。
No.280 Re:また,お願いします… 投稿者:ゆう(U) [99/3/23(火)13:57分]
これもイメージリストがらみですか・・・?
左右反転させた絵をイメージリストに追加するといいです。
ヘルプ参照
PaintPicture メソッド(解説)
サンプル)
Private Sub Command1_Click()
Dim sngWidth As Single '絵の幅(ピクセル)
Dim sngHeight As Single '絵の高さ(ピクセル)
With Picture1
sngWidth = .ScaleX(.ScaleWidth, .ScaleMode, vbPixels)
sngHeight = .ScaleY(.ScaleHeight, .ScaleMode, vbPixels)
End With
With Picture2
.Parent.ScaleMode = vbPixels
.ScaleMode = vbPixels
'サイズ調整、()部分は枠の幅です、枠有り無しどっちでもOK
.Move .Left, .Top, _
sngWidth + (.Width - .ScaleWidth), _
sngHeight + (.Height - .ScaleHeight)
.Refresh '(AutoRedraw=False)用
.PaintPicture Picture1.Picture, sngWidth - 1, 0, _
-sngWidth
End With
End Sub
※わかりづらい?
No.279 また,お願いします… 投稿者:ますピー [99/3/21(日)17:12分]
Maskの件は,出来ました。
有り難う御座います!
もう,1ついいですか?
画像を,水平方向に反対にするにはどうすればいいですか?
たびたびすいません。 m(--)m
No.278 有り難う御座います! 投稿者:ますピー [99/3/21(日)17:00分]
有り難う御座いました!
出来ました!出来た時は思わず、「やったー」と叫んでしまいました。 (--;
また,分からない事があったら聞きに来るかも…
No.277 罫線を引くにはどうしたら良いのでしょうか 投稿者:KAITO [99/3/20(土)21:04分]
お答えありがとうございました。出来ないのですね〜残念です。
又よろしくお願いいたします。
No.276 RE:VB4.0のGridでセル入力したい 投稿者:花ちゃん [99/3/19(金)22:00分]
プロパティがないようですので自分で座標を計算してテキスト
ボックスを表示するしかないのでは?
Text1.Move Grid1.Left + 列幅 * 列位置, Grid1.Top + 行高さ _
* 行位置, 列幅, 行高さ
こんな感じでどうでしょうか?
No.275 Re:教えて下さい! 投稿者:ゆう(U) [99/3/19(金)21:57分]
ExtractIcon メソッドを使ってアイコンとして設定するとか
Draw メソッドで引数にimlTransparentを使って設定するとか
でできたと思います。
こんな感じ
Set Image1.Picture = ListImage1.ListImages(0).ExtractIcon
べた打ちコードなのでタイプミスがあるかも・・・
詳しくはヘルプで参照して下さい。
No.274 教えて下さい! 投稿者:ますピー [99/3/19(金)21:30分]
基本かも分かりませんが,
「Mask」は,どうしたらつかえるのですか?
Commandオブジェクトでは,うまく行きますが、
ImageListのピクチャーから,
Pictureか,Imageオブジェクトにするとうまく行きません。
ImageListの設定だけでは、足りないのですか?
教えて下さい!
No.273 RE:罫線を引くにはどうしたら良いのでしょうか 投稿者:花ちゃん [99/3/19(金)21:09分]
多分リッチテキストボックスの標準の機能では罫線は引けないのでは
昔のワープロのように罫線文字で引かれたらどうでしょうか?
No.272 VB4.0のGridでセル入力したい 投稿者:はいほー [99/3/18(木)13:14分]
初めて書き込みさせていただきます。
このページは本当に重宝しています。
で、MSFlexGrid関係でサンプル紹介されている処理をGridでやりたいのですが、
そういったサンプルはないのでしょうか?
各種キーでのセルの移動はできるのですが、
入力するテキストボックスをセルの位置に表示する部分ができないでいます。
もしサンプルや解決策がありましたら、教えて下さい。
よろしくお願いします。
No.271 Re:画像 投稿者:ゆう(U) [99/3/17(水)14:05分]
以前「LoadPictureとSavePIcture」で質問されていたmosaさんですか?
Windowsのアクセサリのペイントの様な物を作っているのですよね?
以前の問題は解決されましたか?
「自分で描画した覚えの無いBMPがSaveされた・・・」とかでしたっけ?
●今回の質問にその様な記述が無いので解決したものとしてReします
フォームへそのコントロールを貼り付ける事が出来ましたか?
※標準のコントロール以外は「プロジェクト(P)」−「コンポーネント(C)」で
使用するコントロールを指定して始めてツールボックスへ表示されます。
(これをしないとフォームに貼付けることが出来ません)
コモンダイアログ(CommonDialog)コントロールの使い方はヘルプで
読まれましたか?
※コモンダイアログ (CommonDialog) コントロール ([ファイルを開く] ダイアログボックス
および [ファイル名を付けて保存] ダイアログボックス)
のヘルプでプロパティと使用例で試して見て下さい。
>保存は、名前を付けて保存できるようにする方法を教えてください。
ちなみに、デフォルトのフォルダー指定やファイルの存在(上書き)チェックなどは
Flagsプロパティで設定します、ヘルプを読むとさらに詳しい情報が分かります。
(cdlOFNOverwritePromptの説明部分です)
実際に使用方法の何処の部分かが分からない・・・ですよねぇ、的確なReが出来なくて
Reする側が困っちゃいます。
ちなみにこのコントロールはファイル名を決定するだけで、実際に保存や開く(読込み/Load)は
コードで行います。
※ファイル名が確定したら後は前に質問されていたLoadPictureとSavePictureで
保存と開く(読込み/Load)を行います。
No.270 画像 投稿者:mosa [99/3/17(水)12:59分]
CommonDialogで画像ファイル選んで保存(開く)方法を教えてください。
保存は、名前を付けて保存できるようにする方法を教えてください。
初めてですが、よろしくお願いします。
VBは、6.0です。
No.269 罫線を引くにはどうしたら良いのでしょうか? 投稿者:kaito [99/3/16(火)23:52分]
前の書き込みが上の人と重なっていたのでもう一度書かせていただきます。
始めたばかりの初心者です。始めて書き込みいたします。
始めたばかりで挫折しないように本を参考に作りながら勉強しています。
どこかに、真似て作りながら覚えるのがよいと書いてあったので・・・
そこで簡単ワープロを作ってみました。richtextboxをつかって作ってあるのですが
ワードや一太郎のように罫線を引けるようにしたいのですが可能でしょうか。
プログラム経験がないもので、わかりやすく教えていただけないでしょうか?
お願いいたします。
No.268 Re:可能? RDBもどき 投稿者:アリパパ [99/3/16(火)23:19分]
ゆう(U)さん、ありがとうございます。
じっくりと取り組んでみたいと思います。
機会があればまたUPします。
No.267 エクセルについて 投稿者:新人 [99/3/16(火)15:30分]
テキストボックスがいくつかあって、そのテキストボックスのtextには、 エクセルで作った表の1セルを入れます。 データコントロールを使わず直接やりたいのですがそのようなことはできますか?
No.266 IEのお気に入りのURLを取得したい 投稿者:まいぞう [99/3/16(火)15:07分]
はじめまして。まいぞうと申します。
どうしてもわからないことがあるので質問をしに来ました。
IEのお気に入り(c:\Windows\Favoritesに登録されるやつ)の URLをVBで取得したいのですが、どうすればいいのでしょうか?
よろしくお願いいたします。
NO.265 Re:可能? RDBもどき 投稿者:ゆう(U) [99/3/16(火)10:10分]
>しかも文字(キー)を入力して参照するのではなく、A.txtを読み込みながら参照した
>いのです。
難しく考える事はありません。
A.txtを読み込んんだらB.txtのキー部分は決定しますよね?そうしたら、
キー部分はそれで解決で後は参照ボタンを押すことをコードで行うだけです・・・
実際には内部的にキーを指定してA.txt用のバッファーにデータを読み込む、
キーを指定してB.txt用のバッファーにデータを読み込むという2つの関数を
作成しておけば・・・
※それぞれバッファーのIndexを参照してキーが異なる時にGetする様にしておく
A.txtを読み込んだら、A.txtのキー(B.txtのIndex)でB.txtを読み込む・・・
ファイルの入出力の関数をしっかり作成しておけば難しい事ではありません。
案として・・・
標準モジュールにファイル入出力の関数を全て作成して(いく)おく
※他のモジュールはその関数を呼ぶだけで中のコードを意識
させない様にする・・・(修正も楽)
File_IO.bas
Private intFileNumber_A As Integer 'ファイル番号
Private intFileNumber_B As Integer '※モジュール外へ公開不要
Public lngPoint_A As Long 'ファイルの現在位置
Public lngPoint_B As Long '※一応公開
Public buff_A As A_Fields 'バッファー変数
Public buff_B As B_Fields '※これは当然公開する
Public Type buff_A 'ファイルAのレイアウト
:
End Type
Public Type buff_B 'ファイルBのレイアウト
:
End Type
'Aファイル:ファイルを開く
Public Sub sOpen_A(ByRef strFileName As String)
If intFileNumber_A <> 0 Then
Call sClose_A
End If
intFileNumber_A = FreeFile
Open strFileName For Random As #intFileNumber_A Len = Len(buff_A)
End Sub
'Aファイル:ファイルを閉じる
Public Sub sOpen_A(ByRef strFileName As String)
Close #intFileNumber_A
intFileNumber_A = 0
lngPoint_A = 0&
End Sub
'Aファイル:次を読む(Index指定可)
Public Sub sRead_A(Optional ByVal RecNumber As Variant)
Dim lngReadPoint As Long
'これは必ず読み込む(Indexとの比較はしない、読み直しもあるので)
'仕様の問題です、直接ここのbuff_Aを修正せずに参照側が使っているなら
'これも読まずに済ます事もOKです
If IsMissing(RecNumber) Then
lngReadPoint = lngPoint_A + 1&
Else
lngReadPoint = RecNumber
End If
Get #intFileNumber_A, lngReadPoint, buff_A
lngPoint_A = lngReadPoint
End Sub
'Aファイル:前を読む
Public Sub sPrevious_A()
Dim lngReadPoint As Long
lngReadPoint = lngPoint_A - 1&
Get #intFileNumber_A, lngReadPoint, buff_A
lngPoint_A = lngReadPoint
End Sub
'Aファイル:先頭を読む
Public Sub sFirst_A()
Dim lngReadPoint As Long
lngReadPoint = 1&
Get #intFileNumber_A, lngReadPoint, buff_A
lngPoint_A = lngReadPoint
End Sub
'Aファイル:最後を読む
Public Sub sPrevious_A()
Dim lngReadPoint As Long
lngReadPoint = LOF(intFileNumber_A) \ Len(buff_A) - 1&
'現在のレコード総数を調べる関数を作成するのも良いですね
Get #intFileNumber_A, lngReadPoint, buff_A
lngPoint_A = lngReadPoint
End Sub
'Aファイル:書き込む
Public Sub sRead_A(ByVal RecNumber As Variant)
Dim lngReadPoint As Long
Put #intFileNumber_A, lngReadPoint, buff_A
lngPoint_A = lngReadPoint
End Sub
'Aファイル:検索
Public Function fFind_A(ByRef strKey As String)
'教室などのコード参照
lngPoint_A = lngReadPoint
End Function
:
:
※この様に必要と思われる関数をすべて1つのモジュールで管理する
ファイル番号など他で参照不要な変数はPrivateで宣言する
場合によってはエラー処理を加える
ファイル単位で別モジュールにするのもアリです
●最終的にはクラスモジュールとしてもOK
ちなみにこのコードはベタ打ちしたコードです、タイプミスがあるかも
しれませんが・・・イメージを理解できればOKです。
No.264 Re:可能? RDBもどき 投稿者:アリパパ [99/3/16(火)6:08分]
ゆう(U)さん、ありがとうございます。
>理論上は可能です、しかし実用レベルにするには条件があります。
>固定長のランダムファイルならまず問題なく使用できるでしょう、
>この方法は花ちゃん(さん)のプログラミング教室で使われています。
>※参照だけならこれでも十分実用レベルです
検索表示の例を指しておられると思いますが、今の私のレベルではまだちょっと難解
です。
しかも文字(キー)を入力して参照するのではなく、A.txtを読み込みながら参照した
いのです。
もう少し具体的に教えていただけると助かります。m(_。_)m
No.263 Re:可能? RDBもどき 投稿者:ゆう(U) [99/3/15(月)20:42分]
理論上は可能です、しかし実用レベルにするには条件があります。
固定長のランダムファイルならまず問題なく使用できるでしょう、
この方法は花ちゃん(さん)のプログラミング教室で使われています。
※参照だけならこれでも十分実用レベルです
B.txtのキーをA.txtへ持たせればOKです、逆にB.txtへA.txtのキーも
持たせる(相互参照を可能にするなら)必要があります。
しかしソート、検索、削除、途中追加、抽出などを考えているなら、
やはり既存のデータベースを利用するのが良いと思います。
※使えるものは有効に使う
プログラミングのレベルの向上の為に行うのであれば止めませんが、
そうでなければ、VBの正規ユーザーならJetの配布は許可されていると
思いますので、DBアクセス以外に力を注がれた方が・・・
(Jet以外のDBエンジンを使用するのもOKです)
NO.262 Re:RE:小数、ページ開設 投稿者:ゆう(U) [99/3/15(月)15:53分]
Timerイベントが正常に行われているなら・・・
変数 T は何処でどのデータ型で宣言されていますか?
○これは重要なことです
●Option Explicitを設定していなければ・・・
Dim Static Private Publicなどでその変数の宣言をしていなければ、
そのTimerイベント内で自動的に変数が宣言されて、そのイベントの
終了時に変数が解放されてしまいます。
※このイベント内でDim又はPrivateで宣言してあった場合も同じです。
※毎回初期値0で結果は保存されていない
データ型が正しく宣言されていないと・・・
Integer型やLong型の場合は自動で丸めの処理がされてしまいます
※Option Explicitを設定(オプションで変数の宣言を強制)すると
全ての変数を自分で宣言する事になります・・・が、この宣言を
する事でメリットがたくさんあります。
オブジェクトなどの変数を宣言すると、自動メンバー表示(VB5.0以降)
なども可能です。
タイプミスなどで変数の参照をするコードを書いた時に変数名を間違うと
「宣言されていない変数です」などのエラーを表示してくれる。
No.261 ありがとうございました。 投稿者:T.KINOSHITA [99/3/15(月)13:39分]
先日、横スクロールバーのことで質問した者です。
サンプル付きの回答どうもありがとうございました。
おかげさまで、現在は立派な横スクロールバーが表示されております。
これからもこのページの運営がんばってください。
ありがとうございました。
No.260 RE:小数、ページ開設 投稿者:花ちゃん [99/3/14(日)22:26分]
Timer1.Interval が0設定されたままになっていませんか
プロパティの値を変更するか下記のように書いて試して下さい
1000=1秒
Private Sub Form_Load()
Timer1.Interval = 500
End Sub
No.259 小数、ページ開設 投稿者:Manabu [99/3/14(日)16:56分] http://fukuoka.cool.ne.jp/manabu
一つ質問です、VBでは、小数はつかえないのでしょうか。
例:Pravate Sub Timer1.Timer
T=T+0.1
End Sub
↑の用にしても、Tは、ずっと0のままです。教えてください。
話が変わりますがページを開設しました。Manabuの部屋といいますVBでゲーム製作に ついてやっています。 掲示板もあるので、何か書いて行ってください。
No.258 RE:ログファイルの件 投稿者:花ちゃん [99/3/14(日)7:48分]
カット&ペーストが目的だと思い回答します。
1.マウスの右クリックでドラッグする
2.マウスのボタンを離す
3.ポップアップメニューが表示される
4.全部の範囲を落としたい場合は[すべて選択]を選ぶ
5.マウスの右クリックをすると再度ポップアップメニューが表示されるので[コピー]を選択する
6.メモ帳又はワードパットを開き
7.メニューの編集→貼り付け を選択する
部分的に選択する場合はマウスのドラッグで範囲を選択してコピーする
表示が目的ならc:\WINDOWS\Temporary Internet Files のフォルダーに多分ファイルが落ちて いるはずですが
質問と違っていたらごめんなさい
No.257 はじめまして! 投稿者:lym [99/3/14(日)4:48分]
初めて書き込みします。
プログラミング教室の企画面白いです。VB6買ったのですが、なかなか前に進めな
いのですが、やる気が沸いてきました。
この掲示板にそぐわないかもしれませんが、ひとつ、質問させてください。
ログをファイルに落としたいと思うのですが、HPのソースを見ても、htmの知識が
無いもので、右下フレーム内の内容を落とせません。
もし、その程度の知識は持っているのが当然なら出直します。(^^;)
No.256 うまくいきました 投稿者:kaoru [99/3/14(日)1:20分]
教えて頂いた方法でうまくいきました。
どうも有り難うございました。
No.255 可能? RDBもどき 投稿者:アリパパ [99/3/13(土)21:42分]
A.txtというテキストデータを読み込み、その中のある項目(フィールド:Xとします)
の値を基にB.txtのテキストデータとリンクさせXとリンク(一致)したB.txtデータ
の内容を読みこみ表示させることは可能でしょうか。
B.txtの内容(key、indexに相当するもの)は重複しません。
どなたかご存知ですか。
No.254 VBでできますか? 投稿者:XTC [99/3/13(土)17:25分]
VBでソケットを生成する場合、APIを使わないと、出来ないんでしょうか。
TCP/IP関係のものをVBで作る場合APIなしでは、難しでしょうか。
VBでTCP/IP関連のWEB、又は、書籍を詳しく解説したのを、
ご存知の方いらっしゃいましたら、ぜひお教えください。
No.253 RE:ファイルの作成 投稿者:花ちゃん [99/3/13(土)8:56分]
どのようなINIファイルを予定されているか知りませんが
'ファイルがなければ、デフォルトデータを
'書き込みファイルを作成
Open "TESTFILE.INI" For Output As #1
Print #1, "これはテストです。"
Print #1, "0 0 2000 4000"
Print #1,
Print #1, "4行目のデータです"
Print #1, "5行目のデータです"
Print #1, "6行目のデータです"
Close #1
'データの読み込み
Dim TextLine
Open "TESTFILE.INi" For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
'ここで変数等にデータを代入する
'カウンター等をつけておけば何行目かもわかる
Debug.Print TextLine
Loop
Close #1
No.252 ファイルの作成 投稿者:kaoru [99/3/13(土)2:17分]
どうもレス有り難うございます。ファイルの有無は確認できるのですが、ダイアログボックスを使わずにファイルを新規に作成することが
出来ません。
プログラムを始めて起動する時(iniファイルがまだ存在しない)や故意にiniファイルが削除又は移動された時などに対処したいのです。
ファイル名や作成ディレクトリは決まっているので、後はファイルが無かった時にファイルを作成するだけなのですが、その作成方法が
解りません。
上記のような方法でファイルを作成することは出来るのでしょうか?
No.251 RE:ファイル作成 投稿者:花ちゃん [99/3/13(土)1:31分]
Dir関数でファイルの有無を調べApp.Path で起動ディレクトリを調べてファイルを作成するのが一番簡単な方法だと思いますが?
前のログ | 次のログ |
VBレスキュー(花ちゃん)
Visual
Basic6.0 VB6.0