tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルTextBox1.Locationを変更したい
記事No12058
投稿日: 2021/01/18(Mon) 01:49
投稿者たつや
以前の投稿内容:【PrintFormへの用紙設定】2015.12.23では
大変、お世話になり、ありがとうございました。
--------------------------<内容>----------------------------------
VB6.0で作成した住所録(機能:登録、修正、はがきへの印刷)プログラムを
当サイト、MSDNを参考にしながらVB2015版に修正しております。

<内容>
フォームイメージをはがきへの印刷時、ページ設定ダイアログにて
"はがき"にしてから、印刷プレビューを表示させると、どうみても
大きさが「はがき」ではなく、A4にみえます。
プリンタへは「はがき」をセットし、印刷するとA4に印刷されている
ようでズレて印刷されます。
ページ設定ダイアログの用紙:はがき が印刷プレビューに渡ってない
感じです。

------------------------------------------------------------------

今回、ご教授頂きたいのは、はがきに差出人住所を印刷するよう
機能追加しているのですが、年賀状と普通はがきとでは印刷位置が
異なります。普通はがき用に差出人住所を印刷するテストは完了
しました。
年賀状用差出人住所を印刷するためにフォームを新規作成せず、
普通はがき用の差出人住所位置を上方向に50ピクセル移動させる
ことが可能であれば、具体的なコーディングを教えて頂きたく
よろしくお願い致します。

<普通はがき用フォーム(差出人住所1行目)>
Me.TextLine1.Location = New System.Drawing.Point(14, 367)


PC環境:Windows 8.1 / VB2019 / Framework 4.5 /

[ツリー表示へ]
タイトルRe: TextBox1.Locationを変更したい
記事No12059
投稿日: 2021/01/20(Wed) 22:07
投稿者魔界の仮面弁士
> Me.TextLine1.Location = New System.Drawing.Point(14, 367)

デザイン時に、TextLine の Modifiers プロパティが Friend 以上の場合は、
Me の部分を、対象フォームのインスタンス にするだけで動くはずですよ。


VB6 互換の暗黙のフォームインスタンスを使っているなら、
フォーム名.TextLine1.Location でアクセスできます。

そうではなく、明示的に New フォーム名() で生成している場合には、
その New したインスタンスを、御自身で管理された変数に保持しているでしょうから、
それを使ってアクセスすることが出来るでしょう。


一方、TextLine の Modifiers プロパティが Private になっている場合は、
TextLine の位置を調整するためのプロパティかメソッドを配置するのはどうでしょう。
たとえば、該当フォームに

Public Property AddressBoxOffset() As Integer
    Get
        Return Me.TextLine1.Top - 367
    End Get
    Set
        Me.TextLine1.Top += Value
    End Set
End Property

などを用意しておき、

 対象フォームのインスタンス.AddressBoxOffset = -50

などとする、ということです。


> PC環境:Windows 8.1 / VB2019 / Framework 4.5 /
組合せが気になったので一応確認。

Windows 8.1 以降の OS 環境に .NET Framework 4.5 をインストールすることはできません。
(.NET 4.5 向けに作成されたアプリケーションを、Windows 8.1 や 10 で使うことは可能です)

Windows 8   は既定で .NET Framework 4.5 がインストールされていましたが
Windows 8.1 は既定で .NET Framework 4.5.1 がインストールされており、
下位バージョンで上書きすることができないためです。

なお、.NET Framework 4.5 および 4.5.1 のサポートは 2016/01/12 に終了しています。
現在もサポートされている .NET Framework バージョンは、4.5.2 以降と 3.5 SP1 だけですね。

[ツリー表示へ]
タイトルRe^2: TextBox1.Locationを変更したい
記事No12060
投稿日: 2021/01/21(Thu) 04:14
投稿者たつや
> > Me.TextLine1.Location = New System.Drawing.Point(14, 367)
>
> デザイン時に、TextLine の Modifiers プロパティが Friend 以上の場合は、
> Me の部分を、対象フォームのインスタンス にするだけで動くはずですよ。
>
>
> VB6 互換の暗黙のフォームインスタンスを使っているなら、
> フォーム名.TextLine1.Location でアクセスできます。
>
> そうではなく、明示的に New フォーム名() で生成している場合には、
> その New したインスタンスを、御自身で管理された変数に保持しているでしょうから、
> それを使ってアクセスすることが出来るでしょう。
>
→魔界の仮面弁士様、ご教授ありがとうございます。

  ご指摘を以下で対応出来ると解釈しました。
 1行目だけを上方向に50ピクセル移動出来たのですが、なぜかこの1行目と2行目
 8行目頭2文字が文字化けしてしまいました。

      .TextLine1.Location = New Point(14, 316)

 なぜ該当行以外が文字化けするのか? という状況です。


> > PC環境:Windows 8.1 / VB2019 / Framework 4.5 /
> 組合せが気になったので一応確認。
>
> Windows 8.1 以降の OS 環境に .NET Framework 4.5 をインストールすることはできません。
> (.NET 4.5 向けに作成されたアプリケーションを、Windows 8.1 や 10 で使うことは可能です)
>
> Windows 8   は既定で .NET Framework 4.5 がインストールされていましたが
> Windows 8.1 は既定で .NET Framework 4.5.1 がインストールされており、
> 下位バージョンで上書きすることができないためです。
>
> なお、.NET Framework 4.5 および 4.5.1 のサポートは 2016/01/12 に終了しています。
> 現在もサポートされている .NET Framework バージョンは、4.5.2 以降と 3.5 SP1 だけですね。

→Windows 8か8.1何れの時にVS2015をインストールしたのかは、定かではないです。
 そのような状況でVS2019をインストール、以前のPGをビルドし動作するか確認、
 ついでに機能追加しております。
 該当ソリューションをダブルクリック→VS2019起動→該当ソリューションのプロパティ>
 アプリケーションのターゲットフレームワーク:.NET Framework 4.5

と表示されました。

[ツリー表示へ]
タイトルRe^3: TextBox1.Locationを変更したい
記事No12061
投稿日: 2021/01/21(Thu) 08:38
投稿者たつや
> > > Me.TextLine1.Location = New System.Drawing.Point(14, 367)
> >
> > デザイン時に、TextLine の Modifiers プロパティが Friend 以上の場合は、
> > Me の部分を、対象フォームのインスタンス にするだけで動くはずですよ。
> >
> >
> > VB6 互換の暗黙のフォームインスタンスを使っているなら、
> > フォーム名.TextLine1.Location でアクセスできます。
> >
> > そうではなく、明示的に New フォーム名() で生成している場合には、
> > その New したインスタンスを、御自身で管理された変数に保持しているでしょうから、
> > それを使ってアクセスすることが出来るでしょう。
> >
> →魔界の仮面弁士様、ご教授ありがとうございます。
>
>   ご指摘を以下で対応出来ると解釈しました。
>  1行目だけを上方向に50ピクセル移動出来たのですが、なぜかこの1行目と2行目
>  8行目頭2文字が文字化けしてしまいました。
>
>       .TextLine1.Location = New Point(14, 316)
>
>  なぜ該当行以外が文字化けするのか? という状況です。

     →原因は、データのエンコード種類の違いによるものでした。
      すみませんでした。これで、上手くいけそうです。
      ありがとうございました。

[ツリー表示へ]