C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■2438  Windowsの未操作時間が知りたい
□投稿者/ トカ -(2006/01/31(Tue) 09:59:15)

    分類:[C#] 


    分類:[C#] 

    はじめまして。
    Windowsが一定時間未操作となった際特定の処理を行いたいのですが
    簡単に取得する方法はないのでしょうか?
    (自前でキーボード操作、マウス操作等を監視するしかない?)



親記事 /0過去ログ2より / 関連記事表示
削除チェック/

■2438  Windowsの未操作時間が知りたい
□投稿者/ トカ -(2006/01/31(Tue) 09:59:15)

    分類:[C#] 


    分類:[C#] 

    はじめまして。
    Windowsが一定時間未操作となった際特定の処理を行いたいのですが
    簡単に取得する方法はないのでしょうか?
    (自前でキーボード操作、マウス操作等を監視するしかない?)



親記事 /0過去ログ2より / 関連記事表示
削除チェック/

■3414  Re[2]: セットフォーカス・ゴットフォーカス
□投稿者/ とりこびと -(2007/05/09(Wed) 18:05:03)
>
    No3411 (はつね さん) に返信
    > ■No3407 (アクシオン さん) に返信
    >>C#で、テキストボックスのイベントでセットフォーカス・ゴットフォーカスが出来るのでしょうか?
    >>TextChangedは、簡単に出来るのですが・・・・
    >
    > じゃんぬさんが書かれているように「使わない方が良い」イベントのため、とりこびとさんが書かれている方法でも表示されません。
    >
    > # VB2005でも同様にプロパティウィンドウのイベント一覧としては表示されません。

    すみません。GotFocus イベントは表示されないんですね。
    イベントハンドラの登録方法だけで考えていました。

    中途半端な情報で申し訳ありませんでした。

記事No.3407 のレス /過去ログ12より / 関連記事表示
削除チェック/

■9634  Re[6]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ もみじ -(2007/11/01(Thu) 12:16:55)
    2007/11/01(Thu) 13:03:56 編集(投稿者)

    最後に結果報告です。

    IgnoreRemoteRequests プロパティを設定する事で、
    思い通りの動作を実現することができました。

    ありがとうございました(^^
記事No.9590 のレス / END /過去ログ22より / 関連記事表示
削除チェック/

■19667  Re[1]: 図形の回転
□投稿者/ επιστημη -(2008/05/27(Tue) 15:35:51)
>
    ※ Timerのハンドラで直接描画すると、
    たとえばフォームに他のフォームかぶせて取り除くと描いたもんが消えてるんちゃいます?

    > その部分だけ図形をクリアさせることは可能でしょうか。

    いったんマッシロにし、全部書き直した方がてっとり早くない?
    上記※に繋がる提案なんですけども。
記事No.19664 のレス /過去ログ38より / 関連記事表示
削除チェック/

■54335  Re[2]: NPOIでGetRowがNULLになる
□投稿者/ TAMA -(2010/10/14(Thu) 09:10:53)
    No54332 (もりお さん) に返信
    > 2010/10/14(Thu) 08:59:09 編集(投稿者)
    >
    > sheetSoukatsu.GetRow(5) で取得する行の、いずれの cell にも値が入っていないということはありませんか?
    >

    もりお様いつもありがとうございます。
    ご指摘の通り、値が入っているとNULLになりませんでした。
    ご回答頂き、まことにありがとうございました。

記事No.54325 のレス / END /過去ログ91より / 関連記事表示
削除チェック/

■81362  サーバコントロールの表示/非表示について
□投稿者/ miito -(2016/09/11(Sun) 18:43:35)

    分類:[ASP.NET (VB)] 

    はじめまして。
    独学でWebアプリケーションを作成していますが
    分からないことがありますので質問させて頂きます。

    サーバコントロールの表示/非表示を
    JavaScriptとサーバ処理の両方で切り替えたいのですが、
    上手くいきません。
    以下に該当部分のみのコードを掲載します。

    ≪HTMLソース≫
    <div>
     <asp:Button ID="btnTest" runat="server" Text="Button" />
    <asp:Label ID="lblTest" runat="server" Text="Label" />
    </div>

    ≪コードビハインド≫
    Protected Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
     If lblTest.Attributes("display") = "block" Then
     '表示状態なら非表示にする
    lblTest.Attributes.Add("display", "none")
    Else
      '非表示状態なら表示する
     lblTest.Attributes.Add("display", "block")
    End If
    End Sub

    ≪JavaScript(JQuery)≫
    $(document).on('click', function (e) {
      // 領域外をクリックしたら非表示にする
    if (!$(e.target).closest('#lblTest').length){
    $('#lblTest').hide();
    }
    });

    ボタン(btnTest)をクリックしたら
    ラベル(lblTest)の表示状態を切り替え、
    ラベル以外の領域をクリックしたら非表示にする
    ということをしたいですが、
    上記コードでは、ボタンをクリックしても
    表示状態が切り替わりません(表示されたままです)

    サーバコントロールのVisibleプロパティの使用も試しましたが、
    JavaScriptで非表示にした際、VisibleプロパティがFalseに変わらず、
    次にボタンをクリックしても表示状態になりません。

    ご教授の程、よろしくお願い致します。
親記事 /過去ログ138より / 関連記事表示
削除チェック/

■87015  テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 13:20:01)

    分類:[VB6 以前] 

    お世話になります。

    C# と VB.NET の質問掲示板とありましたが、分類にvb6以前のもありましたので投稿致しました。

    テキストボックス指定行の文字列につきまして、ご質問いたします。

    全て半角数字、文字での使い方ですと文字列が取得されます。
    全角にしますと指定行の文字列の取得が思う通りに文字列が取得できませんでした。
    全て半角数字、文字での使い方で考えられていると思われました。

    質問
    全角及び全角、半角の混合でも使えるようにすることはできませんでしょうか。
    ご指導のほどを宜しくお願い致します。

    下記のWEBページをそのまま参考にしています。
    「複数行テキストボックスの指定行の文字列を取得する」
    http://hanatyan.sakura.ne.jp/vb6/textbox06.htm
    '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Option Explicit

    '指定のウィンドウにメッセージを送る(750)
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
      ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    'メモリブロックをコピーする(1008)
    Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
      Destination As Any, Source As Any, ByVal Length As Long)
    '複数行テキストボックスにおいてテキストの行数を取得する(799)
    Private Const EM_GETLINECOUNT = &HBA
    '  〃    指定行の先頭の文字インデックスを取得する(803)
    Private Const EM_LINEINDEX = &HBB
    '指定の行を取得する
    Private Const EM_GETLINE = &HC4
    '  〃    指定の文字インデックスを含む行インデックスを取得(802)
    Private Const EM_LINEFROMCHAR = &HC9
    '  〃    指定した行インデックスの一つ前の行までのバイト数を取得(803)
    Private Const EM_LINELENGTH = &HC1

    Private Sub Command1_Click()
    On Error Resume Next
      Dim lngMaxRow As Long
      lngMaxRow = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
      Dim No As Long
      No = CLng(Text2.Text)
      If No < 1 Or No > lngMaxRow Or Err.Number Then
        Beep
        Exit Sub
      End If
      Label1.Caption = fGetLineString(Text1, No - 1)
    End Sub


    '指定行の文字列を取得する関数
    Private Function fGetLineString(ByRef txtBox As TextBox, ByVal LineNo As Long) As String
      Dim Buffer()  As Byte '取得する文字列のバッファー
      Dim LineLength As Long '1行当たりのバイト数
      Dim LineIndex As Long '指定行の先頭の文字インデックス
      'バッファーのサイズ用に1行当たりのバイト数を事前に取得
      '指定行の先頭の文字インデックスを取得
      LineIndex = SendMessage(txtBox.hwnd, EM_LINEINDEX, LineNo, ByVal 0&)
      '指定行のバイト数を求める
      LineLength = SendMessage(txtBox.hwnd, EM_LINELENGTH, LineIndex, ByVal 0&)
      If LineLength < 1 Then
        fGetLineString = ""
        Exit Function  '改行のみ場合等は、処理を抜ける
      End If
      ReDim Buffer(1 + LineLength)
      'バッファーの最初の2バイトに最大バイト数を設定する
      CopyMemory Buffer(0), LineLength, 2
      '半角1バイト・全角2バイト換算での取得バイト数と文字列を取得
      '(ここで取得するバイト数は、上記で取得するバイト数と同じになります。)
      LineLength = SendMessage(txtBox.hwnd, EM_GETLINE, LineNo, Buffer(0))
      'バッファーより指定バイト数分の文字を取り出し Unicode に変換
      fGetLineString = StrConv(LeftB$(Buffer, LineLength), vbUnicode)
    End Function
    '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '
親記事 /過去ログ149より / 関連記事表示
削除チェック/

■87018  Re[1]: テキストボックス指定行の文字列につきまして
□投稿者/ 魔界の仮面弁士 -(2018/04/07(Sat) 14:53:22)
    No87015 (ak さん) に返信
    > 全て半角数字、文字での使い方ですと文字列が取得されます。
    > 全角にしますと指定行の文字列の取得が思う通りに文字列が取得できませんでした。

    手元の VB4 + Win7 だと問題が確認できませんでした。

    どういう文字列を設定して、
    何行目を取得したときに、
    どういう結果になってしまうのか、
    具体的な情報を頂けると助かります。


    > 下記のWEBページをそのまま参考にしています。
    引数の txtBox は ByRef にする必要は無いような…。(本題とは無関係の事ですが)


    > 全て半角数字、文字での使い方で考えられていると思われました。
    手元に VB6 環境が無かったので検証できてはいませんが、API によっては、
    マニフェストによって動作が変わってしまう事もあるようです。
    今回の件に関係あるのかは分かりませんが。
    https://support.microsoft.com/ja-jp/help/418099
    http://hanatyan.sakura.ne.jp/vbhlp/manifest.htm


    > 全角及び全角、半角の混合でも使えるようにすることはできませんでしょうか。
    Win95/98/98SE/ME で動作しなくても構わないのであれば、
    SendMessageA ではなく SendMessageW での実装に切り替えてみては如何でしょうか。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87020  Re[2]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 15:45:41)
    魔界の仮面弁士 さん

    返答して頂きましてありがとうございました。

    >手元の VB4 + Win7 だと問題が確認できませんでした。
    はい、問題ないことが分りましたので、何か設定、使い方に問題があるのでしょうか?。
    Windows XP/7 (32bit) / VB6.0(SP6)で確かめました。

    >どういう文字列を設定して、
    >何行目を取得したときに、
    >どういう結果になってしまうのか、
    >具体的な情報を頂けると助かります。
    はい、分りました。

    Text1
     ↓
    あいうえお
    かきくけこ
    さしすせそ
    たちつてと

    Text2
     ↓
    1入力(1行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    あいうえお
    かきく

    Text2
     ↓
    2入力(2行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    さしすせそ


    Text1
     ↓
    111111111
    222222222
    333333333
    444444444
    555555555


    Text2
     ↓
    1入力(1行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    111111111

    Text2
     ↓
    2入力(2行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    222222222

    >引数の txtBox は ByRef にする必要は無いような…。(本題とは無関係の事ですが)
    問題ないとのことでありますので参考と同じくこのままにしておきます。

    >Win95/98/98SE/ME で動作しなくても構わないのであれば、
    はい、Win95/98/98SE/ME で動作することはありません。
    >SendMessageA ではなく SendMessageW での実装に切り替えてみては如何でしょうか。

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    "SendMessageA"⇒"SendMessageW" 1箇所
    "SendMessageA"⇒"SendMessageW"に変更しますと以下に変わりました。

    Text2
     ↓
    1入力(1行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    あいうえお

    Text2
     ↓
    2入力(2行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    さしす

    以上につき説明が不十分な所があり返答して頂けますと幸いであります。


記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87021  Re[3]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 16:03:39)
    魔界の仮面弁士 さん

    自分に誤りがありました。
    本ソフトに範囲選択を追加した為に不具合の問題が発生してしまいました。

    本ソフトに範囲選択を追加したソフトをこの後、記載投稿します。

    大変、申し訳ありませんでした。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87022  Re[4]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 16:37:54)
    魔界の仮面弁士 さん

    (Label1)文字列の取得表示を(Text1)に範囲選択するように追加しましたが範囲選択に不具合であることは分りました。

    '指定行の文字列を取得する関数
    Private Function fGetLineString(ByRef txtBox As TextBox, ByVal LineNo As Long) As String
    Dim Buffer() As Byte '取得する文字列のバッファー
        ・
        ・
    ' ↓ 以下を追加しましたが不具合により範囲選択が文字列の取得表示と一致しませんでした。
    Text1.SetFocus: Text1.SelStart = LineIndex: Text1.SelLength = LineLength '指定行を範囲選択する

    End Function


    誤り⇒Text1.SetFocus: Text1.SelStart = LineIndex: Text1.SelLength = LineLength '指定行を範囲選択する

    自作追加が問題の原因であることが分りました。

    お手数をお掛けしまして大変、申し訳ありませんでした。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87023  Re[5]: テキストボックス指定行の文字列につきまして
□投稿者/ 魔界の仮面弁士 -(2018/04/07(Sat) 18:19:12)
    No87020 (ak さん) に返信
    > Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    > ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    > "SendMessageA"⇒"SendMessageW" 1箇所
    > "SendMessageA"⇒"SendMessageW"に変更しますと以下に変わりました。

    EM_LINELENGTH の戻り値や EM_GETLINE に渡すバッファは TCHAR 単位なので、
    A 系では「バイト数」、W 系では「文字数」で扱います。
    ですからバッファサイズも見直さないと駄目ですよ。

    'ReDim Buffer(1 + LineLength)
    ReDim Buffer(1 + 2 * LineLength)




    No87022 (ak さん) に返信
    > 範囲選択に不具合であることは分りました。
    SelStart / SelLength プロパティは、バイト数ではなく文字数単位での指定ですよ。

    たとえば Text1 の中身が下記の 4 行だったとして

    ====
    あさに
    ごはん
    たべた
    はずだ
    ====

    ここで「2 行目」を選択するなら、
     Text1.SelStart = 6
     Text1.SelLength = 3 または 5
    でなければなりません。(末尾改行を含むなら 5 文字選択、含まないなら 3 文字選択)

    EM_LINEINDEX で得られる値は、A 系では「6 バイト目」、W 系では「6 文字目」を意味しますし、
    EM_LINELENGTH で得られる値は、A 系では「6 バイト」、W 系では「3 文字」を意味します。

    なのでこの場合は、SendMessageW の方が手っ取り早いかも。


    > Private Function fGetLineString(ByRef txtBox As TextBox, ByVal LineNo As Long) As String
    操作するべきは Text1 ではなく、txtBox のはずでは?

    それに、範囲選択することを目的とするのなら、
    このネーミングのままにするのは不自然な気もします。
    Sub SelectLine とかの方が良いかもしれません。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87024  Re[6]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 19:09:29)
    魔界の仮面弁士 さん

    再度に渡り回答をして頂きましてありがとうございました。


    >■No87020 (ak さん) に返信
    >> Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    >> ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    >> "SendMessageA"⇒"SendMessageW" 1箇所
    >> "SendMessageA"⇒"SendMessageW"に変更しますと以下に変わりました。


    > ■No87020 (ak さん) に返信
    > EM_LINELENGTH の戻り値や EM_GETLINE に渡すバッファは TCHAR 単位なので、
    > A 系では「バイト数」、W 系では「文字数」で扱います。
    > ですからバッファサイズも見直さないと駄目ですよ。

    > 'ReDim Buffer(1 + LineLength)
    > ReDim Buffer(1 + 2 * LineLength)

    > ■No87022 
    > > 範囲選択に不具合であることは分りました。
    > SelStart / SelLength プロパティは、バイト数ではなく文字数単位での指定ですよ。

    > たとえば Text1 の中身が下記の 4 行だったとして

    > ====
    > あさに
    > ごはん
    > たべた
    > はずだ
    > ====

    > ここで「2 行目」を選択するなら、
    >  Text1.SelStart = 6
    >  Text1.SelLength = 3 または 5
    > でなければなりません。(末尾改行を含むなら 5 文字選択、含まないなら 3 文字選択)

    > EM_LINEINDEX で得られる値は、A 系では「6 バイト目」、W 系では「6 文字目」を意味しますし、
    > EM_LINELENGTH で得られる値は、A 系では「6 バイト」、W 系では「3 文字」を意味します。

    > なのでこの場合は、SendMessageW の方が手っ取り早いかも

    >> Private Function fGetLineString(ByRef txtBox As TextBox, ByVal LineNo As Long) As String
    > 操作するべきは Text1 ではなく、txtBox のはずでは?

    > それに、範囲選択することを目的とするのなら、
    > このネーミングのままにするのは不自然な気もします。
    > Sub SelectLine とかの方が良いかもしれません。

    以上のことから、範囲選択に関し全般的に見直しする必要があることが分りました。
    特に、ご指摘につきましては一つ一つ時間はかかりますが調べてみます。
    予定としましては、数日中に分りましたら、解決とさせてもらいます。
    色々と、ご指導して頂きまして深謝申し上げます。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87050  Re[7]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/09(Mon) 09:44:58)
    魔界の仮面弁士 さん

    お世話になりました。

    テキストボックス指定行の文字列の範囲選択につきまして、ご説明いたします。

      先頭行から最終行位置までのバイト計算では、
      パソコンにもよると思いますがWebページが[20000]バイトでは1〜3秒かかりました。
      そこで、検索を利用して指定行の文字列の範囲選択を行うことにしました。
      指定行[xx]行目の文字列を取得し、その文字列を文字検索し文字列サイズを範囲選択しました。
      指定行文字列の位置を取得し同じ文字列が複数でも文字検索された行位置と指定行を比較し一致
      した所で範囲選択としました。Webページが[20000]バイト最終行位置まで試しますと即、反映できました。
      他にも良い方法があると思いますが文字検索を利用して行うことにしました。

      色々と、ご指導をしてもらいまして、本当にありがとうございました。
記事No.87015 のレス / END /過去ログ149より / 関連記事表示
削除チェック/

■87051  Re[8]: テキストボックス指定行の文字列につきまして
□投稿者/ 魔界の仮面弁士 -(2018/04/09(Mon) 13:49:49)
    No87050 (ak さん) に返信
    > 先頭行から最終行位置までのバイト計算では、
    バイト計算せずに実装することもできますよ。
    後述のコードを参考にしてみてください。


    ちなみに SelLength プロパティは &H0000&〜&HFFFF& の範囲しか渡せないので、
    本文が長くなってくると
      txtBox.SelStart = Len(txtBox.Text) '65536 以上になるとエラー
    すら実行できなくなりますのでご注意ください。



    No87023 (魔界の仮面弁士) の訂正
    > EM_LINELENGTH の戻り値や EM_GETLINE に渡すバッファは TCHAR 単位なので、
    > A 系では「バイト数」、W 系では「文字数」で扱います。
    SendMessageA / SendMessageW の違いというわけでは無さそうですね。
    手元の環境では、SendMessageA / SendMessageW のいずれを使ったとしても、
    VB6 の TextBox に対して送出した場合は バイト単位
    VB.NET の TextBox に対して送出した場合は文字数単位となりました。


    ということで、SelStart / SelLength プロパティ(文字数単位)のかわりに
    EM_SETSEL を使って選択する方法に切り替えてみました。
    SelStart と違って 65535 文字を超えても大丈夫です。



    Option Explicit
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hWnd As OLE_HANDLE, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const EM_SETSEL As Long = &HB1&
    Private Const EM_LINEINDEX As Long = &HBB&
    Private Const EM_LINELENGTH As Long = &HC1&
    Private Const EM_SCROLLCARET As Long = &HB7&

    'TextBox の指定行を選択状態にします
    ' txtBox : 処理対象の TextBox
    ' lineNo : 選択する行番号(1〜)
    ' autoScroll : 選択したあと、その場所までスクロールさせて表示するかどうか
    ' reverseSelect : True=行末から行頭に選択、False=行頭から行末に選択
    Friend Sub SelectLine(ByVal txtBox As TextBox, ByVal lineNo As Long, Optional autoScroll As Boolean = True, Optional reverseSelect As Boolean = True)
      Dim fromPos As Long, toPos As Long

      Dim lineIndex As Long
      lineIndex = SendMessage(txtBox.hWnd, EM_LINEINDEX, lineNo - 1, 0&)
      If lineIndex < 0& Then
        fromPos = &H7FFFFFFF
        toPos = &H7FFFFFFF
      Else
        Dim lineLength As Long
        lineLength = SendMessage(txtBox.hWnd, EM_LINELENGTH, lineIndex, 0&)
        If reverseSelect Then
          fromPos = lineIndex + lineLength
          toPos = lineIndex
        Else
          fromPos = lineIndex
          toPos = lineIndex + lineLength
        End If
      End If
      SendMessage txtBox.hWnd, EM_SETSEL, fromPos, toPos
      If autoScroll Then
        SendMessage txtBox.hWnd, EM_SCROLLCARET, 0&, 0&
      End If

      On Error Resume Next
      txtBox.SetFocus 'Visible や Enabled が False だと実行時エラー
    End Sub


    引数の「ByVal txtBox As TextBox」を「ByVal txtBox As RichTextBox」に置き換えれば、
    そのまま RichTextBox 版にもなります。
記事No.87015 のレス / END /過去ログ149より / 関連記事表示
削除チェック/

■87053  Re[9]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/09(Mon) 15:20:14)
    魔界の仮面弁士 さん

    ご回答をして頂きまして、ありがとうございました。

    > ちなみに SelLength プロパティは &H0000&〜&HFFFF& の範囲しか渡せないので、
    > 本文が長くなってくると
    >   txtBox.SelStart = Len(txtBox.Text) '65536 以上になるとエラー
    > すら実行できなくなりますのでご注意ください。
    はい、分りました。65535 文字を超えては確かめてはいませんが、エラーになるのですね。
    知りませんでした。大変、参考になりました。

    >> EM_LINELENGTH の戻り値や EM_GETLINE に渡すバッファは TCHAR 単位なので、
    >> A 系では「バイト数」、W 系では「文字数」で扱います。
    >SendMessageA / SendMessageW の違いというわけでは無さそうですね。
    >手元の環境では、SendMessageA / SendMessageW のいずれを使ったとしても、
    >VB6 の TextBox に対して送出した場合は バイト単位
    >VB.NET の TextBox に対して送出した場合は文字数単位となりました。
    はい、分りました。
    >ということで、SelStart / SelLength プロパティ(文字数単位)のかわりに
    >EM_SETSEL を使って選択する方法に切り替えてみました。
    >SelStart と違って 65535 文字を超えても大丈夫です。
    SelStart / SelLengthの使用ですのでEM_SETSELを使用してみます。

    ソフトを、ご提供して頂きまして感謝申し上げます。
    ご提供ソフトで確かめてみます。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87058  Re[10]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/10(Tue) 02:28:23)
    魔界の仮面弁士 さん

    お世話になります。

    ご提供してもらいました方法につきまして、ご報告いたします。

    ご提供してもらいました下記の方法に

    「複数行テキストボックスの指定行の文字列を取得する」
    http://hanatyan.sakura.ne.jp/vb6/textbox06.htm

    Command2ボタンを追加し、Text1に指定行を入力⇒Command2ボタンをクリックすることで、
    txtBox(参考)指定行の文字列(半角、全角)全ての桁が行毎に選択状態になりました。
    検索を利用して指定行の文字列選択から、ご提供してもらいました方法にさせてもらいました。
    大変、スッキリなりました。

    (参考)
    ======
    あさに
    ごはん
    たべた
    はずだ

    111111111
    222222222
    333333333
    444444444
    555555555

    あ1い23うえ4お5
    ===============

    Option Explicit
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hWnd As OLE_HANDLE, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
       ・
       ・
       ・
    End Sub

    Private Sub Command2_Click()

    Call SelectLine(Text1, Text2)

    Dim stText As String

    ' 選択中の文字を取得する
    stText = Me.Text1.SelText

    ' 取得した選択中の文字を表示する
    Label1.Caption = stText

    End Sub

    再三に渡り、ご指導をして頂きまして本当にありがとうございました。
記事No.87015 のレス / END /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -