PopForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit PopForm;
  2. interface
  3. uses
  4.   SysUtils, Qt, Classes, QGraphics, QForms, QControls,
  5.   QStdCtrls, QMenus, QDialogs, QExtCtrls, Types, QTypes;
  6. type
  7.   TFormPopup = class(TForm)
  8.     ColorDialog1: TColorDialog;
  9.     PopupMenu1: TPopupMenu;
  10.     BackColor2: TMenuItem;
  11.     PopupMenu2: TPopupMenu;
  12.     Left2: TMenuItem;
  13.     Center2: TMenuItem;
  14.     Right2: TMenuItem;
  15.     Label1: TLabel;
  16.     Label2: TLabel;
  17.     Label3: TLabel;
  18.     procedure Label3MouseDown(Sender: TObject; Button: TMouseButton;
  19.       Shift: TShiftState; X, Y: Integer);
  20.     procedure Label1ContextPopup(Sender: TObject; MousePos: TPoint;
  21.       var Handled: Boolean);
  22.     procedure Left2Click(Sender: TObject);
  23.     procedure Center2Click(Sender: TObject);
  24.     procedure Right2Click(Sender: TObject);
  25.     procedure BackColor2Click(Sender: TObject);
  26.     procedure Label2ContextPopup(Sender: TObject; MousePos: TPoint;
  27.       var Handled: Boolean);
  28.   end;
  29. var
  30.   FormPopup: TFormPopup;
  31. implementation
  32. {$R *.xfm}
  33. procedure TFormPopup.Label3MouseDown(Sender: TObject;
  34.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  35. var
  36.   ClientPoint, ScreenPoint: TPoint;
  37. begin
  38.   if Button = mbRight then
  39.   begin
  40.     ClientPoint.X := X;
  41.     ClientPoint.Y := Y;
  42.     ScreenPoint := Label3.ClientToScreen (ClientPoint);
  43.     PopupMenu1.Popup (ScreenPoint.X, ScreenPoint.Y)
  44.   end;
  45. end;
  46. procedure TFormPopup.Label1ContextPopup(Sender: TObject;
  47.   MousePos: TPoint; var Handled: Boolean);
  48. var
  49.   ScreenPoint: TPoint;
  50. begin
  51.   // FIX for the CLX version only
  52.   if PopupMenu2.Items.Count = 3 then
  53.   begin
  54.     // add dynamic items
  55.     PopupMenu2.Items.Add (NewLine);
  56.     PopupMenu2.Items.Add (NewItem (TimeToStr (Now),
  57.       0, False, True, nil, 0, ''));
  58.   end;
  59.   // show popup
  60.   ScreenPoint := ClientToScreen (MousePos);
  61.   PopupMenu2.Popup (ScreenPoint.X, ScreenPoint.Y);
  62.   Handled := True;
  63.   // remove dynamic items (FIXED for CLX)
  64.   if PopupMenu2.Items.Count > 3 then
  65.   begin
  66.     PopupMenu2.Items [4].Free;
  67.     PopupMenu2.Items [3].Free;
  68.   end;
  69. end;
  70. procedure TFormPopup.Left2Click(Sender: TObject);
  71. begin
  72.   Label1.Alignment := taLeftJustify;
  73.   (Sender as TMenuItem).Checked := True;
  74. end;
  75. procedure TFormPopup.Center2Click(Sender: TObject);
  76. begin
  77.   Label1.Alignment := taCenter;
  78. end;
  79. procedure TFormPopup.Right2Click(Sender: TObject);
  80. begin
  81.   Label1.Alignment := taRightJustify;
  82. end;
  83. procedure TFormPopup.BackColor2Click(Sender: TObject);
  84. begin
  85.   ColorDialog1.Color := Label3.Color;
  86.   if ColorDialog1.Execute then
  87.     Label3.Color := ColorDialog1.Color;
  88. end;
  89. procedure TFormPopup.Label2ContextPopup(Sender: TObject;
  90.   MousePos: TPoint; var Handled: Boolean);
  91. begin
  92.   ColorDialog1.Color := Label2.Color;
  93.   if ColorDialog1.Execute then
  94.     Label2.Color := ColorDialog1.Color;
  95.   Handled := True;
  96. end;
  97. end.