| back | 1251-1300 | 1301-1350 |
1351-1400 |
| 1350 | Re: AutoIndent | コメント数: 0件 |
| 本田勝彦 | | 2001/06/23 (土) 00:07 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > ところをいじればいいのでしょうが、ちょっと自信がないです(^^;)。ソースを > いじらずにアプリで対応できればその方がよいのですが。 結構大変だったりします(^^; 全角空白の数を返す関数の実装と、それを挿入するには、現在のところ ソースコード書き換えしかありません。 この辺も、将来のバージョンの参考にさせて頂きたいと思います。 |
||
| 1349 | Re^4: キーの割り当てについて | コメント数: 0件 |
| 本田勝彦 | | 2001/06/23 (土) 00:04 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > TurboPowerからサンプル版はダウンロード出来たかと思いますが、サンプル版にはソースはついていません。 あら、残念ですね。 > お手本のエディタをダウンロードしてみました。 > 良く出来ているというか、表示設定用のたくさんのコンポーネント..力技ですね(^^; TFountain もあぁなったら良いなぁという思いはあるのですが(^^; > DOSの時代には一生懸命コードを書いていたのですがDelphiに染まってからは目的のコンポーネントを探すことばかりで複雑なコードは書けなくなってしまいました。 ん〜もったいない。 > やはり、最終的には痒いところに手が届くTEditorを使いたいのでキー割り当て機能の実装を心待ちにしております。 長い目でよしなにお願い致します。(^^; |
||
| 1348 | Re: トークンについて | コメント数: 0件 |
| 本田勝彦 | | 2001/06/23 (土) 00:02 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| 2.02 の頃、 > toUrl = Char(20); > toMail = Char(21); でした。 2.10 以降は、heFountain.pas で > toUrl = Char(21); > toMail = Char(22); となっています。 デバッガが見ている .dcu が古いままなのではないでしょうか? 該当プロジェクトを開いて、Delphi のメニューにある [プロジェクト|再構築] を実行されてみてはいかがでしょう? |
||
| 1347 | Re^2: ダブルクリックによる単語の選択 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/22 (金) 23:58 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > Parser.NewData(Editor1.ListString[Row], Editor1.ListData[Row]); ここを >with Editor1 do > Parser.NewData(ExpandTab(ListString[Row], ListData[Row]); とするとうまく行くと思います。ヘルプファイルの SelectTokenxxxx のトピックも 参考にして見て下さいね。 |
||
| 1346 | Re^3: キャレットを非表示に | コメント数: 0件 |
| 本田勝彦 | | 2001/06/22 (金) 23:55 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > 何やら難しそうなことをしなければならないようなので,諦めました。 > どうもありがとうございました。 まぁ、そぉいわんと(^^; http://compodev.at.infoseek.co.jp/arc/shibaeditor.lzh 参考にしてみて下さい。ShowCaret プロパティを False にすると キャレットが表示されない TShibaEditor です。 |
||
| 1345 | AutoIndent | コメント数: 1件 |
| ゆうきひろ | | 2001/06/22 (金) 23:09 | |
| http://homepage2.nifty.com/ultla7/mozart/_start.htm | ||
| AutoIndent するとき現在行に全角空白がある場合、次の行では半角空白では なく、そのまま全角空白を挿入するにはどうしたらよいでしょう? procedure TEditor.WMChar(var Message: TWMChar);の AutoIndent に関する ところをいじればいいのでしょうが、ちょっと自信がないです(^^;)。ソースを いじらずにアプリで対応できればその方がよいのですが。 |
||
| 1344 | Re^3: キーの割り当てについて | コメント数: 1件 |
| Mightien | | 2001/06/22 (金) 17:14 | |
| http://www.milley.net | ||
| 早速の御回答ありがとうございます。 TurboPowerからサンプル版はダウンロード出来たかと思いますが、サンプル版にはソースはついていません。 お手本のエディタをダウンロードしてみました。 良く出来ているというか、表示設定用のたくさんのコンポーネント..力技ですね(^^; TurboPowerのコンポーネントはもっとエレガントな作りになっていますが、 難しいことを避けたい私にとってはこのコンポーネントのような方式が嬉しい気がします。 DOSの時代には一生懸命コードを書いていたのですがDelphiに染まってからは目的のコンポーネントを探すことばかりで複雑なコードは書けなくなってしまいました。 とりあえずは紹介していただいたコンポーネントをベースにすることも検討します。 やはり、最終的には痒いところに手が届くTEditorを使いたいのでキー割り当て機能の実装を心待ちにしております。 |
||
| 1343 | トークンについて | コメント数: 1件 |
| 海苔巻 | | 2001/06/22 (金) 14:33 | |
| こんにちは。海苔巻といいます。 今まで TEditor 2.02 を使っていましたが Ver 2.10が出たというので早速ダウンロードして インストールしてみました。が、トークンがちょっと 変なのです。 TokenFromPos でメールアドレスとホームページの アドレスを取得するようにしていたのですが toUrl toMail の値が違うのです。 C := Editor1.TokenFromPos(aPos); で語句の種類を取得します。デバッガで見たところ 実際の C の値は、その語句がURLなら#21、メール アドレスなら#22なのですが、監視式にtoUrl、toMail を追加してその値を見てみるとそれぞれ#20,#21なの です。 説明がうまくないですが状況は伝わるでしょうか。 これはこちらだけの症状かどうか知りたかったので 書き込みしました。 よろしくお願いします。 |
||
| 1342 | Re: ダブルクリックによる単語の選択 | コメント数: 1件 |
| 清明 | | 2001/06/22 (金) 10:39 | |
| (続き) 新バージョンで Parser:TFountainParser; begin Col := Editor1.Col; Row := Editor1.Row; Parser := Editor1.ActiveFountain.ParserClass.Create( Editor1.ActiveFountain); try Parser.NewData(Editor1.ListString[Row], Editor1.ListData[Row]); while Parser.NextToken <> toEof do begin l := Length(Parser.TokenString); if (Col >= Parser.SourcePos) and (Col < Parser.SourcePos + l) then begin (Sender as TEditor).Col := Parser.SourcePos; (Sender as TEditor).SelLength := l; break; end; end; finally Parser.Free; end; ・・・・・・・・ とした場合はタブが混じっていると上手く選択できません。 Parser.SourcePosの扱いが変わったのでしょうか? |
||
| 1341 | ダブルクリックによる単語の選択 | コメント数: 2件 |
| 清明 | | 2001/06/22 (金) 10:38 | |
| お世話になってます。 ダブルクリックによる単語の選択で、以前のバージョン Parser:TEditorParser; begin Col := Editor1.Col; Row := Editor1.Row; s := Editor1.ExpandTab(Editor1.ListString[Row]); Parser := TEditorParser.Create(s); try while Parser.Token <> toEof do ・・・・・ と、やっていたころはタブのコードが混じっていてもOKだったのですが (続く) |
||
| 1340 | Re^2: キャレットを非表示に | コメント数: 1件 |
| しばやん | | 2001/06/22 (金) 03:15 | |
| http://hp.vector.co.jp/authors/VA017625/ | ||
| > 何かキャレットを表示非表示にするプロパティをこしらえて、CaretShow > メソッドでそのプロパティ値を見て ShowCaret API を呼ぶ呼ばない > という処理でいけると思いますよ。 何やら難しそうなことをしなければならないようなので,諦めました。 どうもありがとうございました。 |
||
| 1339 | Re: キャレットを非表示に | コメント数: 2件 |
| 本田勝彦 | | 2001/06/22 (金) 01:31 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > Enabled := Trueなので,クリックをするとキャレットが表示されてしまうの > ですが,それを非表示にすることはできないでしょうか。URLをクリックする > ことはできるけど,キャレットは表示させたくないという要望です。 CaretShow メソッドを override したコンポを作らないと実現できません。 たぶん。 何かキャレットを表示非表示にするプロパティをこしらえて、CaretShow メソッドでそのプロパティ値を見て ShowCaret API を呼ぶ呼ばない という処理でいけると思いますよ。 |
||
| 1338 | Re^18: Windows2000 問題 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/22 (金) 01:27 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > メッセージ添付いたしました。 見せて頂きました。ご協力感謝です。 Windows2000 ひっでぇ〜って感じです(^^; 何処に文句言おうかなぁ。とりあえず Deko さんのところにでも(^^; FDELPHI もいいなぁ |
||
| 1337 | キャレットを非表示に | コメント数: 3件 |
| しばやん | | 2001/06/22 (金) 00:32 | |
| http://hp.vector.co.jp/authors/VA017625/ | ||
| 新バージョンで盛り上がっているときに申し訳ないのですが・・・。 自作ソフト上で,HEditorを表示用に使用しています。ただの表示用だったら Enabled := Falseでいいのですが,URLの部分をクリックしたときには,その ページを表示するような仕組みにしてあります。 Enabled := Trueなので,クリックをするとキャレットが表示されてしまうの ですが,それを非表示にすることはできないでしょうか。URLをクリックする ことはできるけど,キャレットは表示させたくないという要望です。 うまく意図が伝わったかどうか心配ですが,よかったら教えて下さい。よろしく お願い致します。 |
||
| 1336 | Re^17: Windows2000 問題 | コメント数: 1件 |
| Kou | | 2001/06/22 (金) 00:09 | |
| > ご協力の程よろしくお願い致します。m(_ _)m 大歓迎です。 明日からちょっとまた家を空けますが・・・。 日曜日には戻ってこれると思います。 とりあえず、役に立つか分かりませんが、 メッセージ添付いたしました。 よろしくお願いします。 |
||
| 1335 | Re^16: Windows2000 問題 | コメント数: 2件 |
| 本田勝彦 | | 2001/06/21 (木) 23:53 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > 何かテストする項目はありますでしょうか。 人柱されます? http://compodev.at.infoseek.co.jp/arc/hedit212b13p.lzh 実行したら、左上の TEditor に Windows 2000 上で不具合の出る文字を 入力して下さい。右上の TMemo にデータが蓄積されます。 (^人^) など半角全角混じりの登録語がテストデータとしては強力です。 Windows2000 では WM_IME_CHAR を DefWindowProc で処理する際に 不定要素があるようです。 私が理解してない部分があるだけかもしれません。 ご協力の程よろしくお願い致します。m(_ _)m |
||
| 1334 | Re^2: キーの割り当てについて | コメント数: 2件 |
| 本田勝彦 | | 2001/06/21 (木) 23:40 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| ようこそいらっしゃいまし。 キーマッピングは今後の課題ということで、一応 todo リストにあります。 現在の仕様のままでは、ソースコード書き換えをしなければ実現出来ません。 後は、ジャンプマークの表示でしょうか。 そのあたりまでは、進化したいと思います。 実は、お手本にしているエディタコンポがありまして、TFountain の解説ページにも 書いたのですが、mwEdit という海外製フリー&ソースコード公開のエディタが あります。現在は synedit と名前を変えて開発が進められているようです。 http://synedit.sourceforge.net/ これを知ったのは、2000年5月頃なので、基本仕様を変えることは出来なかったのですが、TFountain の実装では大変参考になりました。 コマンドプロセッサーの仕組みが実装されていますので、参考にしたいと思っています。 www からダウンロード出来るのでしょうか?< Orphous ホームページ見せて頂きました。友達の嫁さんの名前がいきなり出てきて驚きました。(^^; |
||
| 1333 | Re^15: Windows2000 問題 | コメント数: 3件 |
| Kou | | 2001/06/21 (木) 22:47 | |
| 少しでもお役に立てるよう、 TEditorのサンプルプロジェクトで新規ページを開き試しています。 コーディングは一切なし。 新規にTEditorをインストールして「hedit212b4.lzh」を上書きしました。 この環境ではリターンキーが無視される現象と、 私の環境で発生している「E」が出てしまいました。 この後、「hedit212b12.lzh」を上書きしました。 リターンが無視されることはなさそうです。 半角文字を入力している場合にはまったく問題ないようです。 しかし、かな漢字変換ONでは、半角スペースを押すと半角SP一個とEが 挿入されることがあったり、半角SPが2個ずつ挿入されてしまいました。 かな漢字変換ONの場合は、初期状態でも半角SPが2個入るようです。 何かテストする項目はありますでしょうか。 |
||
| 1332 | Re^14: Windows2000 問題 | コメント数: 4件 |
| Kou | | 2001/06/21 (木) 20:54 | |
| > おりょ?てらおさんのところでは、リターンキーが無視されるとかで > 地下で b4 まで進んでおりました(^^; ちょっといない間にどんどんロジックが変わってるようですね。 今から確認してみます。 上にあるhedit212b12.lzh も試させて頂きます。 なんだか、わけがわからなくなってきました。(^^; Win2000 おそるべし・・・。 |
||
| 1331 | Re: キーの割り当てについて | コメント数: 3件 |
| Mightien | | 2001/06/21 (木) 20:02 | |
| http://www.milley.net | ||
| 私はDOS時代からパソコンを使っているせいでWindows準拠キー割り当てのままでプログラミングをすることには強い抵抗があります。 要するにDelphiのキー割り当てのような機能をEditorに持たせたいのです。 TKeyMacroがそのような用途に使えるのかと思ってダウンロードしてみましたがちょっと違うようです。 自分で作るとして、考え方としては単純にTEditorのOnKeyDownイベントの中でキーコードを置き換えるようなロジックで問題ないものでしょうか? カーソルキーなどの特殊なコードの振る舞いについては見えてないところがありますのでイベント、メッセージの動作に詳しい本田さんのご意見を伺えれば幸いと思い質問させていただきました。 実は別に購入しているTurboPower社( http://www.turbopower.com )のOrphousというコンポーネントセットにも拡張Editorがあり、それにはキーマッピングをするコンポーネントとそのインターフェースがあります。 しかしEditorコンポーネントとしてはTEditorの方が数段優れていますので、何とかTEditorをベースにしたいのです。 よろしくお願い致します。 |
||
| 1330 | キーの割り当てについて | コメント数: 4件 |
| Mightien | | 2001/06/21 (木) 20:01 | |
| http://www.milley.net | ||
| TEditorを提供していただき感謝致しております。 出来の良さに感激してレジストしたものの、これまではTEditorの潜在能力を活用することが出来ていませんでした。 新たに組込み用のIDE(開発環境)を作る必要が生じ、TEditorを活用する機会だと張り切っています。 そこで初歩的な質問があるのですがアドバイスをいただければ幸いです。 (文字数制限のため、次へ) |
||
| 1329 | Re: TEditorバグ発見です | コメント数: 0件 |
| 本田勝彦 | | 2001/06/20 (水) 23:21 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| レポートありがとうございます。確認出来ました。 http://compodev.at.infoseek.co.jp/arc/hedit212b12.lzh 試して見て下さい。 b12 というのがアレですが(^^; てらお さん見ていらっしゃいますか? ver 2.11 の WM_IME_CHAR はやっぱり変だったんですね。 おかげさまで何とかなりそうです。まだだったりして(^^; |
||
| 1328 | TEditorバグ発見です | コメント数: 1件 |
| あきら | | 2001/06/20 (水) 22:15 | |
| TEditor v2.11を使わせて頂いています。 バグを発見しましたので、ご報告します。 「渡邉」と入力すると、動作がおかしくなります。 文末に入力すると、リストがインデックスを超えています… で、文末以外だと、一つ後ろの文字がおかしくなります。 それでは。 |
||
| 1327 | Re^13: Windows2000 問題 | コメント数: 5件 |
| 本田勝彦 | | 2001/06/18 (月) 23:40 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > ありがとうございます。 > 今のところ問題ないようです。(^^) おりょ?てらおさんのところでは、リターンキーが無視されるとかで 地下で b4 まで進んでおりました(^^; http://compodev.at.infoseek.co.jp/arc/hedit212b3.lzh http://compodev.at.infoseek.co.jp/arc/hedit212b4.lzh b4 の方は WM_CHAR メッセージハンドラに仕掛けがあります。 |
||
| 1326 | Re^12: Windows2000 問題 | コメント数: 6件 |
| Kou | | 2001/06/18 (月) 23:27 | |
| > これが決定打になることを祈りつつ・・・ ありがとうございます。 今のところ問題ないようです。(^^) |
||
| 1325 | Re^11: Windows2000 問題 | コメント数: 7件 |
| 本田勝彦 | | 2001/06/16 (土) 02:03 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| ReadOnly 対策が抜けておりました。 またまたロジックが変更されました。WM_IME_COMPOSITION を復活させました。 WM_IME_CHAR も処理出来るので、TKeyMacro にも対応出来ます。(^^)v http://compodev.at.infoseek.co.jp/arc/hedit212b2.lzh これが決定打になることを祈りつつ・・・ |
||
| 1324 | Re^10: Windows2000 問題 | コメント数: 8件 |
| 本田勝彦 | | 2001/06/16 (土) 01:24 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| てらお さん、Kou さん、色々とありがとうございます。 > // 2バイト文字だけ処理する > // Inc(FImeCount); // コメントアウト というのは、全角半角混在の登録文字列が入力されると、アウトでした。 (^人^)、オ・ネ・ガ・イ。とかいうやつ。おっと半角カタカナだぞ(^^; で、正常動作するバージョンのベータ版(何か変^^;)を下記サイトに おきましたので、皆様にもお試し頂けるとありがたいです。 http://compodev.at.infoseek.co.jp/arc/hedit212b.lzh |
||
| 1323 | Re^9: Windows2000 問題 | コメント数: 0件 |
| Kou | | 2001/06/15 (金) 22:07 | |
| > E は $20$45 ですね。OnKeyPress で何かしているというのは無しですよね(^^; 特に何もしていません。 てらおさんの環境ではうまく動作しているようですので、 私の方で何か問題があるのかもしれません。 今晩、悩んでみます。(^^; |
||
| 1322 | Re^9: Windows2000 問題 | コメント数: 9件 |
| てらお | | 2001/06/15 (金) 09:10 | |
| http://www2s.biglobe.ne.jp/~t-susumu/toclip/ | ||
| てらおですー procedure TEditor.WMImeChar(var Msg: TMessage); var CH, CL: Char; begin // 2バイト文字だけ処理する if Msg.wParam > 255 then begin // TMemo が受け取る WM_CHAR と互換性を持たせる CL := Chr(Msg.wParam); Msg.wParam := Msg.wParam shr 8; CH := Chr(Msg.wParam); if CH in LeadBytes then PutStringToLine(CH + CL); Msg.Result := 0; end; inherited; end; で、今のところ問題なさそうですー(^-^) もうちょい使ってみますー |
||
| 1321 | Re^8: Windows2000 問題 | コメント数: 11件 |
| 本田勝彦 | | 2001/06/15 (金) 01:11 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > ただ、確定直後に半角スペースを挿入しようとすると、 > [E]が挿入されることが度々ありますが、もしかして私だけでしょうか。(^^;; E は $20$45 ですね。OnKeyPress で何かしているというのは無しですよね(^^; > end > else > inherited; スンマセン見落としてました(^^; でも、これだと 1.WM_IME_COMPOSITION: 2.WM_IME_COMPOSITION: 3.WM_IME_CHAR: 82A0 4.WM_CHAR: 0082 4. の WM_CHAR が来ないような気がして、そうなるとTKeyMacro の動作が怪しく なる気がします。 if CH in LeadBytes then PutStringToLine(CH + CL); Msg.Result := 0; // 1行挿入 end; inherited; end; とするとどうでしょう。同じかなぁ。 ハンドラの先頭で inherited; if Msg.Result <> 0 then begin とやるか・・・あ゛れ? あの〜ですね。WM_CHAR のメッセージハンドラの一番下のところの PutStringToLine(Char(Message.CharCode)); を PutStringToLine(Chr(Message.CharCode)); Chr 関数呼び出しに変更すると どうでしょう? また乖離して行きそうだ(^^; |
||
| 1320 | Re^7: Windows2000 問題 | コメント数: 12件 |
| Kou | | 2001/06/15 (金) 00:09 | |
| > というわけで、LeadByte 判別付き究極バージョンです。(余計かも^^;) すばやい対応ありがとうございます。 試してみました。 Win2000Pro IME2000 変換確定直後の[Enter]無視は起こりません。 ただ、確定直後に半角スペースを挿入しようとすると、 [E]が挿入されることが度々ありますが、もしかして私だけでしょうか。(^^;; 最後の > end; > inherited; > end; というところを end else inherited; end; のようにinheritedを変えることで回避できるようなのですが・・・。 先の書き込みではこの部分を強調したかったのですが、忘れてました。(^^;; |
||
| 1319 | Re^6: Windows2000 問題 | コメント数: 13件 |
| 本田勝彦 | | 2001/06/14 (木) 23:17 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| Kou さん、てらお さんどうも有り難うございます。 > とすることでうまく動作しましたが、どうなんでしょう? やはり、Inc(FImeCount); は不要なようですね。これ、無くても Win98 + ATOK, MS-IME どちらもおっけ〜なんですよね(^^; というわけで、LeadByte 判別付き究極バージョンです。(余計かも^^;) procedure TEditor.WMImeChar(var Msg: TMessage); var CH, CL: Char; begin // 2バイト文字だけ処理する if Msg.wParam > 255 then begin // TMemo が受け取る WM_CHAR と互換性を持たせる CL := Chr(Msg.wParam); Msg.wParam := Msg.wParam shr 8; CH := Chr(Msg.wParam); if CH in LeadBytes then PutStringToLine(CH + CL); end; inherited; end; お試し頂けますでしょうか?何度もスイマセンです。 旨く行きますように(^人^) |
||
| 1318 | Re^5: Windows2000 問題 | コメント数: 14件 |
| Kou | | 2001/06/14 (木) 21:54 | |
| > 近づいている気はするのですが(^^;) ありがとうございます。 前回と同様に「E」が出る現象が出ましたが、 procedure TEditor.WMImeChar(var Msg: TMessage); var S: String; C: Char; begin if Msg.wParam > 255 then begin // 2バイト文字だけ処理する C := Chr(Msg.wParam); Msg.wParam := Msg.wParam shr 8; S := Chr(Msg.wParam) + C; //Inc(FImeCount); // WMChar メッセージハンドラでキャンセルする文字数 PutStringToLine(S); end else inherited; end; とすることでうまく動作しましたが、どうなんでしょう? |
||
| 1317 | Re^4: Windows2000 問題 | コメント数: 15件 |
| 本田勝彦 | | 2001/06/14 (木) 19:40 | |
| > W2K+IME2000で変換後にEnterが無視される現象を確認しましたー(T.T) なかなか解へ辿り着けなくて申し訳ないです。 > > Inc(FImeCount); // WMChar メッセージハンドラでキャンセルする文字数 この1行をコメントアウトするといかがでしょう? 近づいている気はするのですが(^^;) |
||
| 1316 | Re^3: Windows2000 問題 | コメント数: 16件 |
| てらお | | 2001/06/14 (木) 17:41 | |
| http://www2s.biglobe.ne.jp/~t-susumu/toclip/ | ||
| てらおです。 > procedure TEditor.WMImeChar(var Msg: TMessage); > var > S: String; > C: Char; > begin > if Msg.wParam > 255 then > begin > // 2バイト文字だけ処理する > C := Chr(Msg.wParam); > Msg.wParam := Msg.wParam shr 8; > S := Chr(Msg.wParam) + C; > Inc(FImeCount); // WMChar メッセージハンドラでキャンセルする文字数 > PutStringToLine(S); > end; > inherited; > end; W2K+IME2000で変換後にEnterが無視される現象を確認しましたー(T.T) |
||
| 1315 | Re^2: Windows2000 問題 | コメント数: 17件 |
| 本田勝彦 | | 2001/06/14 (木) 02:30 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| 何度もすいません。変換が確定した文字全部を処理するという WM_IME_COMPOSITION の実装スタイルにとらわれすぎていたようです。 全角文字だけ処理して、後は知らん顔するバージョンです。 たぶんこれでうまく行ってくれると思うのですが、いかがでしょう? procedure TEditor.WMImeChar(var Msg: TMessage); var S: String; C: Char; begin if Msg.wParam > 255 then begin // 2バイト文字だけ処理する C := Chr(Msg.wParam); Msg.wParam := Msg.wParam shr 8; S := Chr(Msg.wParam) + C; Inc(FImeCount); // WMChar メッセージハンドラでキャンセルする文字数 PutStringToLine(S); end; inherited; end; お試し下さいませ。 |
||
| 1314 | Re: Windows2000 問題 | コメント数: 18件 |
| 本田勝彦 | | 2001/06/14 (木) 00:49 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > Windows2000 をお使いの方でご協力頂けるにはよろしくお願い致します。 メールをくださった皆様ありがとうございました。で、あらためて WM_IME_CHAR メッセージハンドラを眺めていると怪しい部分がありましたので、以下に修正版 を掲載します。 procedure TEditor.WMImeChar(var Msg: TMessage); var S: String; C: Char; begin if Msg.wParam > 255 then begin C := Chr(Msg.wParam); Msg.wParam := Msg.wParam shr 8; S := Chr(Msg.wParam) + C; Inc(FImeCount); // (*1) PutStringToLine(S); end else begin if TWMChar(Msg).CharCode in [$20..$7E, $A0..$FF] then begin S := Chr(Msg.wParam); // Inc(FImeCount); // コメントアウト PutStringToLine(S); end; Inc(FImeCount); // ここに移動する end; inherited; end; (*1)の部分はコメントアウトするしないで変換後のリターンキーに 関わる部分です。 お試し頂けましたら、ご報告頂けると有り難いです。 |
||
| 1313 | TStoreComponent | コメント数: 0件 |
| 本田勝彦 | | 2001/06/13 (水) 23:58 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| ReadReg, WriteReg メソッドの引数が (const Root, Ident: String); となっていましたが、 (const Root, Section, Ident: String); に変更致します。TRegManager との互換性を計るためです。 近日中に TEditor ver 2.12, TStringsPrinter ver 1.51 として 公開致します。お手数をお掛け致しますが、ユーザーの皆様には よろしくお願い申しあげます。 |
||
| 1312 | Re^2: 追伸:[エラー] MainU.pas(97): 未定義の識別子 : 'TEditorParser' | コメント数: 0件 |
| 清明 | | 2001/06/13 (水) 09:11 | |
| あるがとうございます。 >サンプルコードも記載されていますので、参考にして頂けますでしょうか? procedure TDoubleDE.Ed1DblClick(Sender: TObject); var s:string; Col,Row,l:integer; Parser: TFountainParser; begin Col := (Sender as TEditor).Col; Row := (Sender as TEditor).Row; Parser := (Sender as TEditor).ActiveFountain.ParserClass.Create( (Sender as TEditor).ActiveFountain); try Parser.NewData((Sender as TEditor).ListString[Row], (Sender as TEditor).ListData[Row]); while Parser.NextToken <> toEof do begin l := Length(Parser.TokenString); if (Col >= Parser.SourcePos) and (Col < Parser.SourcePos + l) then begin (Sender as TEditor).Col := Parser.SourcePos; (Sender as TEditor).SelLength := l; break; end; end; finally Parser.Free; end; end; このようにすることでうまく行きました。 |
||
| 1311 | Windows2000 問題 | コメント数: 19件 |
| 本田勝彦 | | 2001/06/13 (水) 01:00 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| に対処するため、皆様のご協力を仰ぎたく思います。 http://homepage3.nifty.com/~katsuhiko/app/getmes/getmes.lzh に TMemo へやってくる WM_IME_COMPOSITION, WM_IME_CHAR, WM_CHAR メッセージを記録するアプリを置きました。コンパイル実行後の テスト結果をご連絡頂ければ有り難いです。 Windows2000 をお使いの方でご協力頂けるにはよろしくお願い致します。 |
||
| 1310 | 色々 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/12 (火) 23:55 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| TEditor ver 2.11 を公開しました。 TStringsPrinter ver 1.5 を公開しました。 Component Help Install help を公開しました。 |
||
| 1309 | Re: WMImeCharについて | コメント数: 0件 |
| 本田勝彦 | | 2001/06/12 (火) 23:27 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > 環境は Win2000Pro MS IME2000です。 やはり一筋縄では旨く行かないようですね。調査してみますので、 それまでの間、以前のバージョンの WM_IME_COMPOSITION メッセージ ハンドラをご利用下さい。 |
||
| 1308 | Re: 追伸:[エラー] MainU.pas(97): 未定義の識別子 : 'TEditorParser' | コメント数: 1件 |
| 本田勝彦 | | 2001/06/12 (火) 23:25 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| ヘルプファイルの TFountain の導入というトピックに今回のバージョンアップで 大きく変わったパーサークラスについて記述があります。 サンプルコードも記載されていますので、参考にして頂けますでしょうか? |
||
| 1307 | WMImeCharについて | コメント数: 1件 |
| Kou | | 2001/06/12 (火) 22:22 | |
| お世話になってます。 てらおさんの発言と本田さんの回答をもとに Inc(FImeCount); // WMChar メッセージハンドラでキャンセルする文字数 というところをコメントアウトすることで [Enter]は効くようになりましたが、 たとえば 「あ」と入力し、その後、半角スペースを一つ挿入しようとすると 「 E」というように半角スペースとアルファベットの「E」が挿入される 現象がでています。 何か回避策はありますでしょうか。 環境は Win2000Pro MS IME2000です。 |
||
| 1306 | 追伸:[エラー] MainU.pas(97): 未定義の識別子 : 'TEditorParser' | コメント数: 2件 |
| 清明 | | 2001/06/12 (火) 14:53 | |
| 追伸です。処理はダブルクリックでワードを選択させる処理をしています。 たしか、本田さんに教えていただいた方法だと思っております。 procedure TDoubleDE.Ed1DblClick(Sender: TObject); var s:string; Col,Row,l:integer; Parser:TEditorParser; begin Col := (Sender as TEditor).Col; Row := (Sender as TEditor).Row; s := (Sender as TEditor).ExpandTab((Sender as TEditor).ListString[Row]); Parser := TEditorParser.Create(s); try while Parser.Token <> toEof do begin l := Length(Parser.TokenString); if (Col >= Parser.SourcePos) and (Col < Parser.SourcePos + l) then begin (Sender as TEditor).Col := Parser.SourcePos; (Sender as TEditor).SelLength := l; break; end; Parser.NextToken; end; finally Parser.Free; end; end; |
||
| 1305 | [エラー] MainU.pas(97): 未定義の識別子 : 'TEditorParser' | コメント数: 3件 |
| 清明 | | 2001/06/12 (火) 14:46 | |
| ご無沙汰してます。 表題のとおり [エラー] MainU.pas(97): 未定義の識別子 : 'TEditorParser' でコンパイル出来なくなりました。 どう変更すればよいのでしょうか。 |
||
| 1304 | Re^2: TFountain.FileExtList の活かし方 | コメント数: 0件 |
| 本田勝彦 | | 2001/06/12 (火) 03:02 | |
| http://member.nifty.ne.jp/~katsuhiko | ||
| > 結局 TEditor の機能としては実装不可能ということでしょうかね(爆) わはは。いや失礼。 そういうコンポをこしらえて、OpenDialog.FileName を知っている人が そのコンポに問い合わせて、取得した TFountain を該当 TEditor にあてがって やるというのは可能だと思います。 TFountainCollecter でしょうか?(^^; Application.Components 配列から拾い集められますよね? パンタグラフさんよろしくお願い致します。(^_^) |
||
| 1303 | Re: TFountain.FileExtList の活かし方 | コメント数: 1件 |
| パンタグラフ | | 2001/06/12 (火) 01:05 | |
| http://homepage1.nifty.com/cosmic/ | ||
| やるとすれば 案1)TEditorStrings は LoadFromFile メソッドにて、 FEditor.Owner のコンポを全て検索し、TFountain がいれば、 HasExt をして一致すれば FEditor.Fountain にセット 案2)TFountain は生成時に、グローバルに作った FountainList に 自分自身を登録する。TEditorStrings は LoadFromFile 時に FountainList を検索し、TFountain に対して HasExt をして 一致すれば FEditor.Fountain にセット どうでしょう? 案1は、実装は簡単ですが、次の欠点があります。 TEditor がメインフォームにあり、TFountain から派生したコンポが データモジュールにある場合など、Owner が違うものだと使えません。 案2は、実装は大変ですが、他のフォームに置いた TFountain も使えます。 ただし、自動的に使われるので、THTMLFountain を複数使い分ける場合など に不都合が出てきます。 結局 TEditor の機能としては実装不可能ということでしょうかね(爆) |
||
| 1302 | TFountain.FileExtList の活かし方 | コメント数: 2件 |
| パンタグラフ | | 2001/06/12 (火) 01:00 | |
| http://homepage1.nifty.com/cosmic/ | ||
| またまた TFountain についてです。 FileExtList に格納された値って、自動的に使われることはないんですよね。 TPicture は LoadFromFile メソッドで、ファイルの拡張子によって 適切な TGraphic を生成して読み込みを行ないますが、そのようなことが TEditor.Lines.LoadFromFile でもできないかな、と。 .html のファイルの場合は THTMLFountain が、 .pas のファイルの場合は、TDelphiFountain が自動的にセットされたら いいと思うのですが・・・。 とりあえず Form で TFountain を検索して、拡張子が一致していたら TEditor にセットするというコードは書けたのですが、TEditor の機能として 実装できないでしょうか。 |
||
| 1301 | Re^3: TEditorFountain | コメント数: 0件 |
| パンタグラフ | | 2001/06/12 (火) 00:47 | |
| http://homepage1.nifty.com/cosmic/ | ||
| なるほどー。詳しい説明有り難うございました。 TEditorFountain をパレットにインストールして、 フォームに貼り付けて使えばいいかな?とか考えていたのですが、 それでも再接続がうまく行かないんですね(^^; フォームにすでに置いてあるコンポーネントを破棄して入れ替えるとなると、 設計時に接続をしているコンポなど、いろいろ影響がありそうですね。 そのあたりのうまい解決策を盛り込んだ次バージョンに期待です(^^; | ||