FastReport_2022_VCL/Source/frxSearchForm.pas
2024-01-01 16:13:08 +01:00

194 lines
4.5 KiB
ObjectPascal

unit frxSearchForm;
{$I frx.inc}
interface
uses
{$IFDEF FPC}
LCLIntf, LCLType, LMessages,
{$ENDIF}
{$IFNDEF FPC}
Windows,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, frxBaseForm, frxRes;
type
{ TfrxSearchForm }
{$IFNDEF FPC}
TTView = class(TTreeView)
procedure WM_MouseWheel(var Msg: TWMMouseWheel); message WM_MouseWheel; //TWMMouseWheel
end;
{$ENDIF}
TfrxSearchForm = class(TfrxBaseForm)
pnlSearch: TPanel;
edtFind: TEdit;
lblFind: TLabel;
btnFind: TButton;
gbSearch: TGroupBox;
chkBeg: TCheckBox;
chkCase: TCheckBox;
chkFindAll: TCheckBox;
{$IFDEF FPC}
procedure chkFindAllChange(Sender: TObject);
{$ELSE}
procedure chkFindAllClick(Sender: TObject);
{$ENDIF}
procedure edtFindKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
trvFind: {$IFNDEF FPC}TTView{$ELSE}TTreeView{$ENDIF};
destructor Destroy; override;
procedure UpdateResouces; override;
procedure CleartrvFind();
end;
//var
// frxSearchForm: TfrxSearchForm;
const
EventScrollFind = High(SmallInt);
implementation
{$IFDEF FPC}
{$R *.lfm}
{$ELSE}
{$R *.dfm}
{$ENDIF}
uses frxPreview;
{$IFNDEF FPC}
procedure TTView.WM_MouseWheel(var Msg: TWMMouseWheel);
begin
Msg.XPos := EventScrollFind;
Msg.YPos := EventScrollFind;
Inherited;
end;
{$ENDIF}
{$IFDEF FPC}
procedure TfrxSearchForm.chkFindAllChange(Sender: TObject);
{$ELSE}
procedure TfrxSearchForm.chkFindAllClick(Sender: TObject);
{$ENDIF}
begin
//CleartrvFind();
trvFind.Visible := chkFindAll.Checked;
end;
procedure TfrxSearchForm.UpdateResouces;
begin
inherited;
lblFind.Caption := frxGet(301);
chkCase.Caption := frxGet(305);
btnFind.Caption := frxGet(300);
chkBeg.Caption := frxGet(304);
gbSearch.Caption := frxGet(302);
chkFindAll.Caption := frxGet(306);
end;
{procedure TfrxSearchForm.edtFindEnter(Sender: TObject);
begin
if Self.Parent.Parent is TfrxPreviewForm then
begin
CopyShortCut := TfrxPreviewForm(Self.Parent.Parent).CopyCmd.ShortCut;
TfrxPreviewForm(Self.Parent.Parent).CopyCmd.ShortCut := 0;
PasteShortCut := TfrxPreviewForm(Self.Parent.Parent).PasteCmd.ShortCut;
TfrxPreviewForm(Self.Parent.Parent).PasteCmd.ShortCut := 0;
end;
end;
procedure TfrxSearchForm.edtFindExit(Sender: TObject);
begin
if Self.Parent.Parent is TfrxPreviewForm then
begin
TfrxPreviewForm(Self.Parent.Parent).CopyCmd.ShortCut := CopyShortCut;
TfrxPreviewForm(Self.Parent.Parent).PasteCmd.ShortCut := PasteShortCut;
end;
end; }
procedure TfrxSearchForm.edtFindKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then btnFind.OnClick(nil);
end;
procedure TfrxSearchForm.FormCreate(Sender: TObject);
begin
trvFind := {$IFNDEF FPC}TTView.Create(nil){$ELSE}TTreeView.Create(nil){$ENDIF};
with trvFind do
begin
Parent := Self;
Left := 0;
Top := pnlSearch.Height;
Width := pnlSearch.Width;
Height := 231;
Align := alClient;
AutoExpand := True;
Indent := 19;
TabOrder := 1;
Visible := False;
end;
end;
destructor TfrxSearchForm.Destroy;
begin
FreeAndNil(trvFind);
inherited;
end;
procedure TfrxSearchForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ssCtrl in Shift then
begin
if Self.Parent.Parent is TfrxPreviewForm then
begin
TfrxPreviewForm(Self.Parent.Parent).CopyCmd.ShortCut := 0;
TfrxPreviewForm(Self.Parent.Parent).PasteCmd.ShortCut := 0;
end;
if Key = Ord('F') then
begin
if Self.Parent.Parent is TfrxPreviewForm then
TfrxPreviewForm(Self.Parent.Parent).FindB.Down := False;
TfrxPreview(Self.Parent).FindFmVisible := False;
Hide;
TfrxPreview(Self.Parent).SetFocus;
end;
end;
end;
procedure TfrxSearchForm.FormShow(Sender: TObject);
begin
edtFind.SetFocus;
edtFind.SelectAll;
end;
procedure TfrxSearchForm.CleartrvFind();
var
i: Integer;
data: PfrxTrvData;
begin
for i := 0 to trvFind.Items.Count - 1 do
begin
data := trvFind.Items[i].Data;
if data <> nil then
Dispose(data);
end;
trvFind.Items.Clear();
end;
end.