Q: 怎么来改变ListBox的字体呢?就修改其中的一行。

A: 先把ListBox1.Style 设成lbOwnerDrawFixed 
然后在 OnDrawItem 事件下写下如下代码

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; 
Rect: TRect; State: TOwnerDrawState); 
var 
Offset: Integer; 
begin 
Offset := 2; 
with (Control as TListBox).Canvas do begin 
FillRect(Rect); 
if Index = 2 then begin 
Font.Name := 'Fixedsys'; 
Font.Color := clRed; 
Font.Size := 12; 
end else begin 
Font.Name := 'Arial'; 
Font.Color := clBlack; 
Font.Size := 8; 
end; 
if odSelected in State then begin 
Font.Color := clWhite; 
end; 
TextOut(Rect.Left + Offset, Rect.Top, (Control as TListBox).Items[Index]); 
end; 
end; 
---------------------------------------- 
Q:怎么在RichEdit里面插入图片?

A: 请到这里来看看会找到答案

http://www.undu.com/Articles/991107c.html
---------------------------------------------- 
Q:怎么才能目录呢?

A:我来。

uses ShellAPI;

procedure DeleteFiles(Source: string); 
var 
FO: TShFileOpStruct; 
begin 
FillChar(FO,SizeOf(FO),#0); 
FO.Wnd := Form1.Handle; 
FO.wFunc := FO_Delete; 
FO.pFrom := PChar(Source); 
ShFileOperation(FO); 
end;

procedure EmptyDirectory(Path: String); 
begin 
if DirectoryExists(Path) then 
begin 
DeleteFiles(Path+'*'); 
end 
else 
ForceDirectories(Path); 
end; 
-------------------------------------------------- 
Q:如何映射网络驱动器?

比如我要把Serversys映射为F盘。我需要一个函数比如

给出输入参数为serversyshomebruno给我的返回值是F:homebruno

A:

Function UNCToDrive(UNCPath: STring): STring; 
var 
DriveNum: Integer; 
DriveChar: Char; 
DriveBits: set of 0..25; 
StartSTr,TestStr: STring; 
begin 
result := UNCPath; 
StartSTr := UNCPath; 
Integer(DriveBits) := GetLogicalDrives; 
for DriveNum := 0 to 25 do 
begin 
if (DriveNum in DriveBits) then begin 
DriveChar := Char(DriveNum + ord('A')); 
TestSTr := ExpandUNCFileName(DriveChar+':'); 
If TEstStr <> '' then 
If Pos(Uppercase(TestSTr),Uppercase(STartSTr)) > 0 then 
begin 
Delete(StartSTr,1,Length(TestSTr)); 
result := DriveChar+':'+StartSTr; 
break; 
end; 
end; 
end; 
end; 
--------------------------------------------------------- 
Q:我有一些特殊语言的字体来用,它们存储在我的EXE文件里,但是两点。

* 我不想放到font文件夹里 
* 我不想从EXE文件里面提取出来

如果可能,请告诉我。

因为,我的字体是自己做的不是windows自带的,我想保护自己的东西。

A:不太可能,必须提取出来。你可以使用这个保护过程来保护你的文件不被修改和删除。

在EXE执行的时候把字体放到临时文件夹里,结束的时候删除它。

function ProtectFile(sFilename : string) : hFile; 
var 
hf: hFile; 
lwHFileSize, lwFilesize: longword; 
ofs : TOFStruct; 
begin 
if FileExists(sFilename) then 
begin 
hf := OpenFile(pchar(sFilename), ofs, OF_READ or OF_WRITE or OF_SHARE_EXCLUSIVE); 
if hf <> 0 then 
begin 
lwFilesize := GetFileSize(hf, @lwHFileSize); 
if LockFile(hf, 0, 0, lwFilesize, lwHFilesize) then 
Result := hf else Result := 0; 
end 
else Result := 0; 
end 
else Result := 0; 
end;

//.. 
var 
ResS: TResourceStream; 
TempPath: array [0..MAX_PATH] of Char; 
TempDir: string; 
begin 
GetTempPath(Sizeof(TempPath), TempPath); 
TempDir := StrPas(Path); 
ResS := TResourceStream.Create(hInstance, 'SOME_FONT', 'RT_FONT'); 
ResS.SavetoFile(TempDir+'some_font.ttf'); 
ResS.Free; 
AddFontResource(TempDir+'some_font.ttf'); 
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
ProtectFile(TempDir+'some_font.ttf'); 
end; 
------------------------------------------------------- 
Q:如何得到当前的ProgramFiles得路径?

A:用读写注册表的方法就可以做到。

代码如下:

uses registry;

procedure TForm1.Button1Click(Sender: TObject); 
var 
reg:TRegistry; 
begin 
reg:=TRegistry.Create; 
reg.RootKey:=HKEY_LOCAL_MACHINE; 
if reg.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersion',false) then 
begin 
edit1.Text:=reg.ReadString('ProgramFilesDir'); 
reg.CloseKey; 
reg.Free; 
end; 
end; 
-------------------------------------------------------------- 
Q:如何在Jpg图像上写上字?

A:这里有个代码。

hmm, here's a sample with help of Bitmap, you can chance the brush style of canvas to bsClear to make the text transparent

uses 
Jpeg;

procedure TForm1.Button1Click(Sender: TObject); 
var 
Bmp : TBitmap; 
Jpg : TJpegImage; 
begin 
try 
Bmp := TBitmap.Create; 
Jpg := TjpegImage.Create; 
Jpg.LoadFromFile('c:img.jpg'); 
Bmp.Assign(Jpg); 
Bmp.Canvas.Brush.Style := bsClear; 
Bmp.Canvas.Font.Color := clYellow; 
Bmp.Canvas.TextOut(10,10,'Hello World'); 
Jpg.Assign(Bmp); 
Jpg.SaveToFile('c:img2.jpg'); 
finally 
bmp.Free; 
jpg.Free; 
end; 
end; 
---------------------------------------------------- 
DBGrid中如何让回车变为光标右移动 :

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; 
Shift: TShiftState); 
begin 
if key=VK_F1 then 
begin 
DBGrid1.DataSource:=DataSource1; 
ADOTable1.Active:=true; 
ADOTable2.Active:=false; 
end 
else if key=VK_F2 then 
begin 
DBGrid1.DataSource:=DataSource2; 
ADOTable2.Active:=true; 
ADOTable1.Active:=false; 
end 
end ;

