Exce表格网

delphi创建好excel(delphi创建线程的三种方法)

来源:www.0djx.com  时间:2023-02-27 12:20   点击:235  编辑:表格网  手机版

1. delphi创建线程的三种方法

Spcomm串口通信控件的基本属性、方法和事件说明如下:

CommName属性:计算机串口端口号的名字,COM1、COM2……等,在打开串口前,必须填写好此值。

Parity属性:校验位 None、Odd、Even、Mark、Space等。

BaudRate:设定支持串口通信用的波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。

ByteSize属性:表示一个字节中,使用多少个数据位收发数据,根据具体情况设定5、6、7、8等。

StopBits属性:表示一个字节中,使用停止位的位数,根据具体情况设定1、1.5、2等。

SendDataEmpty属性:布尔属性,为True时表示发送缓存为空,或者发送队列里没有信息;为False时表示表示发送缓存不为空,或者发送队列里有信息。

StartComm方法:用来打开通信串口,开始通信。如果失败,则会导致串行口错误。错误类型大致分为串行口己处于打开状态,所以不能打开串行口,不能创建读写进程,不能建立串行口缓冲区等。

StopComm方法:用来停止通信串行口的所有进程,关闭串口。

WriteCommData(pDataToWrite:PChar;dwSizeofDataToWrite:Word)方法是带有布尔型返回值 的函数,其中参量pDataToWrite是要写入串行口的字符串,dwSizeofDataToWrite是要写入的字符串的长度。该函数通过一个写线程向串行口输出缓冲区发送数据。发送操作将在后台默认执行。如果写线程 PostMessage成功,则返回值是True,若写线程失败,返回值是False。

OnReceiveData(Buffer:Pointer;BufferLength:Word),其中Buffer是指向输入缓冲区的指针。BufferLength是从缓冲区收到的数据长度。当输入缓冲区收到数据时,该事件被触发。当输入缓存有数据时将触发该事件,对从串口收到的数据进行处理。

2. delphi 类的创建

1、打开Delphi2、新建一个Application,默认打开时就是一个新的Application。

3、在当前显示的Form上拖放你想要使用的控件。

4、针对对应控件的相应事件编写代码。

5、编译成exe6、执行对应exe

3. delphi多线程实例

操作数据库之前对表进行lock,操作完后进行解锁。

也可以申请一个互斥变量,每次要操作数据之前申请,结束后释放 前者用的是数据库自己提供的功能,后者是自己控制操作别同时发生。建议用前者。

4. delphi创建线程调用函数

建议可以从以下两本书入手:

1、《DelphiXX从入门到精通》,【美】MarcoCantu著。MarcoCantu作为delphi类书籍作者可说是人人皆知,Delphi从入门到精通系列更是绝对的经典。此系列书全面地讲解了Delphi编程中的各个方面,如组件开发、多线程、图象处理、报表打印、数据库、Internet应用等等,是初学者的不二之选。

2、语法书籍:由于从delphi7到后面的XE语法方面,有些新特性变化。这方面其实最好的教材是随着delphi安装后的帮助,可惜是英文的。推荐可以看翻译过来的版本,比如,由叶叶翻译的《DelphiXE4语言指南》。

5. delphi create

Shell_NotifyIcon这个API可以实现系统托盘图标功能,然后你在自定义一下最小化的消息就可以了,图标功能有个例子

托盘就是在任务栏右下角的小图标。创建、更改、删除只需要一个Windows API就能实现。这个函数叫做Shell_NotifyIcon()。这个函数和其他处理Windows 外壳的函数都包含在ShellAPI单元中。本例程在窗口创建时在任务栏的右下角创建一个托盘图标。图标由两个ICON交替出现。当窗口最小化时任务栏中只有托盘图标,当左键单击托盘图标窗口恢复。图标停止交替。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,SHELLAPI,

Menus, Dialogs,

ExtCtrls, ImgList;

const

MI_ICONEVENT = WM_USER + 1;

ICON_ID = 10;

type

TForm1 = class(TForm)

Timer1: TTimer;

PopupMenu2: TPopupMenu;

N1: TMenuItem;

ImageList1: TImageList;

procedure N1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Timer1Timer(Sender: TObject);

private

procedure modifyicon;

procedure IconOnClick(var message: TMessage); MESSAGE MI_ICONEVENT;

procedure tranmessage(var m:TWMSYSCOMMAND); message WM_SYSCOMMAND;

public

{ Public declarations }

end;

var

Form1: TForm1;

ydic:array [0..1] of ticon;

icint:integer;

xsyc:BOOLEAN;

implementation

{$R *.DFM}

procedure TForm1.N1Click(Sender: TObject);

begin

APPLICATION.Terminate ;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

IconData: TNotifyIconData;

