Componentes.Terceros.TRichView/12.0.4/Demos/DelphiUnicode/Assorted/Autocomplete/MainFrm.pas
david fddb8c1dff Importación inicial con versión 12.0.4
NO HAY CÓDIGO FUENTE

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.TRichView@1 b34d35ef-135b-4489-b9d1-9916e9c25524
2010-01-11 12:26:42 +00:00

94 lines
2.6 KiB
ObjectPascal

{*******************************************************}
{ }
{ RichView }
{ AutoComplete demo }
{ }
{ Copyright (c) Sergey Tkachenko }
{ svt@trichview.com }
{ http://www.trichview.com }
{ }
{*******************************************************}
unit MainFrm;
interface
{$I RV_Defs.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, Menus, RVStyle, RVScroll, RichView, RVEdit, RVGetTextW;
type
TfrmMain = class(TForm)
RichViewEdit1: TRichViewEdit;
RVStyle1: TRVStyle;
PopupMenu1: TPopupMenu;
procedure RichViewEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
procedure AddPopupMenuItem(s: String);
procedure AutoCompletePopupMenuClick(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
{$IFDEF RICHVIEWDEF6}
PopupMenu1.AutoHotkeys := maManual;
{$ENDIF}
RichViewEdit1.Clear;
RichViewEdit1.AddNL(
'Type a word and press Ctrl+Space for suggestions', 0,0);
RichViewEdit1.Format;
end;
procedure TfrmMain.AddPopupMenuItem(s: String);
var mi: TMenuItem;
begin
mi := TMenuItem.Create(PopupMenu1);
mi.Caption := s;
mi.OnClick := AutoCompletePopupMenuClick;
PopupMenu1.Items.Add(mi);
end;
procedure TfrmMain.AutoCompletePopupMenuClick(Sender: TObject);
begin
RichViewEdit1.SelectCurrentWord;
RichViewEdit1.InsertText((Sender as TMenuItem).Caption, False);
end;
procedure TfrmMain.RichViewEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var s: String;
pt: TPoint;
begin
if (Key=VK_SPACE) and (ssCtrl in Shift) then begin
s := GetCurrentWord(RichViewEdit1);
if s<>'' then begin
while PopupMenu1.Items.Count>0 do
PopupMenu1.Items[0].Free;
AddPopupMenuItem('super'+s);
AddPopupMenuItem('mega'+s);
AddPopupMenuItem('ultra'+s);
AddPopupMenuItem('grand'+s);
GetCaretPos(pt);
pt := RichViewEdit1.TopLevelEditor.ClientToScreen(pt);
PopupMenu1.Popup(pt.X, pt.Y+10);
end;
Key := 0;
end;
end;
end.