Componentes.Terceros.jvcl/official/3.32/examples/JvFindReplace/FindReplaceMainFormU.pas

235 lines
6.6 KiB
ObjectPascal

{******************************************************************
JEDI-VCL Demo
Copyright (C) 2002 Project JEDI
Original author:
Contributor(s):
You may retrieve the latest version of this file at the JEDI-JVCL
home page, located at http://jvcl.sourceforge.net
The contents of this file are used with permission, subject to
the Mozilla Public License Version 1.1 (the "License"); you may
not use this file except in compliance with the License. You may
obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1_1Final.html
Software distributed under the License is distributed on an
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
******************************************************************}
unit FindReplaceMainFormU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, JvFindReplace, JvComponent, ExtCtrls, JvComponentBase;
type
TFindReplaceMainForm = class(TForm)
FindReplace1: TJvFindReplace;
Memo1: TMemo;
MainMenu1: TMainMenu;
Search1: TMenuItem;
Find1: TMenuItem;
Replace1: TMenuItem;
FindAgain1: TMenuItem;
Serachown1: TMenuItem;
Find2: TMenuItem;
Replace2: TMenuItem;
FindAgain2: TMenuItem;
Options1: TMenuItem;
Rememberlastsearch1: TMenuItem;
Panel1: TPanel;
Label1: TLabel;
procedure Find1Click(Sender: TObject);
procedure Replace1Click(Sender: TObject);
procedure FindAgain1Click(Sender: TObject);
procedure FindReplace1NotFound(Sender: TObject);
procedure FindReplace1Find(Sender: TObject);
procedure FindReplace1Replace(Sender: TObject);
procedure Find2Click(Sender: TObject);
procedure Replace2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FindAgain2Click(Sender: TObject);
procedure FindReplace1Show(Sender: TObject);
procedure FindReplace1Close(Sender: TObject);
procedure Rememberlastsearch1Click(Sender: TObject);
private
{ Private declarations }
FOptions:TFindOptions;
FCount:integer;
end;
var
FindReplaceMainForm: TFindReplaceMainForm;
implementation
uses
JvJVCLUtils;
{$R *.DFM}
function DualInputQuery(const ACaption, Prompt1, Prompt2:string; var AValue1, AValue2:string):boolean;
var
AForm:TForm;
ALabel1, ALabel2:TLabel;
AEdit1, AEdit2:TEdit;
ASize, i:integer;
begin
Result := false;
AForm := CreateMessageDialog(Prompt1,mtCustom,[mbOK ,mbCancel]);
ASize := 0;
if AForm <> nil then
try
AForm.Caption := ACaption;
ALabel1 := AForm.FindComponent('Message') as TLabel;
for i := 0 to AForm.ControlCount - 1 do
if AForm.Controls[i] is TButton then
TButton(AForm.Controls[i]).Anchors := [akRight, akBottom];
if ALabel1 <> nil then
begin
AEdit1 := TEdit.Create(AForm);
AEdit1.Left := ALabel1.Left;
AEdit1.Width := AForm.ClientWidth - AEdit1.Left * 2;
AEdit1.Top := ALabel1.Top + ALabel1.Height + 2;
AEdit1.Parent := AForm;
AEdit1.Anchors := [akLeft, akTop, akRight];
AEdit1.Text := AValue1;
ALabel1.Caption := Prompt1;
ALabel1.FocusControl := AEdit1;
Inc(ASize, AEdit1.Height + 2);
ALabel2 := TLabel.Create(AForm);
ALabel2.Left := ALabel1.Left;
ALabel2.Top := AEdit1.Top + AEdit1.Height + 7;
ALabel2.Caption := Prompt2;
ALabel2.Parent := AForm;
Inc(ASize, ALabel2.Height + 7);
AEdit2 := TEdit.Create(AForm);
AEdit2.Left := ALabel1.Left;
AEdit2.Width := AForm.ClientWidth - AEdit2.Left * 2;
AEdit2.Top := ALabel2.Top + ALabel2.Height + 2;
AEdit2.Parent := AForm;
AEdit2.Anchors := [akLeft, akTop, akRight];
AEdit2.Text := AValue1;
ALabel2.FocusControl := AEdit2;
Inc(ASize, AEdit2.Height + 8);
AForm.ClientHeight := AForm.ClientHeight + ASize;
AForm.ClientWidth := 320;
AForm.ActiveControl := AEdit1;
Result := AForm.ShowModal = mrOK;
if Result then
begin
AValue1 := AEdit1.Text;
AValue2 := AEdit2.Text;
end;
end;
finally
AForm.Free;
end;
end;
procedure TFindReplaceMainForm.Find1Click(Sender: TObject);
begin
FindReplace1.ShowDialogs := True;
FindReplace1.Find;
end;
procedure TFindReplaceMainForm.Replace1Click(Sender: TObject);
begin
FindReplace1.ShowDialogs := True;
FindReplace1.Replace;
end;
procedure TFindReplaceMainForm.FindAgain1Click(Sender: TObject);
begin
{ reset to saved options }
FindReplace1.Options := FOptions;
FindReplace1.FindAgain;
end;
procedure TFindReplaceMainForm.FindReplace1NotFound(Sender: TObject);
begin
if not FindReplace1.ShowDialogs then
ShowMessage('Text not found!');
Caption := 'Not found! ' + IntToStr(FCount);
Inc(FCount);
end;
procedure TFindReplaceMainForm.FindReplace1Find(Sender: TObject);
begin
FOptions := FindReplace1.Options;
Caption := 'Find next clicked! ' + IntToStr(FCount);
Inc(FCount);
end;
procedure TFindReplaceMainForm.FindReplace1Replace(Sender: TObject);
begin
Caption := 'Replace clicked! ' + IntToStr(FCount);
Inc(FCount);
end;
procedure TFindReplaceMainForm.Find2Click(Sender: TObject);
var S:string;
begin
S := FindReplace1.FindText;
if InputQuery('Find','Search for:',S) then
begin
FindReplace1.ShowDialogs := False;
FindReplace1.FindText := S;
FindReplace1.Find;
end;
end;
procedure TFindReplaceMainForm.Replace2Click(Sender: TObject);
var S,R:string;
begin
S := FindReplace1.FindText;
R := FindReplace1.ReplaceText;
if DualInputQuery('Find and Replace','Find:','Replace:',S, R) and (S <> '') then
begin
FindReplace1.ShowDialogs := False;
FindReplace1.FindText := S;
FindReplace1.ReplaceText := R;
FindReplace1.Replace;
end;
end;
procedure TFindReplaceMainForm.FormCreate(Sender: TObject);
begin
Fcount := 0;
end;
procedure TFindReplaceMainForm.FindAgain2Click(Sender: TObject);
begin
FindReplace1.FindAgain;
end;
procedure TFindReplaceMainForm.FindReplace1Show(Sender: TObject);
begin
Caption := 'Showing';
end;
procedure TFindReplaceMainForm.FindReplace1Close(Sender: TObject);
begin
Caption := 'Closing';
end;
procedure TFindReplaceMainForm.Rememberlastsearch1Click(Sender: TObject);
begin
Rememberlastsearch1.Checked := not Rememberlastsearch1.Checked;
// (obones): Look at this.
// FindReplace1.Keeptext := Rememberlastsearch1.Checked;
end;
end.