Memo系の一行を、複数行表示にしたい。


1/6  2009-07-09 06:22:06  No: 35085

複数表示出来るMemo系なら何でもいいのですが、ssVerticalで、一行をmemoの幅より大きくすると、改行はしていないのに改行に。
Memo1.Lines.Countだと、1ではななくなる。

用は、本来は一行なのに、複数行に表示にしたい。

かといって、本来の複数行としての機能も維持したい。

111111111111111  ←これは一行ということに
1111111111111  ←これは一行にということに
22222222222  ←実際は、2行目。

という事にしたいんですが。


hatena  2009-07-09 17:01:48  No: 35086

Memoではダメだという理由がよく分からないけど。
やりたいことも分からない。


TS  2009-07-09 18:31:45  No: 35087

一時的に Memo1.ScrollBars:=ssBoth;
にして改行表示されている複数行のデータを
1行のデータとして処理するでは描画する時に
ちらつきが問題になりますか。


TAZZW30  2009-07-09 21:47:24  No: 35088

Memo1.Linesを使用しないで、Memo1.Textから改行コードを検索して
行データを取得するっていうのはどうでしょうか。


D  2009-07-09 23:13:19  No: 35089

Delphi6Pro Xp SP3で。

Memo1.Lines.TextをTStringsのTextプロパティに代入することで見た目の行数ではなく実際の行数どおりの処理ができるようです。

var
  List: TStrings;
begin
  List := TStringList.Create;
  try
    List.Text := Memo1.Lines.Text;
    //実際の行数どおりの処理
  finally
    List.Free;
  end;

>111111111111111  ←これは一行ということに
>1111111111111  ←これは一行にということに
>22222222222  ←実際は、2行目。

この場合であれば
List.Countは2
List[0]は'1111111111111111111111111111'
List[1]は'22222222222'


初心者A  2009-07-10 00:02:31  No: 35090

ssVerticalで、
メモの幅より、文字数の幅が大きい場合、改行されてしまうという事ですか?

1111111111111が、

1111111
1111
になってしまうという事ですか??

なら、「ssVertical」ではなく、
    「ssHorizontal」です。


初心者A  2009-07-10 00:15:17  No: 35091

意味わかりました^^

自分の間違いですね、↑は無しって事で^^;

CommaTextはどうでしょうか?
参考書から拾った初心者アイデアですが、「,」で改行の代わりにするというのはどうでしょうか??

CommaTextを使用した時のみ、一行を複数行には、出来ると思うので。


1/6  2009-07-11 05:17:23  No: 35092

意味が分かる人と、分からない人。
想像できる人と、想像できな人。
想像しない人と、想像する人の、違いなんでしょうか?w

いろいろな情報ありがとうございました。


教えて貰う立場  2009-07-11 06:21:08  No: 35093

意味の分かることを書く人と、分からない事を書く人
簡潔に書く人と、意味不明に書く人
教えて貰うのに、想像をしないと分からない様にする人と、しない人


TS  2009-07-11 06:34:37  No: 35094

回答する時、質問の意味が分からない事かあります。
この質問も意図が分かりづらい質問の1つだと思います。

回答者にきちんと質問を見るようにさせるのは無理です。
そんな義務はありません、色々な回答があるから面白いのです。
私の理解ではDさんの回答で解決できたと思うのですが、

>いろいろな情報ありがとうございました。
では、どうだったのか分かりません。
1/6 さんの質問の意図と回答が違うのならその旨を説明された方が
早いです。


hahaha  2009-07-11 08:35:46  No: 35095

毎年一人くらい、こういう方居ますね。
質問する時は答えてくれる人を相手に上から目線で問題を出すかの様な質問して、
同時期にある答えらえられそうな質問には当然ため口でヒントだけ出す人。
決まって2,3回の質問で居なくなります。
彼らは一体何処へ消えていくんでしょうね。
こういうやり取りをみてるとDelphiにもまだ新参者がいるって安心できます。


Mr.XRAY  2009-07-11 08:45:40  No: 35096

>という事にしたいんですが。

残念ですが,解決策ではなく,参考になればと思い,レスしました.
これは,おそらく「折り返し表示」のことではないかと思いますが,
確信はありません.

また,動作仕様は,Delphiのバージョン,OSによって違うことがあります.
(過去にこの掲示板でRichtEditが話題になっています)

http://mrxray.on.coocan.jp/Delphi/plSamples/T_MemoPrev.htm

また,Memo系というのもあまり,よくわかっていません.
継承関係は以下の様になっていますが,上の記事の環境で確認した時は,
TRichEditとTMemoでは,動作仕様に多少の違いがありました.

TCustomEdit
  TCustomMem
     TCustomRichEdit
       TRichEdit
     TMemmo
     
本当に参考としてです.あしからず.ちょっと古い内容ですが.ご容赦を.


Mr.XRAY  2009-07-11 08:55:10  No: 35097

>継承関係は以下の様になっていますが

参考までに,このクラスの継承図は以下のような方法でご覧になれます.

クラスの系統図を表示
http://mrxray.on.coocan.jp/Others/A_ClassList.htm


Mr.XRAY  2009-07-11 09:16:00  No: 35098

Mr.XRAYです,連続でスミマセン.

>想像できる人と、想像できな人。

ということですので,「解決策ではなく,参考になればと思い」というのは
以下もその理由です.私は想像できない方になるのかな?  

1. DelphiのバージョンとOSが想像できない
2. TMemoにどのように文字列を代入しているか想像できない.
3. TMemo系というのが想像できない.


もう、こないかもね  2009-07-11 10:04:16  No: 35099

1/6って伝達力の事?  それとも表現力?  理解力?

> こういうやり取りをみてるとDelphiにもまだ新参者がいるって安心できます。

いかし、こう言った新参者はお断りですし、将来が不安になります。


DEKO  2009-07-11 12:14:39  No: 35100

http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=910
要はこういう事でしょう?

画面のちらつきを気にしないなら、TSさんの手法が一番簡単です。
読み書きがどちら(ssVertical/ssBoth)も Lines[] でアクセスできますからね。

私なりに想像してみました。合ってるかな?
-----
TMemo に以下のような文字列を入れたとします。

1111111111111111111111111111[改行]
22222222222

TMemo の ScrollBars プロパティが ssVertical の場合には、
長い文字列は折り返されてしまい、TMemo の幅に合わせて
以下のようになります(Wordwrap=True)。

111111111111111
1111111111111
22222222222

この時、TMemo.Lines.Count は 2 ではなく 3 になってしまいます。
表示はこのままでいいのですが、見た目では2行になっている 
"111..." の行を1行としてアクセスしたい事があります。

このような場合にはどうすればいいのでしょうか?

OS: Windows xxxxx [サービスパック]
Delphi: バージョン [エディション] [アップデータ]
-----

想像しないといけないような質問は回答者を戸惑わせます。

・Delphi 6 と言っても Personal なのですが?
・Turbo と言ったら普通は Explorer ですよね?
・やっぱり、体験版では無理なのでしょうか?
・私のは Delphi 2009 なのですが?
・Delphi 3 にはそのようなプロパティはありませんが?

情報を後出しされると前提が崩れる事がありますので、
お使いの環境は最初に書くべきです。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加