Delphi 编程技巧常见实例问答

Delphi 编程技巧常见实例问答,第1张

delphi怎样调用外部EXE文件? uses WinProcs begin WinExec(……) end 和调用Pascal库函数没什么两样

Delphi hint的字体和色彩如何改变 Delphi中Tapplication的属性有HintColor及HintPause 可以通过设置HintColor改变应用程序中的Hint的颜色 通过设置HintPause改变触发Hint的时间 但遗憾的是 Delphi中Hint的字体不可以改变

Delphi里如何计算日期 算时间在delphi中是最容易的 如下

var ss : TDateTime

其实Tdatetime是一个双精度的浮点数 它的小数点前表示天数 如 ss := ss + 表示从ss开始向后 天 如果 ss = 它就表示 天 当然是从公元 年开始计算的!

如何用Delphi编ScreenSaver? (null) 屏幕保护程序无非是扩展名换成了 SCR的可执行程序 它接受两种命令行参数 s 运行命令参数 c 配置命令参数 Windows通过向程序发 s命令行参数来启动程序 要注意的是 程序的窗口是无边框和标题 窗口大小应与屏幕大小一样 还要注意窗口的事件的处理

Delphi 中如何改目录的名字 调用RenameFile函数 如: RenameFile( c:wang emp c:wang mp )

DELPHI显示JPEG图像文件

只要 uses中加入 JPEG就行 JPEG单元里是有一个TJPEGImage类 可定义一变量如Jpeg 用LoadFromFile调入某个JPEG文件 然后用Form的Canvas Draw(x y Jpeg)即可显示

Delphi中对Jpeg格式文件的处理…

( ) 在 Uses 中加入 JPEG 单元

( ) 定义一个全程变量 例如 var AJPEG : TJPEGImage

( ) 在 Form 的 OnCreate 事件中加入 :

Canvas Pen Color:=clBlackCanvas Pen Style:=psSolidCanvas Brush color:=clBtnFaceCanvas Brush Style:=bsSolid//此上是设置 Canvas 的一些属性 便于以后 //Clear Form and Load a new JPEG fileAjpeg:=TJpegImage Create//动态生成AjpegAjpeg LoadFromFile( D:Temp jpg ) //生成 Ajpeg 后 调入 JPEG 文件

( ) 在 Form 的 OnPain 事件中加入Canvas Rectangle( )//画一个黑框的矩形将图片围住x:= y:= Form Canvas Draw(x y Ajpeg)//以(x y)为左上角输出 JPEG 文件//实际上其作用是当图形被破坏是使图形恢复

( ) 在 Load 或 Browse 按钮的 onClick 事件中加入:

begin if OpenPictureDialog Execute then begin Ajpeg Free//释放旧AjpegAjpeg:=TJpegImage Create//产生一个新的AjpegAjpeg LoadFromFile(OpenPictureDialog Filename)//载入JPEG文件endCanvas Rectangle( )//将Form Clearx:= y:= Form Canvas Draw(x y Ajpeg)//显示新的Ajpegend

DELPHI 启动画面

lishixinzhi/Article/program/Delphi/201311/25017

转自大富翁

函数

procedure pinghost(ip:stringvar info:string)

ip:目标IP地址;

info:ping了以后产生的信息(1)或(2);

(1)成功信息

ip 发送测试的字符数 返回时间

(2)出错信息

Can not find host!

使用

uses ping

procedure TForm1.Button1Click(Sender: TObject)

var

str:string

ping:Tping

begin

ping:=Tping.create //一定要初试化哦

ping.pinghost('127.0.0.1',str)

memo1.Lines.Add(str)

ping.destroy

end

[ping.pas]

(*作者:e梦缘*)

unit ping

interface

uses

Windows, SysUtils, Classes, Controls, Winsock,

StdCtrls

type

PIPOptionInformation = ^TIPOptionInformation

TIPOptionInformation = packed record

TTL: Byte

TOS: Byte

Flags: Byte

