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

| |
[delpih编程]热敏式打印机的打印备忘 软件技术
吕向阳 发表于 2009/4/8 8:48:13 |
procedure Tfkhxf.dy(dh: integer); var tfPrint: TextFile; linestring: string; begin AssignFile(tfPrint, 'lpt1');//开始打印,端口号1 Rewrite(tfPrint); //覆盖式
//以下为打印内容
linestring := ' ***美发旗舰店'; Writeln(tfPrint, linestring); writeln(tfprint, '--------------------------------'); linestring := '凭证单号: ' + inttostr(dh); Writeln(tfPrint, linestring); linestring := '总费用:' + edit1.Text + '元'; Writeln(tfPrint, linestring);
writeln(tfPrint, #13); //换行 closefile(tfprint); //关闭打印机 end;
|
|
[delpih编程]程序报错找不到qtintf.dll,问题解决 软件技术
吕向阳 发表于 2009/4/7 11:53:32 |
程序报错找不到qtintf.dll,问题解决
编了个程序,为了以防万一,在另外的电脑上用了下,竟说找不到
qtinft.dll。
网上查了一下:
这是一个Kylix程序在WINDOWS运行的支持库,一般不用的。最近我也中
招了,我在程序中不注意用了QForm,然后就要用到qtintf.dll了。一
般用到以Q打头的单元(Kylix)的单元,就要用到这个dll.而一般elphi
不会有任何提示,所以要小心点,把程序中的比如Qform,QGraphics改
成Forms,Graphics就行了。
DELHI中的find in files很好用,一找就能找出来
|
|
[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;
|
|
[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 + \ |
|
[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.
|
|
[delpih编程]数据提供程序或其他服务返回E_FAIL状态解决方案 软件技术
吕向阳 发表于 2009/4/2 21:34:39 |
delphi出错了:数据提供程序或其他服务返回E_FAIL状态 ,编的好好的程序说不能用就不能用了,害得自己重装了DELPHI,还是不行。多少年都没有遇到这种事。网上一查还真不是自己一个人的病。
查了好多贴,都没有说到正点。好不容易在一不起眼的贴子里看到可能是是数据库损坏了,还好ms access 中有自我修复功能。
进入工具-数据库实用工具-压缩和修复数据库,顺手的感觉又回来了。
|
|
|