Estimado Eduar23, creo entender que lo que requiere, le propongo este código...
Este contiene 1 Checkbox, 2 TEdit, 2 TButtons y 1 TMemo.
Principalmente lo que se hace es manipular el valor de ModalResult del botton btnSave, cambiando su valor a
mrOk o
mrNone. El botton btnCancel está asignado como
mrCancel.
Al desplegar el formulario con
ShowModal, este espera un valor de retorno (mrOk, mrCancel,...) si el valor de retorno es mrNone, el formulario no se cierra.
Para ello se hace uso del control chkDigitMode que al ser verdadero, asigna
mrNone al botón btnSave, quedando en un ciclo hasta presionar el botón btnCancel o la tecla ESC.
Código Delphi
[-]unit Unit2;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
btnSave: TButton;
btnCancel: TButton;
chkDigitMode: TCheckBox;
mmData: TMemo;
procedure btnCancelClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
private
public
procedure InsertData(v1,v2:String);
procedure ClearEdits();
class procedure Execute();
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.btnSaveClick(Sender: TObject);
begin
InsertData(Edit1.Text,Edit2.Text);
ClearEdits();
Edit1.SetFocus;
if chkDigitMode.Checked then
ModalResult:=mrNone
else
ModalResult:=mrOk;
end;
procedure TForm2.btnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TForm2.InsertData(v1,v2:String);
begin
mmData.Lines.Add(format('Value 1:%s, Value 2:%s',[v1,v2]));
end;
procedure TForm2.ClearEdits;
begin
Edit1.Text:=Emptystr;
Edit2.Text:=Emptystr;
end;
class procedure TForm2.Execute;
begin
with TForm2.Create(nil) do
begin
btnSave.ModalResult :=mrOk;
btnCancel.ModalResult:=mrCancel;
ClearEdits();
ShowModal;
free;
end;
end;
end.
Código Delphi
[-]
unit Unit1;
interface
...
uses Unit2;
begin
TForm1.Execute();
end
Bueno espero le ayuda o de ideas para solucionar su problema...Saludos cordiales