www.pudn.com > DelphiX_for7.zip > DXGUIDEdit.pas


unit DXGUIDEdit; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls, ActiveX, ComObj; 
 
type 
  TDelphiXGUIDEditForm = class(TForm) 
    Edit: TEdit; 
    OKButton: TButton; 
    CancelButton: TButton; 
    NewButton: TButton; 
    procedure NewButtonClick(Sender: TObject); 
    procedure EditChange(Sender: TObject); 
    procedure CancelButtonClick(Sender: TObject); 
    procedure OKButtonClick(Sender: TObject); 
    procedure EditExit(Sender: TObject); 
    procedure FormShow(Sender: TObject); 
    procedure EditEnter(Sender: TObject); 
  private 
    FChanged: Boolean; 
    FOldGUID: string; 
  public 
    GUID: string; 
  end; 
 
var 
  DelphiXGUIDEditForm: TDelphiXGUIDEditForm; 
 
implementation 
 
uses DXConsts; 
 
{$R *.DFM} 
 
const 
  SIsGUIDnewlyMade = 'Is GUID newly made?'; 
 
procedure TDelphiXGUIDEditForm.OKButtonClick(Sender: TObject); 
begin 
  if FChanged then 
  begin 
    GUID := GUIDToString(StringToGUID(Edit.Text)); 
    Tag := 1; 
  end; 
  Close; 
end; 
 
procedure TDelphiXGUIDEditForm.CancelButtonClick(Sender: TObject); 
begin 
  Close; 
end; 
 
procedure TDelphiXGUIDEditForm.NewButtonClick(Sender: TObject); 
var 
  GUID: TGUID; 
begin 
  if Application.MessageBox(PChar(SIsGUIDnewlyMade), 'GUID', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2)<>IDYES then Exit; 
 
  if CoCreateGuid(GUID)<>0 then 
    raise Exception.CreateFmt(SCannotMade, ['GUID']); 
  Edit.Text := GUIDToString(GUID); 
  FChanged := True; 
end; 
 
procedure TDelphiXGUIDEditForm.EditChange(Sender: TObject); 
begin 
  FChanged := True; 
end; 
 
procedure TDelphiXGUIDEditForm.EditExit(Sender: TObject); 
begin 
  try 
    Edit.Text := GUIDToString(StringToGUID(Edit.Text)); 
  except 
    Edit.Text := FOldGUID; 
    raise; 
  end; 
end; 
 
procedure TDelphiXGUIDEditForm.FormShow(Sender: TObject); 
begin 
  Edit.Text := GUIDToString(StringToGUID(GUID)); 
end; 
 
procedure TDelphiXGUIDEditForm.EditEnter(Sender: TObject); 
begin 
  FOldGUID := Edit.Text; 
end; 
 
end.