case key of 
vk_f11: 
begin

end;

if edit1.Text=ADOTable1.FieldByName('no').AsString then 
begin 
edit2.Text:=ADOTable1.FieldValues['pname']; 
edit3.Text:=ADOTable1.FieldValues['kroom']; 
edit4.Text:=ADOTable1.FieldValues['dname']; 
end

DBGrid中如何让回车变为光标右移动 
在Form.OnKeyPress事件中写如下代码:

if Key = #13 then 
if ActiveControl = DBGrid1 then begin 
TDBGrid(ActiveControl).SelectedIndex := TDBGrid(ActiveControl).SelectedIndex + 1; 
Key := #0; 
end;

有2点需要注意: 
1.当光标达到DBGird最右列的时候,再按回车,光标还会停留在原地。 
2.Key := #0一句让光标移动到下一列以后处于浏览状态,如果去掉这行代码光标移动到下一列以后将处于编辑状态。 
----------------------------------------------------------------- 
Q:怎么用delphi修改文件的时间呢?

在windows下,属性里面有三个日起,创建,修改,存储。我怎么来修改啊?

A:Here is the excerpt from the Jedi Code Library. If it is not complete then get the JCL.

type 
// indicates the file time to set, used by SetFileTimesHelper and SetDirTimesHelper 
TFileTimes = (ftLastAccess, ftLastWrite, ftCreation);

function SetFileTim
esHelper(const FileName: string; const DateTime: TDateTime; Times: TFileTimes): Boolean; 
var 
Handle: THandle; 
FileTime: TFileTime; 
SystemTime: TSystemTime; 
begin 
Result := False; 
Handle := CreateFile(PChar(FileName), GENERIC_WRITE, FILE_SHARE_READ, nil, 
OPEN_EXISTING, 0, 0); 
if Handle <> INVALID_HANDLE_VALUE then 
try 
//SysUtils.DateTimeToSystemTime(DateTimeToLocalDateTime(DateTime), SystemTime); 
SysUtils.DateTimeToSystemTime(DateTime, SystemTime); 
if Windows.SystemTimeToFileTime(SystemTime, FileTime) then 
begin 
case Times of 
ftLastAccess: 
Result := SetFileTime(Handle, nil, @FileTime, nil); 
ftLastWrite: 
Result := SetFileTime(Handle, nil, nil, @FileTime); 
ftCreation: 
Result := SetFileTime(Handle, @FileTime, nil, nil); 
end; 
end; 
finally 
CloseHandle(Handle); 
end; 
end;

//--------------------------------------------------------------------------------------------------

