delphi基础知识

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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值