⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 我的小记.txt

📁 我有使用DELPHI编程中用到的记下来的一些小技巧能为你提供点小小的帮助
💻 TXT
📖 第 1 页 / 共 2 页
字号:
------------------------------------------------
1、怎么样在delphi中调动其它*.exe文件?
例如:winexec('d:\郑洽\Project1.exe',sw_show);

==============================================================================

2、如何让工程运行时主窗体就是最大化的? 
答:设置主窗体的WindowsState属性为wsMaximized就可以了!
wsNormal 窗体以普通状态显示
wsMinimized 窗体以最小化状态显示。
wsMaximized 窗体以最大化状态显示。 

==============================================================================

3、我想先->闪现窗体->主窗体->登录窗体,工程源文件怎么设置?
答:
⒈开始一个新工程。给表格起名为MainForm,MainForm的单元起名为Main, 工程文 件起名为Test。
⒉在MainForm中插入一个Button部件,将其Caption属性设为“关闭”,为该部件 的onClick事件创建一

个过程,并在过程的begin和end之间插入Close语句。
⒊在应用程序添加一个表格,将这个表格起名为MoveForm,MoveForm 的单元起名 为Move。
⒋为便于演示,在MoveForm中插入一个Label部件,设置其Caption 属性为“欢迎 进入本系统”。
5.下一步修改工程的源代码。选择View/Project Source,修改begin和end之间的 语句如下:
程序清单Test.Dpr
program Test
uses
forms,
Main in 'MAIN.PAS'{MainForm},
Move in 'Move.PAS'{MoveForm}

{$R *.RES}

begin
MoveForm:=TMoveForm.Create(Application);{Create创建闪现窗口对象}
MoveForm.Show;
MoveForm.Update;
Application.CreateForm(TMainForm,MainForm);
MoveForm.Hide;
MoveForm.Free;{Free从内存中释放对象}
Application.Run;
end.
  第一条语句创建了对象,该对象存在内存中,但还不能看见, 为了让它出现并更 新它的内容,调用

对象的Show和Update成员函数:Show和Update。 当闪现窗口使 用完后,用Hide函数将它隐藏起来,然后

用Free函数释放它所占据的内存。
6.如果此刻你编译和运行程序,MoveForm窗口一闪而过, 你可能未来得及看 清。为使MoveForm窗口显示

