当前位置:编程学习 > Delphi >>

delphi难啊 高手光顾一下,解释一下行吗

PROCEDURE TMainForm.ClientWndProc(VAR Message: TMessage); VAR MyDC : hDC; Ro, Co : Word; t1,t2:integer; begin with Message do case Msg of WM_ERASEBKGND: begin { MyDC := TWMEraseBkGnd(Message).DC; t1:=ClientHeight DIV Image1.Picture.Height; t2:=ClientWIDTH DIV Image1.Picture.Width; FOR Ro := 0 TO t1 DO FOR Co := 0 TO t2 DO // co:=0; // ro:=0; BitBlt(MyDC, Co*Image1.Picture.Width, Ro*Image1.Picture.Height, Image1.Picture.Width, Image1.Picture.Height, Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY); Result := 1;} end; else Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam,lParam); end; end;
补充:private
    FClientInstance,
    FPrevClientProc : TFarProc;//这是前面的定义的 这是什么
答案:我了个去,楼上回答的是错误的。
只是定义两个变量 FClientInstance,  FPrevClientProc 为TFarProc类,并不是继承。
另外这是一个消息处理过程。
with Message do
    case Msg of
      WM_ERASEBKGND://当消息为WM_ERASEBKGND时,执行以下逻辑
        begin
{          MyDC := TWMEraseBkGnd(Message).DC;
          t1:=ClientHeight DIV Image1.Picture.Height;
          t2:=ClientWIDTH DIV Image1.Picture.Width;
          FOR Ro := 0 TO t1 DO
            FOR Co := 0 TO t2 DO
//          co:=0;
//          ro:=0;
              BitBlt(MyDC, Co*Image1.Picture.Width, Ro*Image1.Picture.Height,
              Image1.Picture.Width, Image1.Picture.Height,
              Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
              Result := 1;}
         end;
      else
         Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam,lParam);
    end;
其他:FOR Ro := 0 TO t1 DO
            FOR Co := 0 TO t2 DO
//          co:=0;
//          ro:=0; FClientInstance,
    FPrevClientProc : TFarProc;
这是继承这个 TFarProc类 1. InitPos:=Memo1.SelStart+Memo1.SelLength 

Memo1.SelStart 是memo里选中的文字的开始位置 
Memo1.SelLength 是memo里选中的文字的长度
两个加起来就是 选中文字的 结束位置

2. FoundPos:=Pos(FindDialog1.FindText,Copy(Memo1.Text,InitPos+1,Length(Memo1.Text)-InitPos));

InitPos+1 就是选中的文本之后的文本的起始位置

Length(Memo1.Text)-InitPos  memo整个文本的长度 - 选中文本的结束位置
也就是 选中的文本之后 所有的文字的长度

那么copy函数整个的返回值就是 选中文本之后的 所有文本

所以 整个函数的意思就是 查找 查找对话框中的文本 在当前选择的文本之后的文本中的位置  

比如  memo1.text 为 “abcdefg”  当前选择的文本是“b” 要查找的是“f”
FoundPos 的结果就是 4

3.Memo1.SelStart:=InitPos+FoundPos-1;
将查找到的文本选定 


关于delphi:
    我个人认为编程语言和开发工具仅仅是工具而已,最重要的是你的编程思想的继承,工具无所谓强大,他只是简化了你的某些操作而已
    对Delphi而言,它的方便之处在于快速的界面可视化设计和开源的代码,如果需要你可以很方便地继承它给你提供的VCL库为自己所用,另外就是他方便的数据库开发,因为它为你封装了数据库操作灵活方便的ADO和BDE控件,熟悉一个工具,要熟悉它的操作,快捷键,另外就是它给你提供的别的工具所没有提供的东西



 

上一个:DELPHI简单问题
下一个:delphi 求解析

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,