项目经验交流(CODE)

IORILI 2003-07-30 11:02:01
工作了两年,在以往的项目中,或多或少的会碰到一些技术上的难题,然后翻阅资料,直到解决,但好东东不该独享,虽然谈不上什么经典,但也许会解决大家日常中的燃眉之急吧 呵呵````````

用LISTVIEW显示表中的信息:
procedure viewchange(listv:tlistview;table:tcustomadodataset;var i:integer);
begin
tlistview(listv).Items.BeginUpdate;
try
tlistview(listv).Items.Clear;
with table do
begin
active:=true;
first;
while not eof do
begin
listitem:=tlistview(listv).Items.add;
listitem.Caption:=trim(table.fields[i].asstring);
listitem.ImageIndex:=8;
next;
end;
end;
finally
tlistview(listv).Items.EndUpdate;
end;
end;
...全文
53 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
IORILI 2003-08-01
  • 打赏
  • 举报
回复
大家有什么好的东东吗
wangguan007 2003-08-01
  • 打赏
  • 举报
回复
呵呵,很热闹,学习!
blueshrimp 2003-07-31
  • 打赏
  • 举报
回复
好贴,我也来一点

关于拖动窗口还有更好的办法,适用于拖动作意控件

procedure TForm1.ControlMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012; //拖动 //$F020 最小化
begin
ReleaseCapture;
(Sender as TWinControl).Perform(WM_SysCommand, SC_DragMove, 0);
end;

把任何从TWinControl下来的控件或窗口的鼠标移动事件指向这个过程即可拖动
engine_ 2003-07-31
  • 打赏
  • 举报
回复
好贴~!
qinchao08 2003-07-30
  • 打赏
  • 举报
回复
good!!
lw549 2003-07-30
  • 打赏
  • 举报
回复
欢迎参与我这个类似的帖子。
http://expert.csdn.net/Expert/topic/2056/2056908.xml?temp=.1589777
lw549 2003-07-30
  • 打赏
  • 举报
回复
function findmdiwindow:boolean;
begin
if application.MainForm.MDIChildCount>0 then //判断是否有子窗体存在
result:=true
else
result:=false;
end;
可以这样

function findmdiwindow:boolean;
begin
Result:=application.MainForm.MDIChildCount>0; //判断是否有子窗体存在
end;
IORILI 2003-07-30
  • 打赏
  • 举报
回复
TO fengjn(小枫)
我会改进的 谢谢:)
IORILI 2003-07-30
  • 打赏
  • 举报
回复
让你的程序只运行一次!!!!!!!!!!
const mypro='tmainapp';//FORM名
var handle:integer;
begin
handle:=findwindow(mypro,nil);
if handle<>0 then
begin
messagebox(0,'程序正在运行,请关闭','警告',0);
halt;
end;
hanzq 2003-07-30
  • 打赏
  • 举报
回复
不错阿
myling 2003-07-30
  • 打赏
  • 举报
回复
这个只能说是代码经验交流吧?

楼主的题目起的太大了,呵呵
fengjn 2003-07-30
  • 打赏
  • 举报
回复
那样写的作用是不让机器咚咚的响
IORILI 2003-07-30
  • 打赏
  • 举报
回复
处理自己的热键
向窗体添加自己的热键:将窗体的KeyPreview属性设置为True,然后在窗体的OnKeyDown事件处理程序中添加如下代码:
if (ssCtrl in Shift) and (chr(Key) in ['A', 'a']) then ShowMessage('Ctrl-A');
就OK了
IORILI 2003-07-30
  • 打赏
  • 举报
