文章の色がえをするには?


たかみちえ  URL  2001-05-01 04:35:59  No: 74219  IP: [192.*.*.*]

テキストのいろ変えとか、いろいろよく見かけますけど、
あれはどうやってるんでしょうか?
速さからして、Instrとかを使って、
地道にやっているわけではないようですけど…。
Replaceでできるのかなぁ…。

編集    削除
PAPY  2001-05-01 22:42:48  No: 74220  IP: [192.*.*.*]

「秀丸」などテキストのURL部分が赤色で他の文字列が黒色とか言う奴ですか?それだったら、Textout()APIとWM_PAINTメッセージなどを使って自分で描画しているのではないでしょうか。たぶん。

編集    削除
たかみちえ  2001-05-06 02:44:03  No: 74221  IP: [192.*.*.*]

見つけました。Textoutですよね。
でも、これって引数に何を入れるんでしょう?
(ByVal hdc As Long,yVal x As Long,ByVal y As Long,
ByVal lpString As String,ByVal nCount As Long) As Long
  hdcはMe.hwndですよね?で、lpstringは対象の文字列、
nCountには…、-1かな?
あと、xとy、どっちかにWM_PAINTを入れるんですよね…^^;
あうう…。

一色だけならすぐできるんですけどね、
With MainText
    .SelStart=0
    .Sellength=Len(.Text)
    .SelColor=RGB(Random(255,0),Random(255,0),Random(255,0))    .BackColor=RGB(Random(255,0),Random(255,0),Random(255,0))
End With
みたいに^^;

編集    削除
PAPY  2001-05-07 00:39:52  No: 74222  IP: [192.*.*.*]

TextOut()API
hdc       デバイス コンテキストのハンドル
nXStart   論理x座標を指定
nYStart   論理y座標を指定
lpString  描画される文字列を指すポインタ
cbString  文字列内の文字の数

WM_PAINTメッセージ
ウィンドウの一部の描画を要求するときに送られる。

※ちなみ、これだけでは色が変更できません。
テキストボックスをオーナードロー(ここでWM_PAINTを使用)しないと駄目だと思います。

オーナードロー
  ・・・Windows標準のコンポを自分で全て描画すること

編集    削除
α  2001-05-07 01:25:42  No: 74223  IP: [192.*.*.*]

リッチテキストボックスを使ってみたらどうですか?

編集    削除
たかみちえ  2001-05-08 02:04:17  No: 74224  IP: [192.*.*.*]

>  リッチテキストボックスを使ってみたらどうですか?
  え?秀丸のってリッチテキストボックス(みたいなもの)ですよね?
ただ
With Maintext
  i=Instr(1,.text,"<")
  n=Instr(i,.text,">")
  .Sellength=n-I
END With
ってやると、やっぱり時間がかかってしまうから、
それ以外の方法がないかなぁって…。

編集    削除
しずく  URL  2001-07-31 18:05:35  No: 74225  IP: [192.*.*.*]

私も今、編集しながらタグだけの色を変えたりしたいと
思っているのですが、結局どうしたのでしょうか、たかみちえさん・・・。
リッチテキストボックスで選択して色を変えるというのは
分かるのですが、それを編集しながらなので、
邪魔にならないように処理することに悩んでいます。

編集    削除
たかみちえ  2001-08-01 04:08:16  No: 74226  IP: [192.*.*.*]

ワイルドカードを検索に使えれば、少しは早くなりそうなのに…。
どうにかいい方法はないでしょうかねぇ…。

編集    削除
たかみちえ  2001-08-24 19:45:43  No: 74227  IP: [192.*.*.*]

Layer-8にVBScriptを使って正規検索('.*とか)する方法がありました。
それを使えば、ただ単にやるだけよりはずいぶん早くなります。

  あとはテキストエリアを描画しない(非表示)なら、ずいぶん早くなり、
さらに行表示とかのステータスバーも描画しないとなれば、もっと早くなります。
(ただ、いくつもあると遅くなるので、現状表示もかねて表示してますけど)

  でもまだ上があると思います。それに、VBのエディタのように流れるような色がえができません。
さぁーて、どうしましょうかねぇ…。
(VBのように決まった単語の色がえだけなら、ある程度早くはなりそうですが)

編集    削除
たかみちえ  2001-08-29 00:53:35  No: 74228  IP: [192.*.*.*]

速さを求めるには、JRE32.dllあたりを使うそうですけど…。
よく分からないです。
どなたかしりませんか?

編集    削除
たかみちえ  2001-08-29 00:57:00  No: 74229  IP: [192.*.*.*]

ああ、そうそう、RTFコード単位でおきかえる方法もありますね、
HTMLでVBコードを記述しておいて、
JavaScriptを使っていっぺんに色がえしているページがありましたから、
Replace関係ですませられれば、早く済みそうです。

編集    削除
たかみちえ  2001-09-05 04:18:43  No: 74230  IP: [192.*.*.*]

しつこいですけど、上記の方法じゃ解決しないかも…。
JRE32はわかりませんけど。

  んー、アイディアの問題かなぁ…。

編集    削除
たかみちえ  2001-11-09 03:29:41  No: 74231  IP: [192.*.*.*]

正規検索にはBASP21というものを使うようにしました。
  さて、それでも速度は問題ですけど、
今見えてる領域のみ色がえが出きればある程度は…。

  初心者掲示板で"今見えている最初の行番号を得る"SendMessage定数のことがありましたけど、
最終行はわかりますか?
行番号を書くには上だけわかればいいですけど、
したがわかれば、問題ない程度に文字の色がえとかもできるかもしれないし…。

編集    削除