我想使用callback回傳訊息 |
尚未結案
|
sunhihi
一般會員 發表:4 回覆:7 積分:2 註冊:2008-12-17 發送簡訊給我 |
我想將form2的ListView1Click所指定的訊息使用callback回傳給form1
請問怎麼作 程式碼如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls; type TForm1 = class(TForm) DBImage1: TDBImage; DBImage2: TDBImage; DBImage3: TDBImage; DBImage4: TDBImage; DBImage5: TDBImage; DBImage6: TDBImage; DBImage7: TDBImage; DBImage8: TDBImage; DBImage9: TDBImage; DBImage10: TDBImage; DBImage11: TDBImage; DBImage12: TDBImage; DBImage13: TDBImage; DBImage14: TDBImage; DBImage15: TDBImage; DBImage16: TDBImage; Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private procedure CallBack(Sender: TObject); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var list: TList; begin //form2.show; ShowForm(list, CallBack); end; procedure TForm1.Button2Click(Sender: TObject); begin freeform; end; procedure TForm1.CallBack(Sender: TObject); begin Label1.Caption := Caption; end; end. //----------------------------------------------------------------------------- unit Unit2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Db, DBTables, DBClient, MConnect, SConnect; type TForm2 = class(TForm) ListView1: TListView; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; ComboBox1: TComboBox; ComboBox2: TComboBox; Query1: TQuery; Database1: TDatabase; SocketConnection1: TSocketConnection; procedure FormCreate(Sender: TObject); procedure ListView1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); private FCallBack: TNotifyEvent; procedure myFunc(Caption: string); { Private declarations } public { Public declarations } end; procedure ShowForm(list: TList; CallBack: TNotifyEvent); procedure FreeForm; var Form2: TForm2; implementation uses Unit1; {$R *.DFM} procedure TForm2.FormCreate(Sender: TObject); var I: Integer; begin ListView1.ViewStyle := vsReport; for I := 0 to Query1.FieldCount-1 do begin with ListView1.Columns.Add do begin Caption := Query1.Fields.Fields[I].DisplayLabel; Width := Query1.Fields.Fields[I].DisplayWidth*10; end; end; Query1.First; while (not Query1.Eof) do begin with ListView1.Items.Add do begin Caption := Query1.Fields.Fields[0].AsString; for I := 1 to Query1.FieldCount-1 do SubItems.Add(Query1.Fields.Fields[I].AsString); end; Query1.Next; end; Edit2.Text := DateTimeToStr(Now); end; procedure TForm2.ListView1Click(Sender: TObject); begin myFunc(ListView1.Selected.Caption); end; procedure TForm2.myFunc(Caption: string); begin //FCallBack(Caption); form1.Label1.Caption := Caption; end; procedure TForm2.Button2Click(Sender: TObject); var i: Integer; begin Query1.close; Query1.SQL.clear; Query1.SQL.Add('Insert into KIN'); Query1.SQL.Add('values(:Title, :Sub_title, :Description, :Creator, :DateTime, :Pic)'); query1.parambyname('Title').asstring := ComboBox1.Text; query1.parambyname('Sub_title').asstring := ComboBox2.Text; query1.parambyname('Description').asstring := Memo1.Lines.GetText; query1.parambyname('Creator').asstring := Edit1.Text; query1.parambyname('DateTime').asstring := edit2.Text; query1.parambyname('Pic').asstring := Edit1.Text; query1.ExecSQL; //------------------------------------------------------------------------------------- i := ListView1.Items.Count; ListView1.Items.Add.Caption := ComboBox1.text; ListView1.Items[i].SubItems.Add(ComboBox2.text); ListView1.Items[i].SubItems.Add(memo1.lines.GetText); ListView1.Items[i].SubItems.Add(edit1.Text); ListView1.Items[i].SubItems.Add(edit2.Text); end; procedure ShowForm(list: TList; CallBack: TNotifyEvent); begin if (not Assigned(Form2)) then Form2 := TForm2.Create(Application); Form2.FCallBack := CallBack; //Form2.SetDisplayList(list); Form2.Show; end; procedure FreeForm; begin if Assigned(Form2) then FreeAndNil(Form2); end; procedure TForm2.Button4Click(Sender: TObject); begin FreeForm; end; procedure TForm2.Button1Click(Sender: TObject); begin Query1.close; Query1.SQL.clear; Query1.SQL.Add('select * From KIN where Creator = '' Edit1.text '''); Query1.open; end; procedure TForm2.Button3Click(Sender: TObject); var i: Integer; begin Query1.close; Query1.SQL.clear; Query1.SQL.Add('delete from KIN'); Query1.SQL.Add('where Creator = :Creator'); Query1.parambyname('Creator').asstring := Edit1.text; Query1.ExecSQL; for i:=ListView1.Items.Count-1 downto 0 Do if ListView1.Items[i].Caption = Edit1.Text then begin ListView1.Items.Item[i].Delete(); end; end; end. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |