• 締切済み

画像の名前を指定しないで全てを表示したい

開発環境はVB6.0です。 このサイトで面白そうなのを見つけたのでやってみた所、写真の名前を指定しないと表示できない事に気づきました。 Private Sub Command1_Click() ChDir "c:\image" For n = 0 To 2 fn = Chr(48 + n) & ".jpg" Form2.Image1(n).Picture = LoadPicture(fn) Next Form2.Show ChDir App.Path End Sub 以上の方法ですと、Form1にあるボタンを押すとForm2にあるImage1にc\image内にある".jpg"の画像(この場合は写真)が表示される。 まではわかったのですが、For~Next文を使用しているので1.jpgや2.jpgなど名前を特定した場合でないと表示できない事に気づきました。 前説が長くて申し訳ありませんが、問題点は ●"IMGP0271.jpg"のような場合はどうすればよいのか。 ●写真の枚数を指定しないでフォルダ内にある".jpg"であれば全て表示させるようにするにはどうすればよいのか。 よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

APIは別として (1)DIR 利用法 (2)FSO利用法(VBScript) ここでフォルダ内のファイルを1つずつ取得し、拡張子が.JPGなど画像関係のものを判別し、そのファイル名でLosdPicture すればよい。 下記のMsgboxのところに画像表示の処理のコードを入れる。 Sub test06() Dim objFSO As Object Dim objfolder As Object Dim objFile As Object Dim strPath As String Set objFSO = CreateObject("Scripting.FileSystemObject") Set objfolder = objFSO.GetFolder("C:\Documents and Settings\ユーザー名\My Documents\") For Each objFile In objfolder.Files If Right(objFile.Name, 4) = ".doc" Then MsgBox objFile.Name End If Next End Sub doc文書を捉える例。

aoao4141
質問者

お礼

返信ありがとうございます。 imogasiさんが書いて下さったコードを記入した所、Msgboxにファイル名が表示出来ました! あとは、MsgBox objFile.Nameの所を Form2.Image1(n).Picture = LoadPicture(fn) と記入したら良いと思ったのですが、 Form2.Image1.Picture = LoadPicture(objFile.Name) と記入したら「メソッドまたはデータメンバが見つかりません。」と表示されました。この場合、フォルダ内のファイルの取得・拡張子の判断までは出来ているんですよね。 Form2.Image1.Picture = LoadPicture(objFile.Name) では何故表示されないのでしょうか? Form2のImageに問題があるのでしょうか?ファイル数よりもImageの方がたくさんあるのですが。

回答No.2

#補足 >For~Next文を使用しているので Do While ~ Loop と FindFirstFileExやFindNextFileの戻り値を変数に格納して これがTrueである間実行する、って感じになるってことで。 ひょっとしたらExit Doも使うかも

aoao4141
質問者

補足

返信ありがとうございます。 For~Next文は繰り返し数を指定するものなので、やはりDo~Loopを使うんですね。 >FindFirstFileExやFindNextFileの戻り値を変数に格納して >これがTrueである間実行する、って感じになるってことで。 の意味がわからないのですが、FindFirstFileExやFindNextFileは指定された名前と属性が一致するファイルのディレクトリを検索すると書いてましたので、検索結果がTrueであれば実行であってますか? あと、『戻り値を変数に格納』とはどういう意味ですか?

回答No.1

http://www.bcap.co.jp/hanafusa/VBHLP/Fil_Dirkansu.htm Dir関数 FindFirstFileEx API http://msdn2.microsoft.com/en-us/library/aa364428.aspx FindNextFile http://msdn2.microsoft.com/en-us/library/aa364428.aspx コントロール配列とLoadなど(ってこんなやり方だったかな。もう忘れた) http://homepage1.nifty.com/rucio/main/shokyu/jugyou20.htm など。

aoao4141
質問者

お礼

返信ありがとうございます。 色々参考にして勉強します。

関連するQ&A

  • Form1で指定した命令をForm2で実行させたい。

    開発環境はVB6.0です。 Form1にA・B・Cの3つのボタンを用意します。 格ボタンを押した時各自が用意した画像ファイルをForm2に表示させます。 という事をしたいんですが、 Form1にAのボタンと画像を表示するなら Private Sub Form_Load() ChDir "c:\gazou\a" End Sub Private Sub Command1_Click() For i = 0 To 2 fn = Chr(48 + i) & ".jpg" Image1(i).Picture = LoadPicture(fn) Next i End Sub 表示されるのですが、『"C:\gazou\a"』の部分が"C:\gazou\b"や"C:\gazou\c"にしないといけないので困っています。 しかもFormが違うのでとても困ってます><

  • VBAでフォームに画像を表示したい

    ExcelVBAでフォームに画像を表示したいのですが Private Sub CommandButton1_Click() Image2.Picture = LoadPicture("A3") End Sub セルA3に"C:\デスクトップ\A\A\a-1\A-01.jpg"が入力されています。 ファイルがありません。とエラーがでます。 下記ではうまく表示されます。 Image2.Picture = LoadPicture("C:\デスクトップ\A\A\a-1\A-01.jpg") 何がよくないのでしょうか? よろしくお願い致します。

  • 指定のフォルダに指定のファイルがあったら画像を表示、なければ飛ばすいい方法(CGI)

    指定のフォルダに指定のファイルがあったら画像を表示、なければ飛ばすというようにしたいのです。 opendir (FOLDER,"img"); @FOLDERS = readdir (FOLDER); closedir(FOLDER); my ($cnt) = 0; foreach(@FOLDERS) { if ($_ =~ /.+\..+/) { $cnt++; } } $tate = $cnt/10; print "<TABLE CELLSPACING=0 CELLPADDING=2>\n"; print "<TR>\n"; for($i=1;$i<11;){ for($n=2;$n<$cnt;$n++){ $F = $FOLDERS[$n]; if("$i.jpg" eq "$F"){ print "<TD CLASS=TD1><IMG SRC='img/$i.jpg' HEIGHT=65 WIDTH=50><BR>$i</TD>\n"; $i=$i+1; } #if } #for $n } #for $i というようにしてみたのですが時間がかかりすぎてしまいます。 何かいい方法はないでしょうか?

    • 締切済み
    • CGI
  • XMLからの画像指定

    PHP初心者です。 現在、API経由で吐き出されるXMLをPHPにて処理しております。 その中で、{photo」の要素である画像「true_image」を、カテゴリー「category」中のコード「code」(ここではCtype→Atype→Btypeの順)を指定して画像を配置したいのです。 以下XML -------------------------------- <item> <photo> <true_image>001.jpg</true_image> <sub_image>001_2.jpg</sub_image> <category> <code>Atype</code> </category> </photo> <photo> <true_image>002.jpg</true_image> <sub_image>002_2.jpg</sub_image> <category> <code>Btype</code> </category> </photo> <photo> <true_image>003.jpg</true_image> <sub_image>003_2.jpg</sub_image> <category> <code>Ctype</code> </category> </photo> </item> -------------------------------- 今のところ、下記のコードで止まってしまっています。。 以下php ---------------------------------- <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $xml = simplexml_load_file("http://api.aaa.aaaa?key=aaaa.aa"); $hits = $xml->item foreach ($hits as $hit) { print<<<EOF <img src="{$hit->photo[0]->true_image}"> <img src="{$hit->photo[1]->true_image}"> <img src="{$hit->photo[2]->true_image}"> EOF; ?> ---------------------------------- xpathを使用して画像を特定する?のでしょうか。 正しいのかどうかも良く分からないで試しているため xpathの指定も何だか良く理解できず、方向性が良く分からなくなってしまいました。 恐らく初歩の初歩なのでしょうが、迷路に入ってしまったようです。 道先の案内でもして頂けると助かります。。

    • 締切済み
    • PHP
  • comboBoxのファイル取得とPictureBoxで画像表示

    質問です。 ローカル(例:C:\Program Files\Test\1.jpg)等の中身(1.jpg)を、 取得してその取得した物をComboBoxの中で表示 そして表示されたComboBoxをクリックして取得した1.jpgを クリックするとPictureBoxに表示する。 "1.jpg","2.jpg","3.jpg"が複数有る場合は、 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button4.Click '上記でもいいが下記の方法が MSDN でも紹介されています。 '最初にイメージによって使用されているメモリを解放してから、グラフィックを消去します With PictureBox1 If Not (.Image Is Nothing) Then .Image.Dispose() .Image = Nothing End If End With End Sub と明記してPictureBoxの中身を消して ComboBoxで取得された2.jpgを読込む この様なソースコードを書きたいのですが、 ComboBoxにどの様に書けば良いのか困ってます。 どうか教えて下さい。 Form1で作る予定です。

  • DataGridViewにURLで指定した画像を表示したい

    VB.Net 2005でウィンドウズアプリケーションを作成しています。 DataGridViewのDataGridViewImageColumnにURLで指定した画像(例:http://xxx/image.jpg)を表示したいのですが、そもそもそういうことってできるのでしょうか?

  • VBAで画像を表示する方法

    VBA初心者です。ExcelのVBAでプログラミングの練習をしています。 早速ですが質問させてください。 ユーザーフォーム上にコマンドボタンをクリックすることにより画像を表示させることはできるのですが、これをユーザーフォームを開いた瞬間に自動的に表示させる方法はないのでしょうか? ちなみに現在は以下のようにしています。 Private Sub CommandButton1_Click() Image1.Picture = LoadPicture(" ") End Sub インターネットで調べてみても見つからないので質問させてもらいました。分かりにくい説明でしたらすみません。

  • 画像のランダム表示

    初心者なのですがVisual Studio6.0でもぐらたたきゲームを利用した作品を現在制作しています。内容は決まった画像がランダムでImageコントロールに表示され、それをクリックできると画像が変わり得点加算、クリックできないと画像が変わり減点というゲームです。現在Imageコントロールに決まった画像を呼び出す処理が完成しました。そして追加機能としてクリックできたらボーナスポイントの画像をImageコントロールに何分の何かの確率で表示させたいのですがわからない状態です。ちなみに画像は私のパソコンのDドライブから呼び出して表示させています。 どういった命令文を打ったら良いのかわかる方教えて下さい。宜しくお願いします。 こちらがプログラムです。 Option Explicit Const MinImgAry = 0 Const MaxImgAry = 15 Const GameTime = 15 Dim HitFlg As Integer Dim TEN As Integer Dim HoleNum As Integer Dim IconAry(2) As String Private Sub Command1_Click() Command1.Enabled = False Option1.Enabled = False Option2.Enabled = False Option3.Enabled = False HitFlg = 0 TEN = 0 Text1.Text = Str(TEN) Timer1.Enabled = True Timer2.Enabled = True End Sub Private Sub Command2_Click() Form1.Show End Sub Private Sub Form_Load() Dim StrPath As String StrPath = App.Path If Right(StrPath, 1) <> "\" Then StrPath = StrPath + "\" End If IconAry(0) = "D:制作\5\画像1.bmp" IconAry(1) = "D:制作\5\画像2.bmp" IconAry(2) = "D:制作\5\画像3.bmp" End Sub Private Sub Image1_Click(Index As Integer) Image1(Index).Enabled = False HitFlg = -1 End Sub Private Sub Option1_Click() Timer1.Interval = 1000 End Sub Private Sub Option2_Click() Timer1.Interval = 800 End Sub Private Sub Option3_Click() Timer1.Interval = 500 End Sub Private Sub Timer1_Timer() Static CtlFlg As Integer Select Case CtlFlg Case 0 Image1(HoleNum).Enabled = False Image1(HoleNum).Visible = False HoleNum = Int((MaxImgAry - _ MinImgAry + 1) * Rnd + MinImgAry) Image1(HoleNum).Picture = _ LoadPicture(IconAry(0)) CtlFlg = 1 Image1(HoleNum).Visible = True Image1(HoleNum).Enabled = True Exit Sub Case 1 Image1(HoleNum).Enabled = False If HitFlg Then HitFlg = 0 Image1(HoleNum).Picture = _ LoadPicture(IconAry(2)) TEN = TEN + 1 Text1.Text = Str(TEN) Else Image1(HoleNum).Picture = _ LoadPicture(IconAry(1)) TEN = TEN - 1 Text1.Text = Str(TEN) End If CtlFlg = 0 Exit Sub End Select End Sub Private Sub Timer2_Timer() Static TimeCnt As Long TimeCnt = TimeCnt + 1 If TimeCnt <> GameTime Then Exit Sub End If Timer1.Enabled = False Timer2.Enabled = False MsgBox "おしまい" TimeCnt = 0 Command1.Enabled = True Image1(HoleNum).Enabled = False Image1(HoleNum).Visible = False Option1.Enabled = True Option2.Enabled = True Option3.Enabled = True End Sub

  • excel vbaの質問です

    for L=1 to 6 cellphoto = "C:\Documents and Settings\user\デスクトップ\kao\" & Sheets("Sheet7").Cells(L, "h") photokozinForm("kaoImage" & L).Picture = LoadPicture(cellphoto) next excelのformにaccessと同じように6recordが表示されているように区切ってその中にkaoImage1からkaoImage6までImageコントロールに顔Imageを表示させようとしてありますが上記コードでfor文で作成すると指定されたオブジェクトは見つかりませんとerrorになってしまいます仕方なくif文で If L = 1 Then photokozinForm.kaoImage1.Picture = LoadPicture(cellphoto) ElseIf L = 2 Then photokozinForm.kaoImage2.Picture = LoadPicture(cellphoto) でやっていますがfor文でできないでしょうか

  • 指定したフォルダの画像を一括でプリロードしたい

    ページが表示されたときに、指定した画像をプリロードするようjavascriptで実装しています。 preloadの引数に1つ1つプリロードしたいファイルを書いていかないといけないので ファイル数が多くなると手間です。 例えば img/photo1.jpg img/photo2.jpg img/thumb.jpg image/photo1.jpg image/photo2.jpg image/thumb.jpg という具合にimgとimageのフォルダがあってimgにだけある画像ファイル全てを一括でプリロード したいです。どのようなソースをかけばいいでしょうか? また、指定したフォルダ以下の画像ファイルを一括でプリロードする関数などがあるのでしょうか? function preload(imgs){   for(var i = 0; i < imgs.length; i++){    var imgObj = new Image();    imgObj.src = imgs[i];    } } preload(["./img/photo1.jpg", "./img/photo2.jpg", "./img/photo3.jpg"]);