OptionsSize: Byte

OptionsData: PChar

end

PIcmpEchoReply = ^TIcmpEchoReply

TIcmpEchoReply = packed record

Address: DWORD

Status: DWORD

RTT: DWORD

DataSize: Word

Reserved: Word

Data: Pointer

Options: TIPOptionInformation

end

TIcmpCreateFile = function: THandlestdcall

TIcmpCloseHandle = function(IcmpHandle: THandle): Booleanstdcall

TIcmpSendEcho = function(IcmpHandle:THandle

DestinationAddress: DWORD

RequestData: Pointer

RequestSize: Word

RequestOptions: PIPOptionInformation

ReplyBuffer: Pointer

ReplySize: DWord

Timeout: DWord

): DWordstdcall

Tping =class(Tobject)

private

{ Private declarations }

hICMP: THANDLE

IcmpCreateFile : TIcmpCreateFile

IcmpCloseHandle: TIcmpCloseHandle

IcmpSendEcho: TIcmpSendEcho

public

procedurepinghost(ip:stringvar info:string)

constructor create

destructor destroyoverride

{ Public declarations }

end

var

hICMPdll: HMODULE

implementation

constructor Tping.create

begin

inherited create

hICMPdll := LoadLibrary('icmp.dll')

@ICMPCreateFile := GetProcAddress(hICMPdll, 'IcmpCreateFile')

@IcmpCloseHandle := GetProcAddress(hICMPdll,'IcmpCloseHandle')

@IcmpSendEcho := GetProcAddress(hICMPdll, 'IcmpSendEcho')

hICMP := IcmpCreateFile

end

destructor Tping.destroy

begin

FreeLibrary(hIcmpDll)

inherited destroy

end

procedure Tping.pinghost(ip:stringvar info:string)

var

// IP Options for packet to send

IPOpt:TIPOptionInformation

FIPAddress:DWORD

pReqData,pRevData:PChar

// ICMP Echo reply buffer

pIPE:PIcmpEchoReply

FSize: DWORD

MyString:string

FTimeOut:DWORD

BufferSize:DWORD

begin

if ip <>'' then

begin

FIPAddress := inet_addr(PChar(ip))

FSize := 40

BufferSize := SizeOf(TICMPEchoReply) + FSize

GetMem(pRevData,FSize)

GetMem(pIPE,BufferSize)

FillChar(pIPE^, SizeOf(pIPE^), 0)

pIPE^.Data := pRevData

MyString := 'Test Net - Sos Admin'

pReqData := PChar(MyString)

FillChar(IPOpt, Sizeof(IPOpt), 0)

IPOpt.TTL := 64

FTimeOut := 4000

try

IcmpSendEcho(hICMP, FIPAddress, pReqData, Length(MyString),@IPOpt, pIPE, BufferSize, FTimeOut)

if pReqData^ = pIPE^.Options.OptionsData^ then

info:=ip+ ' ' + IntToStr(pIPE^.DataSize) + ' ' +IntToStr(pIPE^.RTT)

except

info:='Can not find host!'

FreeMem(pRevData)

FreeMem(pIPE)

Exit

end

FreeMem(pRevData)

FreeMem(pIPE)

end

end

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

如题,我有个程序首先是启动页面等主窗口载入之后就退出启动页面进入主窗口但我现在主窗口在会连接网页,此时如果用户的网速慢或网页打不开,启动页面置留的时间就很长请问怎么样可以让主窗口完全显示以后再去连接网页,

解析:

你说的或意思是不是像WORD 启动时效果

巧用Delphi制作溅射屏幕

(作者:施路)

精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。利用一点儿小小的内容,即可给程序的显示添加不少色彩。

由于工程本身创建程序的主窗口,且启动溅射屏幕必须在创建主窗口之前出现,所以工程文件必须创建自己的启动屏幕。这意味着用户必须修改源代码来创建工程文件,而这通常在DELPHI编程中是不需要的。下面的过程介绍了溅射屏幕的建立过程。

