mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-21 20:05:56 +02:00
129 lines
3.1 KiB
ObjectPascal
129 lines
3.1 KiB
ObjectPascal
unit UfrmMain;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, SynEdit, SynHighlighterPas, Forms,
|
|
Controls, Graphics, Dialogs, ComCtrls, ActnList, StdActns, LCLType,
|
|
uFrameSearch;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
actSearch :TAction;
|
|
ActionList1 :TActionList;
|
|
actExit :TFileExit;
|
|
ActLoad :TFileOpen;
|
|
actSaveAs :TFileSaveAs;
|
|
frSearch: TFrame1;
|
|
ImageList1 :TImageList;
|
|
StatusBar1 :TStatusBar;
|
|
SynEdit1 :TSynEdit;
|
|
ToolBar1 :TToolBar;
|
|
ToolButton1 :TToolButton;
|
|
ToolButton2 :TToolButton;
|
|
ToolButton3 :TToolButton;
|
|
ToolButton4 :TToolButton;
|
|
ToolButton5 :TToolButton;
|
|
ToolButton6 :TToolButton;
|
|
procedure ActLoadAccept(Sender :TObject);
|
|
procedure actSaveAsAccept(Sender :TObject);
|
|
procedure actSearchExecute(Sender :TObject);
|
|
procedure actSearchUpdate(Sender :TObject);
|
|
procedure SpeedButton4Click(Sender :TObject);
|
|
procedure SynEdit1ReplaceText(Sender: TObject; const ASearch,
|
|
AReplace: string; Line, Column: integer;
|
|
var ReplaceAction: TSynReplaceAction);
|
|
private
|
|
procedure CloseFrame(Sender:TObject);
|
|
procedure AfterSearch(Sender:TObject; cnt: Integer);
|
|
public
|
|
constructor Create(aOwner :TComponent); override;
|
|
end;
|
|
|
|
var
|
|
Form1 : TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
const
|
|
cDefaultFiles = 'Known Files (*.txt,*.pas,*.dpr,*.dpk,*.inc,*.C,*.cpp)|*.txt,*.pas;*.dpr;*.dpk;*.inc;*.C;*.cpp';
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.actSearchExecute(Sender :TObject);
|
|
begin
|
|
frSearch.Visible := True;
|
|
frSearch.EditSearch.SetFocus;
|
|
end;
|
|
|
|
procedure TForm1.actSearchUpdate(Sender :TObject);
|
|
begin
|
|
actSearch.Enabled := SynEdit1.Lines.Count > 0;
|
|
end;
|
|
|
|
procedure TForm1.SpeedButton4Click(Sender :TObject);
|
|
begin
|
|
frSearch.Visible := False;
|
|
end;
|
|
|
|
procedure TForm1.SynEdit1ReplaceText(Sender: TObject; const ASearch,
|
|
AReplace: string; Line, Column: integer; var ReplaceAction: TSynReplaceAction
|
|
);
|
|
var
|
|
a: TModalResult;
|
|
p: TPoint;
|
|
begin
|
|
p := SynEdit1.RowColumnToPixels(Point(Column,Line));
|
|
a:=MessageDlgPos('Replace "'+ASearch+'" with "'+AReplace+'"?',mtconfirmation,
|
|
[mbYes,mbYesToAll,mbNo,mbCancel],0,Left+50+p.x,Top+100+p.y);
|
|
|
|
case a of
|
|
mrYes:ReplaceAction:=raReplace;
|
|
mrNo :ReplaceAction:=raSkip;
|
|
mrAll,mrYesToAll:ReplaceAction:=raReplaceAll;
|
|
else
|
|
ReplaceAction:=raCancel;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.CloseFrame(Sender :TObject);
|
|
begin
|
|
frSearch.Hide;
|
|
SynEdit1.SetFocus;
|
|
end;
|
|
|
|
procedure TForm1.AfterSearch(Sender: TObject; cnt: Integer);
|
|
begin
|
|
StatusBar1.Panels[0].Text := 'Last search : "'+frSearch.EditSearch.Text+'" matched: '+inttostr(cnt);
|
|
end;
|
|
|
|
procedure TForm1.ActLoadAccept(Sender :TObject);
|
|
begin
|
|
SynEdit1.Lines.LoadFromFile(ActLoad.Dialog.FileName);
|
|
end;
|
|
|
|
procedure TForm1.actSaveAsAccept(Sender :TObject);
|
|
begin
|
|
SynEdit1.Lines.SaveToFile(actSaveAs.Dialog.FileName);
|
|
end;
|
|
|
|
constructor TForm1.Create(aOwner :TComponent);
|
|
begin
|
|
inherited Create(aOwner);
|
|
ActLoad.Dialog.Filter := cDefaultFiles;
|
|
actSaveAs.Dialog.Filter := cDefaultFiles;
|
|
frSearch.Editor := SynEdit1;
|
|
frSearch.OnCloseFrame := @CloseFrame;
|
|
frSearch.OnAfterSearch := @AfterSearch;
|
|
end;
|
|
|
|
end.
|
|
|
|
|
|
|