5,939
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, AdvObj, BaseGrid, AdvGrid;
const
WM_UPDATEDATA = WM_USER + 100;//自定义的消息,利用此消息来实现对GUI的更
type
TForm1 = class(TForm)
StartThreads: TButton;
advstrngrd1: TAdvStringGrid;
StopThreads: TButton;
//GUI更新的消息处理函数声明
procedure WMUpdateData(var msg : TMessage);message WM_UPDATEDATA;
procedure StartThreadsClick(Sender: TObject);
procedure StopThreadsClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
Unit2;
{$R *.dfm}
//消息函数定义
procedure TForm1.WMUpdateData(var msg : TMessage);
begin
Self.advstrngrd1.Cells[msg.WParam,msg.LParam]:=neirong;
Sleep(0);
end;
procedure TForm1.StartThreadsClick(Sender: TObject);
begin
qidongxc();
end;
procedure TForm1.StopThreadsClick(Sender: TObject);
begin
zhongzhixc();
end;
end.
unit Unit2;
interface
uses
Classes,Messages,Windows,SysUtils,Dialogs;//添加的使用文件
var
neirong:string;
hThread:THandle;
xianchengID:DWORD;
procedure qidongxc();
function MyThreadFun(p: Pointer): Integer; stdcall;
procedure zhuchengxu();
procedure zhongzhixc();
implementation
uses Unit1;
procedure qidongxc();
begin
hThread := CreateThread(nil, 0, @MyThreadFun, nil, 0, xianchengID);
end;
procedure zhongzhixc();
begin
TerminateThread(hThread,0);
end;
function MyThreadFun(p: Pointer): Integer; stdcall;
begin
zhuchengxu();
Result := 0;
end;
procedure zhuchengxu();
label kaishi;
var
i,j,k,t:Integer;
begin
kaishi:;
try
for j := 1 to 8 do
begin
for i:=1 to 18 do
begin
neirong:='行'+IntToStr(i)+',列'+IntToStr(j);
SendMessage(Form1.Handle,WM_UPDATEDATA,j,i);
Sleep(0);
end;
end;
Sleep(0);
for k := 1 to 8 do
begin
for t:=1 to 18 do
begin
neirong:='';
SendMessage(Form1.Handle,WM_UPDATEDATA,k,t);
Sleep(0);
end;
end;
except
//ShowMessage('循环出错');
end ;
goto kaishi;
end;
end.

能否说下您的TMS版本?我下载一个试试
改了还是不行。。。。procedure zhuchengxu();
label
kaishi;
var
i, j, k, t: Integer;
wp, lp, wp1, lp1: LongInt;
ij,ii: Integer;
begin
ij := Form1.advstrngrd1.ColCount - 1;
ii := Form1.advstrngrd1.RowCount - 1;
while True do
begin
try
for j := 1 to ij do
begin
for i := 1 to ii do
begin
wp := MakeLong(j, i);
neirong := '行' + IntToStr(i) + ',列' + IntToStr(j);
lp := Integer(neirong);
SendMessage(Form1.Handle, WM_UPDATEDATA, wp, lp);
Sleep(0);
end;
end;
Sleep(0);
for k := 1 to ij do
begin
for t := 1 to ii do
begin
wp1 := MakeLong(k, t);
neirong := '';
lp1 := Integer(neirong);
sendMessage(Form1.Handle, WM_UPDATEDATA, wp1, lp1);
Sleep(0);
end;
end;
except
on E: exception do
begin
showmessage(e.message); {e.message返回异常字符串}
ShowMessage('循环出错');
end;
end;
end;
end;
这样改了试试
,莫非是人品问题。。。