如何作出类似于DELPHI彩蛋的效果呢?比如在DELPHI的ABOUT中按下ALT+TEAM onkeypassor onmousedown事件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 form.keypreview := true然后onkeypass 如果用代码方式不好解决,那就换个思路吧,比如说用Flash来做,转成avi,在Form中播放。 采用定时器实现滚动,采用双缓冲在Form上画就会很平滑了。 //fromhttp://kingron.myetang.com/zsfunc0f.htm(*//标题:判断是否完成一系列按键操作说明:示例按键彩蛋设计:Zswang日期:2002-01-25支持:[email protected]//*)///////Begin Sourcefunction IsSeriesKey(var nIndex: Integer; mShortCuts: array of TShortCut; mShortCut: TShortCut): Boolean; { 返回是否完成一系列按键操作 }begin Result := False; if (nIndex >= Low(mShortCuts)) and (nIndex <= High(mShortCuts)) then begin if (mShortCuts[nIndex] = mShortCut) then Inc(nIndex) else nIndex := 0; Result := nIndex > High(mShortCuts); if Result then nIndex := 0; end;end; { IsSeriesKey }///////End Source///////Begin Demo{ uses Menus }procedure TForm1.FormCreate(Sender: TObject);begin KeyPreview := True;end;procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);{$J+}const vIndex: Integer = 0; //可修改类型常量(静态变量)适用Delphi6.0{$J-}begin if IsSeriesKey(vIndex, [ TextToShortCut('Ctrl+z'), TextToShortCut('Ctrl+s'), TextToShortCut('Ctrl+w'), TextToShortCut('Ctrl+a'), TextToShortCut('Ctrl+n'), TextToShortCut('Ctrl+g')], ShortCut(Key, Shift)) then ShowMessage('Hello World!');end;///////End Demo //-----我的程序---unit AboutFlash;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TFrmFlash = class(TForm) Timer1: TTimer; BtnXiXi: TButton; Image1: TImage; Memo1: TMemo; procedure Timer1Timer(Sender: TObject); procedure BtnXiXiClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure Image1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var FrmFlash: TFrmFlash;implementationvar MaxTxtHeight, Y: Integer;{$R *.DFM}procedure TFrmFlash.Timer1Timer(Sender: TObject);var I: Integer; TxtLinePosY: Integer;begin Image1.Canvas.FillRect(Image1.ClientRect); TxtLinePosY := Y; for I := 0 to Memo1.Lines.Count - 1 do begin Inc(TxtLinePosY, MaxTxtHeight); if (TxtLinePosY < -MaxTxtHeight) or (TxtLinePosY > Image1.ClientHeight) then Continue else begin Image1.Canvas.TextOut(0, TxtLinePosY, Memo1.Lines[I]); //image1.Refresh; end; end; Dec(Y); if Y < -Memo1.Lines.Count * MaxTxtHeight then Y := Image1.ClientHeight;end;procedure TFrmFlash.BtnXiXiClick(Sender: TObject);begin DoubleBuffered := True; //for Delphi6 with Image1 do begin Transparent := True; //可以加个背景 //canvas.font.Charset:=GB2312_CHARSET; //canvas.font.Name:='宋体'; canvas.font.Size:=7; canvas.Font.Color:=clBlue; MaxTxtHeight := Image1.Canvas.TextWidth('gh'); Y := Image1.ClientHeight; end; Timer1.Interval := 5; Timer1.Enabled := True;end;procedure TFrmFlash.FormShow(Sender: TObject);begin BtnXiXiClick(BtnXiXi);end;procedure TFrmFlash.Image1DblClick(Sender: TObject);begin self.Close;end;end. 如何释放WebBrowser访问的页面? 一段键盘记录的程序,运行后系统停止响应,大家帮忙看看怎么回事 在线程中调用Excel的COM对象方法,提示“应用程序调用一个已为另一线程整理的界面。” treeview中,要读取节点修改后的值应该如何做,谢谢! 密码窗口不做主窗口但又要先于主窗口弹出来,要怎么写? 返回存储过程所影响的行数? 如何重复播放一个WAV文件直到用户干预? 怎么样用代码实现可执行文件的复制?(在线等) 米卢真的神奇吗? 天大地大,何处是我家? 高分求助,csdn 是怎么搞的,这样的问题没人会吗? 一个quickrep的问题
然后onkeypass
http://kingron.myetang.com/zsfunc0f.htm(*//
标题:判断是否完成一系列按键操作
说明:示例按键彩蛋
设计:Zswang
日期:2002-01-25
支持:[email protected]
//*)///////Begin Source
function IsSeriesKey(var nIndex: Integer; mShortCuts: array of TShortCut;
mShortCut: TShortCut): Boolean; { 返回是否完成一系列按键操作 }
begin
Result := False;
if (nIndex >= Low(mShortCuts)) and (nIndex <= High(mShortCuts)) then begin
if (mShortCuts[nIndex] = mShortCut) then
Inc(nIndex)
else nIndex := 0;
Result := nIndex > High(mShortCuts);
if Result then nIndex := 0;
end;
end; { IsSeriesKey }
///////End Source///////Begin Demo
{ uses Menus }
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := True;
end;procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
{$J+}
const
vIndex: Integer = 0; //可修改类型常量(静态变量)适用Delphi6.0
{$J-}
begin
if IsSeriesKey(vIndex, [
TextToShortCut('Ctrl+z'),
TextToShortCut('Ctrl+s'),
TextToShortCut('Ctrl+w'),
TextToShortCut('Ctrl+a'),
TextToShortCut('Ctrl+n'),
TextToShortCut('Ctrl+g')],
ShortCut(Key, Shift)) then
ShowMessage('Hello World!');
end;
///////End Demo
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TFrmFlash = class(TForm)
Timer1: TTimer;
BtnXiXi: TButton;
Image1: TImage;
Memo1: TMemo;
procedure Timer1Timer(Sender: TObject);
procedure BtnXiXiClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FrmFlash: TFrmFlash;implementation
var
MaxTxtHeight, Y: Integer;{$R *.DFM}procedure TFrmFlash.Timer1Timer(Sender: TObject);
var
I: Integer;
TxtLinePosY: Integer;
begin
Image1.Canvas.FillRect(Image1.ClientRect);
TxtLinePosY := Y;
for I := 0 to Memo1.Lines.Count - 1 do begin
Inc(TxtLinePosY, MaxTxtHeight);
if (TxtLinePosY < -MaxTxtHeight) or (TxtLinePosY > Image1.ClientHeight) then
Continue
else begin
Image1.Canvas.TextOut(0, TxtLinePosY, Memo1.Lines[I]);
//image1.Refresh;
end;
end;
Dec(Y);
if Y < -Memo1.Lines.Count * MaxTxtHeight then
Y := Image1.ClientHeight;
end;procedure TFrmFlash.BtnXiXiClick(Sender: TObject);
begin
DoubleBuffered := True; //for Delphi6
with Image1 do begin
Transparent := True; //可以加个背景
//canvas.font.Charset:=GB2312_CHARSET;
//canvas.font.Name:='宋体';
canvas.font.Size:=7;
canvas.Font.Color:=clBlue;
MaxTxtHeight := Image1.Canvas.TextWidth('gh');
Y := Image1.ClientHeight;
end;
Timer1.Interval := 5;
Timer1.Enabled := True;end;procedure TFrmFlash.FormShow(Sender: TObject);
begin
BtnXiXiClick(BtnXiXi);
end;procedure TFrmFlash.Image1DblClick(Sender: TObject);
begin
self.Close;
end;end.