2,496
社区成员
发帖
与我相关
我的任务
分享
function Tdm.DBGExport(var dbg: TDBGridEh): Boolean;
var
fd_file: TSaveDialog;
fn: string;
sa: boolean;
begin
Application.ProcessMessages;
result := true;
fd_file := TSaveDialog.Create(Application);
try
fd_file.DefaultExt := 'xls';
fd_file.Filter := 'Microsoft Excel 文件(*.xls)|*.XLS|文本文件(*.txt)|*.TXT|Csv文件(*.csv)|*.Csv|HTML文件(*.htm)|*.htm|RTF文件(*.rtf)|*.RTF';
if (not dbg.DataSource.DataSet.Active) or (not fd_file.Execute) then
begin
//messagebox(application.Handle,'没有任何数据,不能进行保存','警告',mb_ok);
result := False;
Exit;
end;
fn := fd_file.filename;
sa := (dbg.Selection.SelectionType = gstNon);
case fd_file.FilterIndex of
2: SaveDBGridEhToExportFile(TDBGridEhExportAsText, dbg, fn, sa);
3: SaveDBGridEhToExportFile(TDBGridEhExportAsCsv, dbg, fn, sa);
4: SaveDBGridEhToExportFile(TDBGridEhExportAsHTML, dbg, fn, sa);
5: SaveDBGridEhToExportFile(TDBGridEhExportAsRTF, dbg, fn, sa);
else
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, dbg, fn, sa);
Application.ProcessMessages;
Application.MessageBox('导出EXCEL数据成功!','提示');
end;
finally
fd_file.Free;
end;
end;
function myfun(p : Pointer):Integer;stdcall;
var
i : Integer;
begin
for i := 0 to 500000 do
begin
Form1.Canvas.Lock;
form1.Canvas.TextOut(10,10,IntToStr(i));
form1.Canvas.Unlock;
end;
Result :=0;
end;
procedure TForm1.btn3Click(Sender: TObject);
var
id : THandle;
begin
CreateThread(nil,0,@myfun,nil,0,id);
end;
这样子在调用上面的函数时,就创建了一个线程。不会影响你主线程的操作。