20000626怎样word改写切换为2000-06-26

编程实现对剪贴板的监视p>  可能有很多电脑使用者使用过剪贴板来监视软件,该软件可以将剪贴板的每次变化保存起来,以便使用者随时调用,下面就介绍怎样用Delphi编程来实现对剪贴板进行监视的功能。
  在Windows中,有一个剪贴板观察链(Chain of Clipboard Viewers),当剪贴板的内容每次发生改变时,Windows都会向剪贴板观察链中所有的窗口发送WM_DRAWCLIPBOARD消息。通过Windows
API函数SetClipboardViewer可以将窗口设置到剪贴板观察链中,然后在程序中编写WM_DRAWCLIPBOARD消息处理函数就可以基本实现对剪贴板的监视功能了,在退出程序时,要调用ChangeClipboardChain函数,以便将窗口从剪贴板监视链中删除。
  Delphi中提供了一个TClipboard控件,可以实现一些需要进行复杂的Windows API编程才能实现的功能。而且,Delphi中的文本和图形控件提供了比VB中的类似控件更强大的剪贴板操作功能。同时,Delphi中虽然没有提供WM_DRAWCLIPBOARD事件,但是,Delphi提供了一个像C++一样让编程人员可以自由地编写用户自定义函数的功能,这样,编程人员就可以编写自定义函数来处理Delphi中没有提供的消息了,从而可以方便地监视剪贴板的每一次变化了。
  具体实现对剪贴板的监视功能的源代码见右边程序,首先要在Form1中加入一个TMemo控件和一个TImage控件,不需要改变它们的属性。
  该程序在Win 95、Delphi 4.0下运行通过。
  unit Unit1;
  interface
  uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs,  ExtCtrls,Clipbrd, StdC
   TForm1 = class(TForm)
   Image1: TI
   Memo1: TM
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TO var Action: TCloseAction);
   private
   procedure WMDrawClip(var Message:TMessage);message WM_DRAWCLIPBOARD;
   { Private declarations }
   public
   { Public declarations }
   Form1: TForm1;
   //保存下一个接受剪贴板消息的窗口的句柄
   hwndNextClip:
  implementation
  {$R *.DFM}
  procedure TForm1.WMDrawClip(var Message:TM
   //将剪贴板消息发送到观察链上的下一个窗口
   SendMessage(hwndNextClip,Message.Msg,Message.WParam ,Message.LParam
  if(Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT))
   //剪贴板上的内容是文本格式
   //设置Memo1接收文本
   Memo1.Align:= alC
   Memo1.Visible :=T
   Image1.Visible := F
   //将剪贴板的内容粘贴到文本框中
   Memo1.PasteFromC
   if Clipboard.HasFormat(CF_BITMAP) then
   //剪贴板上的内容是位图格式
   begin
   //设置Image1接收位图
   Image1.Align:= alC
   Memo1.Visible :=F
   Image1.Visible := T
   //将剪贴板内容粘贴到图片框中
   Image1.Picture.LoadFromClipboardFormat
(CF_BITMAP,ClipBoard.GetAsHandle(CF_BITMAP),0);
  procedure TForm1.FormCreate(Sender: TObject);
   //把窗口设置到剪贴板查看链上
   hwndNextClip:=SetClipboardViewer(Form1.Handle);
  procedure TForm1.FormClose(Sender: TO var Action: TCloseAction);
   //将窗口从剪贴板观察链中删除
   ChangeClipboardChain(Form1.Handle,hwndNextClip);
   SendMessage(hwndNextClip,WM_CHANGECBCHAIN,Form1.Handle
,hwndNextClip);Delphi中日期时间输入的简洁方法p>  看了贵报上有关Delphi中日期时间输入的文章,本人也想谈一谈自己的做法,以期与大家交流。请看程序:
Form1: TForm1;
systemtime: T
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Datetimepicker1.date:=
datetimepicker2.Time:=
procedure TForm1.Timer1Timer(Sender: TObject);
begin { Timer1.Interval=1000ms }
Datetimepicker1.date:=
datetimepicker2.Time:=
procedure TForm1.Button1Click(Sender: TObject);
begin { 确认修改 }
DatetimeToSystemtime(trunc(Datetimepicker1.date)
+Frac(Datetimepicker2.Time),systemtime);
SetLocalTime(systemtime);
Timer1.Enabled:=
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
Timer1.Enabled:=
procedure TForm1.DateTimePicker2Change(Sender: TObject);
begin
Timer1.Enabled:=
---- 再做少许说明:
--- 一. 建立两个DateTimePicker控件,第一个kind属性设置为dtkDate用于日期,第二个kind设置为dtkTime用于时间。两个DateTimePicker均由定时器Timer1控制,每秒刷新一次。当用户修改日期或时间,发生DateTimePicker1Change或DateTimePicker2Change事件,Tmer1.Enabled置为False,停止每秒一次的触发,日期时间显示静止,便于用户修改和确认;点击Button1后(更改确认),系统日期时间被修改,同时Timer1.Enabled重新置为True,两个DateTimePicker控件上的日期时间就又一秒一次的刷新,这样有动有静使界面显的生动一些。
--- 二. Delphi中控件DateTimePicker的属性Date、Time,获取系统时间的函数Now,其类型本质上都是双精度浮点型,用整数部分表示日期,小数部分表示时间。可以用Now函数直接向DateTimePicker的属性Date或Time赋值,用DateTimePicker显示系统当前时间,这样比另外在用Edit或Label输入、显示要简洁一些.
--- 三.用DateTimePicker.Date和Time的值设置系统时钟时要注意,Date的小数部分和Time的整数部分是随机数。因此Date要用trunc取整,Time要用frac取小数。(忽略了这一点就会产
庀氩坏降慕峁), 然后再相加、转换(DatetimeToSystemtime)、设置(SetLocalTime)。
--- 四. 过程FormCreate是为了使两个DateTimePicker第一次显示的就是系统当前时间。如果你不计较第一次显示的是你编程日期时刻的话,这一过程可以省去。再考虑到午夜12点前后修改系统时间的可能性极小,过程DateTimePicker1Change也可省略。
  你看,只要写几条语句就能做出一个实用生动的日期时间显示输入程序,Delphi真好。怎样改写为_百度知道
怎样改写为
像这样
&?php
$a=;
$b=substr($a,0,4).'-'.substr($a,4,2).'-'.substr($a,6,2);
echo $b;
?&
运行结果
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁监视剪贴板内容p>  冲浪的年代,用过网络蚂蚁的人肯定不少,其中一项监视剪贴板变化的功能让人 感觉到不少体贴。本文将介绍在Delphi中如何使用“体贴板”,来丰富自己的软件功能。
  Windows使用剪贴板观察器和观察链。剪贴板观察器是一个显示剪贴板当前内容的窗口。通常它应该至少能显示三种普通格式的内容:文字CF_TEXT、位图CF_BITMAP、元文件CF_METAFILEPICT。剪贴板观察链是一系列相互独立的剪贴板观察窗口,它们都能够接受当前发送到剪贴板的内容。我们大致按照以下步骤在窗口中处理有关剪贴板的内容。
  首先,使用SetClipboardViewer(HWND)函数向剪贴板观察链中加入一个观察窗口。 当剪贴板的内容发生变化时,该窗口会接收到一个WM_DRAWCLIPBOARD消息。该函数需要传递的参数是观察窗口的句柄。返回值也是一个窗口句柄类型,标 识了将要加入的下一个窗口。
  然后,响应WM_DRAWCLIPBOARD消息处理剪贴板内容的变化。
  最后,在程序退出或关闭时需要调用ChangeClipboardChain函数来将自己从观察链中 删除。然后调用SendMessage函数把这些消息传递到观察链中的下一个观察窗口。函数ChangeClipboardChain原型如下:
BOOL ChangeClipboardChain(
HWND hWndRemove, //将要删除的窗口的句柄
HWND hWndNewNext
//观察链中下一个窗口的句柄
  Delphi的clipbrd.pas单元中定义了一个类TClipboard,它封装了Windows剪贴板, 简化了大量复杂的处理过程。我们在程序中可以直接调用全局函数Clipboard,该函数用于返回TClipboard对象实例,使用这个实例对剪贴板进行剪切、 复制和粘贴等操作。下面是TClipboard对象的几个常用的方法和属性的简单介绍。
  方法: Assign:将指定的对象放入剪贴板中。 Open:打开剪贴板,防止其他程序改写剪贴板。在向剪贴板加入多项数据时尤其有用。Close:关闭剪贴板。应该与打开剪贴板成对使用。 Clear:清空剪贴板。 GetAsHandle:返回剪贴板中指定格式数据的句柄。使用前必须打开剪贴板。GetComponent:返回剪贴板中的一个控件。Delphi自己使用得多。 HasFormat:查询剪贴板中是否有指定格式的内容。
  属性: AsText:用于读写剪贴板文字内容。 FormatCount:读剪贴板中数据格式的种数。 Formats:返回剪贴板中各种格式的列表。
  此外,Delphi中的许多控件中也封装了有关剪贴板处理的操作。下面的一个处 理剪贴板的简单例子,只是将剪贴板的文字内容显示为窗口标题。
unit Unit1;
uses Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,C//加入clipbrd单元
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TO var Action: TCloseAction);
{ Private declarations }
NextClipHwnd:HWND;//观察链中下一个窗口句柄
procedure WMDrawClipBoard(var AMessage:TMessage); message WM_DRAWCLIPBOARD;//处理WM_DRAWCLIPBOARD消息过程
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }
procedure TForm1.WMDrawClipBoard(var AMessage: TMessage);
begin
//将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,AMessage.Msg,AMessage.WParam,AMessage.LParam);
//查询剪贴板中特定格式的数据内容
if (Clipboard.HasFormat(CF_TEXT)or Clipboard.HasFormat(CF_OEMTEXT)) then
//处理剪贴板中内容
Caption:=Clipboard.asT
procedure TForm1.FormCreate(Sender: TObject);
begin
//获得观察链中下一个窗口句柄
NextClipHwnd:=SetClipBoardViewer(Handle);
procedure TForm1.FormClose(Sender: TO var Action: TCloseAction);
begin
//从观察链中删除本观察窗口
ChangeClipboardChain(Handle,NextClipHwnd);
//将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,WM_CHANGECBCHAIN,Handle,NextClipHwnd);
  需要注意的是,在处理剪贴板内容变化的消息WM_DRAWCLIPBOARD的过程和关闭窗口事件中使用函数sendmessage把WM_DRAWCLIPBOARD或WM_CHANGECBCHAIN消息传递到观察链中的下一个窗口是必要的,否则有可能其他窗口不能获得类似消息。另外,在使用网络蚂蚁时笔者曾经碰到不能设置剪贴板格式的情况,在此提醒读者注意检查RegisterClipboardFormat等函数的返回值。

我要回帖

更多关于 word改写切换 的文章

 

随机推荐