function SetFileLastAccess(const FileName: string; const DateTime: TDateTime): Boolean; 
begin 
Result := SetFileTimesHelper(FileName, DateTime, ftLastAccess); 
end;

//--------------------------------------------------------------------------------------------------

function SetFileLastWrite(const FileName: string; const DateTime: TDateTime): Boolean; 
begin 
Result := SetFileTimesHelper(FileName, DateTime, ftLastWrite); 
end;

//--------------------------------------------------------------------------------------------------

function SetFileCreation(const FileName: string; const DateTime: TDateTime): Boolean; 
begin 
Result := SetFileTimesHelper(FileName, DateTime, ftCreation); 
end; 
----------------------------------------------------------------------

Delphi经验总结(2)的更多相关文章

  1. Delphi经验总结(1)

    先人的DELPHI基础开发技巧 ◇[DELPHI]网络邻居复制文件 uses shellapi; copyfile(pchar('newfile.txt'),pchar('//computername ...

  2. Delphi经验总结(3)

    ------------------------------------------------------- ◇删掉程序自己的exe文件 procedure TForm1.FormClose(Sen ...

  3. JNI 翻译 转 Delphi 的 经验 方法

    首发在 ①FireMonkey[移动开发] 16523232 欢迎使用 FMX 开发手机程序的高手来访. 注意:如果您看了本文,翻译了 JNI,请发布到本群共享一份.不同意本规定的,请立即删除本文.凡 ...

  4. Delphi调用WebService(通过SoapHeader认证)经验总结

    项目(Delphi开发)需要调用另一个系统的WebService.走了不少弯路,现记录总结一下经验.以下是WebService要求: 1.WebService概述 营销Webservice接口采用Ap ...

  5. delphi 升级到xe7后的一些个人经验

    http://blog.csdn.net/span12/article/details/42522091 你只要记住 字符串使用变了.VCL 下面所有的 char 改 ansichar string ...

  6. Delphi编程防止界面卡死的方法经验分享

    Delphi编程防止界面卡死的方法经验分享! 1.循环里面防止界面卡死的方法可以使用Application.ProcessMessages:  例如下列方法:    var      n: Integ ...

  7. Delphi 10.1.2 berlin开发跨平台APP的几点经验

    1.ios不允许app有退出功能,所以不能调用Application.Terminate. 2.info.plist文件的自定义:info.plist文件是由info.plist.TemplateiO ...

  8. (转: daifubing的博客 )Delphi二维码中文支持、分组、批量打印经验小结

    一直也没接触到什么复杂的报表,都是一些简单的报表,在DelphI下使用QuickReport一般也就能满足需要了,由于公司现在需求的变化,对条码扫描提出了新的要求,主要是扫码要包含更多地内容,以前的一 ...

  9. Delphi面向对象设计的经验原则(61条)

    (1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...

随机推荐

  1. 【Matplotlib】 增加图例

    相关文档: Legend guide legend() command Legend API 控制图例入口 无参调用 legend() 会自动获取图例 handles 以及相关的 labels.其对应 ...

  2. python学习笔记4(对象/引用;多范式; 上下文管理器)

    ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是储存在内存中的实体,对象名只是指向这一对象的引用(refere ...

  3. 【BZOJ-3172】单词 AC自动机

    3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2567  Solved: 1200[Submit][Status ...

  4. Erlang之父的学习历史及学习建议

    当我开始学习编程的时候(1967年),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN. 在我最早学习编程的时候,我的编程周期 ...

  5. soa vs cop

    soa强调分层:底层为高层提供服务: cop强调分块:有明确的职责和服务提供接口,为外部提供服务. SOA 原则非常强调将服务使用者和服务提供者分离开来,关于此类分离实际的含义,有很多不正式但非常有用 ...

  6. Unity 游戏资源ktx转换png

    Unity 开发的模型贴图都是.ktx格式的,提取出来的资源,其中的ktx资源,用PVRTexToolGUI.exe可以打开查看,可以发现都是上下颠倒,且被拉伸 直接转为png格式的批处理脚本为: @ ...

  7. mysql 视图(view)

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...

  8. 通过开源程序同时解决DNS劫持和DNS污染的问题

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染.关于DNS劫持和DNS污染的区别,请查找 ...

  9. c# params

    每个C#函数都允许有个参数带params关键字,在调用的时候可以不给他传值,也可以给他传值,还可以给他传多个值,例子如下: using System; using System.Collections ...

  10. c# 重写索引

    //using System;//using System.Collections.Generic;//using System.Text; //namespace 索引//{//    class ...