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. bootstrap table简洁扁平的表格

    使用方法 1.在html页面的head标签中引入Bootstrap库(假如你的项目还没使用)和bootstrap-table.css. <link rel="stylesheet&qu ...

  2. 【UVALive 3905】BUPT 2015 newbie practice #2 div2-D-3905 - Meteor

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/D The famous Korean internet co ...

  3. Codeforces 650A Watchmen

    传送门 time limit per test 3 seconds memory limit per test 256 megabytes input standard input output st ...

  4. Codeforces 295A Greg and Array

    传送门 A. Greg and Array time limit per test 1.5 seconds memory limit per test 256 megabytes input stan ...

  5. getchar() 和 scanf("%c")的区别

    getchar()和scanf("%c")的功能都是从STDIN读一个字符,单论功能两者没有区别. 但两者的返回值是有区别的: -------------------------- ...

  6. thinkphp ajax添加及删除

    写在前面的话:应客户需求需要给后台增加自助添加电影名称和链接的功能,添加后在微信前台能自动读取显示.开发步骤:1.由于是给后台添加一个增加电影及电影链接的功能,所以控制器在Admin下.在路径 App ...

  7. EasyUI datagrid 格式化显示数据

    http://blog.163.com/ppy2790@126/blog/static/103242241201512502532379/ 设置formatter属性,是一个函数,格式化函数有3个参数 ...

  8. tmux 快捷键

    ctrl+b , 修改窗口名称 ctrl+b ' 快速按名字切换窗口 ctrl+b w 列出窗口列表 Ctrl+b 激活控制台:此时以下按键生效 系统操作 ? 列出所有快捷键:按q返回 d 脱离当前会 ...

  9. 浅谈php对api开发的作用

    最近正在做一个手机APP的服务端API开发,虽然是基于Ruby on Rails的,做的也不太专业,不过大致相通,希望能够给你一些启发. 首先,如果是比较简单的手机APP,例如新闻客户端这样的不会涉及 ...

  10. Applying Eigenvalues to the Fibonacci Problem

    http://scottsievert.github.io/blog/2015/01/31/the-mysterious-eigenvalue/ The Fibonacci problem is a ...