本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告
================

注会练习软件
http://www.cpasoft.com.cn
我的注会软件官网

http://blog.163.com/abc7105@126/

 

 


哈哈,热爱快“过气”的DELPHI


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:注册会计师(注会)练习软件
日志总数:398
评论数量:116
留言数量:27
访问次数:3273592
建立时间:2005年6月6日




[delpih编程]advstringgrid 的当前记录怎样取得
软件技术

吕向阳 发表于 2009/4/6 13:27:52

stringgrid的当前记录取得是很方便的,而advstringgrid尽管在其它
方面功能强大,但要取当前记录还是要费一番周折。

网上没有相关的资料,只能自己摸索了。一番测试后,发现其有一个
selectcell事件,点击后发现其有内建参数,应是选定行的行与列数。
因此在此事件中加入一个全局变量 currentrecno,用来保存arow,代码
如下。

procedure Tfmsendmulti.ads2SelectCell(Sender: TObject; ACol,
ARow: Integer;
var CanSelect: Boolean);
begin
currentrecno := arow;
end;

在需要用到当前行号,列号的事件直接引用currentrecno即可。

procedure Tfmsendmulti.ads2DblClick(Sender: TObject);
var
XPAPERID: string;
begin
xpaperid := ads2.Cells[0, currentrec];
showmessage(xpaperid);
end;


阅读全文(8733) | 回复(1) | 编辑 | 精华 | 删除
 


[delpih编程]delphi中tlist 的使用范例
软件技术

吕向阳 发表于 2009/4/6 9:09:52

program testlist; {$APPTYPE CONSOLE} uses SysUtils, Classes; type PInfo = ^TInfo; TInfo = record Name: string; Tel: string; Address: string; end; var SL: TStringList; List: TList;
AppPath: string;
{ 开辟一个新的PInfo 指针,填入信息并返回指针将在
Command_Delete 或FinaInfo 里释放 }

function MakeInfo(Name, Tel, Address: string): PInfo;
var
P: PInfo;
begin
New(P);
P^.Name := Name;
P^.Tel := Tel;
P^.Address := Address;
{ 返回的指针将被保存在List 里 }
result := P;
end;
{ 在屏幕上打印所有可用的命令 }

