お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"QuickReport 用 斜線コンポーネント"

この発言に対し以下のコメントが寄せられています
#00978 らせん企画 さん RE:QuickReport 用 斜線コンポーネント

QuickReport で斜線を書くコンポーネントです。 unit QRDiagonal; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, QuickRpt, Qrctrls; type TLinePos = (lpLeftTop, lpRightTop, lpLeftBottom, lpRightBottom); TQRDiagonal = Class(TQRShape) Private Function SetPoint(pPos: TLinePos; pRect: TRect): TPoint; Protected FPos1, FPos2: TLinePos; Procedure SetPos1(pPos: TLinePos); Procedure SetPos2(pPos: TLinePos); Procedure Paint; Override; Procedure Print(OfsX, OfsY: Integer); Override; Published Property Pos1: TLinePos Read FPos1 Write SetPos1; Property Pos2: TLinePos Read FPos2 Write SetPos2; End; procedure Register; implementation procedure Register; begin RegisterComponents('QReport', [TQRDiagonal]); end; Procedure TQRDiagonal.Paint; Var wPos1, wPos2: TPoint; wRect: TRect; Begin Inherited; With Self.Canvas Do Begin wRect := Rect(0, 0, Width, Height); FillRect(wRect); wPos1 := SetPoint(FPos1, wRect); wPos2 := SetPoint(FPos2, wRect); MoveTo(wPos1.x, wPos1.y); LineTo(wPos2.x, wPos2.y); End; End; Procedure TQRDiagonal.Print(OfsX, OfsY: Integer); Var wPos1, wPos2: TPoint; wRect: TRect; Begin Inherited; If Self.QRPrinter.Canvas = nil Then Exit; With Self.QRPrinter.Canvas Do Begin wRect := Rect((Parent as TQRBand).Left + Left - 1 , (Parent as TQRBand).Top + Top - 1 , (Parent as TQRBand).Left + Left + Width , (Parent as TQRBand).Top + Top + Height); FillRect(wRect); wPos1 := SetPoint(FPos1, wRect); wPos2 := SetPoint(FPos2, wRect); MoveTo(wPos1.x, wPos1.y); LineTo(wPos2.x, wPos2.y); End; End; Procedure TQRDiagonal.SetPos1(pPos: TLinePos); Begin FPos1 := pPos; Paint; End; Procedure TQRDiagonal.SetPos2(pPos: TLinePos); Begin FPos2 := pPos; Paint; End; Function TQRDiagonal.SetPoint(pPos: TLinePos; pRect: TRect): TPoint; Begin Case pPos Of lpRightTop: Result := Point(pRect.Right - 1, pRect.Top); lpLeftBottom: Result := Point(pRect.Left, pRect.Bottom - 1); lpRightBottom: Result := Point(pRect.Right - 1, pRect.Bottom - 1); Else Result := Point(pRect.Left, pRect.Top); End; End; end. 99/11/16(Tue) 01:40pm BYQ05322 らせん企画の佐々木 Original document by らせん企画 氏 ID:(BYQ05322)



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

Copyright 1996-2002 Delphi Users' Forum