如何全部保存?(100分)

  • 主题发起人 主题发起人 ilovedelphi3
  • 开始时间 开始时间
I

ilovedelphi3

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个简易的文本编辑器,下面的代码是新建,
但如何在我按窗口右上角的大叉关闭按钮时候,能够提醒
用户并让打开的多个编辑区一一保存?

我做了很多办法都不行!特地来请教!谢谢您的帮助!


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
PageControl1: TPageControl;
procedure Button1Click(Sender: TObject);
private
procedure NewRichEditSetup(NewRE: TRichEdit);
{ Private declarations }
public

NewTabSheet:TTabSheet;
NewRichEdit:TRichedit;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}



procedure TForm1.Button1Click(Sender: TObject);
begin
NewTabSheet := TTabSheet.Create(PageControl1);
NewTabSheet.CAPTION := '未命名文档';
NewTabSheet.Hint := '未命名文档';
NewTabSheet.PageControl := PageControl1;
PageControl1.ActivePage := NewTabSheet;
PageControl1.ShowHint := False;
NewRichEdit := TRichEdit.Create(NewTabSheet);
NewRichEditSetup(NewRichEdit);
ActiveControl := NewRichEdit;
NewRichEdit.Modified := False;
end;

PROCEDURE Tform1.NewRichEditSetup(NewRE: TRichEdit)
//初始化RICHEDIT
BEGIN
WITH NewRE DO
BEGIN
Parent := NewTabSheet;
Align := alClient;
Modified := False;
END;
END;

end.
 
procedure TForm1.FormCloseQuery(Sender: TObject
var CanClose: Boolean);
begin
if MessageBox(Handle,'ÄãµÄÊý¾Ý»¹Ã»Óб£´æ£¬ÄãÈ·¶¨ÒªÍ˳öÂð£¿','Ìáʾ¿ò',MB_YESNO+MB_ICONINFORMATION)=IDYES then
begin
...(Ìí¼Ó±£´æÊý¾ÝµÄ´úÂë)
...
CanClose:=True;
end
else
begin
CanClose:=False;
end;
end;
 
不懂!
我急啊!
 
同意楼上的!!!!
在OnCloseQuery(窗体事件)添加,CanClose是表示是否可以关闭窗体
 
我这是检查是否有别的窗口没关闭,你要有保存,可以在每个表单设一个变量来检查.
procedure TFrmMainMenu.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
var Result:smallint;
begin
Result:=Application.MessageBox('你确定要退出系统?','退出系统提示',MB_OKCANCEL+MB_DEFBUTTON1);
Case Result of
IDOK: begin
CheckForm;
try
WriteLogout;
finally
CanClose:=True;
end;
end;
IDCANCEL:CanClose:=False;
end;
end;

procedure TFrmMainMenu.CheckForm;
var i:integer;
begin
if Screen.FormCount>1 then
begin
for i:=0 to Screen.FormCount-1 do
begin
if Screen.Forms.Caption<>Self.Caption then
begin
ShowMessage('请先关闭"'+Screen.Forms.Caption+'"表单,再退出系统!');
abort;
end;
end;
end;
end;
 
在OnCloseQuery(窗体事件)添加:
如果你的文本有变动。
那么找个全局变量写入他。比如ok:boolean;
改动时OK:=false;
反之:OK:=true;
关闭时监测这个变量就可以了。:)
 
我做过类似的一个东西,用的Richedit。
方法是记录子窗体的个数,一个Richedit占一个子窗体。新建TXT文件时,生成新的子窗体。
关闭程序的时候,判断子窗体的个数是否大于0,正如上面 zhangkan 说的那样。
如需代码,可以Email 联系:kelvin-lee@263.net
 
后退
顶部