delphi

阅读 / 问答 / 标签

delphi editorlineends.ttr

这个可能是字库文件,你看一下你的Delphi是不是完整退出了?如果没有,那么手工结束它。另外,你用的Delphi是什么版本?

delphi xe7怎么把toolpalette放到最上面

请进一步描述 Tool Palette 放到最上面,指的是什么情形。通常,delphi 的 IDE 里有个 Tool Palette,如下图所示:此 Tool Palette 可以自行拖放停靠到其他面板上。

delphi接插件上的 ped什么意思

应该是LOGO或者主称代号的意思。

扩展Delphi的线程同步对象

   在编写多线程应用程序时 最重要的是控制好线程间的同步资源访问 以保证线程的安全运行 Win API提供了一组同步对象 如 信号灯(Semaphore) 互斥(Mutex) 临界区(CriticalSection)和事件(Event)等 用来解决这个问题   Delphi分别将事件对象和临界区对象封装为Tevent对象和TcritialSection对象 使得这两个对象的使用简单且方便 但是如果在Delphi程序中要使用信号灯或互斥等对象就必须借助于复杂的Win API函数 这对那些不熟悉Win API函数的编程人员来说很不方便 因此 笔者用Delphi构造了两个类 对信号灯和互斥对象进行了封装(分别为TSemaphore和TMutex) 希望对广大Delphi编程人员有所帮助    一 类的构造   我们先对Win API的信号灯对象和互斥对象进行抽象 构造一个父类THandleObjectEx 然后由这个父类派生出两个子类Tsemphore和Tmutex   类的源代码如下   unit SyncobjsEx;   interface   uses Windows Messages SysUtils Classes Syncobjs;   type    THandleObjectEx = class(THandleObject)   // THandleObjectEx为互斥类和信号灯类的父类    protected    FHandle: THandle;    FLastError: Integer;    public    destructor Destroy; override;    procedure Release;    override;    function WaitFor(Timeout: DWORD): aitResult;    property LastError:Integer read FLastError;    property Handle: THandle read FHandle;    end;    TMutex = class(THandleObjectEx)//互斥类    public    constructor Create(MutexAttributes: PSecurityAttributes;    InitialOwner: Boolean;const Name:string);    procedure Release;    override;    end;    TSemaphore = class(THandleObjectEx)   //信号灯类   public   constructor Create(SemaphoreAttributes: PSecurityAttributes;   InitialCount:Integer;   MaximumCount: integer;   const Name: string);   procedure Release(ReleaseCount: Integer= ;PreviousCount:Pointer=nil)   overload;   end;   implementation   { THandleObjectEx }//父类的实现   destructor THandleObjectEx Destroy;   begin   Windows CloseHandle(FHandle);   inherited Destroy;   end;   procedure THandleObjectEx Release;   begin   end;   function THandleObjectEx WaitFor(Timeout: DWORD): aitResult;   //等待函数 参数为等待时间   begin   case WaitForSingleObject(Handle Timeout) of   WAIT_ABANDONED: Result := wrAbandoned;   //无信号   WAIT_OBJECT_ : Result := wrSignaled;   //有信号   WAIT_TIMEOUT: Result := wrTimeout;//超时   WAIT_FAILED://失败    begin    Result := wrError;    FLastError := GetLastError;    end;    else    Result := wrError;    end;    end;   { TSemaphore }//信号灯类的实现   constructor TSemaphore Create(SemaphoreAttributes: PSecurityAttributes;   InitialCount MaximumCount: integer; const Name: string);//信号灯类的构造函数   begin   FHandle := CreateSemaphore   (SemaphoreAttributes InitialCount MaximumCount PChar(Name));   //四个参数分别为 安全属性 初始信号灯计数 最大信号灯计数 信号灯名字   end;   procedure TSemaphore Release(ReleaseCount: Integer= ; PreviousCount:Pointer=nil);   //信号灯类的Release方法 每执行一次按指定量增加信号灯计数   begin   Windows ReleaseSemaphore(FHandle ReleaseCount PreviousCount);   end;   { TMutex }//互斥类的实现   constructor TMutex Create(MutexAttributes: PSecurityAttributes;   InitialOwner: Boolean; const Name: string);   //互斥类的构造函数   begin   FHandle := CreateMutex(MutexAttributes InitialOwner PChar(Name));   end;   procedure TMutex Release;//互斥类的Release方法 用来释放对互斥对象的所有权   begin   Windows ReleaseMutex(FHandle);   end;   end;    二 信号灯对象与互斥对象的使用    信号灯对象   信号灯对象维持一个从 到指定最大值之间的数 在其计数大于 时是有信号的 而在其计数为 时是无信号的 信号灯对象可用来限制对共享资源进行访问的线程数量 例如应用程序可使用信号灯对象来限制它建立的窗口数量   用类的Create方法来建立信号灯对象 在调用该方法时 可以指定对象的初始计数和最大计数 该方法有四个参数 依次为 安全属性 初始计数 最大计数和对象名字(以便别的进程的线程可打开指定名字的信号灯句柄) 如   Semaphore := TSemaphore Create(nil );   一般把信号灯的初始计数设置成最大值 每次当信号灯有信号并等待函数返回时 信号灯计数就会减 而通过调用对象的Release方法可按指定量增加信号灯的计数(默认为加 ) 计数值越小就表明访问共享资源的程序越多 如 Semaphore Release( nil); 其中第一个参数为增加的信号灯数量 第二个参数为执行该方法之前的信号灯数量   信号灯用法举例   if wrSignaled = Semaphore WaitFor( ) then//若信号灯是有信号的   begin    //打开另一个窗口   end    Semaphore Release()   在线程建立窗口之前 它使用WaitFor函数确定信号灯的当前计数是否允许建立新的窗口 等待时间设为 秒    互斥对象   Mutex对象的状态在它不被任何线程拥有时是有信号的 而当它被拥有时则是无信号的 Mutex对象很适合用来协调多个线程对共享资源的互斥访问(mutually exclusive) 例如 有几个线程共享对数据库的访问时 线程可以使用Mutex对象 一次只允许一个线程向数据库写入   用类的Create方法建立Mutex 对象 在建立Mutex 时 可以为对象起个名字 这样其他进程中的线程可以打开指定名字的Mutex对象句柄 例如   Mutex := TMutex Create(nil False );   在完成对共享资源的访问后 可以调用Release方法来释放Mutex 以便让别的线程能访问共享资源 如果线程终止而不释放Mutex 则认为该Mutex被废弃   互斥对象用法举例如下   if wrSignaled = Mutex WaitFor( ) then//若获得互斥对象的拥有权    begin    try    //往数据库写入    finally   Mutex Release;//释放对互斥对象的拥有权    end;    end; lishixinzhi/Article/program/Delphi/201311/8521

