|
摘要:var I, D, M: Integer; F, A, B, C: Real;begin //I := 4 / 2; //错误的用法 //I := 3 div 2; //正确的用法 //I := 4 div 2; //正确的用法 F := 3.2 div 2.3; //错误的用法 //F := 3.2 / 2.3; //正确的用法end;
阅读全文
摘要:在编写过程中如果入到传入的参数是动态数组的话可以这么做type TPoints = array of TPoint;Points: TPoints;SetLength(Points, 3); Points[0].X := 150; Points[0].Y := 150; Points[1].X := 240; Points[1].Y := 50; Points[2].X := 320; Points[2].Y := 200;源码如下:unit UForm_Image8;interfaceuses Windows, Messages, SysUtils, Variants, Classes, G
阅读全文
摘要:1. 画两次不就可以了。。第一次画大的,第二画小的。。procedure TForm1.Button1Click(Sender: TObject); begin with Canvas do begin Rectangle(100,100,300,300); Rectangle(150,150,250,250); Brush.Color := clRed; FillRect(rect(150,150,250,250)); end; end;2.先创建出HRGH的区域,再用CombineRgn获取环带的区域,之后填充: var a, b, c: HRGN; hbr: HBRUSH; begin
阅读全文
摘要:CRect 就是一个普通的数据结构(类?)HRGN是资源句柄(由操作系统管理,数量有限)1 构造出异形HRGN(这个HRGN必须有效,并且不为空)2 SetWindowRgnCRect顾名思义,只是个矩形HRGN是区域,有各种api函数可以创建任意形状的区域创建区域后,使用SetWindowRgn改变窗体区域 不规则窗口在Windows下有两种方式可以实现,一种是用Region,一种是用Layered Window.看样子你用的是第一种.用这种方式,你只要生成一个适合的Region并SetWindowRgn就可以了.你说用CRgn是对的,而直接使用HRGN不对,那应该是你用的不对.再仔细检查一
阅读全文
摘要:Function NewColor(color1,color2:Tcolor):TColor; type TRGB=packed record R:Byte ; G:Byte ; B:Byte ; A:Byte ; end ; var p1:^TRGB ; p2:^TRGB ; P3:^TRGB ; begin Result := color1 ; P1 :=@color1 ; P2 :=@color2 ; P3 := @Result ; p3.R := (P1^.R+P2^.R) div 2 ; p3.G := (P1^.G+P2^.G) div 2 ; p3.B := (P1^.B+P2^
阅读全文
摘要:TShape组件的属性,事件和方法TImage组件的属性,事件和方法Paintbox组件的属性,事件和方法使用鼠标事件的绘图第 9章 图像图形应用编程9.1 图形应用编程本章主要是讲解图形图像对象的概念以及如何在程序运行时绘制图形图像等内容,主要是通过一些例子来讲解 Delphi 7.0 对图形图像强大的处理功能。在 Delphi 7.0中,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,得到不同风格的图形。另外,通过鼠标事件的定义,可以方便地设计图形绘制程序。9.1.1 画布对象属性在图形应用编程中,最常
阅读全文
摘要:RzComboBox_ProjectionType.Items.Clear; RzComboBox_ProjectionType.AddItemValue('三角形','0'); RzComboBox_ProjectionType.AddItemValue('原形','1'); RzComboBox_ProjectionType.ItemIndex := 0;procedure TRzComboBox.ClearItemsValues;begin Items.Clear; Values.Clear;end;procedure TR
阅读全文
摘要:procedure TForm1.FormCreate(Sender: TObject);begin pb := TPaintBox.Create(Self); pb.Parent := Self;end;procedure TForm1.Button1Click(Sender: TObject); begin pb.Canvas.Pen.Color := clBlue; pb.Canvas.Brush.Color := clRed; pb.Canvas.Rectangle(0,0,50,50);end;
阅读全文
摘要:1.在窗体的public里写procedure WmMouseSheel(var msg:TWMMOUSEWHEEL);message WM_MOUSEWHEEL;函数。具体的实现部分如下: procedure TMapChildFrm.WmMouseSheel(var msg: TWMMOUSEWHEEL);var pt: TPoint;begin GetCursorPos(pt); //{这是获取的相对于屏幕的坐标} pt := ScreenToClient(pt); //{转换成本地坐标} if (pt.X>ScrollBox1.Left) and(pt.X<ScrollBo
阅读全文
摘要:前段时间在论坛里看了一篇关于剖析VCL结构的文件,其中不少高手的开怀畅谈让小辈们心里感觉非常的痛快!看完余又觉得不能光看,也该将自己的心得拿出来与大家分享,于是就边夜翻看VCL源码,终于将VCL如何实现DragDrop功能的过程弄个“基本明白”,其中可能会有不当之处,再加上小弟的文学水平也只是初中毕业,有些地方也许会表达不当,但其意思也基本上八九不离十了,故也请大家开怀畅言、批评指正,都是为了进步嘛!哈哈…… 虽然DragDock操作与DragDrop操作是密切相关,并且很大一部分操作是相同的,但本文暂且不讨论与DragDock有关的部分,留待下回分解或也给大家表现表现……………… 一、与Dr
阅读全文
摘要:刷新一下 PaintBox1.Refresh;procedure TForm1.Button2Click(Sender: TObject); begin PaintBox1.Canvas.MoveTo(0,0); PaintBox1.Canvas.LineTo(100,100); end;procedure TForm1.Button3Click(Sender: TObject); begin PaintBox1.Canvas.Brush.Color := clBtnFace; PaintBox1.Canvas.FillRect(PaintBox1.ClientRect);
阅读全文
摘要:Delphi 的 TForm.FormStyle 具有 fsStayOnTop 属性,但只是对其程序本身而言的,也就是说只在此应用程序本身的窗口中是前端显示的,其他的程序的窗口仍然可以覆盖此类型的窗口。这是因为此窗口的父窗口是 TApplication 。要让悬浮窗口独立的显示在屏幕前端,应在创建窗口时将其父窗口设置为"桌面"。 Form2 := TForm2.CreateParented(GetDesktopWindow); CreateParented与Create的区别?CreateParented={ParentWindow=指定的窗口句柄,create(nil)}
阅读全文
摘要:1、Invalidate介绍 void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,
阅读全文
摘要:在Delphi中,可利用类Tcanvas的CopyRect方法实现图象的放大和缩小。其功能是将源画布上的一个指定矩形区域(简称源矩形)内的象素,拷贝到目的画布上的一个指定矩形区域(简称目的矩形)中。亦可称之为象素块复制。 由CopyMode属性确定拷贝的模式。在直接拷贝模式(cmSrcCopy)下,当源矩形与目的矩形相等时,图象不变;若源矩形大于目的矩形,图象则缩小;而当源矩形小于目的矩形时,图象便被放大(在目的矩形中扩展)。源矩形与目的矩形大小之比,决定图象的缩放倍数。CopyRect方法声明如下: Procedure CopyRect(const Dest: TRect; Canvas:
阅读全文
摘要:1、运行mapx.v5.02.19安装包下的setup.exe 安装mapx5.0 安装完成后将解压mapx5crack.rar将破解文件拷贝到mapx安装目录下。2、在mapx5.0的安装目录下创建一个Maps文件夹。3、运行mapx安装目录下的GeoDictionaryManager50.exe 文件,单击...这样就能自动在maps文件夹下生成Geodict.dct 文件。4、启动delphi7.0 ,Component---Improt ActiveX 找到Mapinfo MapX V5(Version 5.0) ,单击install 安装 。5、这样将可以在ActiveX标签内看到
阅读全文
摘要:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type //定义一个事件格式,要传参数的格式 后面必须要加上of object TeacherArgnyEvent = procedure(ErrorCount: Integer) of object;typeTTeacher = class(TObject)private FStudentErrorCount: Integer; FOnTeacherArngy:
阅读全文
摘要:如何为对象进行复制呢类增加一个Assign方法,以进行对象间的复制。例如修改以上的TExample类:typeTExample = classMember1 : Integer;Member2 : Char;publicprocedure Assign(Src : TExample);end;实现该类的Assign方法如下:procedure TExample.Assign(Src: TExample);beginMember1 := Src.Member1;Member2 := Src.Member2;end;如此便可以进行TExample类实例对象间的复制varA, B : TExampl
阅读全文
摘要:举例Application: TAPPlication;构建顺序: 1、构造函数是先继承父类的,初始化父类的成员通过Inherited。 2、析构函数是先释放本对象的,然后在释放父类的成员。sconstructor TApplication.Create(AOwner: TComponent);var P: PChar; ModuleName: array[0..255] of Char;begin inherited Create(AOwner); if not Assigned(Classes.ApplicationHandleException) then Classes.Applica
阅读全文
摘要:program WindowDemo;uses Windows, Messages;// 窗口函数,窗口接到消息时被Windows所调用function WindowProc(hwnd : HWND; uMsg : Cardinal; wParam : WPARAM;lParam : LPARAM) : LResult; stdcall;beginResult := 0;case uMsg of// 关闭窗口消息,当用户关闭窗口后,通知主消息循环结束程序WM_CLOSE : PostMessage(hwnd, WM_QUIT, 0, 0);// 鼠标左键按下消息WM_LBUTTONDOWN :
阅读全文
摘要:在TObject类中,有一个Dispatch()方法和一个DefaultHandler()方法,它们都是与消息分发机制相关的。Dispatch()负责将特定的消息分发给合适的消息处理函数。首先它会在对象本身类型的类中寻找该消息的处理函数,如果找到,则调用它;如果没有找到而该类覆盖了TObject的DefaultHandler(),则调用该类的DefaultHandler();如果两者都不存在,则继续在其基类中寻找,直至寻找到TObject这一层,而TObject已经提供了默认的DefaultHandler()方法。unit Unit_MessageDispatch;interface uses
阅读全文
|