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. 判断Set里的元素是否重复、==、equals、hashCode方法研究-代码演示

    被测试类,没有重写hasCode()和equals()方法: package niukewang; import java.util.Objects; public class setClass { ...

  2. GMM算法k-means算法的比较

    1.EM算法 GMM算法是EM算法族的一个具体例子. EM算法解决的问题是:要对数据进行聚类,假定数据服从杂合的几个概率分布,分布的具体参数未知,涉及到的随机变量有两组,其中一组可观测另一组不可观测. ...

  3. NOI题库--图论 宗教信仰

    1526:宗教信仰 总时间限制: 5000ms 内存限制: 65536kB 描述 世界上有许多宗教,你感兴趣的是你学校里的同学信仰多少种宗教. 你的学校有n名学生(0 < n <= 500 ...

  4. Linux Systemcall Int0x80方式、Sysenter/Sysexit Difference Comparation

    目录 . 系统调用简介 . Linux系统调用实现方式的演进 . 通过INT 0x80中断方式进入系统调用 . 通过sysenter指令方式直接进入系统调用 . sysenter/sysexit编程示 ...

  5. JAVA多线程经典范列:生产者与消费者

    * 第一:生产者 生产的消费品 存放到仓库中,当仓库满时,生产者停止生产 * 第二:消费者 到仓库中 使用消费品,当仓库没有消费品时,停止消费 * 第三:生产者 在仓库满停止生产后 通知消费者去消费 ...

  6. xml转成数组,原来这么简单!

    function xml2arr($xml){ $obj  = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $js ...

  7. xcrun: error: active developer path ("/Volumes/Xcode/Xcode-beta.app/Contents/Developer") does not exist, use `xcode-select --swi

    xcrun: error: active developer path ("/Volumes/Xcode/Xcode-beta.app/Contents/Developer") d ...

  8. Linux下搭建svn服务器(转)

    原文地址:http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933/ 安装步骤如下: 1.yum install ...

  9. mysql 查看 删除 日志操作总结(包括单独和主从mysql)

    我们可以在mysql的安装目录下看到mysql的二进制日志文件,如mysql-bin.000***等,很多人都不及时的处理,导致整个硬盘被塞满也是有可能的.这些是数据库的操作日志.它记录了我们平时使用 ...

  10. UML用例图总结

    用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. [用途]:帮助开发团队以一种可视化的方式理解系统的功能需求. 用例图所包含的元素如下: 1. ...