お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"ラバーバンドの表示"




グラフイックツールによくあるマウスドラッグで伸び縮みするラバーバン
ドのようなものを表示するサンプルプログラムです。

別掲の透明ウィンドウ(nifty:FDELPHI/MES/16/1113)と組み合わせると画
面キャプチャープログラムに応用できます。

フォームに TShapeコンポーネントをひとつ置いて下さい。
Pen.Modeや Pen.Colorの値を変更すると色々変わった効果が得られると思
います。

var
  OriginX, OriginY: Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1.Visible:= False;
  Shape1.Brush.Style:= bsClear;
  Shape1.Pen.Style:= psDot;
  Shape1.DragCursor:= crCross;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    OriginX:= X;
    OriginY:= Y;
    Shape1.SetBounds(OriginX, OriginY, 0, 0);
    Shape1.Show;
    Shape1.BeginDrag(False);
  end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if TComponent(Source).Name = 'Shape1' then
  begin
    if X >= OriginX then
      Shape1.Width:= X - OriginX else
    begin
      Shape1.Left:= X;
      Shape1.Width:= OriginX - X;
    end;
    if Y >= OriginY then
      Shape1.Height:= Y - OriginY else
    begin
      Shape1.Top:= Y;
      Shape1.Height:= OriginY - Y;
    end;
  end;
end;

procedure TForm1.Shape1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  Shape1.Hide;
  with Shape1 do ShowMessage('Left=' + IntToStr(Left) +
    '  Width=' + IntToStr(Width) + #13 +
    'Top=' + IntToStr(Top) + '  Height=' + IntToStr(Height));
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