お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"TEditorで Nifty URL"

この発言に対し以下のコメントが寄せられています
#00965 H-Triton さん RE:TEditorで Nifty URL

TEditor ver 1.0以降では何もしなくても WebのURLや E-Mailアドレスを ハイライト表示してくれて大変楽になりました。 が、Nifty URLにはまだ対応していないので、自分でオーナードローする しかありません。 以下のようなコードを書いて見ましたが、えらく冗長みたいだし、横スク ロールすると崩れたりで明らかに欠陥があります。 改善できるところがあればご教示下さい。 // 文字列はアルファベット大文字だけで構成されているか? 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; HRect: TRect; NifUrl, Tmp: Boolean; begin Editor1.Canvas.Font.Style:= [fsUnderLine]; Editor1.Canvas.Font.Color:= clBlue; i:= 0; S:= ''; NifUrl:= False; Parser:= TEditorParser.Create(LineStr); try with Editor1 do while not (Parser.Token = toEOF) do begin Tmp:= False; case i of 0: if Parser.TokenString = 'nifty' then begin HX:= Margin.Left +          Parser.SourcePos * (ColWidth + Margin.Character); Tmp:= True; end; 1: if Parser.TokenString = ':' then Tmp:= True; 2: if IsStrAlphaUpCase(Parser.TokenString) then Tmp:= True; 3, 5, 7: if Parser.TokenString = '/' then Tmp:= True; 4: if Parser.TokenString = 'MES' then Tmp:= True; 6: if IsStrNumeric(Parser.TokenString) then Tmp:= True; 8: if IsStrNumeric(Parser.TokenString) then NifUrl:= True; end; if NifUrl then begin S:= S + Parser.TokenString; HRect:= Classes.Rect(Max(Margin.Left, HX), ARect.Top, Max(Margin.Left, HX) + Canvas.TextWidth(S), ARect.Bottom); DrawTextRect(HRect, HX, ARect.Top, S, ETO_CLIPPED or ETO_OPAQUE); NifUrl:= False; i:= 0; S:= ''; end else if Tmp then begin S:= S + Parser.TokenString; Inc(i); end else i:= 0; Parser.NextToken; end; finally Parser.Free; end; Canvas.Font.Color:= Font.Color; 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