回复
标签的加速键
对含有Caption属性的组件,添加快捷键是比较容易的,只需在Caption属性中特定字符前加上“&”符号即可。那么,怎样给没有Caption属性的控制添加快捷键呢?现以给一个TMemo控制添加快捷键为例说明如下:在窗体上放置一个TMemo控制,再在其旁边放置一个TLabel控制,将其Caption属性设置为“&Memo1”,将TLabel的FocusControl属性设置为“Memo1”。编译并运行这个程序,按快捷键 <ALT+M>,就可以快速存取Memo1控制的内容。这项技术不需要任何代码,可以应用到所有没有Caption属性的控件上。
呵呵 很不错的方法
IORILI 2003-07-30
  • 打赏
  • 举报
回复
缩小步长
在设计窗体时使用“(靠到格线)Snap to grid”功能,可以节省安置组件的时间,但是,有时你还需要微调其位置和大小。
其一:将组件在窗体上一次移动一个象素点。首先,选中你想移动的组件,然后,按下<Ctrl>键不放,按光标键,选中的控制将一次移动一个象素点,方向与光标键所指方向相同。
其二:每次按一个象素点调整控制的大小。选中控制,按下<Shift>键不放,按光标键,根据光标键所指方向不同,选中的控制每次放大或缩小一个象素点。
geodgehoul 2003-07-30
  • 打赏
  • 举报
回复
1. 将popmenu 的几个事件写在一块,可以适当减少代码冗余
2. 能使用tquery的情况下尽量不要使用Ttable
3. 整个程序只放置一个tdatabase 来连接一个服务器,这是初学者
经常可能出错的地方
4. 将业务和界面控制分离,这是我一直想达到却怎么也完全达不到到的一
个目标
5. 程序的不同模块之间尽量使用函数的方式来通信,尽量不用使用共享变量
个人感觉,不一定是准则,大家看着拍砖,不要砸死人就行
IORILI 2003-07-30
  • 打赏
  • 举报
回复
fengjn(小枫) :我这样写得也执行过去了。
不过在ACCESS(VB)中作开发的话,就要屏蔽一些系统键了,比如F5之类的
IORILI 2003-07-30
  • 打赏
  • 举报
回复
VB中读取INI文件
Private Sub Form_Load()
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(App.Path & "\init.txt") Then
Set a = fs.opentextfile(App.Path & "\init.txt")
con_str = a.readline
a.Close
conn.ConnectionString = con_str
conn.Open
b_ip = InStr(1, con_str, "server=") + 7
e_ip = InStr(b_ip, con_str, ";")
server_ip = Mid(con_str, b_ip, e_ip - b_ip)
Else
frm_database.Show 1
If Len(ip) = 0 Then End
If server_client = "ser" Then
con_str = "driver=SQL Server;server=" & ip & ";database=master;uid=sa;pwd="
conn.ConnectionString = con_str
conn.CommandTimeout = 15
conn.Open
conn.Execute "exec sp_attach_db plat_xyj,'" & App.Path & "\plat_Data.MDF','" & App.Path & "\plat_Log.LDF'"
conn.Close
End If
con_str = "driver=SQL Server;server=" & ip & ";database=plat_xyj;uid=sa;pwd="
conn.ConnectionString = con_str
conn.CommandTimeout = 15
conn.Open
server_ip = ip
Set a = fs.CreateTextFile(App.Path & "\init.txt", True)
a.writeline con_str
a.Close
End If
client_ip = Winsock1.LocalIP
Combo1.ListIndex = 3
Set rs = conn.Execute("select name from p_user order by id")
While Not rs.EOF
If Not IsNull(rs!Name) And Trim(rs!Name) <> "" Then
Combo2.AddItem Trim(rs!Name)
End If
rs.MoveNext
Wend
End Sub
fengjn 2003-07-30
  • 打赏
  • 举报
回复
应该是
procedure enter(button:tbutton;var key:word);
begin
if key=13 then
begin
key:= 0;
tbutton(button).Click;
end;
end;
IORILI 2003-07-30
  • 打赏
  • 举报
回复
function findmdiwindow:boolean;
begin
if application.MainForm.MDIChildCount>0 then //判断是否有子窗体存在
result:=true
else
result:=false;
end;
加载更多回复(10)

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