begin

xsyc:=true;

ydic[0]:=ticon.Create;

ydic[1]:=ticon.Create;

ydic[0].Handle :=loadicon(hinstance,'icon0');//资源文件(ICONS.RES)

ydic[1].Handle :=loadicon(hinstance,'icon1');

IconData.cbSize:=SizeOf(IconData );

IconData.Wnd:= form1.Handle;

IconData.uID:= ICON_ID;

IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

IconData.uCallBackMessage := MI_ICONEVENT;

IconData.hIcon :=ydic[0].Handle;

IconData.szTip := '我笑、我笑、笑笑笑';

icint:=0;

Shell_NotifyIcon( NIM_ADD, @IconData );

ShowWindow(Application.Handle, SW_HIDE );

end;

procedure TForm1.FormDestroy(Sender: TObject);

var

IconData: TNotifyIconData;

begin //卸载图标

IconData.cbSize := SizeOf( IconData );

IconData.Wnd :=form1.Handle;

IconData.uID := ICON_ID;

Shell_NotifyIcon( NIM_DELETE, @IconData );

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

var

IconData: TNotifyIconData;

begin //卸载图标

IconData.cbSize := SizeOf( IconData );

IconData.Wnd :=form1.Handle;

IconData.uID := ICON_ID;

Shell_NotifyIcon( NIM_DELETE, @IconData );

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

modifyicon

end;

procedure TForm1.modifyicon;

var

IconData: TNotifyIconData;

begin

IconData.cbSize := SizeOf( IconData );

IconData.Wnd :=form1.Handle;

IconData.uID := ICON_ID;

icint:=(icint+1) mod 2;

IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

IconData.uCallBackMessage := MI_ICONEVENT;

icondata.hIcon:= ydic[icint].Handle;

IconData.szTip := '我笑、我笑、笑笑笑';

shell_notifyicon(nim_modify,@icondata);

end;

procedure TForm1.IconOnClick(var message: TMessage);

var

a:tpoint;

begin //单击事件

if (message.lParam = WM_RBUTTONDOWN) then

begin

getcursorpos(a);

PopupMenu2.Popup(a.x,a.y);

end

else if (message.lParam = WM_LBUTTONDOWN) then

begin

timer1.Enabled:=FALSE;

if xsyc then

sendmessage(form1.Handle,wm_syscommand,sc_minimize,0)

else

begin

ShowWindow(Application.Handle,SW_RESTORE);//SW_maximize

setforegroundwindow(form1.handle);

xsyc:=true;

end;

end;

end;

procedure TForm1.tranmessage(var m: TWMSYSCOMMAND);

begin

if m.CmdType=SC_MINIMIZE then

begin

timer1.Enabled :=true;

sendmessage(Application.Handle,WM_SYSCOMMAND,SC_MINimize,0);

ShowWindow(Application.Handle, SW_HIDE );

xsyc:=false;

end

else

inherited;

end;

end.

最小化消息重载可以这样

procedure pgame(var msg:twmsyscommand);message wm_syscommand;

procedure Tmainfrm.pgame(var msg: twmsyscommand); //窗口最小化

begin

if msg.CmdType=SC_MINIMIZE then

begin

//处理代码

end;

inherited;

end;

6. delphi createprocess

var i:Integer; Lab:array of TLabel;begin if length(Lab)> 0 then //判断是否已经创建,如果有就删除 begin for i:=0 to Length(Lab)-1 do begin FreeAndNil(Lab[i])

; end; end; SetLength(Lab,ADOQuery1.FieldCount)

; for i :=0 to ADOQuery1.FieldCount-1 do begin Lab[i]:=TLabel.Create(Self); Lab[i].AutoSize:=True; Lab[i].Parent:=Panel1; Lab[i].Top:=Trunc((i div 8)*70)

; //每行8个,每个间隔70 Lab[i].Left:=Trunc((i mod 8)*70)

; Lab[i].Caption:=ADOQuery1.Fields.Fields[i].FieldName; Lab[i].Color:=clRed; end;我已经加了注释。

7. delphi怎么生成单独程序

IDE的全称是Integrated Development Environment 。

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。

8. delphi 线程传递参数

使用CreateThread的话,使用记录类型就可以传多个参数了.建议楼主在不了解多线程使用方法前使用TThread类操作.!其实很简单的.

9. delphi 创建线程

大量的连接非常注重内存泄漏等问题的,并需要修改源码的Indy10支持IOCP和纤程,不过要安装SuperCore包(默认没有),并设置Server的IOHandle,否则Indy10的效能在Windows和Indy9一样减少线程的stack空间可以增加线程数量,或者在xp+(只是xp+,不包括win2k)的boot.ini中加上/3GB选项也可以增加进程可用的地址空间。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片