何为delphi的trunc函数

trunc是取整函数比如:trunc(2.5)=2trunc(3.9)=3trunc(9)=9

delphi listbox的用法

1 从listbox第一个项目中拷贝字符串,从第what开始,第一个项目长度减掉(what+1)结束2 从listbox选中的项目目中拷贝字符串,从第what+2开始,选中的项目长度减掉(what+1)结束

如何使用delphi中用listbox控件实现多列显示

用listview!!!

DELPHI中如何将数据库中数据显示在LISTBOX中?

上面的代码够多了,不多说了。

delphi 的coolbar和toolbar有什么不同

CollBar 类似于 IE 菜单条、工具条的功能。 拖放一个 CoolBar 控件,建立 Band 带条。 拖放 ToolBar 控件,会自动停靠在 CoolBar 中,但是不在 Band 里。 拖放 Menu 控件,建立菜单项(Item)。把 Menu 控件的 AutoMerge 属性设置为 True。AutoMerge 设置为 True 表示菜单即将和 ToolBar 自动合并在一起,就不会在窗口顶部同时显示 2 个菜单条了。真正的菜单条会自动隐藏起来,发挥作用的是 ToolBar 上的菜单条。 设置 ToolBar 的 Menu 属性为以上建立的 Menu 控件。这就把 Menu 控件和 ToolBar 联系了起来。这时会在 ToolBar 里显示菜单条。 设置 CoolBar 中 Bandx 的 Control 属性为 ToolBar,就把 ToolBar 装入到 CoolBar 的 Bandx 中。 配置完毕后,CoolBar 里的各个 Band 可以用鼠标拖动移动位置,显示了其灵活性。

delphi 如何删除 paradox 生成的.MB中的数据?

实际上TADODataSet 是一个通用的数据集组件可以代替其他三个数据集,只要分别将其CommandType 属性设置为cmdTable、comdText 或cmdStoreProc, 对应的并分别在其CommandText 属性中设置一个基表(即adotable)、一个SQL 命令(adoquery)或一个存储过程(adocommand)即可。就是说其他三个组件可以用这一个来代替。当然,这个组件还可以打开别的文件。你可以看一下上两个属性的选项。

delphi 接收心跳包怎么写

给你转一篇文章吧定义心跳常量const IOC_IN =$80000000; IOC_VENDOR =$18000000; IOC_out =$40000000; SIO_KEEPALIVE_VALS =IOC_IN or IOC_VENDOR or 4;var inKeepAlive,OutKeepAlive:TTCP_KEEPALIVE;实现代码是在Acceptsc:= WSAAccept(Listensc, nil, nil, nil, 0);代码的后面加入: opt:=1; if setsockopt(Acceptsc,SOL_SOCKET,SO_KEEPALIVE,@opt,sizeof(opt))=SOCKET_ERROR then begin closesocket(Acceptsc); end; inKeepAlive.onoff:=1; //设置3秒钟时间间隔 inKeepAlive.keepalivetime:=3000; //设置每3秒中发送1次的心跳 inKeepAlive.keepaliveinterval:=1; insize:=sizeof(TTCP_KEEPALIVE); outsize:=sizeof(TTCP_KEEPALIVE); if WSAIoctl(Accept,SIO_KEEPALIVE_VALS,@inKeepAlive,insize,@outKeepAlive,outsize,@outByte,nil,nil)=SOCKET_ERROR then begin closesocket(Acceptsc); end;如果加入以上的代码以后,系统会每3秒中加入一次的心跳。并且如果客户端断线以后(网线断),函数GetQueuedCompletionStatus会返回FALSE。if (GetQueuedCompletionStatus(CompletionPort, BytesTransferred,DWORD(PerHandleData), POverlapped(PerIoData), INFINITE) = False) then begin //在这里处理客户端断线信息。 continue; end;以上就是我使用心跳的方法,此方法我已经在我的网络游戏中使用。情况稳定!

delphi 如何断开网络和连接网络

宽带连接吗?局域网连接?不行就禁用网卡再打开

Delphi中有没有OpenGL现成的控件

GLPanel也能用,下面是源码,给大家共享: unit GLPanel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,OpenGL,Printers; type TGLPanel = class(TCustomPanel) private { Private declarations } //DC: HDC; RC: HGLRC; procedure initDC; procedure initGL; procedure PreparePixelFormat(var DC: HDC); protected { Protected declarations } FOnPaint:TNotifyEvent; FOnInit:TNotifyEvent; FOnPreInit:TNotifyEvent; FOnResize:TNotifyEvent; procedure Paint;override; procedure Resize;override; procedure WMDestroy(var Msg: TWMDestroy);message WM_DESTROY; procedure WMCreate(var Msg:TWMCreate); message WM_CREATE; public { Public declarations } DC: HDC; constructor Create(Owner:TComponent);override; procedure SaveToBMPFile(FileName: String); procedure PrintIt; published { Published declarations } property Alignment; property Align; property DragCursor; property DragMode; property Enabled; property ParentFont; property ParentShowHint; property PopupMenu; property ShowHint; property TabOrder; property TabStop; property Visible; property OnClick; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnEnter; property OnExit; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDrag; property OnInit:TNotifyEvent read FOnInit write FOnInit; property OnPreInit:TNotifyEvent read FOnPreInit write FOnPreInit; property OnResize:TNotifyEvent read FOnResize write FOnResize; property OnPaint:TNotifyEvent read FOnPaint write FOnPaint; end; procedure Register; implementation procedure Register; begin RegisterComponents("Samples", [TGLPanel]); end; //--------------------------------------------- constructor TGLPanel.Create; begin inherited; end; //--------------------------------------------- procedure TGLPanel.WMDestroy(var Msg: TWMDestroy); begin wglMakeCurrent(0, 0); wglDeleteContext(RC); ReleaseDC(Handle, DC); end; //--------------------------------------------------- procedure TGLPanel.initDC; begin DC := GetDC(Handle); PreparePixelFormat(DC); end; procedure TGLPanel.initGL; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity; glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); gluPerspective(45.0, self.ClientWidth/self.ClientHeight, 1.0, 500.0); //glOrtho(-1, 1, -1, 1, -1, 50); glMatrixMode(GL_MODELVIEW); glLoadIdentity; glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glShadeModel(GL_SMOOTH); gluLookAt(0, 0, 6, 0, 0, 0, 0, 1, 0); SwapBuffers(DC); end; //--------------------------------------------- procedure TGLPanel.PreparePixelFormat(var DC: HDC); var PFD : TPixelFormatDescriptor; ChosenPixelFormat : Integer; begin FillChar(PFD, SizeOf(TPixelFormatDescriptor), 0); with PFD do begin nSize := SizeOf(TPixelFormatDescriptor); nVersion := 1; dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; iPixelType := PFD_TYPE_RGBA; cColorBits := 16; // 16位颜色 cDepthBits := 32; // 32位深度缓冲 iLayerType := PFD_MAIN_PLANE; { Should be 24, but we must allow for the clunky WKU boxes } end; ChosenPixelFormat := ChoosePixelFormat(DC, @PFD); if ChosenPixelFormat = 0 then Raise Exception.Create("ChoosePixelFormat failed!"); SetPixelFormat(DC, ChosenPixelFormat, @PFD); end; procedure TGLPanel.WMCreate(var Msg:TWMCreate); begin //在这里做初始化工作 //修改DC的象素格式,使之支持OpenGL绘制 initDC; RC := wglCreateContext(DC); if Assigned(FOnInit) then begin if (wglMakeCurrent(DC,RC)=false) then ShowMessage("wglMakeCurrent:" + IntToStr (GetLastError)); FOnInit(self); end; wglMakeCurrent(DC, RC); //初始化GL绘制系统 initGL; end; //--------------------------------------------------------------------------- procedure TGLPanel.Paint; begin //TCustomPanel::Paint(); if Assigned(FOnPaint) then begin wglMakeCurrent(DC,RC); FOnPaint(self); SwapBuffers(DC); end; end; //--------------------------------------------------------------------------- procedure TGLPanel.Resize; begin inherited; if Assigned(FOnResize) then begin wglMakeCurrent(DC,RC); glViewport(0,0,ClientWidth,ClientHeight); FOnResize(self); end; end; procedure TGLPanel.SaveToBMPFile(FileName: String); var BitMap : TBitmap; begin Bitmap:= TBitmap.Create; BitMap.Height := Height; BitMap.Width := Width; BringToFront; Paint; BitMap.Canvas.CopyRect(ClientRect ,Canvas,ClientRect); BitMap.SaveToFile(FileName); //delete BitMap; end; procedure TGLPanel.PrintIt; var Bitmap:TBitMap; XPixelsPerInch,YPixelsPerInch:integer; Rect:TRECT; PrintDlg:TPrintDialog; begin PrintDlg:=TPrintDialog.Create(self); if PrintDlg.Execute then begin BitMap := TBitmap.Create; BitMap.Height:= Height; BitMap.Width := Width; BringToFront; Paint; BitMap.Canvas.CopyRect(ClientRect,Canvas,ClientRect); XPixelsPerInch:=GetDeviceCaps(Printer.Handle,LOGPIXELSX); YPixelsPerInch:=GetDeviceCaps(Printer.Handle,LOGPIXELSY); Rect.left :=round(0.18*XPixelsPerInch); Rect.top :=round(0.18*YPixelsPerInch); //根据需要调整right/bottom可以达到按比例打印或打满整纸等效果 //必要时可使用GetDeviceCaps(Printer.Handle,HORZRES/VERTRES) //查询相关信息 Rect.right :=BitMap.Width+Rect.left; Rect.bottom:=BitMap.Height+Rect.right; Printer.BeginDoc; Printer.Canvas.CopyRect(Rect,BitMap.Canvas,ClientRect); Printer.EndDoc; end; //if(dlg.execute) PrintDlg.Destroy; end; end.

Delphi在windows XP下实现进程隐藏

可以做成服务,这样可以在任务管理器里隐藏。不过,不管用什么办法,只要联网,在防火墙里都能看到。

delphi 中文在英文系统乱码怎么办

解决方法:1. 首先在Lageuage中选"Instal files for East Asian Lanuages",这步一定要做,否则中文就乱码。2. 区域设置里面的Advanced选默认的非Unicode的程序的的语言解释为Chinese(PRC),Delphi是非Unicode程序,而vb6和.net都是Unicode的程序,所以这步对vb6和.net程序应该是不需要3. 但有些客户不允许进行第2步修改,特别是在跨国企业里面,因此会需要applocale程序进行转换(C:WINDOWSAppPatch)其实apploc程序主要做了下面工作:SET __COMPAT_LAYER=#ApplicationLocaleSET ApplocaleID=0804 而编译的程序先修改工程文件.dof中的locale=2052codepage=936然后在主界面程序里面加initializationSetThreadLocale($0804);setconsoleoutputcp(936);

请教delphi2010自带的 ribbon控件字体大小怎么调整

选中TdxRibbon, fonts属性中设置各个size即可, 如:属性fonts->group->size=10 调节按钮文字大小

