git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jvcl@12 7f62d464-2af8-f54e-996c-e91b33f51cbe
235 lines
6.6 KiB
ObjectPascal
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.
|