線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1490
推到 Plurk!
推到 Facebook!

我想使用callback回傳訊息

尚未結案
sunhihi
一般會員


發表:4
回覆:7
積分:2
註冊:2008-12-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-17 17:35:16 IP:61.219.xxx.xxx 訂閱
我想將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.
系統時間:2024-04-20 3:58:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!