几秒种,我们可为MainForm的OnCreate 事件创建一个 处理程序,延迟MoveForm窗口的显现时间。
program TMainForm.FormCreate(sender:Tobject);
var 
currentTime:LongInt;
begin
currentTime:=GetTickCount div 1000;
while ((GetTickCount div 1000)<(currentTime+3) do
{不做任何事);
end;
end.
  GetTickCount函数返回窗口启动后过去的毫秒数,这个值除以1000 转化为秒数。 此时你编译运行程

序,就能得到一个延迟3秒多的闪现窗口。
为闪现窗口添加上Image部件,再对字体及窗口进行修饰,我们就能为应用程 序,创建一个精美的封面或

在程序启动时显示重要提示。

制作登录窗体一个很方便的方法就是主窗体作为主窗体,登录成功Hide掉就行了。
如果登录窗体不可以作为主窗体,那么和闪现窗体一样的方法创建登录窗体,加在Application.Run;之前

,MoveForm.Free;之后,
用showmodal显示登录窗体

==============================================================================

4、button上面的文字怎么样换行?
答:
button控件不行
bitbtn控件可以。
bitbtn1.caption:='aaaa'#13'bbbbb'

==============================================================================

5、怎么样判别焦点是否在某个控件上?
答:
if Tobject.focused then
//焦点在某某控件上
else

==============================================================================

6、怎么样在程序中使一个节点的子节点展开及收闭?
答:
treeview1.selected.Expanded; //判断节点的子节点是否展开True展开,否则闭拢
treeview1.selected.Expand(True);//子节点展开
treeview1.selected.collapse(True)://子节点闭拢 

树节点全部展开:
procedure TForm1.Button1Click(Sender: TObject);
var node:TTreeNode;
begin
if treeview1.Items[0]<>nil then
begin
node:=treeview1.Items[0];
node.Expand(true);
while node.getNextSibling<>nil do
begin
node:=node.getNextSibling;
node.Expand(true);
end;
end;
end;


树节点全部收缩:
procedure TForm1.Button2Click(Sender: TObject);
var node:TTreeNode;
begin
if treeview1.Items[0]<>nil then
begin
node:=treeview1.Items[0];
node.Collapse(true);
while node.getNextSibling<>nil do
begin
node:=node.getNextSibling;
node.Collapse(true);
end;
end;
end;

==============================================================================

7、如何用delphi编程实现给access数据库加密码?
答:1,新建Project。
  2,在FORM中放入ADOConnection控件。
  3,双击ADOConnection控件,然后点击Build...按钮,在“提供者”页中选择“Microsoft Jet 4.0 

OLE DB   Provider”,然后点击“下一步”按钮,在“连接”页中选择要连接的Access数据库的路径

和数据库的文件名,这时如果点“测试连接”按钮时,出现“初始化提供者时发生错误,测试连接失败,

密码无效”的错误提示。
  4,这时点“所有”页,然后双击“Jet OLEDBatabase Password”,出现对话框,添入密码后,选

择“连接”页中的“测试连接”按钮,出现“测试连接成功”的对话框。把ADOConnection控件的

LoginPromtp设为false.
  5,设置连接完成。

==============================================================================

8、如何判断Treeview中我选中的节点是否有子节点?如果没有给出提示啊?
答:
if Treeview.Selected.HasChildren then
//有
else
//无 

var
Node :TTreeNode;
begin
Node :=TreeView1.Selected;
if Node.HasChildren then
....
对复杂的程序最好用Node过渡

==============================================================================

9、能否解释一下try...except...end及try...finally...end;?
1.(1)是用于扑捉异常,(2)是用于保证代码执行的完整性
2.(1)中finally处的代码不管什么情况都会被执行,(2)中except处的代码仅在发生异常时才会执行
3.try finally之间的代码虽可保证finally 和 end之间的程序能执行,但不能保证程序不崩溃,
而try except就不会使程序崩溃 

==============================================================================

10、怎么样在主程序控制器中加入音乐?
在implementation下加入 mmsystem單元(windows多媒體函數動態聯結庫)。然後在的onShow,onCreate

事件中編寫代碼:sndplaysound('sound.wav',snd_async)

==============================================================================

11、我在form1上有四个edit,输完后我想用下上箭头键进行上移下移?怎么办?
答:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_down then perform(WM_NEXTDLGCTL,0,0) else
if key=vk_up then perform(WM_NEXTDLGCTL,1,0);
end;

==============================================================================

12、如何用delphi5实现读文本文件指定的一行,并得到文本文件的总行数?谢谢!
答:
Delphi读文件文件一般使用Readln过程,如要读第3行可以这样: 
var 
i : Integer; 
F: TextFile; 
S: string; 
begin 
if OpenDialog1.Execute then { Display Open dialog box } 
begin 
AssignFile(F, OpenDialog1.FileName); { File selected in dialog } 
Reset(F); 
For i = 1 To 3 Do 
Readln(F, S); 
Edit1.Text := S; { Put string in a TEdit control } 
CloseFile(F); 
.
end; 
要统计总行数,只能从头逐行读,直到文件尾(Eof函数为True),每读一行计数器加1。 
不过由于文本文件的每行长度不相等,它不能象数据库文件那样想读那行就读哪行,只能顺序读。 
上面的方法容易理解,也容易实现。如果希望提高速度,编程上要麻烦一些,可以以二进制方式打开文件

,将所有内容读入一个内存变量,然后使用Pos函数查找其中的回车(#13)个数,这样可以快速地统计总

行数并能快速地找到指定行。

==============================================================================

13、制作主窗口显示前的版权窗口 
答:
在工程文件中选File->New Form新建一个窗口,设计好窗口的外观。给窗口起名为AboutBox,选Project-

>Options,将新建的窗口从自动建立中去掉。 选View->Project Source,打开工程文件的源文件,在下

面加入红色的句子。
Uses AboutBox
Var
lTime :TDateTime;
Begin
Application.Initialize();
AboutBox=TAboutBox.Create(AboutBox);
AboutBox.Show;
AboutBox.Update;
lTime=GetTickCount;
Application.CreateForm(TMainForm,MainForm);
while((GetTickCount-lTime) / 1000 <3) do;
AboutBox.Hide;
AboutBox.Free;
Application.Run;
end; 

==============================================================================

14、Delphi中RichEdit的奥妙
  一、如何得知当前行号   
  用RichEdit(或者memo)控件制作文本编辑器时,通过访问lines?count属性可以得到总行数,但是

若想知道光标当前所在行的行号就麻烦了,因为delphi没有提供这个属性。要实现这个编辑器必备功能,

就须调用em_ LineFromChar。

  请试试下面的程序。
  先在窗口中布置一个RichEdit或者memo(命名为editor),以及一个button。在button的onclick事

件中写入下列代码。
   var
   CurrentLine:Integer;
   begin
     CurrentLine:=Editor.Perform(em_ LineFromChar,SFFFF,0);   
     Application.MessageBox(PChar(′当前行号是′+IntToStr(CurrentLine)),′消息′,mb_ 

iconinformation);   
   end;
  需要注意的是,第一行的行号为零。

  二、如何撤消操作(undo)
  对于memo来说,实现undo是不需编程的,只要让popupmenu属性为空,运行时就能用鼠标右键激活一

个常用操作菜单,其中包括撤消、剪切、复制、粘贴、删除和全选六项。   但可惜的是,这一招对于

功能强大的RichEdit控件居然行不通,害得我们还要自己设计一个popupmemu。当你用CutToClipBoard等

语句轻松而顺利地完成了“剪切”等功能,接着便会无奈地发现,竟找不到undo或cancel之类的语句来执

行“撤消”。   这时你需要这样处理: 
    RichEdit1?Perform(EM_UNDO,0,0);
  另外还应检查是否允许撤消,从而开启或关闭弹出菜单中的“撤消”项:
    Undo1?Enabled:=RichEdit?
    Perform(EM_CANUNDO,0,0)<>0;   
以上程序在Delphi3中调试通过。   


==============================================================================

15、在主窗口中打开另一个独立的窗口,而这个被打开的窗口固定显示在..?
答:
procedure TForm2.FormCreate(Sender: TObject);
begin
form2.Hide;
self.Parent:=form1.Panel1;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -