お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:TEditorで Nifty URL"

この発言は
#00964 H-Triton さんのTEditorで Nifty URL
に対するコメントです

nifty:FDELPHI/MES/16/964 H-Tritonさん:自己レスです。 nifty:FDELPHI/MES/10/6669で "NO"rmalさんからいただいたコメントを 参考に描画処理(横スクロールした時の文字表示崩れ)改善しました。 尚、Nifty URLの検出ルーチンは、1文字づつの判定よりも、TEditorに 新しく実装された TEditorParserオブジェクトを利用して Token単位で 行う方が精度が得られると考えて採用しました。 // 文字列はアルファベット大文字だけで構成されているか? function IsStrAlphaUpCase(S: string): Boolean; var i: Integer; begin Result:= False; for i:= 1 to Length(S) do if not (S[i] in ['A'..'Z']) then Exit; Result:= True; end; // 文字列は数字だけで構成されているか? function IsStrNumeric(const S: string): boolean; var i, d: integer; begin Val(S , i, d); Result:= (d = 0); end; // Nifty URLのハイライト表示 procedure TForm1.Editor1DrawLine(Sender: TObject; LineStr: String; X, Y, Index: Integer; ARect: TRect; Selected: Boolean); var Parser: TEditorParser; i, HX: Integer; S: string; NifUrl: Boolean; begin Editor1.Canvas.Font.Style:= [fsUnderLine]; Editor1.Canvas.Font.Color:= clBlue; i:= 0; S:= ''; Parser:= TEditorParser.Create(LineStr); try with Editor1 do while not (Parser.Token = toEOF) do begin NifUrl:= False; case i of 0: if Parser.TokenString = 'nifty' then begin HX:= X + Parser.SourcePos * (ColWidth + Margin.Character); NifUrl:= True; end; 1: if Parser.TokenString = ':' then NifUrl:= True; 2: if IsStrAlphaUpCase(Parser.TokenString) then NifUrl:= True; 3, 5, 7: if Parser.TokenString = '/' then NifUrl:= True; 4: if Parser.TokenString = 'MES' then NifUrl:= True; 6, 8: if IsStrNumeric(Parser.TokenString) then NifUrl:= True; end; if NifUrl then begin S:= S + Parser.TokenString; if i = 8 then begin DrawTextRect(ARect, HX, ARect.Top, S, 0); i:= 0; S:= ''; end else Inc(i); end; Parser.NextToken; end; finally Parser.Free; end; end; http://member.nifty.ne.jp/h-triton/ ○ 快速・大容量テキストエディタ「えるの〜と」進化中 ○ Avalon's Friendly Crew #80008 H-Triton (^^) since 1996 Original document by H-Triton 氏 ID:(QZV11422)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum