求救啊,delphi函数问题。。。。。
一个delphi中关于函数的问题。我自己定义了两个函数,在FormShow中定义了一些动态生成的image,这两个函数与之相对应。 但OnMouseDown在onshow的时候就触发了,但它应该是在鼠标右键点击的时候触发的。。。。。
我是研究了好几天还是搞不定,哪位朋友帮帮我! 真是不甚感激。。
unit u_main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB, Menus;
type
Tmain = class(TForm)
GroupBox2: TGroupBox;
Imagea: TImage;
Imageb: TImage;
Imagec: TImage;
main1: TLabel;
Label2: TLabel;
Label3: TLabel;
qry: TADOQuery;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure main1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Label4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
Procedure MyClick(Sender:TObject);
Procedure getimageid(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
public
{ Public declarations }
end;
var
main: Tmain;
implementation
Procedure MyClick(Sender:TObject);
begin
..........
end;
Procedure getimageid(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
.........
end;
{$R *.dfm}
procedure Tmain.FormShow(Sender: TObject);
var
k,j:integer;
begin
with qry do
begin
close;
sql.Clear ;
sql.Add('select * from JBQK order by ZJID') ;
open;
k:=RecordCount;
imagecount:=recordcount;
setlength(a,k);
setlength(b,k);
for j:=0 to k-1 do
begin
a[j]:=Timage.Create(Self);
a[j].Parent:=main;
a[j].Picture.LoadFromFile('c:/apply/pic.bmp') ;
a[j].Name:='image'+inttostr(j+1) ;
a[j].PopupMenu:=PopupMenu1;
a[j].Height:=33;
a[j].Width:=33 ;
b[j]:=Tlabel.Create(self);
b[j].Parent:=main;
b[j].Caption:=qry.Fields[2].Value+inttostr(qry.Fields[0].Value)+' ';
qry.Next ;
a[j].OnMouseDown:=getimageid; // 出错了!!!!!!!!!
a[j].OnDblClick:=MyClick;
end;
end;
end;