delphi自带办公软件excel控件使用
1. delphi自定义控件
可以的。
B 文件
procedure newbutton(ANotifyEvent: TNotifyEvent);
var
button : Tbutton;
begin
button := Tbutton.create(nil);
button .onclick := ANotifyEvent; ///// 这就是从A文件里面传过来的单击事件 不用引用a单元
end;
A文件动态生成按钮事件改成 //
procedure newbutton1
begin
newbutton(ClickSelf); // 这里调用B文件
end;
2. delphi常用控件
不签名也是可以的,但是使用上会受到很大限制,比如默认浏览器的安全级别就无法通过,需要手工进行安全级别调低才能使用和安装,随着操作系统的不断升级,这种控制越来越严。但目前为止还是可以使用没有签名的控件的.
3. delphi 自定义函数
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;
4. delphi第三方控件
for i:= 0 to count-1 do beginBtnArray[i]:=TBuuton.Create(YourForm);BtnArray[i].Parent:=YourForm;......end;在类里写个 procedure MyBtnClick(sender:TObject)BtnArray[i].OnClick:=MyBtnClick;
5. delphi图形控件
TQuery,TADOQuery,TADOTable,DBLookupComboBox多好用啊、
TTable的数据源要从控制面板--管理工具--数据源里添加,然后从DataBaseName调用、查询条件可以通过Filter控制、
TQuery可以直接使用SQL语句
6. delphi自定义控件图标
你的窗体继承了另一个窗体,就会是这种情况inherited用法procedurebutton1.onclick(sender..);begininherited;end;有了inherited就会执行父窗体中button1.onclick(sender..);方法的代码了
7. delphi 控件属性 显示
如果 delphi 7 的 ListView 提供了 GridLines 属性,则将之设置为 True,即可显示出表格线(同时,需要设置 ViewStyle 属性为 vsReport):
如果没有该属性,则可以下载安装第三方控件,如 RzListView 等。
8. delphi 表格控件
procedureSetNodeState(node:TTreeNode;State:Integer)
;functionGetNodeState(node:TTreeNode):Integer;从protected中移出来。
9. delphi下拉控件
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。
[1] [2] [3] [4] [5] [6] [7] 下一页