procedure PrintMenu;
begin
writeln(\ '======菜单======\');
writeln(\ 'V---- 查看所有人员的信息\');
writeln(\ 'A---- 增添新的人员信息\');
writeln(\ 'D----删除人员\');
writeln(\ 'E---- 修改人员信息\');
writeln(\ 'M---- 查看所有可用命令\');
writeln(\ 'X----退出程序\');
end;
{ 修改人员信息的程序 }

procedure Command_Edit;
var
I: Integer;
Name, Tel, Address: string;
P: PInfo;
begin
write(\ ' 请输入要修改的人员信息的序号:\');
readln(I);
if (I < 0) or (I >= List.Count) then
writeln(\ ' 输入超出范围。\')
else
begin
{ 取得某个人员信息的指针 }
P := List.Items;
writeln(\ ' 开始输入人员信息(若某项信息不需要修改则留
空):\');
write(\ ' 姓名:\');
readln(Name);
write(\ ' 电话号码:\');
readln(Tel);
write(\ ' 地址:\');
readln(Address);
{ 保存输入的信息 }
if Name <> \ '\' then
P^.Name := Name;
if Tel <> \ '\' then
P^.Tel := Tel;
if Address <> \ '\' then
P^.Address := Address;
writeln(\ ' 修改人员信息执行完毕。\');
end;
end;
{ 增加人员信息的程序 }

procedure Command_Add;
var
Name, Tel, Address: string;
begin
writeln(\ ' 开始输入人员信息:\');
write(\ ' 姓名:\');
readln(Name);
write(\ ' 电话号码:\');
readln(Tel);
write(\ ' 地址:\');
readln(Address);
{ 使用MakeInfo 生成TInfo 的指针
并加入Tlist 中 }
List.Add(MakeInfo(Name, Tel, Address));
writeln(\ ' 增加人员信息执行完毕。\');
end;
{ 打印所有人员信息的程序 }

procedure Command_View;
var
I: Integer;
P: PInfo;
begin
writeln(\ ' 人员信息列表:\');
for I := 0 to List.Count - 1 do
begin
P := List.Items;
writeln(IntToStr(I) + \ '号===================\');
writeln(\ '姓名:\' + P^.Name);
writeln(\ '电话:\' + P^.Tel);
writeln(\ '地址:\' + P^.Address);
{ 满六个就暂停,刚好填满一个屏幕 }
if I mod 6 = 5 then
begin
writeln(\ ' 请按回车键继续。\');
readln;
end;
end;
writeln;
end;
{ 删除人员信息的程序 }

procedure Command_Delete;
var
I: Integer;
P: PInfo;
begin
write(\ ' 请输入要删除的人员信息的序号:\');
readln(I);
if (I < 0) or (I >= List.Count) then
writeln(\ ' 输入超出范围。\')
else
begin
P := List.Items;
List.Delete(I);
Dispose(P);
writeln(\ ' 删除执行完毕。\');
writeln;
end;
end;
{ 处理用户输入的命令 }

function GetCommand: Boolean;
{ 返回False 表示退出 }
var
C: Char;
begin
write(\ ' 输入命令并回车:\');
readln(C);
result := True;
case C of
\ 'V\', \ 'v\': Command_View;
\ 'A\', \ 'a\': Command_Add;
\ 'D\', \ 'd\': Command_Delete;
\ 'M\', \ 'm\': PrintMenu;
\ 'X\', \ 'x\': result := False;
\ 'E\', \ 'e\': Command_Edit;
else
writeln(\ ' 未知命令。\');
end;
end;
{ 从Info.txt 把人员信息加载入Tlist }

procedure LoadInfo;
var
I: Integer;
Name, Tel, Address, Index: string;
begin
SL.LoadFromFile(AppPath + \ 'Info.txt\');
for I := 0 to SL.Count div 3 - 1 do
begin
Index := IntToStr(I) + \ '.\';
{ 文件格式:Index.Field=Value
在这里使用Index.X 区别不同序号的人员信息的字段名称
然后通过Values 属性读取信息 }
Name := SL.Values[Index + \ 'Name\'];
Tel := SL.Values[Index + \


阅读全文(1084) | 回复(0) | 编辑 | 精华 | 删除
 


[delpih编程]取得程序中一些特殊文件夹的位置【转贴】
软件技术

吕向阳 发表于 2009/4/3 9:11:54

//取得程序中一些特殊文件夹的位置
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, ComCtrls, StdCtrls,ShlObj;

type
TForm1 = class(TForm)
Button1: TButton;
ListView1: TListView;
procedure Button1Click(Sender: TObject);
private
function GetSpecialFolderDir(const folderid: integer): string;
procedure AddListItem(LCaption, LSubItem: string);
procedure AddToListView;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AddListItem(LCaption, LSubItem: string);
var
I: TListItem;
begin
i := ListView1.Items.Add;
i.Caption := LCaption;
i.SubItems.Add(LSubItem);
end;

procedure TForm1.AddToListView;
begin
AddListItem('桌面', GetSpecialFolderDir(0));
AddListItem('所有用户桌面', GetSpecialFolderDir(25));
AddListItem('开始菜单程序', GetSpecialFolderDir(2));
AddListItem('所有用户开始菜单程序', GetSpecialFolderDir(23));
AddListItem('文档', GetSpecialFolderDir(5));
AddListItem('收藏夹', GetSpecialFolderDir(6));
AddListItem('所以用户收藏夹', GetSpecialFolderDir(31));
AddListItem('启动文件夹', GetSpecialFolderDir(7));
AddListItem('所有用户启动文件夹', GetSpecialFolderDir(24));
AddListItem('Recent文件夹', GetSpecialFolderDir(8));
AddListItem('发送到', GetSpecialFolderDir(9));
AddListItem('登陆用户开始菜单', GetSpecialFolderDir(11));
AddListItem('所有用户开始菜单', GetSpecialFolderDir(22));
AddListItem('网上邻居', GetSpecialFolderDir(19));
AddListItem('字体文件夹', GetSpecialFolderDir(20));
AddListItem('Template文件夹', GetSpecialFolderDir(21));
AddListItem('所有用户Template文件夹', GetSpecialFolderDir
(45));
AddListItem('ApplicaionData 文件夹', GetSpecialFolderDir(26));
AddListItem('打印文件夹', GetSpecialFolderDir(27));
AddListItem('当前用户本地应用程序设置文件夹',
GetSpecialFolderDir(28));
AddListItem('Internet临时文件夹', GetSpecialFolderDir(32));
AddListItem('Internet缓存文件夹', GetSpecialFolderDir(33));
AddListItem('当前用户历史文件夹', GetSpecialFolderDir(34));
AddListItem('所有用户应用程序设置文件夹', GetSpecialFolderDir
(35));
AddListItem('Windows系统目录', GetSpecialFolderDir(36));
AddListItem('程序文件夹', GetSpecialFolderDir(38));
AddListItem('System32系统目录', GetSpecialFolderDir(37));
AddListItem('当前用户图片收藏夹', GetSpecialFolderDir(39));
AddListItem('当前用户文件夹', GetSpecialFolderDir(40));
AddListItem('公共文件夹', GetSpecialFolderDir(43));
AddListItem('管理工具', GetSpecialFolderDir(47));
AddListItem('登陆用户管理工具', GetSpecialFolderDir(48));
AddListItem('所有用户图片收藏夹', GetSpecialFolderDir(54));
AddListItem('所有用户视频收藏夹', GetSpecialFolderDir(55));
AddListItem('主题资源文件夹', GetSpecialFolderDir(56));
AddListItem('CD Burning', GetSpecialFolderDir(59));

end;

function TForm1.GetSpecialFolderDir(const folderid: integer):
string;
var
pidl: pItemIDList;
buffer: array[0..255] of char;
begin
//取指定的文件夹项目表
SHGetSpecialFolderLocation(application.Handle, folderid,
pidl);
SHGetPathFromIDList(pidl, buffer); //转换成文件系统的路径
Result := strpas(buffer);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AddToListView;
end;

end.

阅读全文(2208) | 回复(0) | 编辑 | 精华 | 删除
 


[delpih编程]数据提供程序或其他服务返回E_FAIL状态解决方案
软件技术

吕向阳 发表于 2009/4/2 21:34:39

delphi出错了:数据提供程序或其他服务返回E_FAIL状态 ,编的好好的程序说不能用就不能用了,害得自己重装了DELPHI,还是不行。多少年都没有遇到这种事。网上一查还真不是自己一个人的病。 查了好多贴,都没有说到正点。好不容易在一不起眼的贴子里看到可能是是数据库损坏了,还好ms access 中有自我修复功能。 进入工具-数据库实用工具-压缩和修复数据库,顺手的感觉又回来了。




阅读全文(1534) | 回复(0) | 编辑 | 精华 | 删除
 


[delpih编程]【转】delpih 生成word文档
软件技术

吕向阳 发表于 2009/4/2 13:58:28

最近帮同学用Delphi 7写的一个数据库应用中的一个功能是将查询的结
果导出到一个Word文档中保存。虽然Delphi 7的Servers面板中提供了
TWordApplication和TWordDocument组件,但是帮助中却几乎没有写它
们的使用方法。于是在中国期刊网上down了许多的相关文章来看,只可
惜几乎都是用Delphi 5写的(Delphi 7中不能兼容),而且都只是简单
的介绍了一下,甚是郁闷。在经过一天的摸索之后终于用Delphi 7实现
了这个功能。代码如下:
//uses Word2000, ComObj;
//WordApp: TWordApplication;
//WordDoc: TWordDocument;

procedure TfrmDetails.btnExportClick(Sender: TObject); //单击
“导出“按钮
var
V:Variant;
Template,NewTemplate,DocumentType,Visible:OleVariant;
itemIndex:OleVariant;
fileName:Olevariant;
NoPrompt,OriginalFormat:OleVariant;
RouteDocument,SaveChanges:OleVariant;
begin
//指定文档的路径和文件名
fileName:='C:\LogAdmin\doc\'+'值班日志'+Trim
(DBTextID.Caption)+'.doc';
//如果该日志的对应Word文档已经存在则提示是否覆盖
if FileExists(fileName)=true then
begin
Beep;
if Application.MessageBox('文档已经存在,是否覆盖?','警
告',MB_OKCANCEL)=IDCANCEL then
Abort;
end;
//测试当前是否运行了Word 2000
try
V:=GetActiveOleObject('Word.Application');
except
//未运行则运行之
V:=CreateOleObject('Word.Basic');
end;
try
//连接到Word 2000
WordApp.Connect;
except
Beep;
MessageDlg('不能生成文档,请确认是否安装了Word
2000!',mtError,[mbOK],0);
Abort;
end;
//显示Word 2000
WordApp.Visible:=true;
//给调用Add函数使用的实参赋值
Template:=EmptyParam;
NewTemplate:=False;
DocumentType:=wdNewBlankDocument;
Visible:=true;
//调用Add函数
WordApp.Documents.Add
(Template,NewTemplate,DocumentType,Visible);
//连接到新建的文档
itemIndex:=1;
WordDoc.ConnectTo(WordApp.Documents.Item(itemIndex));
//文档另存为
WordDoc.SaveAs(fileName);
//开始向Word文档中写入内容
with WordApp.Selection do
begin
Font.Size:=20;
Font.Bold:=2;
Paragraphs.Alignment:=wdAlignParagraphCenter;
TypeText('值班日志详细内容');
TypeParagraph; //换行
TypeParagraph;
Font.Size:=12;
Font.Bold:=0;
Paragraphs.Alignment:=wdAlignParagraphLeft;
TypeText('编号: '+DBTextID.Caption);
TypeParagraph;
TypeText('日期: '+DBTextDate.Caption);
TypeParagraph;
TypeText('温度: '+DBTextT.Caption);

TypeParagraph;
TypeText('湿度: '+DBTextH.Caption);
TypeParagraph;
TypeText('天气: '+DBTextWeather.Caption);
TypeParagraph;
TypeText('值班人: '+DBTextName.Caption);
TypeParagraph;
TypeText('值班时间:'+DBTextTime.Caption);
TypeParagraph;
TypeText('有无异常:'+lbException.Caption);
TypeParagraph;
TypeText('使用工具:');
TypeParagraph;
TypeText(DBMemoTool.Text);
TypeParagraph;
TypeText('现场环境:');
TypeParagraph;
TypeText(DBMemoEnv.Text);
TypeParagraph;
TypeText('记录一: ');
TypeParagraph;
TypeText(DBMemoR1.Text);
TypeParagraph;
TypeText('记录二: ');
TypeParagraph;
TypeText(DBMemoR2.Text);
TypeParagraph;
TypeText('记录三: ');
TypeParagraph;
TypeText(DBMemoR3.Text);
TypeParagraph;
TypeText('备注: ');
TypeParagraph;
TypeText(DBMemoMemo.Text);
TypeParagraph;
end;
//保存文档
NoPrompt:=false;
OriginalFormat:=wdOriginalDocumentFormat;
WordApp.Documents.Save(NoPrompt,OriginalFormat);

//关闭文档
SaveChanges:=wdSaveChanges;
OriginalFormat:=wdOriginalDocumentFormat;
RouteDocument:=false;
WordApp.Documents.Close
(SaveChanges,OriginalFormat,RouteDocument);
//断开和Word 2000的连接
WordApp.Disconnect;

MessageDlg('日志内容导出成功!保存
为'+fileName,mtInformation,[mbOK],0);
//关闭窗体
frmDetails.Close;
end;


阅读全文(1073) | 回复(0) | 编辑 | 精华 | 删除
 


[delpih编程]tms控件 TColumnComboBox 的程序中增加显示行与列(多列显示的combobox)
软件技术

吕向阳 发表于 2009/3/30 21:40:00

tms控件 TColumnComboBox 的程序中增加显示行与列
(多列显示的combobox)
procedure TForm1.Button1Click(Sender: TObject);
begin
com1.Columns.Add;//增加显示列1
com1.Columns.Add;//增加显示列2

com1.ComboItems.Add;//增加显示行1
com1.ComboItems.Items[0].Strings.add('001'); //为行1列1 赋值
com1.ComboItems.Items[0].Strings.add('aaa');//为行1列2赋值

com1.ComboItems.Add;//增加显示行2
com1.ComboItems.Items[1].Strings.add('002');//为行2列1 赋值
com1.ComboItems.Items[1].Strings.add('ccb');//为行2列2 赋值
end;

procedure TForm1.com1Change(Sender: TObject);
begin
showmessage(com1.ColumnItems[com1.ItemIndex,0]);//取出选中的返
回值
end;

阅读全文(1199) | 回复(0) | 编辑 | 精华 | 删除
 


« 21 22 23 24 25 26 27 28 29 30 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144810141 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号