function postihuan(S:string;zifu,tihuan: string;shu:Integer;all:Boolean=true): string;
{替换字符串函数
S为字符串,zifu为查找字符,tihuan为替换字符,shu为定位替换字符的位置,all为真则全部替换
}
var
iPos,i:Integer;
SS:string;
begin
zifu:=trim(zifu); tihuan:=trim(tihuan); i:=0;
iPos := Pos(zifu,S);
if iPos=0 then exit;
while iPos<>0 do
begin
Inc(i);
if all then begin
SS:=SS+copy(S,1,iPos-1)+tihuan;
Delete(S,1,iPos+length(zifu)-1);
end else begin
if shu=i then SS:=SS+copy(S,1,iPos-1)+tihuan else SS:=SS+copy(S,1,iPos-1)+zifu;
Delete(S,1,iPos+length(zifu)-1);
end;
iPos := Pos(zifu,S);
if iPos=0 then break;
end;
Result:=SS+S;
end;
function quzhi(S:string;zifuq,zifuh:string;shu:integer=1):string;
{查找字符串函数
S为字符串,zifuq为查找字符前段,zifuh为查找字符后段,shu为定位第几次取值的位置}
var
iPos,oPos,i:Integer;
SS:string;
begin
i:=0;
iPos := Pos(zifuq,S);
if iPos=0 then exit;
while iPos<>0 do
begin
Inc(i);
Delete(S,1,iPos+length(zifuq)-1);
oPos := Pos(zifuh,S);
SS:=copy(S,1,oPos-1);
Delete(S,1,oPos+length(zifuh)-1);
iPos := Pos(zifuq,S);
if (iPos=0) or (oPos=0) or (i=shu) then break;
end;
Result:=SS;
end;
----------------------------------------------------------------------------------------------------------------
Delphi webBrowser焦点
webbrowserdelphivar
oldcur:tcursor;
begin
oldcur := Screen.Cursor;
screen.cursor :=crHourGlass;
OpenEnglishItinerary();
Self.FocusControl(WebBrowser1);
screen.Cursor:=oldcur;
----------------------------------------------------------------------------------------------------------------
Delphi中有没有提供判断Edit1.text中输入了多少的字符的函数??
如果没有汉字,可以用length(edit1.text)来取,
如果有汉字就用Length(WideString(Edit1.Text))
----------------------------------------------------------------------------------------------------------------
delphi ClientSocket 控件 找不到 安装ClientSocket控件
在dclsockets70.bpl里。
添加方法:
菜单component->Install Packets
按Add按钮,选择delphi目录里的bin目录下的dclsockets70.bpl,然后ClientSocket控件就会出现在Internet页上了。
---------------------------------------------------------------------------------------------------------------
ImageList32配合 sSpeedButton1水中倒影Reflected设置为true,平铺Flat设置为true。
直接安装!把源码放入库中,把dpk编译一下就好了!
----------------------------------------------------------------------------------------------------------------
当memo中的内行很多的时候,在默认的状态下是一行写到头,WordWrap 改为 true 自动转行,false 不转行。
----------------------------------------------------------------------------------------------------------------
有时候我们需要将一个listview 作为一个状态栏,将软件运行的信息输出到这个listview 中,这就要求自动滚动一下。
procedure TMainForm.lv_ULinfoChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Change in [ctText] then
begin
listview1.Selected :=lv_listview1.Items['你需要定位的行数'];
lv_listview1.Selected.MakeVisible(true);
end;
end;
EmbeddedWB.LoadFromString(MyStr);//EmbeddedWB:TEmbeddedWB;//非IE内核
ListView1焦点问题:ListView1.HideSelection:=false; //ListView1焦点问题
//Item.SubItems.text为第二列的值 , Item.Caption 为第一列值
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Odd(Item.Index) then Sender.Canvas.Brush.Color := $B9DAFF;
if Pos('萝',Item.SubItems.text)>0 then Sender.Canvas.Brush.Color := $0045FF;
end
----------------------------------------------------------------------------------------------------------------
现在我要的是 form3 的皮肤还是默认的 其他的都变
//SkinData的FormSkin事件
procedure TForm1.SkinData1FormSkin(Sender: TObject; aName: String;
var DoSkin: Boolean);
begin
if aName = 'TForm3' then
DoSkin := false;
end;
----------------------------------------------------------------------------------------------------------------
用多了WebBrowser控件就知道该控件中的内容是没办法复制的,这或多或许给我们带来一些不便,而事实上,delphi中还有许多控件也是不允许复制的,下面就简单的解决一下这个问题:
在Uses中加入Activex
在窗体的FormCreate事件中加入
oleinitialize(nil);
在窗体的FormDestroy事件中加入
oleuninitialize;
完成上面那两步之后,运行你就会发现,现在在控件中鼠标右键菜单的复制粘贴和快捷键的ctrl+c和ctrl+v已不再形同虚设……
----------------------------------------------------------------------------------------------------------------
从文件名中得到路径名,可用下面的两个函数,这两个函数有一点点微小的差别:
ExtractFilePath(FileName:String) 该函数返回路径名,其结尾字符总是“\”
ExtractFileDir(FileName:String) 该函数同样返回路径名,但不包括结尾的字符“\”,除非返回的路径是根目录。
如:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ExtractFileDir(Application.Exename)); // 如: c:\temp
ShowMessage(ExtractFilePath(Application.Exename)); // 如: c:\temp\
end;
str:=GetCurrentDir();
如果要得到系统的当前目录使用Path := GetCurrentDir;
如果要得到程序的当前目录使用Path := ExtractFilePath( Application.ExeName ); str:=GetCurrentDir();
如果要得到系统的当前目录使用Path := GetCurrentDir;
如果要得到程序的当前目录使用Path := ExtractFilePath( Application.ExeName );
//读取TXT
procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
S: string;
begin
if OpenDialog1.Execute then { Display Open dialog box }
begin
AssignFile(F, OpenDialog1.FileName); //绑定文件到文件类型变量
Reset(F);//打开一个存在的文件,另Rewrite创建文件并打开
while not eof(F) do begin
Readln(F, S);
Memo1.Lines.Add(S);
end;
CloseFile(F);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName) + 'aa.txt');
end;
//写入TXT
Procedure NewTxt(FileName:String;neir:String);
Var
F : Textfile;
Begin
if fileExists(FileName) then DeleteFile(FileName); {看文件是否存在,在就删除}
AssignFile(F, FileName); {将文件名与变量 F 关联}
ReWrite(F); {创建一个新的文件并命名为 ek.txt}
Writeln(F, neir);
Closefile(F); {关闭文件 F}
End;