trichview.com

trichview.support.examples




Example: dialog on double click


Return to index


Author

Message

Sergey Tkachenko

Posted: 01/14/2004 14:40:18


This code shows how to display dialog on double clicking pictures in

TRichViewEdit.

This code uses RichViewActions (dialog is shown by the line

rvActionsResource.rvActionItemProperties1.Execute) but it is applicable to

your own dialog.


There is only one non-trivial issue in this code. The dialog prevents editor

to receive mouse-up message. To avoid this problem, PostMessage is used.


procedure TForm3.RichViewEdit1RVMouseDown(Sender: TCustomRichView;

  Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: Integer);

var RVData: TCustomRVFormattedData;

    AX, AY, AItemNo, AOffs: Integer;

begin

  // execution only on left double click

  if not ((ssLeft in Shift) and (ssDouble in Shift)) then

    exit;

  // converting client coords --> document coords

  AX := X+RichViewEdit1.HScrollPos;

  AY := Y+RichViewEdit1.VScrollPos*RichViewEdit1.VSmallStep;

  // if clicking on picture ....

  if RichViewEdit1.GetItemAt(AX, AY, RVData, AItemNo, AOffs, True) and

     ((RVData.GetItemStyle(AItemNo)=rvsPicture) or

      (RVData.GetItemStyle(AItemNo)=rvsHotPicture)) then begin

    // showing dialog

    rvActionsResource.rvActionItemProperties1.Execute;

    // dialog "eats" mouse-up message. stimulating it

    PostMessage(TCustomRichViewEdit(Sender).TopLevelEditor.Handle,

      WM_LBUTTONUP, 0, MakeLong(X,Y));

  end;

end;





Powered by ABC Amber Outlook Express Converter