Delphi 自己收藏

来源:互联网 发布:用java编写空心菱形 编辑:程序博客网 时间:2024/05/16 23:38

[KeyWord:Delphi,Ado,Access]
[
 ado.ConnectionString:='DBQ=DBpath'+';DRIVER={Microsoft Access Driver (*.mdb)};Uid=Admin;pwd=_C1b9B6G!6'
]
[KeyWord:Delphi,TStream,FileReadWrite]
[
  procedure TForm1.btnReadFileClick(Sender: TObject);
var
  FileStream:TfileStream;
  MyWriter:TWriter;
  i:integer;
  strPath:string;
begin
  strPath:='d:/test.txt';
  FileStream:=TfileStream.Create(strPath,fmOpenWrite);
  MyWriter:=Twriter.Create(fileStream,1024) ;
  MyWriter.WriteListBegin;
  for i:=0 to memo1.Lines.Count-1 do
    myWriter.WriteString(trim(memo1.Lines[i])+chr(13)+chr(10) );
  MyWriter.WriteListEnd;
  FileStream.Seek(0,sofrombeginning);
  Mywriter.Free;
  FileStream.Free;
  ShowMessage('ok');  
 
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream:TfileStream;
  MyReader:TReader;
  i:integer;
  strPath:string;
begin
  strPath:='d:/test.txt';
  FileStream:=TfileStream.Create(strPath,fmOpenRead);
  MyReader:=TReader.Create(fileStream,1024);
  memo1.Lines.Clear; 
  Myreader.ReadListBegin ;
  while not MyReader.EndOfList  do
    begin
    memo1.Lines.Add(MyReader.ReadString);
    end;
   myReader.ReadListEnd;
   MyReader.Free;
   FileStream.Free;
   ShowMessage('okok');
end;

procedure TForm1.btnReadPicClick(Sender: TObject);
Var
  Source,TarGet:TfileStream;
  MyFileSize:integer;
  strFN,strFN2:string;
begin
  strFN:='d:/logo.jpg';
  strFN2:='d:/test.dat';
  Source:=TfileStream.Create(strFN,fmOpenRead);
  TarGet:=TfileStream.Create(strFN2,fmOpenWrite);
  TarGet.Seek(0,sofromEnd);
  TarGet.CopyFrom(source,0);
  MyFileSize:=Source.Size;
  TarGet.WriteBuffer(MyfileSize,sizeof(MyfileSize));
  TarGet.Free;
  Source.Free;
  ShowMessage('ok');
end;

procedure TForm1.WritePicClick(Sender: TObject);
  Var
  Source,TarGet,f:TfileStream;
  MyFileSize,iSize:integer;
 
  strFN,strFN2,strFN3:string;
begin
  strFN:='d:/1.dat';
  strFN2:='d:/test.dat';
  strFN3:='d:/LOGO.JPG';
  f:=TFileStream.Create(strFN3,fmOpenRead);
  iSize:=f.Size;
  Source:=TfileStream.Create(strFN2,fmOpenRead);
  TarGet:=TfileStream.Create(strFN,fmOpenWrite);
  TarGet.Seek(iSize,soFromBeginning);
  TarGet.CopyFrom(source,iSize);
  TarGet.WriteBuffer(iSize,sizeof(iSize));
  TarGet.Free;
  Source.Free;
  ShowMessage('ok');
 
end;
]
[KeyWord:Delphi,Dll,CreateUse]
[
  { Create Dll}
 library ProjDll;
 uses
  SysUtils,
  Classes,Dialogs;
  {$R *.res}
 function functionname():type;stdcall;
  begin
 end;
 procedure procedurename():type;stdcall;
  begin
 end;

 exports
   functionname;
  procedurename;

   begin

   end.
  {Use Dll}
   procedure procedurename():type;
  type
    Tfname:=function():type;stdcall;
   Tpname:=procedure():type;stdcall;
  var
    H:Thandle;
   fname:Tfname;
  begin
    H:=LoadLibrary('dllname');
   @fname:=GetProcAddress(H,'fname');
   //User fname
   FreeLibrary(H)
   

   end;
]
[KeyWord:Delphi,Api,RunProgram]
[
   ShellExecute();
]
[KeyWord:Delphi,Word,Doc]
[
  Unit:Word2000, OleServer;
 component :
 WordApp: TWordApplication;
  WordDoc: TWordDocument;
  WordApp.Documents.open()
 WordDoc.ConnectTo(WordApp.Documents.Item(DocInx));
 WordApp.Visible:=true;
  WordDoc.Tables.Item(1).Cell(4,1).range.text:='你好科学';  
  WordDoc.Tables.Item(1).Rows.Add(emptyparam);
  finally
  if Assigned(WordDoc) then                         
  begin
      WordDoc.Close;
      WordDoc.Disconnect;
      WordDoc.Free;
      WordDoc := nil;
  end;
 if Assigned(WordApp) then                       
      WordApp.Quit;
      WordApp.Disconnect;
      WordApp.Free;
      WordApp := nil;
  end;

]
[KeyWord:Delphi,Excel,xls]
[
    Unit:Excel2000, OleServer,comobj;
  var
  sheet,XLApp,workbook : variant;
  iRow,MaxRow,i:integer;
  begin
  //screen.Cursor:=crHourGlass; 

    //创建对象
    XLApp:=createOleObject('Excel.Application');
    XLApp.displayAlerts:=false;
    XLApp.ScreenUpdating:=false;
    XLApp.WorkBooks.Add('d:/Book1.xls');
    workbook := XLApp.workbooks[1];
    sheet:=workbook.worksheets[1];
    XLApp.ActiveCell.SpecialCells(xlLastCell).Select;
    maxRow:=XLApp.ActiveCell.Row;
    ShowMessage(intTostr(maxrow));
    for i:=2 to maxRow do
       ShowMessage(sheet.cells[i,1]);
  end;


]
[KeyWord:Display,MH]
[
function GetDisplayFrequency: Integer;
var
  DeviceMode: TDeviceMode;
// 这个函数返回的显示刷新率是以Hz为单位的
begin
  EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
  Result := DeviceMode.dmDisplayFrequency;
end;


]
[KeyWord:Mouse,Notitle,Max,Min]
[

const
SC_DRAGMOVE:Longint=$F012;
begin
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,SC_DRAGMOVE,0);
]
[KeyWord:File,TextFile,AssignFile,Append]
[
 //Open a file,Append content
 procedure WriteErrInfo(strErrInfo:string);
var strFileName:string ;
    F:TextFile;
begin
   strFileName:=ExtractFilePath(application.ExeName)+'ErrLog.txt';
   AssignFile(F,strFileName);
   Append(F);
   WriteLn(F,strErrInfo);
   Close(F);
end;
]
[KeyWord:GetCount,Letter]
[
//return Count ,strMark in strV
//must Give strV,strMark
function GetMarkCount(strV,strMark:string):integer;
var i,count:integer;
begin
   i:=pos(strMark,strV);
   Count:=0;
   while i<>0 do begin
      Delete(strV,1,i);
      i:=pos(strMark,strV);
      count:=count+1;
   end;
   Result:=Count;
end;
]
[KeyWord:array,Mark,Split]
[
//Split strV to array
//strV the splited string;
//strMark the spliting mark
//aryTemp the Value
//Can Use 'GetMarkCount()' firstly
//then use SetLength() difine array;
//put aryTemp into procedure
procedure SplitToAry(strV,strmark:string;var aryTemp:array of string);
var pos1,i:integer;
    aryLen:integer;
begin
   //先赋值为空
  //ShowMessage(intTostr(high(aryTemp)));
   for i:=0 to high(aryTemp) do
       aryTemp[i]:='';

   //取得第一分割符的位置
   pos1:=pos(strMark,strV);
   //第一个元素的值
   //strmark为中文字符
   aryTemp[0]:=Copy(strV,1,pos1+1);
   //为strmark为中文字符
   //aryTemp[0]:=Copy(strV,1,pos1-1);
   i:=1;
   //如果有分割符号则删除前面的字符
   //当i大于数组下标则退出循环
   //如果分割符不是最后一个字符
   //则把最后的字符串存入最后一个元素
   while pos1<>0 do begin
       //strMark为中文字符
       delete(strV,1,pos1+1);
       //为E文字符
       //delete(strV,1,pos1+1);
       strV:=trim(strV);
       pos1:=pos(strmark,strV);
       if i>high(aryTemp) then
          break;
       //strmark为中文字符
       if copy(strV,1,pos1+1)<>'' then begin
         aryTemp[i]:=Copy(strV,1,pos1+1);
         i:=i+1;
       end;
       //strmark为E文字符
       {
      
        if copy(strV,1,pos1-1)<>'' then begin
         aryTemp[i]:=Copy(strV,1,pos1-1);
         i:=i+1;
       end;
       }

   end;
  if strV<>'' then
      aryTemp[high(aryTemp)]:=strV;
 
end;

 

]
[KeyWord:Close,Message,SendMessage,exe]
[
 SendMessage(Handle,WM_CLOSE,0,0);
]
[KeyWord:Api,Exe,Window]
[
 FindWindowEx()
 //Find a window of exe
 FindWindow()
 //same
 WinExec();
 //Run a  exe programer
 windows.SetParent()
 //set a window into another window for son window
 SetWindowpos()
 // play a window in position

]
[KeyWor:pointer,^,@,Address]
[
 var p:^integer //p is a pointer pionted  integer
     x:integer;
begin
   p:=@x //Get x's Address ,give it to p
   p^:=100
   //x=100

end;


]
[KeyWord:display,HZ,Screen,EnumDisplaySettings,
 ChangeDisplaySettings
]
[
 procedure TForm1.Button1Click(Sender: TObject);
var
   lpDevMode: TDeviceMode;
begin
    //改回原来的设置
  EnumDisplaySettings(nil, Cardinal(-1),lpDevMode);
    lpDevmode.dmPelsWidth:=x;
    lpDevmode.dmPelsHeight:=y;
    lpDevMode.dmDisplayFrequency:=displayHZ;
    ChangeDisplaySettings(lpDevMode,0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  DeviceMode: TDeviceMode;
// 这个函数返回的显示刷新率是以Hz为单位的
begin
  //取得原来的分辨率,刷新率
  EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
  DisplayHZ := DeviceMode.dmDisplayFrequency;
  x:=Screen.Width;
  y:=Screen.Height;
end;

procedure TForm1.FormShow(Sender: TObject);
var
   lpDevMode: TDeviceMode;
begin
   //改变改变分辨率
   lpDevmode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
   lpdevmode.dmPelsWidth:=800;
   lpdevmode.dmPelsHeight:=600;
   ChangeDisplaySettings(lpDevMode,0)
end;
]
[KeyWord:Delphi,Dll,Filter,IIS,IIS Apllcation
 GetFilterVersion,HttpFilterProc
 ]
[
 //注册版本以及事件信息
function GetFilterVersion(Var pVer:THTTP_FILTER_VERSION):BOOL;stdcal
begin
  pVar.dwFlags:=( SF_NOTIFY_NONSECURE_PORT or
                  SF_NOTIFY_SEND_RAW_DATA or
                  SF_NOTIFY_ORDER_DEFAULT  or
                  SF_NOTIFY_END_OF_REQUEST //$80
                )
//登记处理事件
//安全端口,发送数据,缺身认证,结束请求
pVer.dwFilterVersion:=HTTP_FILTER_REVISION;
//过滤器版本描述
pVer.lpszFilterDesc[0]:='A';perVer.lpszFilterDesc[1]:=#0;
//The location in which to store a short string description
//of the ISAPI filter application
//过滤器的描述
Result:=true;
//返回真
end;

function HttpFilterProc(var pfc:THTTP_FILTER_CONTEXT;
         Notificationtype:DWORD;pvNotification:Pointer
     ):DWORD;stdcall;
var
p:PHTTP_FILTER_RAW_DATA;
//一个PHTTP_FILTER_RAW_DATA型的结构指针
i:integer;
pc:pchar;
begin
  if Notificationtype=SF_NOTIFY_END_OF_REQUEST then
    begin
        //如果时间为结束请求,则存贮上下文信息的指针为空
    pfc.pFilterContext:=nil;
     end
 else begin
     //指向单前事件对应数据的指针
   p:=PHTTP_FILTER_RAW_DATA(Notificationtype);
   // pvInData [in] A pointer to the data buffer (input or output).
   pc:=p^.pvIndata;
   //pfc.pFilterContext
   // A pointer to be used by the filter for any context
   //information that the filter wants to associate with
   //this request. Any memory associated with this request
   //can be safely freed during the SF_NOTIFY_END_OF_NET_SESSION notification.
   case integer(pfc.pFilterContext) of
     0://第一次调用,要检查mime
       begin
         pfc.pFilterContext:=pointer(2);
         //一个指向2的指针
         i:=0;
         //cbInBuffer [in] The size of the buffer pointed to
         //by pvInData.
         Whilte i<p^.cbInBuffer-4-1 do begin
           if (pc[i]='/') and (pc[i+1]='h') and(pc[i+2]='t') and (pc[i+3]='m') then
            begin  
               pfc.pFilterContext:=pointer(1);
               break;
            end;
            inc(i);//i:=i+1
         end;
       end;
      1:begin
          pfc.pFilterContext:=Pointer(3);
          //p^.pvIndata;
          //gb2big(pc,p^.cbInBuffer);
          //p^.pvIndata:=pchar(GB2Big5(p^.pvIndata);
          //转化内码
                  
        end;
      3:begin
          pfc.pFilterContext:=pointer(1);


        end;
    end;
  end;
  Result:=SF_STATUS_REQ_NEXT_NOTIFICATION;
  //总是返回成功,并且如果有其他过滤器的话,还将继续调用
 // The next filter in the notification chain should be called.
end;
]
[KeyWord:SqlServer,Sql,TableName]
[
 //Get table's name
 select name from sysobjects where xtype='u'

]
[KeyWord:Win98,System,sfc]
[
 //sfc command
 //run->sfc
 //can check system file ,then repire it;
 sfc

]
[KeyWord:Delphi,Form]
[
 //透明窗体
 1.新建一个工程;
 2.在窗口上放置一个Image控件,并调入一个图片,如图 ,
  Image1.Autosize:=True;
 3.Form1.AutoSize:=True;Form1.OldCreateOrder:=True;
  Form1.TransparentColor:=True; Form1.TransparentColorValue:=ClWhite
 (由于这个图片的边缘是白色的吧);
 4.好了,运行就能看到一个透明的窗口了,如果将Form1.BorderStyle设置
  成BsNone,就是异形窗口了。


]
[KeyWord:JavaScript,js,select,option]
[
 //alert option's value
   var i=form.select.selectedIndex;
   //for (i;i<form.selecte.length;i++)
   alert(form.selelect.options[i].text)
]
[Keyword:delphi,ini,INI,file,Tstrings]
[
  Unit:inifils
  var
  myIni:TiniFile;
  //strv:String;
  strV:Tstrings;
  begin
  //must Create by the way
  strV:=TStringList.Create ;
  myIni:=Tinifile.Create('D:/myIni.ini');
  //strV:=myIni.ReadString('Server','Address','');
  // myIni.ReadSection('Server',strV);
  //myIni.ReadSections(strV);
  myIni.ReadSectionValues('Server',strV);
  // ShowMessage(strV);
  ShowMessage(strV.Text);
  strV.Free;
  myIni.Free;
  end;


]
[KeyWord:delphi,property,set,get,Set,Get]
[
 unit MyClass;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, Menus;

 type
    TmyClass=class
    private
      myValue:string;
      function GetStrcon():string;
      procedure SetStrCon(const Value:string);
    public
       property StrCon: string read GetStrCon write SetStrcon;
 end;
 var
    strC:string;
 
 implementation
 uses unit3;
 
 procedure TmyClass.SetStrCon(const Value:string);
 begin
   myValue:=Value;
 end;
 
 function TmyClass.GetStrcon():string;
 begin
   result:=myValue;
 end;


]
[KeyWord:delphi,format,string]
[
首部  function Format(const Format: string; const Args: array of const): string; $[SysUtils.pas
功能  返回按指定方式格式化一个数组常量的字符形式
说明  这个函数是我在Delphi中用得最多的函数,现在就列举几个例子给你个直观的理解
"%" [索引 ":"] ["-"] [宽度] ["." 摘要] 类型
Format('x=%d', [12]); //'x=12' //最普通
Format('x=%3d', [12]); //'x= 12' //指定宽度
Format('x=%f', [12.0]); //'x=12.00' //浮点数
Format('x=%.3f', [12.0]); //'x=12.000' //指定小数
Format('x=%.*f', [5, 12.0]); //'x=12.00000' //动态配置
Format('x=%.5d', [12]); //'x=00012' //前面补充0
Format('x=%.5x', [12]); //'x=0000C' //十六进制
Format('x=%1:d%0:d', [12, 13]); //'x=1312' //使用索引
Format('x=%p', [nil]); //'x=00000000' //指针
Format('x=%1.1e', [12.0]); //'x=1.2E+001' //科学记数法
Format('x=%%', []); //'x=%' //得到"%"
S := Format('%s%d', [S, I]); //S := S + StrToInt(I); //连接字符串
参考  proceduer SysUtils.FmtStr
例子  Edit1.Text := Format(Edit2.Text, [StrToFloatDef(Edit.3.Text, 0)]);
 


]
[KeyWord:sql,rename,cloumn]
[EXEC sp_rename 'mytable.[id]', 'myid', 'COLUMN']
[KeyWord:sql,delete,table,truncate]
[TRUNCATE TABLE company16400]
[KeyWord:sql,cursor]
[
 declare CursorName cursor For
   Select statement
 
 Open CursorName
 FETCH NEXT FROM CursorName
       INTO @myVaialbe
 
 WHILE @@FETCH_STATUS = 0
   begin
    FETCH NEXT FROM CursorName
       INTO @myVaialbe

 

  end;

]
[sql,proc,procedure,create]
[
 CREATE PROC[DURE] procedure_name [;number]
     [@parameter_name ][OUTPUT] [,_n] ]
     [WITH {RECOMPILE | ENCRYPTION}]
     [FOR REPLICATION]
  AS
 Number是用来对相同名字的过程进行分组的整数。分组是将所有的过程通过drop procedure语句组合到一个分组中。
 @parameter_name指定参数的名称。
 RECOMPILE表示每次执行过程时都要进行编译。
 ENCRYPTION表示过程的文本在“syscomments”表中要加密。
 FOR REPLICATION表示过程不能在提交服务器上执行。
]
[KeyWord:sql,trigger,database,db,sqlserver,create]
[
CREATE TRIGGER
CREATE TRIGGER trig2
ON authors
FOR INSERT, UPDATE
AS
  DECLARE @fax varchar(12)
  SELECT @fax = phone   
  FROM authors
GO
]
[Keyword:Delphi,String,Int,StrToIntDef;]
[
  n=StrToIntDef(String,defalutNumerber);
  //n=StrToIntDef('12345',0)
  //n=12345
  //n=StrToIntDef('ttt',0)
  //n=0

]

[keyWord:Delphi,StringGrid,stringgrid]
[
 var
  R: TRect;
  org: TPoint;
begin
  with Sender as TStringgrid do begin
      perform(WM_CANCELMODE, 0, 0);
      R := CellRect(Acol, Arow);
      org := Self.ScreenToClient(ClientToScreen(R.topleft));
      with cmb do begin
        setbounds(org.X, org.Y, r.right - r.left, height);
        itemindex := Items.IndexOf(Cells[acol, arow]);
        Show;
        BringTofront;
        SetFocus;
        DroppedDown := true;
      end;
    end;
 
  TempRect:=StringGrid.CellRect(ACol,ARow);
  TempRect.Left:=TempRect.Left+StringGrid.Left;
  TempRect.Right:=TempRect.Right+StringGrid.Left;
  TempRect.Top:=TempRect.Top+StringGrid.Top;
  TempRect.Bottom:=TempRect.Bottom+StringGrid.Top;
  with Cmb do
  begin
    Left:=TempRect.Left+1;
    Top:=TempRect.Top+1;
    Width:=(TempRect.Right+1)-Left;
    Height:=(TempRect.Bottom+1)-Top;
    Visible:=True;
    SetFocus;
  end;
  

 


]
[ongettext()事件的位置
双击adoquery,出现方框,右键add all fields
然后选择一个field,其事件里有gettext()
写上即可
]
[KeyWord:Delphi,Pic,pic]
[
 ImgImportData.Parent.DoubleBuffered:=true;
]
[KeyWord:Delphi,Resource,Res]
[
//Create Tmyrc.rc
BG RCDATA "BG.JPG"
BG_Blue RCDATA "BG_Blue.jpg"
BG_Yellow RCDATA "BG_Yellow.jpg"
//Builder
//brcc32.exe Tmyrc.rc
//Get Tmyrc.res
//In Delphi
{$R *.dfm}
{$R Tmyrc.Res}
var
  S:TStream;
  P:TjpegImage;
begin
  S:=TResourceStream.Create(0,'BG_Yellow',RT_RCDATA);
  P:=TJpegImage.Create;
  p.LoadFromStream(S);
  image1.Picture.Assign(p);
  p.Free;
  S.Free;


]
[Keyword:Delphi,任务栏,停靠]
[
 Protected
  procedure CreateParams(Var Param:TCreateParams);override;



procedure T****Form.CreateParams(Var Param:TCreateParams);
begin
  Inherited CreateParams(Param);
  Param.wndParent:= GetDesktopWindow;
end;

procedure CreateParams(var Params: TCreateParams);override;

procedure TMyForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_APPWINDOW);

protected
    procedure CreateParams(Var Params: TCreateParams); override;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := GetDesktopWindow;
end;

]
[keyWord:Delphi,字符串,匹配]
[
function TfrmCatSearch.IsInclude(strBlank,strV:string):bool;
var
  strMark,strTemp:string;
  blnInclude:bool;
  nPos:integer;
begin
  strMark:=' ';
  nPos:=pos(strMark,strBlank);
  blnInclude:=true;
  while nPos>0 do
   begin
     strTemp:=Copy(strBlank,1,nPos);
     blnInclude:=blnInclude and (pos(trim(strTemp),strV)>0);
     if not blnInclude then
       begin
          result:=false;
        end;
     Delete(strBlank,1,nPos);
     nPos:=pos(strMark,strBlank)
  end;
  if strBlank<>'' then
     result:=blnInclude and (pos(trim(strBlank),strV)>0)
  else
     result:=blnInclude;
end;

]
[delphi,换行,drawtext]
[
  cmb.Canvas.FillRect(Rect);
  DrawText(cmb.Canvas.Handle,pchar(str),-1,Rect,DT_WORDBREAK);
]
[delphi,combobox,stye]
[
  csDropDownList,项目不能写
  csownerDrawVariable ,改变item大小
  DrawItem    item内容
  MeasureItem 设置item高度

]
[delphi,combobox,选择子项目
procedure Tform1.cmbWndProd(var Message:TMessage);
begin
   if Message.Msg=WM_CTLCOLORLISTBOX then
     begin
       nSelect:=SendMessage(cmb.Handle, CB_GETCURSEL, 0, 0);
       if nSelect>0 then
       label1.Caption:=StringReplace(s.Strings[nSelect],'[',
       '['#13#10,[rfReplaceAll]);
     end
   else
     mycmdWndProc(Message);
end;

]
[keyWord:delphi,draw,pic,bmp,stringgrid]
[
   if Arow=0 then
     DrawTitle
  else begin
     strV:=StringGrid.Cells[Acol,Arow];
     bmp:=TbitMap.Create;
     bmp.LoadFromFile('D:/1.bmp');
     StringGrid.Canvas.FillRect(Rect);
     StringGrid.Canvas.Draw(Rect.left,Rect.top,bmp);
     StringGrid.Canvas.Brush.Style:=bsClear;
     StringGrid.Canvas.TextOut(Rect.Left+2,Rect.Top+2,strV);

  end;

]
[keyWord:delphi,透明,richedit,控件]
[
Procedure ClearRichEdit(var Message:TMessage);
form_create
    //Self.RichedtWnd:=Self.RichEdit.WindowProc;
  //Self.RichEdit.WindowProc:=Self.ClearRichEdit;
  //SetWindowLong(RichEdit.Handle, GWL_EXSTYLE,
  //GetWindowLong(RichEdit.Handle,GWL_EXSTYLE) or WS_EX_TRANSPARENT);
procedure TfrmDetail.ClearRichEdit(var Message:TMessage);
begin

     if Message.Msg= WM_ERASEBKGND  then
       Message.Result:=1
   else if (Message.Msg =  CN_CTLCOLORMSGBOX )
           or(Message.Msg = CN_CTLCOLORSTATIC ) then
         begin
             bb:=null;
             Message.result:=bb
         end
    else
      Self.RichedtWnd(Message);

end;


]
[keyword:delphi,中文字符]
[
  strV:=Copy(edit1.Text,3,1);
  if IsDBCSLeadByte(ord(strV[1])) then
     ShowMessage('is')
  else
     showMessage('not is');


]
[keyWord:delphi,QRT,报表,折行]
[
//在数据源上折行
procedure TForm1.ADOTable1EnterpriseGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
var
  strV:wideString;
begin
  strV:=Sender.DataSet.FieldValues['enterPrise'];
  insert(#13#10,strV,10);
  text:=strV; 

end;


]
[]
[
 $00F4F0F2


判断Grid是否有滚动条?

if (GetWindowlong(Stringgrid1.Handle, GWL_STYLE) and WS_VSCROLL) <> 0 then

ShowMessage('Vertical scrollbar is visible!');

if (GetWindowlong(Stringgrid1.Handle, GWL_STYLE) and WS_HSCROLL) <> 0 then

ShowMessage('Horizontal scrollbar is visible!');
 
 

   StringGrid的AutoSize   
   
...autosize a StringGrid-Column to fit its content?

{1.}

procedure SetGridColumnWidths(Grid: TStringGrid;

const Columns: array of Integer);

{

When you double-Click on a Column-Header the Column

autosizes to fit its content

Bei Doppelklick auf eine fixierte Spalte passt sich

die Spaltenbreite der Textgr?sse an

}

procedure AutoSizeGridColumn(Grid: TStringGrid; column, min, max: Integer);

{ Set for max and min some minimal/maximial Values}

{ Bei max and min kann eine Minimal- resp. Maximalbreite angegeben werden}

var

i: Integer;

temp: Integer;

tempmax: Integer;

begin

tempmax := 0;

for i := 0 to (Grid.RowCount - 1) do

begin

temp := Grid.Canvas.TextWidth(Grid.cells[column, i]);

if temp > tempmax then tempmax := temp;

if tempmax > max then

begin

tempmax := max;

break;

end;

end;

if tempmax < min then tempmax := min;

Grid.ColWidths[column] := tempmax + Grid.GridLineWidth + 3;

end;

procedure TForm1.StringGrid1DblClick(Sender: TObject);

var

P: TPoint;

iColumn, iRow: Longint;

begin

GetCursorPos(P);

with StringGrid1 do

begin

P := ScreenToClient(P);

MouseToCell(P.X, P.Y, iColumn, iRow);

if P.Y < DefaultRowHeight then

AutoSizeGridColumn(StringGrid1, iColumn, 40, 100);

end;

end;

{************************************************}

{2.}

procedure TForm1.Button1Click(Sender: TObject);

{ by P. Below }

const

DEFBORDER = 8;

var

max, temp, i, n: Integer;

begin

with Grid do

begin

Canvas.Font := Font;

for n := Low(Columns) to High(Columns) do

begin

max := 0;

for i := 0 to RowCount - 1 do

begin

temp := Canvas.TextWidth(Cells[Columns[n], i]) + DEFBORDER;

if temp > max then

max := temp;

end; { For }

if max > 0 then

ColWidths[Columns[n]] := max;

end; { For }

end; { With }

end; {SetGridColumnWidths }
 ]
 [keyWord:delphi,file,文件,文件属性]
 [
   try
   nAttr:=FileGetAttr(FileName);
   if (nAttr and faReadOnly)=faReadOnly then
     begin
      FileSetAttr(FileName,0);
      Result:=1;
     end
   else
     Result:=1;
   except
     Application.MessageBox('无法修改只读属性,错误编号 006',pchar(WaringTitle));
     Result:=0;
     exit;
  end;
]
[keyword:delphi,属性;属性应用,设置]
[
 unit TClass;

interface
uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;
type
   Ttest=Class
   constructor Create();
   protected
      RCa,Wca:string;
   public
      name:string;
      procedure ChangeT(const Value:string);
      property  Ca:string Read RCa Write ChangeT;
end;
   
implementation
constructor Ttest.Create();
begin
   RCa:='test now';

end;
procedure Ttest.ChangeT(const Value:string);
begin
  RCa:=value+'你好科学';
end;

end.
]
[keyWord:delphi,printscreen,屏蔽截图]
[
    id4: Integer;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
procedure TForm1.FormCreate(Sender: TObject);
begin
  
   id4 :=GlobalAddAtom('Hotkey4');
   //function adds a character string to the global atom table and returns a
   //unique value (an atom) identifying the string.
   RegisterHotKey(Handle, id4, 0,VK_SNAPSHOT);
   //function defines a hot key for the current thread.
end;
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey=id4 then
    ShowMessage('Print Screen was pressed !');
  inherited;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(Handle,id4);
end;
]
[keyword:delphi,db,jpg,数据库,图片]
[
var
  S:TMemoryStream;
  jpg:TjpegImage;

begin
  S:=TmemoryStream.Create;
  TBlobField(DS.DataSet.FieldByName('ImgContent')).SaveToStream(S);
  s.Position:=0;
  jpg:=TjpegImage.Create;
  jpg.LoadFromStream(S);
  image1.Picture.Assign(jpg);

 

  Var
  logoFileName,T:string;
  ImgPath:string;
  i:integer;
begin
  T:=edtDir.Text;
  for i:=0 to DS.DataSet.RecordCount-1   do
    begin
      ImgPath:=DS.DataSet.FieldValues['ImgPath'];
      LogoFileName:=T+ImgPath;
      if FileExists(LogoFileName) then
         begin
           DS.DataSet.Edit;
           TBlobField(DS.DataSet.FieldByName('ImgContent')).LoadFromFile(LogoFileName);
           DS.DataSet.Post;
         end;
       DS.DataSet.MoveBy(1);
    end;
    ShowMessage('Over');

 

 

]
[keyword:asp,class]
[
Dim MyToolbox
Set MyToolbox = New CToolbox
Response.Write "UserName: " & MyToolbox.UserName & "<BR>" & vbCrLf
Response.Write "UserPhone: " &  MyToolbox.UserPhone & "<BR>" & vbCrLf
Set MyToolbox = Nothing

Class CToolbox
Private m_conn, m_rs
Private m_username, m_userphone

Public Property Get UserName()
    UserName = m_username
End Property

Public Property Get UserPhone()
    UserPhone = m_userphone
End Property

Private Sub Class_Initialize()
    Set m_conn = Server.CreateObject("ADODB.Connection")
    m_conn.ConnectionString = "Some connection string"
    m_conn.Open
    Set m_rs = Server.CreateObject("ADODB.Recordset")
    Set m_rs.ActiveConnection = m_conn
    m_rs.Open "SELECT * FROM Users WHERE userid = '" &
                        Request.ServerVariables("LOGON_USER") & "'"
    If Not m_rs.EOF Then
        m_username = m_rs.Fields("username")
        m_userphone = m_rs.Fields("userphone")
    End If
End Sub

Private Sub Class_Terminate()
    On Error Resume Next
    m_rs.Close
    Set m_rs = Nothing
    m_conn.Close
    Set m_conn = Nothing
End Sub

End Class


class TUser
 private mUserName,mUserPwd
 'public  UserName,UserPwd
 public property Get UserName()
      UserName=mUserName
 end property
 public property Let UserName(Byval value)
      mUserName=value
  end Property
 private sub Class_Initialize()
    mUserName="aerly"
    'UserPwd="123456"
 end sub

 private sub class_Terminate()
 end sub
 
end Class 
dim aUser
set aUser=new Tuser
aUser.UserName="TTT"
Response.Write("Class a.UserName:"+aUser.UserName)

 

 

]

原创粉丝点击