| back | 1301-1350 | 1351-1400 |
1401-1450 |
| 1400 | Re^6: TEditor ver 2.13 | コメント数: 0件 |
| 本田勝彦 | | 2001/07/03 (火) 10:13 | |
| > procedure TEditor.WMImeNotify(var Msg:
TMessage); > begin > inherited; > if Msg.WParam = IMN_OPENCANDIDATE then > CaretBeginUpdate > else > if (Msg.WParam = IMN_CLOSECANDIDATE) and > (FCaretUpdateCount > 0) then > CaretEndUpdate; > end; これだと、候補リストが消えた時にキャレットが復帰しませんね(^^; CaretEndUpdate メソッドで FCaretUpdateCount を参照する方式に したいと思います。 | ||
| 1399 | Re^5: TEditor ver 2.13 | コメント数: 1件 |
| 本田勝彦 | | 2001/07/01 (日) 23:23 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > 候補リストボックスの影に隠れる部分のキャレットがゴミになったんですよね。 > 画面下端で変換処理を行、候補リストが入力位置よりも上に出たとき発生して > ました。 WM_IME_NOTIFY メッセージハンドラを削除したところ、ウチの98ノートでは やはりこの症状が出るようです。 procedure TEditor.WMImeNotify(var Msg: TMessage); begin inherited; if Msg.WParam = IMN_OPENCANDIDATE then CaretBeginUpdate else if (Msg.WParam = IMN_CLOSECANDIDATE) and (FCaretUpdateCount > 0) then CaretEndUpdate; end; というような実装にしたいと思います。 > 信じると痛い目に逢う IME メッセージ(字余り) SDK 守ってちょうだい書いた人。 SDK 信じる人は馬鹿を見る。 IME なんでもありなの?恥を知れぇぃ。 ちょっとすっきり(^^; | ||
| 1398 | Re^6: ご苦労様でした! | コメント数: 0件 |
| みずほちゃん | | 2001/07/01 (日) 15:54 | |
| http://www.portnet.ne.jp/~mzh/ | ||
| ちょっと思うところがあるので、とりあえず 出来るところまで実装してみようと思います。 アドバイスどうもありがとうございました。 | ||
| 1397 | Re^5: ご苦労様でした! | コメント数: 1件 |
| 本田勝彦 | | 2001/06/30 (土) 23:53 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > > なして、一度に全トークンが欲しいのでしょう? > 動的略語展開の機能を実装したいからです。 見てきました。以前 Netscape の開発部隊がコーディングする様子がNHKで 放映されていた時、画面にコードが勝手にばしばし出てくるのを見たことが ありますが、あれですかね? TParser は速いんですよ。数万行のファイルからデータを抽出するのも コンマ数秒というパフォーマンスなので、強力だと思います。 TFountainParser が TStream を扱えるようになったとしても、 Lines.Text の取得がこれに比べると時間とメモリを消費しますので、 読みとり専用 TStringsStream のようなクラスを実装できるとかなりの パフォーマンスを出せるかもしれませんね。 | ||
| 1396 | Re^4: ご苦労様でした! | コメント数: 2件 |
| みずほちゃん | | 2001/06/30 (土) 16:42 | |
| http://www.portnet.ne.jp/~mzh/ | ||
| > TFountainParser は、ストリームを扱えるようにはなってないので
Fountain > 固有は無理ですね。個別に拡張は嫌っしょ? > > なして、一度に全トークンが欲しいのでしょう? 動的略語展開の機能を実装したいからです。 一度に全トークンというのは大げさでしたが、 場合によってはかなりの数のトークンをスキャンする必要があります。 動的略語展開に関しては http://www.geocities.co.jp/SiliconValley-PaloAlto/5236/mule/dabbrev.html くらいが参考になると思います。 # もっとも動的略語展開を実装する # 自信はあまり無いのです。 無料で使えるWindows用エディターの中では xyzzy と Meadow にこの機能があります。 xyzzy http://www.jsdlab.co.jp/~kamei/ Meadow http://www.netlaputa.ne.jp/~kose/Emacs/Meadow/index.html#Meadow-current # 普通のWindows使いは # xyzzyとMeadowを使わないほうが良いです。 # 馴れないうちは発狂しそうになります(^^; | ||
| 1395 | Re^3: ご苦労様でした! | コメント数: 3件 |
| 本田勝彦 | | 2001/06/30 (土) 15:11 | |
| > Ms.Position := 0 //追加 こりゃ失礼(^^; 追加してください。よくやるんですよねこれ(^^; > 上記の方法だとそれぞれのFountain固有のトークンが扱えない > と思うのですが、これ以外に高速に全トークンを > 取得する方法はありませんか? TFountainParser は、ストリームを扱えるようにはなってないので Fountain 固有は無理ですね。個別に拡張は嫌っしょ? なして、一度に全トークンが欲しいのでしょう? | ||
| 1394 | Re^4: TEditor ver 2.13 | コメント数: 2件 |
| 本田勝彦 | | 2001/06/30 (土) 15:05 | |
| > 実は…既に消し去ってしばらく使っています。(^^; > 問題なさそうですねー(^-^) 候補リストボックスの影に隠れる部分のキャレットがゴミになったんですよね。 画面下端で変換処理を行、候補リストが入力位置よりも上に出たとき発生して ました。 その症状の出ていたウチの98ノートでも今の描画方式ではだいじょぶなよう なので、次のからは抹殺したいと思います。 信じると痛い目に逢う IME メッセージ(字余り) | ||
| 1393 | Re^2: ご苦労様でした! | コメント数: 4件 |
| みずほちゃん | | 2001/06/30 (土) 14:53 | |
| http://www.portnet.ne.jp/~mzh/ | ||
| 横から割り込みますが。 > やりかた自体は問題無いと思います。他の方法といっても・・・ > Editor1.Lines.SaveToStream(Ms); // Ms: TMemoryStream > Parser: TParser; // cf classes.pas > Parser := TParser.Create(Ms); Ms.Position := 0 //追加 > while Parser.Token <> toEof do > begin > if Parser.Token = Classes.toSymbol then > begin > // 処理 > // Parser.SourcePos, Parser.SourceLine, Parser.TokenString など利用可 > end; > Parser.NextToken; > end; トークンを取得する前に Ms.Position := 0 をしないと、 いきなりtoEofが来て悲しい思いをするみたいです。 # 実際、悲しい思いをしました(^^; 上記の方法だとそれぞれのFountain固有のトークンが扱えない と思うのですが、これ以外に高速に全トークンを 取得する方法はありませんか? # 聞いてばかりですいません。 | ||
| 1392 | Re^3: TEditor ver 2.13 | コメント数: 3件 |
| てらお | | 2001/06/30 (土) 00:09 | |
| http://www2s.biglobe.ne.jp/~t-susumu/toclip/ | ||
| てらおです。 > WM_IME_NOTIFY メッセージハンドラですが、これ、MiGrep でソールフォルダを > 探索した結果 ver 0.61 で実装されています。懐かしいなぁ(遠い目) > 当時は、ちらつきを極限まで押さえ込むために、かなりトリッキーな描画ルーチンを > 利用しておりました。で、この処理が必要になったようです。 > > 試しに、メッセージハンドラ自体を抹殺しても、問題ありませんでした。(^^; > 過去の遺物を引きずっていたようです(^^;;;;; > > 宣言部、実現部とも消し去って試して見て頂けますでしょうか。 実は…既に消し去ってしばらく使っています。(^^; 問題なさそうですねー(^-^) | ||
| 1391 | Re: ご苦労様でした! | コメント数: 5件 |
| 本田勝彦 | | 2001/06/29 (金) 23:54 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > 早速の対応ありがとうございました〜^^ > 新バージョン利用させていただきましたが、ちゃんと直ってました!<当たり前ですね;;; レポートどうもでした。言われるまで全然わからんかったんですわ(^^; > というようにやることにしたのを思い出しました(笑) …なんか、かなり怪しげな方法だとは思っていますが、ひょっとして他の方法もあったりするでしょうか??? やりかた自体は問題無いと思います。他の方法といっても・・・ Editor1.Lines.SaveToStream(Ms); // Ms: TMemoryStream Parser: TParser; // cf classes.pas Parser := TParser.Create(Ms); while Parser.Token <> toEof do begin if Parser.Token = Classes.toSymbol then begin // 処理 // Parser.SourcePos, Parser.SourceLine, Parser.TokenString など利用可 end; Parser.NextToken; end; なら、少し(かなりか^^;)速くなりますよ。 | ||
| 1390 | Re^2: TEditor ver 2.13 | コメント数: 4件 |
| 本田勝彦 | | 2001/06/29 (金) 23:46 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > TEditor v2.13 W2K SP2
で快調に動いてますー♪ どもども(^^)v > でも、またひとつ問題が…(^^; > > Wnn98 という IME では、変換中に[←][→]キーを打つ毎に、 > IMN_CLOSECANDIDATE のみが送られてくるみたいです。 > なので、確定後にキャレットが消えてしまうのです。(T.T) > WM_IME_NOTIFY ハンドラでの対策が必要かと… WM_IME_NOTIFY メッセージハンドラですが、これ、MiGrep でソールフォルダを 探索した結果 ver 0.61 で実装されています。懐かしいなぁ(遠い目) 当時は、ちらつきを極限まで押さえ込むために、かなりトリッキーな描画ルーチンを 利用しておりました。で、この処理が必要になったようです。 試しに、メッセージハンドラ自体を抹殺しても、問題ありませんでした。(^^; 過去の遺物を引きずっていたようです(^^;;;;; 宣言部、実現部とも消し去って試して見て頂けますでしょうか。 | ||
| 1389 | ご苦労様でした! | コメント数: 6件 |
| かわはら | | 2001/06/29 (金) 20:18 | |
| 早速の対応ありがとうございました〜^^ 新バージョン利用させていただきましたが、ちゃんと直ってました!<当たり前ですね;;; > そのデータをリストで保持して ListString.Objects へでも > 格納し、描画のさらなる高速化を計るとかされるのでしょうか? いえ、そんな高等な事では全くありません;;; テキスト内から特定トークンの文字列(例えばAnkのトークンだけ等)をリストアップするのに「全行サーチ」をしています。 …で、この前の方法だと折り返し時に上手くリストアップできないので Parser := Editor1.ActiveFountain.ParserClass.Create(Editor1.ActiveFountain); for H := 0 to Editor1.Lines.Count - 1 do begin R := TMyLines(Editor1.Lines).LinesToRow(H); Parser.NewData(Editor1.Lines[H], Editor1.ListData[R]); Parser.NextToken; while Parser.Token <> toEof do begin ... というようにやることにしたのを思い出しました(笑) …なんか、かなり怪しげな方法だとは思っていますが、ひょっとして他の方法もあったりするでしょうか??? | ||
| 1388 | Re: TEditor ver 2.13 | コメント数: 5件 |
| てらお | | 2001/06/29 (金) 09:12 | |
| http://www2s.biglobe.ne.jp/~t-susumu/toclip/ | ||
| てらおです。 TEditor v2.13 W2K SP2 で快調に動いてますー♪ でも、またひとつ問題が…(^^; Wnn98 という IME では、変換中に[←][→]キーを打つ毎に、 IMN_CLOSECANDIDATE のみが送られてくるみたいです。 なので、確定後にキャレットが消えてしまうのです。(T.T) WM_IME_NOTIFY ハンドラでの対策が必要かと… ちなみに… procedure TEditor.WMImeNotify(var Msg: TMessage); begin inherited; if Msg.WParam = IMN_OPENCANDIDATE then begin Form1.Memo1.Lines.Add('IMN_OPENCANDIDATE'); CaretBeginUpdate; end else if Msg.WParam = IMN_CLOSECANDIDATE then begin Form1.Memo1.Lines.Add('IMN_CLOSECANDIDATE'); CaretEndUpdate; end; end; でテストすると Memo1 は… IMN_OPENCANDIDATE <- 変換候補が開いた IMN_CLOSECANDIDATE <- 変換候補を閉じた(確定はしていない) IMN_CLOSECANDIDATE <- [←]を押した IMN_CLOSECANDIDATE <- [←]を押した IMN_CLOSECANDIDATE <- [←]を押した IMN_CLOSECANDIDATE <- [→]を押した IMN_CLOSECANDIDATE <- [→]を押した となります。 | ||
| 1387 | TEditor ver 2.13 | コメント数: 6件 |
| 本田勝彦 | | 2001/06/28 (木) 00:24 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| 公開です。 文字列リスト更新時の Tokens, PrevTokens プロパティ更新忘れバグが修正され ました。 TFountain.CreateParser が実装されました。 WM_IME_COMPOSITON メッセージハンドラが復活し、WM_IME_CHAR メッセージハンドラは「抹殺」されました。WM_IME_CHAR メッセージによる2バイト文字は WM_CHAR メッセージハンドラで処理されるようになりました。TMemo 完全互換化計画が完了 したです\(^o^)/たぶん(^^; | ||
| 1386 | Re^5: AutoIndent | コメント数: 0件 |
| ゆうきひろ | | 2001/06/26 (火) 23:51 | |
| http://homepage2.nifty.com/ultla7/mozart/_start.htm | ||
| > …なんか見難くなってしまってごめんなさい。 > ※ソースコードのインデントに全角スペースを使ってますのでご注意 > ※関係ない処理も混じってますので解読して判別してください(^^; > > ちなみにオートインデントに関する情報源は↓です。 > http://nug.nasu-net.or.jp/~sakai/ 表示件数を10にしていたため思わず見逃すところでした。大変参考になりま す。 | ||
| 1385 | Re^9: Parser の動的生成 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/26 (火) 23:42 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > おお、うまくいきましたか。これで、BCB でも、Fountain が > 何かを気にせずに Parser を生成できますね。 そそ、この「Fountain が何かを気にせずに」というのが ver2.1x の 最大のウリなわけで。 CreateParser メソッドの導入で、よりエレガントに隠蔽されますねぇ。 嬉しいような惜しいような(^^;;;;; | ||
| 1384 | Re^8: Parser の動的生成 | コメント数: 1件 |
| KWX | | 2001/06/26 (火) 22:40 | |
| http://homepage2.nifty.com/kwx/ | ||
| 本田さん、Kmさん、こんにちは。KWXです。 > > 試しにCreateParserを実装してヘルプのサンプルコードをC++に書きなおして > > 動かしてみました。うまくいくみたいです。 > > ご検証ありがとうございます。いかったいかった(^^) おお、うまくいきましたか。これで、BCB でも、Fountain が 何かを気にせずに Parser を生成できますね。 > CreateParser 実装しますです。 > ParserClass.Create が使われなくなるとやだなぁ(^^; > アンドキュメンテッドにしよう(^^;;;;;;;嘘 よろしくです(^^) ではでは。 | ||
| 1383 | Re^7: Parser の動的生成 | コメント数: 2件 |
| 本田勝彦 | | 2001/06/26 (火) 11:20 | |
| >
試しにCreateParserを実装してヘルプのサンプルコードをC++に書きなおして > 動かしてみました。うまくいくみたいです。 ご検証ありがとうございます。いかったいかった(^^) > ところで、toEOFはheFountain.pasでコメントアウトされていますが、Delphi > だと動くのでしょうか? Classes.pas で宣言されてますので、uses さえされていればいごきます。 C++ での try finally 節の書き方参考になりました。 | ||
| 1382 | Re^6: Parser の動的生成 | コメント数: 3件 |
| Km | | 2001/06/26 (火) 08:32 | |
| http://Homepage2.nifty.com/Km | ||
| > CreateParser 実装しますです。 > ParserClass.Create が使われなくなるとやだなぁ(^^; ども。Kmです。少し乗り遅れたみたいですね(^^; 試しにCreateParserを実装してヘルプのサンプルコードをC++に書きなおして 動かしてみました。うまくいくみたいです。 ところで、toEOFはheFountain.pasでコメントアウトされていますが、Delphi だと動くのでしょうか? TFountainParser *Parser; Parser = Editor1->ActiveFountain->CreateParser(); try { Parser->NewData(Editor1->ListString[Editor1->Row], Editor1->ListData[Editor1->Row]); while (Parser->NextToken() != char(0)) { // toEOF ListBox1->Items->Add(Parser->TokenString()); } } __finally { delete Parser; } | ||
| 1381 | 最近 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/26 (火) 05:00 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| ここが大変賑わって来て嬉しく思います。 TEditor ver 2.1x を皆さんが使われ出した証かと思います。 嬉しいぞぉぃ\(^o^)/ 不具合などありましたら、変だなぁと感じたら、 ご意見をお聞かせ頂けると有り難いです。 よろしくお願い致します。m(_ _)m | ||
| 1380 | Re^5: Parser の動的生成 | コメント数: 4件 |
| 本田勝彦 | | 2001/06/26 (火) 04:57 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| >
説明が下手で申し訳ありませんが、伝わりましたでしょうか? わかったぴょん。 CreateParser 実装しますです。 ParserClass.Create が使われなくなるとやだなぁ(^^; アンドキュメンテッドにしよう(^^;;;;;;;嘘 | ||
| 1379 | Re^4: Parser の動的生成 | コメント数: 5件 |
| KWX | | 2001/06/26 (火) 03:48 | |
| http://homepage2.nifty.com/kwx/ | ||
| > > function TFountain.CreateParser:
TFountainParser; > > begin > > Result := ParserClass.Create(Self); > > end; > > これだと、C++Builder でコンパイル出来ないのでは? > まだ理解できていない部分がありそうですね私。 いえ、大丈夫なはずでし。 BCB でも Delphi のクラス参照型を TMetaClass によって、 サポートしているのですが、その TMetaClass を元に生成 することができないのです。つまり生成部分が Pascal 側に 記述してある場合は、BCB でもそれを呼び出すことができる わけです(^^) 説明が下手で申し訳ありませんが、伝わりましたでしょうか? | ||
| 1378 | Re^3: 折り返し時のバグ? | コメント数: 7件 |
| 本田勝彦 | | 2001/06/26 (火) 03:13 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > コメントの2行目がコメントの色で描画されない件、確認出来ました。 > レポート有り難うございます。原因はまだわかってません(^^; > お調べ致しますです。時間下さい。 原因はかなり致命的なうっかりミスでした(^^; TEditorScreenStrings.ChangeList, DeleteList, InsertList で データをコピーする際に、ver2.10 から導入された Items2 を処理 し忘れていました。 対応版を http://compodev.at.infoseek.co.jp/arc/hedit213b2.lzh に置きました。お試し下さいまし。m(_ _)m | ||
| 1377 | Re^3: Parser の動的生成 | コメント数: 6件 |
| 本田勝彦 | | 2001/06/26 (火) 02:27 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > function TFountain.CreateParser:
TFountainParser; > begin > Result := ParserClass.Create(Self); > end; これだと、C++Builder でコンパイル出来ないのでは? まだ理解できていない部分がありそうですね私。 | ||
| 1376 | Re^2: Parser の動的生成 | コメント数: 7件 |
| KWX | | 2001/06/26 (火) 01:32 | |
| http://homepage2.nifty.com/kwx/ | ||
| どもども。 通常では、ActiveFountain を引数に生成することが 多いと思うので、 function CreateParser: TFountainParser; virtual; function TFountain.CreateParser: TFountainParser; begin Result := ParserClass.Create(Self); end; みたいになっていればよいのかな、と。 そうすれば、TFountain コンポを作る人も面倒見る 必要が無いし。 いかがでしょうか? | ||
| 1375 | Re: Parser の動的生成 | コメント数: 8件 |
| 本田勝彦 | | 2001/06/25 (月) 23:59 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| クラス参照型は Delphi
にしか無いんでしたね(^^; そうかぁ・・・ > Parser := Editor1.ActiveFountain.CreateParser; function CreateParser: TFountainParser; virtual; function TFountain.CreateParser: TFountainParser; begin end; なのがあって、C++Builder 使いの人はそれを override するという ので良いですか? TFountain コンポを作る人は面倒見る必要は無し? Km さんがおっしゃっていたのもこのことなのかしらん? | ||
| 1374 | Re^2: 折り返し時のバグ? | コメント数: 8件 |
| 本田勝彦 | | 2001/06/25 (月) 23:51 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| コメントの2行目がコメントの色で描画されない件、確認出来ました。 レポート有り難うございます。原因はまだわかってません(^^; お調べ致しますです。時間下さい。 > の様にやっていたのですが…これって処理方法としてあってるんでしょうか?(^_^;;; あってますよ。そのデータをリストで保持して ListString.Objects へでも 格納し、描画のさらなる高速化を計るとかされるのでしょうか? | ||
| 1373 | Re^5: Ctrl+Endのバグ? | コメント数: 0件 |
| 本田勝彦 | | 2001/06/25 (月) 23:43 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| 全角文字を行ったり来たりというのは、そこに何かの制御コードが入って いるのかもしれませんね。 データを TEditor にポストしている部分のコードをココに書いて頂いても かまいませんよ。 | ||
| 1372 | Re^2: TEditor ver2.12, TStringsPrinter ver 1.6 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/25 (月) 23:37 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > とりあえず、TEditorの部分のみ試してみました。 > ばっちりです。(^^) どうもです(^^) よろしかったら http://compodev.at.infoseek.co.jp/arc/memomes.lzh の方も試して見て頂けると有り難いのですが、 時間があったらよろしくお願い致します。 | ||
| 1371 | Re^5: AutoIndent | コメント数: 0件 |
| 本田勝彦 | | 2001/06/25 (月) 23:34 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| そうか、OnKeyPress
で出来るのですね。サンプルコードまでありがとう ございます。 Shift := HiWord(GetKeyState(VK_SHIFT)) <> 0; というのも参考になりました。今度使ぉ(^^; > http://nug.nasu-net.or.jp/~sakai/ ここすごい量の Tips ですね。私も頑張らねば。 | ||
| 1370 | Parser の動的生成 | コメント数: 9件 |
| KWX | | 2001/06/25 (月) 22:24 | |
| http://homepage2.nifty.com/kwx/ | ||
| 本田さん、こんにちは。 KWX です。 えっと、私は普段 C++Builder で、TEditor を使用しているの ですが、C++ では仮想コンストラクタがない為、Delphi でいう Parser := Editor1.ActiveFountain.ParserClass.Create( Editor1.ActiveFountain); みたいな記述ができないようです(T_T) そこで、 Parser := Editor1.ActiveFountain.CreateParser; という風にも書けるようになれば、BCB で現在の Fountain に対するパーサのインスタンスが 生成できるようになるのですが、いかがでしょう? 検討していただけるとうれしいのですが。 ではでは。 | ||
| 1369 | Re^4: Ctrl+Endのバグ? | コメント数: 1件 |
| mas | | 2001/06/25 (月) 21:16 | |
| http://www5.airnet.ne.jp/mas/ | ||
| > >
あと、ここでも発言されている私のソフトのベースとさせてもらった、ゆうきひろ> さんの
Nami2000でも同様の事象が発生します。 > 発生しますねえ(^^;)。全然気づきませんでした。 > TEditorを利用した「TeraPad」や「あうとら」ではこの症状は出ませんから > Nami2000 のコードの方に問題がありそうです。次の2つを疑ってみる必要が > あります。 あれれ・・・そうでしたか。大変失礼しました。 本田さん、Kmさんどうもすみませんでした。 とりあえず、ソフトのバグの可能性が濃厚になってきましたので、調査中でしたら一旦、中止していただければと思います。無駄骨になると申し訳ないので。 もー少し調べて結果をお知らせします。 | ||
| 1368 | Re^3: Ctrl+Endのバグ? | コメント数: 2件 |
| ゆうきひろ | | 2001/06/25 (月) 19:52 | |
| http://homepage2.nifty.com/ultla7/mozart/_start.htm | ||
| > あと、ここでも発言されている私のソフトのベースとさせてもらった、ゆうきひろ>
さんの
Nami2000でも同様の事象が発生します。 発生しますねえ(^^;)。全然気づきませんでした。 TEditorを利用した「TeraPad」や「あうとら」ではこの症状は出ませんから Nami2000 のコードの方に問題がありそうです。次の2つを疑ってみる必要が あります。 TForm1.PutNode(Node: TTreeNode) TEditor1 の各データを TreeView1 のノードの Data へ渡す。 TForm1.GetNode(Dt: TNodeData); ノードの Data を TEditor1 に反映させる。 ま、私個人はあまり気にならないバグですが、解決したら教えてくださいネ(^O^;)。 | ||
| 1367 | Re^4: AutoIndent | コメント数: 2件 |
| ふく郎 | | 2001/06/25 (月) 18:30 | |
| http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/ | ||
| …なんか見難くなってしまってごめんなさい。 ※ソースコードのインデントに全角スペースを使ってますのでご注意 ※関係ない処理も混じってますので解読して判別してください(^^; ちなみにオートインデントに関する情報源は↓です。 http://nug.nasu-net.or.jp/~sakai/ | ||
| 1366 | Re: 折り返し時のバグ? | コメント数: 9件 |
| かわはら | | 2001/06/25 (月) 17:07 | |
| P.S. この現象『総ての行に対してParserを使って単語を切り分けよう」と色々と試行錯誤しているうちに発見しました。 一応、 Parser := Editor1.ActiveFountain.ParserClass.Create(Editor1.ActiveFountain); for H := 0 to Editor1.ListCount - 1 do begin Parser.NewData(Editor1.ListString[H], Editor1.ListData[H]); Parser.NextToken; while Parser.Token <> toEof do begin ... の様にやっていたのですが…これって処理方法としてあってるんでしょうか?(^_^;;; | ||
| 1365 | 折り返し時のバグ? | コメント数: 10件 |
| かわはら | | 2001/06/25 (月) 17:03 | |
| こんにちは、いつもお世話になっています。 TEditorを使っていて、バグ(?)かもしれない現象が出ましたのでご報告します。 1.フォーム上にTEditorを貼り付け、設定で折り返しをON、ViewのCommenterを#に設定します。また、現象が判りやすいように、Commentの色設定を適当に変更しておきます。 2.Linesの内容を以下の様にします。 AAAA...AAAAA#111111[折り返し]11111 BBBBB CCCCC...CCCCCC#222222[折り返し]22222 内容は何でもいいと思うのですが、1・3行目とはコメント内で折り返すように調整します 3.実行後そのままEnterキーを押して1行目に改行のみの行を挿入します。 4.ここでTEditorの再描画を促す行動をとります。例えば「Projectを一度最小化し再び表示」します。 5.するとCCC...CCの部分(物理行5行目)がComment色で表示され、折り返し後の22222の部分(物理行6行目)は通常色で表示されてしまいます。 当方だけの現象かとも思い、こちらに書かせていただきました。ご確認いただければ幸いです。私の試した感じでは、改行後した時にListDataが正しく更新されておらず描画がずれているのでは?と感じました。ソースコードを解析した訳ではないので、外から見た印象ですが…。 | ||
| 1364 | Re^4: AutoIndent | コメント数: 0件 |
| ふく郎 | | 2001/06/25 (月) 13:02 | |
| http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/ | ||
| //
例えば5個のSPACEだけの行があり3桁目にキャレットがある場合に対応 if i > Col then i := Col; // キャレットが行の途中にある時に行挿入をしようとした場合 if Shift and (i < Col) then Col := i; SelText := #13#10 + Copy(CurrentLine, 1, i); end else SelText := #13#10; // [Shift]キーが押されていたらキャレットを戻して行を // 挿入したように見せる(行挿入) if Shift then SetRowCol(Row - 1, Col); Key := #0; end; if (Key = #13) and Shift and not OverWrite then begin Col := 0; SelText := #13#10; SetRowCol(Row - 1, Col); Key := #0; end; end; end; | ||
| 1363 | Re^4: AutoIndent | コメント数: 0件 |
| ふく郎 | | 2001/06/25 (月) 13:02 | |
| http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/ | ||
| procedure TMainForm1.MemoPaneKeyPress(Sender:
TObject; var Key: Char); var CurrentLine: WideString; Shift: Boolean; i: Integer; begin if MemoPane.ReadOnly then begin if not (Ord(Key) = VK_SPACE) then MessageBeep(MB_OK); Exit; end; // Shiftキーが押されているか? Shift := HiWord(GetKeyState(VK_SHIFT)) <> 0; with MemoPane do begin if (Key = #13) and FAutoIndent and not OverWrite then begin // 現在のキャレットがある行を取り込む CurrentLine := Lines[RowToLines(Row)]; if (Length(CurrentLine) > 0) and (Col > 0) then begin // Space・TAB・全角スペースの数を数える i := 0; while (CurrentLine[i+1] = #$20) or (CurrentLine[i+1] = #$09) or (CurrentLine[i+1] = #$81#$40) do begin Inc(i); end; (続く) | ||
| 1362 | Re^3: AutoIndent | コメント数: 5件 |
| ふく郎 | | 2001/06/25 (月) 12:59 | |
| http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/ | ||
| こんにちは。ふく郎です。 ぼくもゆうきひろさんと同じようにしたくて、アプリ側で自前の実装をしています。 ご参考まで... ※「MemoPane」というのは拙作 eMemoPad のエディタ部分の名称です。 ※[Shift]+[Enter]による行挿入の機能も入ってます(^^; | ||
| 1361 | Re^3: ダブルクリックによる単語の選択 | コメント数: 0件 |
| 清明 | | 2001/06/25 (月) 09:07 | |
| ども、清明です。 早々の回答ありがとうございました。無事解決いたしました。 >>with Editor1 do >> Parser.NewData(ExpandTab(ListString[Row], ListData[Row]); >とするとうまく行くと思います。ヘルプファイルの SelectTokenxxxx のトピックも >参考にして見て下さいね。 | ||
| 1360 | Re^3: Ctrl+Endのバグ? | コメント数: 0件 |
| mas | | 2001/06/24 (日) 23:33 | |
| http://www5.airnet.ne.jp/mas/ | ||
| >
masさんはWindows2000だったと思いますが、そのためでしょうか。 > 私も少し調べてみますね。 > (Windows2000をテスト用に入れなおしたらはまった(ToT)) お世話になってます。TEditorExのおかげでずいぶん楽をさせてもらってます。 最初、TEditorExのほうも疑ってみたんですが(すみません)、素のTEditorでも発生したので・・・ 確かに環境を書いておくべきでした。環境はWindows2000です。 今、WindowsMeでも試したのですが、同様でした。 9xの環境は家にはないので、明日、会社で試してみます。 | ||
| 1359 | Re^2: Ctrl+Endのバグ? | コメント数: 3件 |
| mas | | 2001/06/24 (日) 23:28 | |
| http://www5.airnet.ne.jp/mas/ | ||
| > アウトラインプロセッサということなので、どこかからコピーした上記のような > データがそのまま蓄積されている可能性は有りますね。ウチでもも少し調べて見ます。 直接入力してもそうなりますので、調べてもらえると助かります。 面白いことに文末が全角文字だと、Ctrl+Endを押す度に最後の文字の前後に交互にキャレットが移動します。 あと、ここでも発言されている私のソフトのベースとさせてもらった、ゆうきひろさんの Nami2000でも同様の事象が発生します。 > リンクさしてもらってもよろしいですか? はい。よろしくお願いします。 | ||
| 1358 | Re^2: Ctrl+Endのバグ? | コメント数: 1件 |
| Km | | 2001/06/24 (日) 18:40 | |
| http://Homepage2.nifty.com/Km | ||
| > ウチのエディタでは確認できないのですが、ブラウザでコピーした改行が #13
だけ > のデータを貼り付けると、キャレット位置がちょっとずれるというのは経験ありです。 TEditor 2.12とTEditor 2.00 の組合せでWindows98SEでは大丈夫でした。 masさんはWindows2000だったと思いますが、そのためでしょうか。 私も少し調べてみますね。 (Windows2000をテスト用に入れなおしたらはまった(ToT)) | ||
| 1357 | Windows2000 再び | コメント数: 0件 |
| 本田勝彦 | | 2001/06/24 (日) 18:02 | |
| http://compodev.at.infoseek.co.jp/ime.html http://compodev.at.infoseek.co.jp/arc/memomes.lzh に新対応バージョンを置きました。詳細は ime.html をご覧下さい。 TEditor 2.12 では、SendMessage(Editor1.Handle, WM_CHAR, Ord('V'), 0); としても無視されてましたが、今度のは、TMemo 完全互換を目指しています。 WM_IME_CHAR で CharCode をいじってはいけないということのようです。 WM_CHAR で2バイト文字を取得していますので、よろしかったらお試し下さい。 Windows2000 での動作が心配なので Windows2000 な方のご協力を宜しくお願い 致します。m(_ _)m | ||
| 1356 | Re: Ctrl+Endのバグ? | コメント数: 6件 |
| 本田勝彦 | | 2001/06/24 (日) 17:55 | |
| ウチのエディタでは確認できないのですが、ブラウザでコピーした改行が #13
だけ のデータを貼り付けると、キャレット位置がちょっとずれるというのは経験ありです。 アウトラインプロセッサということなので、どこかからコピーした上記のような データがそのまま蓄積されている可能性は有りますね。ウチでもも少し調べて見ます。 リンクさしてもらってもよろしいですか? | ||
| 1355 | Re: TEditor ver2.12, TStringsPrinter ver 1.6 | コメント数: 1件 |
| Kou | | 2001/06/24 (日) 11:06 | |
| > TEditor ver2.12 では
Windows2000(ばかやろ〜^^;)対策が施されました。 > 私のしつこい質問&テストアプリにお付き合い頂いた、てらおさん、Kou さんには > 心より感謝と敬意を捧げます。ありがとうございました。m(_ _)m こちらこそ、ありがとうございます。 とりあえず、TEditorの部分のみ試してみました。 ばっちりです。(^^) これからも頑張ってくださいね〜。 それでは。 | ||
| 1354 | Ctrl+Endのバグ? | コメント数: 7件 |
| mas | | 2001/06/24 (日) 00:18 | |
| http://www5.airnet.ne.jp/mas/ | ||
| こんばんは。masです。 TEditor(TEditorEx)を使ってアウトラインプロセッサを公開してます。 と、前置きはこれくらいにして・・・ タイトルのとおり、Ctrl+Endで文末にキャレットが移動すると思うのですが、この動作が変です。 具体的には、最終行の文末に半角文字とEOFがあるとき、文末の1バイト前にとんでしまいます。 最終行がEOFのときは、EOFの前の行の行末にキャレットがとびます。 どちらも動作がおかしいと思いますので、修正していただけると助かります。 ではでは! | ||
| 1353 | Re^2: AutoIndent | コメント数: 6件 |
| ゆうきひろ | | 2001/06/23 (土) 07:58 | |
| http://homepage2.nifty.com/ultla7/mozart/_start.htm | ||
| > 結構大変だったりします(^^; > この辺も、将来のバージョンの参考にさせて頂きたいと思います。 はい、気長に待ちます(^^;)。 | ||
| 1352 | Re^2: トークンについて | コメント数: 0件 |
| 海苔巻 | | 2001/06/23 (土) 06:58 | |
| こんにちは。海苔巻です。 すばやいレスありがとうございます。 自己解決しました。 > デバッガが見ている .dcu が古いままなのではないでしょうか? > 該当プロジェクトを開いて、Delphi のメニューにある [プロジェクト|再構築] > を実行されてみてはいかがでしょう? 多分そうだと思います。僕がとった行動は... TFountainコンポーネントを配置してもう一度コンパイル してみたら直りました。 お騒がせしました。 海苔巻 | ||
| 1351 | TEditor ver2.12, TStringsPrinter ver 1.6 | コメント数: 2件 |
| 本田勝彦 | | 2001/06/23 (土) 00:12 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| 公開です。 TEditor ver2.12 では Windows2000(ばかやろ〜^^;)対策が施されました。 私のしつこい質問&テストアプリにお付き合い頂いた、てらおさん、Kou さんには 心より感謝と敬意を捧げます。ありがとうございました。m(_ _)m TStoreComponent.WriteReg, ReadReg の引数が変わりましたので、 それに対応すべく TStringsPrinter も ver 1.6 になりました。 heClasses.pas の整合性を保つため、ご利用の皆様には両方ダウンロード して下さいませ。m(_ _)m | ||