マウスのY座標位置を表示するには?

解決


3日目  2007-02-05 14:13:43  No: 24778  IP: 192.*.*.*

OnMouseMoveEventでその時々のY座標をcanvasの右側に表示したいのですが、うまく行きません。たぶん、描画、消すのプログラムがおかしいのではないかと思うのですが、教えてください。
---------------------------
private
  YY: integer;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  s: string;
  Rct: TRect;
begin
    Canvas.Pen.Mode := pmnot;
    Canvas.Pen.Style := psDot;
    Canvas.Brush.Style := bsClear;

    Canvas.MoveTo(0,YY);
    Canvas.LineTo(Form1.Width-60,YY);
    canvas.Pen.Color := clBtnFace;
    Canvas.TextOut(Form1.Width-54,YY-5,IntToStr(YY));

    YY := Y;
    Canvas.MoveTo(0,YY);
    Canvas.LineTo(Form1.Width-60,YY);
    canvas.Pen.Color := clBlack;
    Canvas.TextOut(Form1.Width-54,YY-5,s);
end;

波線はうまく描けるのですが、その右側に数値が黒塗りで表示されてしまいます。YYの初期値もうまく決められません。
お願いします。

編集 削除
3日目  2007-02-05 16:28:18  No: 24779  IP: 192.*.*.*

訂正:
var
  s: string;
  Rct: TREct;
宣言は不要でした。

編集 削除
うんと  2007-02-05 18:27:12  No: 24780  IP: 192.*.*.*

文字を描く前に、文字を描く領域を背景色で塗りつぶすとよいのでは? 文字の色はペンの色ではなくフォントの色で決まります。

編集 削除
3日目  2007-02-05 19:35:18  No: 24781  IP: 192.*.*.*

うんとさん、ありがとうございました。おかげさまで解決しました。
以下に完成品を表示しておきます。
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Rct: TRect;
begin
    Rct := Rect(Form1.Width-60,0,Form1.Width,Form1.Height);
    Canvas.Brush.Color := clbtnface;
    Canvas.FillRect(Rct);

    Canvas.Pen.Mode := pmnot;
    Canvas.Pen.Style := psDot;
    Canvas.Brush.Style := bsClear;

    Canvas.MoveTo(0,YY);
    Canvas.LineTo(Form1.Width-60,YY);
    Canvas.Pen.Color := clBtnFace;

    YY := Y;
    Canvas.MoveTo(0,YY);
    Canvas.LineTo(Form1.Width-60,YY);
    Canvas.Pen.Color := clBlack;

    Canvas.TextOut(Form1.Width-54,YY-5,IntTOStr(YY));
end;

編集 削除