tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルImage1.に縦横同じ比率で表示したい
記事No11082
投稿日: 2008/01/08(Tue) 13:14
投稿者Do_Shirouto
いつも教えて頂き有難う御座います。
前回の質問の続きになりますが、
また教えてください。
Image1.Pictureを縦横同じ比率で表示したく
'------------------------------------
Private Sub List1_Click()
Dim lngW As Long
Dim lngJ As Long
Picture1.Visible = False
Picture1.AutoSize = True
Set Picture1.Picture = LoadPicture(strPath & List1.Text)
For lngJ = 1 To 20 Step 0.1
lngW = Int(Picture1.Width / lngJ)
If lngW < 2416 Then Exit For
Next
Image1.Width = lngW
Image1.Height = Int(Picture1.Height / lngJ)
Set Image1.Picture = LoadPicture(strPath & List1.Text)
End Sub
'-------------------------------------
これを実行するとフリーズしてしまいます。
Set Picture1.Picture = LoadPicture(strPath & List1.Text)
この時のstrPath & List1.TextのサイズはW=12480:H=18218
ここまでは上手く出来ます。
またImage1.Width = Image1.Height=に定数を入れても出来ます。
計算式が間違っているのでしょうか?
もう一つお願いしたいのですが、
現在Clipboard.SetData LoadPicture(strPath & List1.Text)
でClipboard.に.Bmpファイルが入っているのですが、
MS.ワードに貼り付ける方法が分かりません。
この件は過去ログで検索した所、有りましたが
内容が見る事が出来ませんでした
ご指導のほど宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: Image1.に縦横同じ比率で表示したい
記事No11083
投稿日: 2008/01/08(Tue) 14:03
投稿者大吉末吉
> これを実行するとフリーズしてしまいます。

単に、
> Dim lngJ As Long
なので、

> For lngJ = 1 To 20 Step 0.1
がカウントアップされないからでは?

#整数の「1」に「0.1」を加えて、整数に戻せばやっぱり「1」のままです。
#いつまで経っても20にはならない・・・

[ツリー表示へ]
タイトルRe^2: Image1.に縦横同じ比率で表示したい
記事No11105
投稿日: 2008/01/11(Fri) 08:53
投稿者Do_Shirouto
> > これを実行するとフリーズしてしまいます。
>
> 単に、
> > Dim lngJ As Long
> なので、
>
> > For lngJ = 1 To 20 Step 0.1
> がカウントアップされないからでは?
>
> #整数の「1」に「0.1」を加えて、整数に戻せばやっぱり「1」のままです。
> #いつまで経っても20にはならない・・・
大吉末吉 さん有難う御座いました。
変数を変えて上手くいきました。本当に有難う御座いました。
もう一つの質問ですが、
現在Clipboard.SetData LoadPicture(strPath & List1.Text)
でClipboard.に.Bmpファイルが入っているのですが、
MS.ワードに貼り付ける方法が分かりません。
この件は過去ログで検索した所、有りましたが
内容が見る事が出来ませんでした
ご指導のほど宜しくお願いいたします。

[ツリー表示へ]
タイトルRe^3: Image1.に縦横同じ比率で表示したい
記事No11107
投稿日: 2008/01/11(Fri) 11:50
投稿者大吉末吉
> 現在Clipboard.SetData LoadPicture(strPath & List1.Text)
> でClipboard.に.Bmpファイルが入っているのですが、
> MS.ワードに貼り付ける方法が分かりません。

どこが分からないのでしょうか?

WordVBAでマクロの記録をとると、
> Selection.Paste
となりましたが・・・


後、
> Clipboard.SetData LoadPicture(strPath & List1.Text)
の前に
> Clipboard.Clear
を実行しないとOfficeにクリップボードが変更されないみたいですね・・・

#Officeって、クリップボード情報の管理を独自でやってるんでしたっけ?

[ツリー表示へ]
タイトルRe^4: Image1.に縦横同じ比率で表示したい
記事No11108
投稿日: 2008/01/11(Fri) 13:44
投稿者魔界の仮面弁士
> > Clipboard.SetData LoadPicture(strPath & List1.Text)
> の前に
> > Clipboard.Clear
> を実行しないとOfficeにクリップボードが変更されないみたいですね・・・

クリップボードには、複数形式のデータを同時に格納できますので、
既に「他のデータ」がクリップボード入っていて、かつ、それが
(Word にとって)優先順位の高い形式のデータだった場合、
前のデータが優先してペーストされますね。

# 「形式を選択して貼り付け」するならば、Clear しなくても良いでしょうけれども。

[ツリー表示へ]
タイトルRe^5: Image1.に縦横同じ比率で表示したい
記事No11114
投稿日: 2008/01/11(Fri) 16:09
投稿者Do_Shirouto
> > > Clipboard.SetData LoadPicture(strPath & List1.Text)
> > の前に
> > > Clipboard.Clear
> > を実行しないとOfficeにクリップボードが変更されないみたいですね・・・
>
> クリップボードには、複数形式のデータを同時に格納できますので、
> 既に「他のデータ」がクリップボード入っていて、かつ、それが
> (Word にとって)優先順位の高い形式のデータだった場合、
> 前のデータが優先してペーストされますね。
>
> # 「形式を選択して貼り付け」するならば、Clear しなくても良いでしょうけれども。
皆さんご解答有難う御座います。
Clipboard.Clear
Clipboard.SetData LoadPicture(strPath & List1.Text)
このようにコードを書いていますが、
VBより貼り付ける方法を模索しています。
MS.ワードから貼り付けする以外方法が無いのでしょうか?

[ツリー表示へ]