delphi解压文件问题

  "C:/Program Files/WinRAR/WinRAR.exe" a "d:Music.rar" "D:csMusic"保存为.bat文件,直接用delphi来执行

delphi调用VB编写的DLL的函数,整数型参数可以,字符串型函数就不行

bvbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

为何运行delphi时出现无法定位程序输入点@variants@@varcmpeq$qqrrx8于动态链接库rtl70.b

报错的原因是你没有定义过 ADOUery1 ,我想你应该是一个delphi的初学者,连控件都没定义过就想用,不报错就怪了。解决的方法是:情况1:如果你从未在任何地方定义过ADOQuery1 你应该拉一个 TADOQuery 控件到你的 登录窗体(TLoginfrm) 中 ,并命名为ADOQuery1,然后为ADOQuery1.connection 指定一个数据库连接。如果你仍没创建过数据库连接,你还需要拉一个TADOConnection 到这个登录窗体或者一个专门的数据单元模块中,并命名为 ADOConnection1 , 然后为ADOConnection1设置数据库连接串,然后将 ADOQuery1.connection 指定为 ADOConnection1 。情况2:你已在其它单元定义过ADOQuery1 如果是这种情况,你在登录窗体(TLoginfrm) 中要便用其它单元定义的ADOQuery1时,需要在Adoquery1的前面引用其它单元的名称( 如:data.ADOQuery1.close )

DELPHI数据比较问题

如果可以的话,把A,B发过来,测试一下我没试过这么大数据量的比较,几万条记录的我试过,几秒钟就可以

delphi TabNoteBook的问题

不知道你有什么特殊要求吗?为什么要用这个控件?建议你用PageControl替代这个控件,这个控件用起来很不方便,也没什么特别的地方。如果你要把TabNoteBook放到其它控件后面,可以在TabNoteBook控件上点右键,在弹出菜单中选择"Control"的子菜单下的“Send to back”就把它弄到最下层去了。我用的是Delphi2005,如果你的是早期版本,可能操作稍有不同,但也有这个功能

Delphi ListView的用法

//增加i := ListView1.Items.Count;with ListView1 dobeginListItem:=Items.Add;ListItem.Caption:= IntToStr(i);ListItem.SubItems.Add("第 "+IntToStr(i)+" 行");ListItem.SubItems.Add("第三列内容");end;//按标题删除for i:=ListView1.Items.Count-1 downto 0 Doif ListView1.Items[i].Caption = Edit1.Text thenbeginListView1.Items.Item[i].Delete(); //删除当前选中行end;//选中一行if ListView1.Selectednil thenEdit1.Text := ListView1.Selected.Caption;// listview1.Items[Listview1.Items.Count -1].Selected := True;// listview1.Items[Listview1.Items.Count -1].MakeVisible(True);procedure TForm1.Button2Click(Sender: TObject); // 选择第一条beginlistview1.SetFocus;listview1.Items[0].Selected := True;end;procedure TForm1.Button1Click(Sender: TObject); // 选择最后一条beginlistview1.SetFocus;listview1.Items[Listview1.Items.Count -1].Selected := True;end;//这是个通用的过程procedure ListViewItemMoveUpDown(lv : TListView; Item : TListItem; MoveUp, SetFocus : Boolean);varDestItem : TListItem;beginif (Item = nil) or((Item.Index - 10) and MoveUp) or((Item.Index + 1 = lv.Items.Count) and (not MoveUp))then Exit;lv.Items.BeginUpdate;tryif MoveUp thenDestItem := lv.Items.Insert(Item.Index - 1)elseDestItem := lv.Items.Insert(Item.Index + 2);DestItem.Assign(Item);lv.Selected := DestItem;Item.Free;finallylv.Items.EndUpdate;end;if SetFocus then lv.SetFocus;DestItem.MakeVisible(False);end;//此为调用过程,可以任意指定要移动的Item,下面是当前(Selected)ItemListViewItemMoveUpDown(ListView1, ListView1.Selected, True, True);//上移ListViewItemMoveUpDown(ListView1, ListView1.Selected, False, True);//下移TListView组件使用方法引用CommCtrl单元procedure TForm1.Button1Click(Sender: TObject);beginListView_DeleteColumn(MyListView.Handle, i);//i是要删除的列的序号,从0开始end;用LISTVIEW显示表中的信息:procedure viewchange(listv:tlistview;table:tcustomadodataset;var i:integer);begintlistview(listv).Items.BeginUpdate; {listv:listview名}trytlistview(listv).Items.Clear;with table do {table or query名}beginactive:=true;first;while not eof dobeginlistitem:=tlistview(listv).Items.add;listitem.Caption:=trim(table.fields[i].asstring);// listitem.ImageIndex:=8;next;end;end;finallytlistview(listv).Items.EndUpdate;end;end;

Delphi中怎么控制某窗体永远处于屏幕最上层,比如浏览器等任何其他程序就算最大化都不会遮挡住该窗体!

显示模式top

delphi 7 中我用了spcomm 控件,但是只能打开本机器的串口(com1)mox卡扩展出的串口都无效。

你先看你设备管理器里对应的那个口是com几,然后设置spcomm的commname

Delphi7 image控件图片问题

换图片很简单,在onMouseMove事件中用image.Picture.LoadFormFile(...)。但是onMouseMove事件只在当前最上层控件才能触发。image的onMouseMove事件无法在自身范围外被触发,同样,image的外层如果是Form或Panel一样也没法在鼠标移进image后触发。方法1.image.onMouseMove中判断一下是否为图片2,是的话就换成图片1;移出的时候再外层控件的onMouseMove中判断一下是否为图片1,是的话就换成图片2。方法2.可以在image的边缘位置,判断当鼠标移到边缘的时候换图,这样就只用在image的onMouseMove中判断就行了。

DELPHI 中如何让edit1.text只能输入数字和字母

