喫茶XRAYトップページ

[スレッド全体
]

[8004] Re4:memoの行の文字制限返信 削除
2014/9/22 (月) 16:49:36 Mr.XRAY
▼ andyさん
> MaxLength と書いたのがまずかったです。

これは失礼しました.
タイトルには「行」となっていますが,
某掲示板等では,タイトルと質問の内容が違うことは日常茶飯事なので(言い訳です)
では,今度は用心して,(^^;

本当に改行,つまり,改行コードを挿入するのか,
あるいは,折り返し表示するのか,で処理が違ってきますね.
(物理改行かソフト改行か)

また,入力中にその処理をするのか,
あるいは,全て入力したら([Enter]キーで入力終了と判定するとか)処理するのか,
によってもですね.

参考までに,行の長さ(文字列の長さ)の取得は,
EM_LINELENGTH メッセージです.
ソフト改行のオン・オフは EM_FMTLINES

いずれにしても,結構面倒なのではないかと思います.
では,頑張ってください.


[8005] Re5:memoの行の文字制限返信 削除
2014/9/22 (月) 17:29:54 Mr.XRAY
> また,入力中にその処理をするのか,

となるとかなり面倒ですね.
もし,ある行のテキストを編集して,指定文字数未満,あるいは超えた場合に
にはどうするか,という問題も発生します.
また,折り返し表示した場合,本当の改行(コード)の処理はどうするのかとか.
まず,動作仕様をよく考えることが肝要かと思います.


[8007] Re6:memoの行の文字制限返信 削除
2014/9/23 (火) 09:29:46 andy
いろいろありがとうございました。

とりあえず、以下のようにしてやってみました。

memo1のchangeに
with Memo1 do begin
   j:=Perform(EM_LINEFROMCHAR, -1, 0);
   aa:=Lines[j];
   z:=10;       /桁数
   case ByteType(aa, z) of
       mbLeadByte :begin
                     ja1:=copy(ab,1,z-1);ja2:=copy(ab,z,length(ab)-(z-1));
                    end;
        else begin
              ja1:=copy(ab,1,z);ja2:=copy(ab,z+1,length(ab)-(z));
             end;
            end;
    Lines[j]:=ja1+#13#10+ja2;
  end;

とりあえず、目的は達せるようです。



[8008] Re7:memoの行の文字制限返信 削除
2014/9/23 (火) 19:12:47 Mr.XRAY
▼ andyさん

> とりあえず、目的は達せるようです。

了解!!


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82