1、开始一个新的工程。将窗体命名为MainForm,同时将其Caption属性设置为SplashinDemo。把这个工程保存在一个目录中,如C:\Projects\Splashin。把MainForm的单元命名为Main,把工程文件命名为Splashin。

2、在MainForm中插入一个Button组件。将Button的Name属性改为ExitButton,而将其Caption属性改为Exit。为ExitButton的OnClick事件创建一个处理器,在过程的begin和end关键词之间插入Close;语句。

3、选取File|New Form命令,或者单击New Form速度按钮。添加一个新的窗体。

4、将这个窗体的Name属性改变为SplashForm,删除其Caption属性。此外,将其BorderStyle属性改变为bsnone,同时将BorderIcons下的三个子值设置为False。

5、保存这个工程。当Delphi提示读者提供单元文件名时,要确信当前目录为正确的目录。为SplashForm的单元文件名输入Splash。

6、将SplashForm的Enabled属性设置为False。这里不想让用户能够给窗口提供键盘和鼠标命令,这是极少见的情况之一。在这个例子中,我们想让程序对SplashForm的显示拥有完全的控制权。

7、由于窗口没有轮廓,所以从Additional组件类中插入一个Bevel组件对象。这有助于定义窗口的边缘。将Bevel1的Align属性设置为alClient。同时,将对象的Shape属性改变为bsFrame,将其Style属性改变为bsRaised。这些值由使用者来确定。

8、在SplashForm中插入想使用的组件,在这里不要插入任何按钮或者其他相互作用的控件。应用程序本身显示和去除启动溅射对话框。

9、选择Project菜单。高亮显示Splash工程个d出式菜单。选择Options命令。在所产生的Project Options对话框中,选取Forms页标签。注意,MainForm和SplashForm位于自动创建的窗体列表中。高亮显示每个窗体并单击鼠标右按钮来将其移动到Available窗体。所有的Delphi窗体在运行时都是在内存中自动创建的,这要消耗内存和系统资源。在这样的一个案例中,程序是在运行时创建窗体的,读者应该从自动创建的列表中删除窗体。关闭ProjectOptions窗口。

10、接下来,修改工程的源代码,以便在显示主窗口之前显示溅射对话框。这里需要在工程文件中插入语句,以便与Splash.dpr工程文件相匹配。工程源代码如下:

program Project3

uses

Forms,

main in 'main.pas' {MainForm},

splash in 'splash.pas' {SplashForm}

{$R *.RES}

begin

SplashForm:=TSplashForm.Create(Application)

SplashForm.Show

SplashForm.Update

Application.CreateForm(TMainForm,MainForm)

SplashForm.Close

Application.Run

end.

11、如果这时编译和运行程序,它就非常快速地显示和去除启动溅射对话框,以至用户可能没机会见到它。为了强迫对话框保持几秒钟的可见时间,请选取程序的MainForm。为窗体的OnCreate命令创建一个处理器。在关键词的前面添加一个名为stopTime的长整型变量。在begin和end之间插入两个语句:一个为对Windows GetTickCount函数的调用。来将stopTime设置为Windows已在运行的秒数;另一个语句为while语句,这个语句另外延迟2秒钟。程序清单如下:

unit main

interface

uses

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

StdCtrls

type

TMainForm = class(TForm)

Exitbutton: TButton

procedure ExitbuttonClick(Sender: TObject)

procedure FormCreate(Sender: TObject)

private

{ Private declarations }

public

{ Public declarations }

end

var

MainForm: TMainForm

implementation

{$R *.DFM}

procedure TMainForm.ExitbuttonClick(Sender: TObject)

begin

close

end

procedure TMainForm.FormCreate(Sender: TObject)

var

stopTime:LongInt

begin

stopTime:=GetTickCount div 1000

while ((GetTickCount div 1000)<(stopTime+2)) do

Sleep(1)

end

end.

12、按F9编译、运行程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11562353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存