你可以先将你抓到的包保存到文件 主要代码: /* 回调函数,用来处理数据包 */ void packet_handler(u_char *dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data) { /* 保存数据包到堆文件 */ pcap_dump(dumpfile, header,

Delphi实现复制粘贴功能

procedure TForm1.Button1Click(Sender: TObject);beginmemo1.SelectAll;memo1.CopyToClipboard;end;procedure TForm1.Button2Click(Sender: TObject);beginmemo2.PasteFromClipboard;end;

为动态控件添加事件 delphi

简单测试通过,自己稍微改下program Project1;uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit1 in "Unit1.pas" {Form1}; type lForm = class(TForm) public Procedure MyButtonClick(Sender:TObject); end;{$R *.res}var MyButton1:TButton; mForm: lForm;Procedure lForm.MyButtonClick(Sender:TObject);begin ShowMessage("自定义事件");end;begin Application.Initialize; Application.CreateForm(TForm1, Form1); MyButton1:=TButton.Create(Application); MyButton1.Parent:=Form1; mForm:= lForm.CreateNew(nil); MyButton1.OnClick:= mform.MyButtonClick;// Application.Run;end.

delphi下playsound对资源文件的暂停播放功能和重复播放功能?

MCI资源好像是独占的,用多线程也不行,如果要同时播放多首曲目,只有用其它方法,如MID格式的音乐。MCIsendstring试试

【delphi】请问点击exe后自动释放一个dll文件是如何做到的?谢谢

什么意思?运行一个exe程序后,在目录下自动产生一个dll?

delphi 如何通过单击一个窗体的按钮给一个frame的控件赋值

楼主解决了吗?怎么解决的?

delphi7 自己定义的FUNCTION应该放在哪?

你的函数写的有问题啊~~~函数参数是num1,num2,那你怎么还在过程中定义num1,num2呢?还有你调用也有问题啊!label1.Caption:=mystr(edit1.Text,edit2.Text); 你自己定义函数返回值和参数都是整形,你调用使用的字符串类型,你把函数返回值赋给label1.Caption也不对啊~~~他不是整形啊你写好函数声明部分写在 private或者public下都行type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } //添加函数声明 public { Public declarations } //添加函数声明 end;添加好函数声明后,将光标放到函数声明上,按下“Ctrl+Shift+C”这样delphi自动为你生成函数定义部分框架,你在begin end;中添加代码即可

delphi私有变量

看一下Tdatamod在哪个单元内,uses一下。

求delphi中创建一个线程,然后在线程中实现一个进度条从0跑到100

画面是主进程的,线程的数据,要用消息传回到主进程即可,用线程的异步方法也可以

delphi7小问题

这样写uses unit2,unit3,nuit4;

Delphi的窗体调用

第一个窗体中的按钮名字为btn1unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2; //引用窗体2的单元文件type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);begin form1.Hide; Form2.ShowModal;end;end.第二个窗体中按钮的名字为btn2unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm2 = class(TForm) btn2: TButton; procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form2: TForm2;implementation uses Unit1; //引用窗体一的单元文件{$R *.dfm}procedure TForm2.btn2Click(Sender: TObject);begin Form2.Close; Form1.Show;end;end.这样就实现了。

delphi多窗口问题

你这里存在一个问题,你的FORM2到底是设计时生成的还是运行时生成的,如果是在设计的时候添加了一个form2,那么form2.close只会关闭那个form2,而不会关闭你在运行时生成的那个“newForm”,建议你把句子改为“Self.close;”或者就干脆“close;”这样功能就实现了。你应该可以在form2的代码窗里面看到有这样一句代码“var Form2: TForm2;”就是说,其实在设计时已经存在一个实体的窗,名叫form2,这是delphi自己帮你生成的,就算你没有用“newForm:=Tform2.create(self);”去创建,它便已经存在了,只是隐藏着而已,所以你一大堆"form2.XXX"的语句,都运行到那个幕后的FORM2里去了。如果你要用form1调用form2里面的函数,应该用newForm.XXX,而不是form2.XXX.

如何delphi动态调用封装在dll里的窗体

以下是我编写的示例代码,完成这个示例,需要三个文件:1. dll工程文件, test.dll:library testDll;uses SysUtils, Classes, Forms, FormDll in "FormDll.pas" {frmDll};{$R *.RES}function GetDllForm: TForm; stdcall; export;begin Result := frmDll;end;exports GetDllForm;beginend.2. dll中包含的窗体,窗体有一个按钮,FormDll.pas:unit FormDll;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TfrmDll = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var frmDll: TfrmDll;implementation{$R *.dfm}procedure TfrmDll.Button1Click(Sender: TObject);begin MessageDlg("你已经成功使用了DLL窗体。", mtInformation, [mbOK], 0);end;initializationbegin frmDll := TfrmDll.Create(Application);end;finalizationbegin frmDll.Free;end;end.3. 调用dll窗体的文件,testdll.pas:unit testdll;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form2: TForm2;function GetDllForm: TForm;implementation{$R *.dfm}function GetDllForm: TForm; external "testdll.dll";procedure TForm2.Button1Click(Sender: TObject);var AForm: TForm;begin AForm := GetDLLForm; AForm.Show;end;end.4. 显示结果:

delphi调用带有窗体的dll,窗体的事件怎样调用?

这得看你怎么声明dll中导出的那个函数的给你个例程dll中声明导出的函数procedure ShowDllForm;stdcall;begin if Form1 = nil then begin Form1 := TForm1.Create(Application); Form1.Show; end else if not Form1.Showing then Form1.Show;end;

delphi PageControl 动态打开的窗体无法编辑,如何解决?

1、无法编辑,把这句恢复就可以了,具体原因不是很清楚,无法获取焦点,可能因为Form2窗口类型吧// Form2.ManualDock(MyTab); //融合窗口,没有标题2、在Form2的FormClose事件中加上,Self.Parent.Free,即可释放MyTab

Delphi自定义函数声明及调用问题!

如果你想在其它单元也使用这个函数的话就在Public内定义Public Function Get_item_list(tbname, fdname: String; alist: TStrings): Boolean;然后在implementation下写实现的代码就可以了!其它单元调用之前先uses一下!

delphi程序编译出错:Unsatisfied forward or external declaration

在实现部分(implementation后)的各个函数名前面加上 "InputLimit.", 指出各个函数是对类 InputLimit中各个方法的实现, 而不是普通的函数. 即改为:......implementationprocedure InputLimit.AllowNumberOnly(Sender: TObject; var Key: Char);var x: Integer;begin ....end; // procedureprocedure InputLimit.EnterCheck(Sender: TObject; EditObject: TEdit; Checkcontent: String);begin ....end; // procedureprocedure InputLimit.ExitCheck(Sender: TObject; EditObject: TEdit; Checkcontent: String);begin ....end; // procedure

delphi7中splitter控件的问题

gao_cz说得对,但DELPHI自带的这玩意儿太不好看了,有一个三方组件非常好,和WINXP的相关控件一样。

delphi 代码疑问

if setcap=false then begin Image1.Picture.LoadFromFile("c:g.bmp"); SetCapturecontrol(Image1); end else begin Image1.Picture:=nil; SetCapturecontrol(nil); end; setcap := not setcap; Image1.Refresh; Sleep(100);确实会出现闪烁, 移出鼠标时图片一直为nil。检查一看, 问题出现在SetCapturecontrol 之上, 去掉SetCapturecontrol的两行, 就正常了。 为什么加了SetCapturecontrol就不闪了?这个你就应该自己去了解这个API,去查MSDN,而不是在这里忽悠大家。 碰到问题了首先要学会自己查资料解决。

怎么使用delphi实现电脑硬件驱动安装??

1, 用copyFile复制文件,CopyFile("C:\Autoexec.bat", "A:\Backup\Autoexec.bat", False);2. 可以用shellExecute加载已有的exe文件(应该也可以调用inf文件),比如运行记事本:uses ShellApi; // 加在开头units 中ShellExecute(Handle, "open", "c:Windows otepad.exe", nil, nil, SW_SHOWNORMAL) ;

什么是TMonitor在Delphi系统单元好处

这样有很多好处,比如说类的静态变量的初始化什么的都可以在这里做. Delphi For...Delphi2009在线程方面的也进行了不小的改进。在System单元中多出了一个TMonitor

delphi 写日志文件I/O error 32

注意一下线程同步!

delphi多线程互斥,用多线程怎么解决同一时间内调用同一函数

Delphi同步互斥总结 多个线程同时访问一个共享资源或数据时,需要考虑线程同步,Synchronize()是在一个隐蔽的窗口里运行,如果在这里你的任务很繁忙,你的主窗口会阻塞掉;Synchronize()只是将该线程的代码放到主线程中运行,并非线程同步。 临 界区是一个进程里的所有线程同步的最好办法,他不是系统级的,只是进程级的,也就是说他可能利用进程内的一些标志来保证该进程内的线程同步,据 Richter说是一个记数循环;临界区只能在同一进程内使用;临界区只能无限期等待,不过2k增加了TryEnterCriticalSection函 数实现0时间等待。 互斥则是保证多进程间的线程同步,他是利用系统内核对象来保证同步的。由于系统内核对象可以是有名字的,因此多个 进程间可以利用这个有名字的内核对象保证系统资源的线程安全性。互斥量是Win32 内核对象,由操作系统负责管理;互斥量可以使用WaitForSingleObject实现无限等待,0时间等待和任意时间等待。常见的线程同步方法如下:1. 临界区临界区是一种最直接的线程同步方式。所谓临界区,就是一次只能由一个线程来执行的一段代码。如果把初始化数组的代码放在临界区内,另一个线程在第一个线程处理完之前是不会被执行的。使用方法如下://在窗体创建中InitializeCriticalSection(Critical1)//在窗体销毁中DeleteCriticalSection(Critical1)//在线程中EnterCriticalSection(Critical1)……保护的代码LeaveCriticalSection(Critical1)2. 互斥互斥非常类似于临界区,除了两个关键的区别:首先,互斥可用于跨进程的线程同步。其次,互斥能被赋予一个字符串名字,并且通过引用此名字创建现有互斥对象的附加句柄。 临界区与事件对象(比如互斥对象)的最大的区别是在性能上。临界区在没有线程冲突时,要用10 ~ 15个时间片,而事件对象由于涉及到系统内核要用400~600个时间片。Mutex(互斥对象),是用于串行化访问资源的全局对象。我们首先设置互斥对象,然后访问资源,最后释放互斥对象。在设置互斥对象时,如果另一个线程(或进程)试图设置相同的互斥对象,该线程将会停下来,直到前一个线程(或进程)释放该互斥对象为止。注意它可以由不同应用程序共享。使用方法如下://在窗体创建中hMutex:=CreateMutex(nil,false,nil)//在窗体销毁中CloseHandle(hMutex)//在线程中WaitForSingleObject(hMutex,INFINITE)……保护的代码ReleaseMutex(hMutex)3. 信号量另一种使线程同步的技术是使用信号量对象。它是在互斥的基础上建立的,但信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。可以用CreateSemaphore()来创建一个信号量对象,因为只允许一个线程进入要同步的代码,所以信号量的最大计数值(lMaximumCount)要设为1。其实Mutex就是最大计数为一的Semaphore。使用方法如下://在窗体创建中hSemaphore:= CreateSemaphore(nil,lInitialCount,lMaximumCount,lpName)//在窗体销毁中CloseHandle(hSemaphore)//在线程中WaitForSingleObject(hSemaphore,INFINITE)……保护的代码ReleaseSemaphore(hSemaphore, lReleaseCount, lpPreviousCount)4.WaitForSingleObject函数的返值:WAIT_ABANDONED指定的对象是互斥对象,并且拥有这个互斥对象的线程在没有释放此对象之前就已终止。此时就称互斥对象被抛弃。这种情况下,这个互斥对象归当前线程所有,并把它设为非发信号状态;WAIT_OBJECT_0 指定的对象处于发信号状态;WAIT_TIMEOUT等待的时间已过,对象仍然是非发信号状态;Delphi 常用的临界区对象TCriticalSection(Delphi) 、TRtlCriticalSectionTRtlCriticalSection 是一个结构体,在windows单元中定义; 是InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection, DeleteCriticalSection 等这几个kernel32.dll中的临界区操作API的参数;TCriticalSection是在SyncObjs单元中实现的类,它对上面的那些临界区操作API函数进行了了封装,简化并方便了在Delphi的使用;如TCriticalSection.Create,TCriticalSection.Enter, TcriticalSection.Leave等;通过调用上面响应的API函数实现。线程同步的多种办法中,使用临界区最简单,也是效率最高的办法(CPU占用时间最少)使用临界区代码如下:先声明一个TRTLCriticalSection类型的全局变量varMyCs:TRTLCriticalSection;在程序开始或建立线程之前,初始化InitializeCriticalSection(MyCs);//初始化临界区在程序结束或所有线程结束后,删除它DeleteCriticalSection(MyCs);//删除临界区再在线程中要同步的地方加入EnterCriticalSection(MyCs); //进入临界区try//程序代码finallyLeaveCriticalSection(MyCs); //离开临界区end;补充今天遇到的关于Application.ProcessMessages同步的问题:有一个函数Fn按执行顺序可分为A->B->C3大块,其中B块有要绘制各种窗口界面的操作很复杂且耗时较长,并且里面用到了Application.ProcessMessages,程序运行测试时发现如果在Fn执行B绘制窗口的过程没结束时又调用Fn函数去绘制其它窗口就可能会导致程序崩溃,一开始尝试用TcriticalSection变量解决,完全没用,最后用增加一个全局变量的方法解决:定义一个全局Boolean型变量flag,设定初始值为True,改造Fn函数的逻辑为A-> if flag thenBeginFlag:=False;B;Flag:=True;End;->C问题成功解决。顺便总结Application.ProcessMessages的作用:运行一个非常耗时的循环,那么在这个循环结束前,程序可能不会响应任何事件,按钮没有反应,程序设置无法绘制窗体,看上去就如同死了一样,这有时不是很方便,例如于终止循环的机会都没有了,又不想使用多线程时,这时你就可以在循环中加上这么一句,每次程序运行到这句时,程序就会让系统响应一下消息,从而使你有机会按按钮,窗体有机会绘制。所起作用类似于VB中DoEvent方法.调用ProcessMessages来使应用程序处于消息队列能够进行消息处理,ProcessMessages将Windows消息进行循环轮转,直至消息为空,然后将控制返回给应用程序。注示:仅在应用程序调用ProcessMessages时勿略消息进程效果,而并非在其他应用程序中。在冗长的操作中,调用ProcessMessages周期性使得应用程序对画笔或其他信息产生回应。ProcessMessages不充许应该程序空闲,而HandleMessage则然.使用ProcessMessages一定要保证相关代码是可重入的,如果实在不行也可按我上面的方法实现同步。

紧急!请教高手,Delphi 程序出错

GlobalData: array[1..Maxsize] of integer;

DELPHI 如何获取外网ip

网上也只有楼上这个办法了

怎么查看Delphi中recordset里面值

正解如下:(以String方式返回Recordset...)Delphi/Pascal code?procedure TRes_Cq_HrQj_F.cxButton5Click(Sender: TObject);var a:OleVariant; i,j:integer; b:string;begin inherited; a:=Self.qry_cqjd.Recordset.GetRows(-1,1,emptyparam); if Varisarray(a) then begin for i:=0 to qry_cqjd.RecordCount-1 do for j:=0 to qry_cqjd.FieldCount-1 do begin if varisnull(a[j,i]) then continue; b:=a[j,i]; ShowMessage(b); end; end;end;

delphi为什么那么多的第三方控件?不用就设计不出好的系统吗?

不是,三方控件是为更方便的为你节约更多开发成本(时间)三方控件基本是专为某特殊要求编写的。delphi使用人过多,所以那时候很多牛人都自己写控件

delphi stringlist

我有一个方法,可能不是最优的:就是把你现在的结果集与源数据集作差运算,即可得到你想要的结果。集合的差运算知道么?B-A={B中的元素x|x属于B但是x不属于A}

Delphi pie chart 用法

双击Chart1 的空白处,勾选 Char/Legend属性页 里左上角的 Visible 即可

delphi中trim的使用

Trim函数的作用是去掉头和尾的空格,入s=‘ a ",Trim(s)=‘a"

windbg可以调试c#delphi吗

string dir = basename(fullPath); if(!_fileUtils->isDirectoryExist(dir)) { if(!_fileUtils->createDirectory(dir)) { // Failed to create directory CCLOG("AssetsManagerEx : can not create directory %s ", fullPath.c_str()); unzClose(zipfile); return false; }

delphi 项目中后缀名为~dfm ~pas ~ddp 是什么文件?可以删除吗?

可以删掉,没事

delphi中的SelAttributes有什么作用?比如RichEdit1.SelAttributes是什么意思?

如果字符串a b的长度没有超过 richedit 的宽度,只要分别做add就可实现分别{}k:=k Length(self.RichEdit1.Lines[i]) 2;//行结束字符长度是2 self

delphi的inc是什么意思

将inc文件包含到程序中其中inc一般是include文件用于编写同用代码的,比如在网页编写过程中就可以把很多页面需要运用的自定义代码统一写在一个inc文件中然后用include语句包含进网页。这样做的好处是,改的时候只需要改inc文件网页不用动。inc文件用任何文本编辑器都可以打开比如记事本、word……

Delphi现在还有多少人在使用,使用的原因是什么?

不懂Delphi就别瞎误导人,Delphi都已经发展到多少个版本了,你还停留在2007。

delphi中function是什么意思

function函数,有返回值functionGetMax(x,y:integer):integer;//定义一个名叫GetMax的函数,它有两个输入参数x,y,返回x,y中最大的。GetMax的返回值为integer类型。

delphi 接口有什么作用?

接口的定义:COM定义了一个对象的函数怎样在内存中布置的标准,这些函数被安排到虚拟表,类似于DELPHI的虚拟方法表。编程语言对每个虚拟表的描述就是接口。接口的作用:接口包含一些函数和过程,以便来操作这个COM对象接口并不实现自己,只是一个约定,它包含两个部份:1、定义部分这是COM对象和这个定义的对像共享的2、实现部分申明的方法的实现......

delphi 一词的标准发音是什么?

/delfi/

Pascal和delphi什么关系?

试试!我成了知道专家了吗?

delphi中的@与^是什么东东哦?

地址与值

Delphi的编译环境是用什么语言编写的

C语言环境是由C语言编写的。  C语言是一种计算机程序设计语言,属高级语言范畴。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,代码清晰精简,十分灵活。  C语言适用范围大:适合于多种操作系统,如Windows、linux、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的。

Delphi中=:代表什么?

赋值符号 。

能否详细说一下delphi与labview两者之间的优点缺点比较一下,最好不要留下什么网站网页,谢谢各位大神

LabVIEW在国外还是很流行的,在国内不是特别多。不过前景不错。用于测试及虚拟仪表等方面。 缺点是适用性不是很广。delphi适用于开发各类应用程序和数据库应用,优点是可以快速开发一个稳定美观的程序。我外接的项目都用delphi做的。 虽然现在我工作用的是java,delphi最让我喜欢的是控件众多,这是个很大的优点。缺点是现在delphi式微了。用的人越来越少,工资相对也不高。

delphi里面的:是什么意思?

选择项目的一个分割符号。只是语法上是这样定义的。

delphi用什么控件显示x和y的值

曲线控件。Delphi,是Windows平台下著名的快速应用程序开发工具,在工具中用曲线控件就可以显示出x和y的数值,是很多人都在使用的工具。

Delphi中chr这个函数的作用是什么?

转换成字符型。

delphi中的tedit类是什么??

文本输入框控件的类

delphi。。。 这个word是什么字型啊?上下都没定义过。 decodedate 是什么意思呢?怎么用?百度不到。

word是Delphi的整型数据类型,占用2个字节,取值范围0~2^16-1procedure DecodeData(Date: TDateTime; var Year, Month, Day: Word);DecodeDate打断TdateTime成为年月日的值。就是分别获取年月日的值

delphi能开发什么呢?

桌面程序无所不能

delphi编译器效率高到底是指什么?

如果把编译器效率理解为生成目标程序耗时短,那么书上的说法正确,delphi确实比VC快很多倍。但是,delphi编译生成的程序运行效率和VC比,还是有差距,它的细节优化点不够丰富,举两个例子吧:1、一个常量作为被除数的除法,VC会优化为另外一个数儿的乘法,当然前提要保证结果的正确性了,对于乘法指令远远高效于除法指令的这个事实,delphi没有关注和予以实现;2、循环展开,有些情况下,VC能够把一个循环优化为顺序执行的一组指令,回避跳转语句,虽然指令多了,但是能够充分利用CPU的高速缓存、流水线、指令预取等机制,从而执行效率更好,delphi可就没这么高明了。有关执行效率的优化,intel曾经宣称它是最牛的,应该有其可信度,毕竟intel最懂CPU呀。假如不是那么特别在意执行效率,把delphi用作快速构建开发工具,还是不错的选择。生成目标程序快,从培养懒人的角度看,有点儿优势,程序可以“调”和“试”出来,而不用十分精到地“编”出来,不过对于专业程序员来说,这个方式应造唾弃,至少是不能滥用而丧失先设计后编码的习惯。

delphi有多少版本,都有什么区别?

Delphi 7 Studio于2002年夏季推出,有四个版本:体系版(Architect),企业版(Enterprise),专业版(Professional)和个人版(Personal)。体系版,企业版和专业版都配备Delphi语言的Borland Kylix 3完整版对初学者 什么版本都是一样地,不过建议你用企业版,功能强大些.

PB,VB,Delphi各自有什么优缺点

PB:主要在开发数据库应用程序方面有优势,提供有数据模型窗口,但是现在很落后了,没人用了。VB:曾经风靡一时的快速的开发工具,容易上手,开发简单,但是由于是面向过程的,所以功能有所欠缺。Delphi:面向对象的强大的快速开发工具。集中了PB开发数据库应用程序和VB开发简便二者合二为一的有点,几乎适合开发所有的应用程序,功能强大,容易学习。

Delphi 好学吗?需要什么基础吗?

不是很难上手的,但是真正的而运用还需要磨砺的:)我就是delphi程序员。其实主要的技术大学也都学习了,还有些技术使可以通过已经学习的知识从而达到一通百通的:)你的学习可以从数据库编程直接的开始,这样的话一两个月你的水平应该比在老师教授的要好些了一个网站: www.2ccc.com很不错,专门讲delphi至于入门的书,一本基础教程和数据库编程=足够了

谁知道delphi是用什么开发的?C语言?C++?JAVA?还是什么....?

delphi本身就是一种编程语言,不存在用其他的语言开发,它们都是编程语言

“pathon”、“java”、“c++”、“delphi”语言特点是什么?应用程度是怎样的?

“pathon”是一种脚本语言,支持模块和包,支持多种平台,可扩展,应用程度不高;“c++”学习复杂,难度高,应用非常广泛;“java”学习适中,难度适中,应用广泛;“delphi"学习适中,难度简单,应用于PC和极少数其他平台;Python可以以命令行方式运行,也可以交互式方式运行,还具有图形集成环境,这样开发Python就相当方便。现在已经出现了许多用Python编写的可视化编程软件,用于实现象Delphi一样的功能。Python是一个真正的面向对象语言。它甚至支持异常的处理。如果学过Java,应该对这个不陌生。但其它的脚本语言,如PHP,好象就没有。这使得程序的编写更加清晰,而不需要许多的错误检查了。
 1 2 3 4 5  下一页  尾页