有關dbedit元件背景色問題 |
答題得分者是:sos_admin
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 我在dbctlgrid中放置了三個dbedit元件(dbedit1,dbedit2,dbedit3),當dbedit3得到焦點時 Color := clblue失去焦點時Color := clwhite,可是當我光標橫向移動時也就是移到下一條記錄時,dbedit3的焦點沒有改變,整個dbctlgrid上的記錄(dbedit3)的背景色都變成藍色的啦!我只需要當前記錄的dbedit3變色,請教各位大大我要怎麼做? procedure TForm1.DBEdit3Enter(Sender: TObject); begin TDBEdit(Sender).Color := clBlue; end; procedure TForm1.DBEdit3Exit(Sender: TObject); begin TDBEdit(Sender).Color := clWhite; end;~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
unit u_o_odrm; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, u_parent_two, Menus, ComCtrls, ExtCtrls, StdCtrls, DB, ADODB,
Mask, DBCtrls, wwdbedit, Wwdotdot, Wwdbcomb, wwdblook, dbcgrids, ImgList,
dbgridnosc,DateUtils; type
Tfm_o_odrm = class(Tfm_parent_two)
GroupBox1: TGroupBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
q_odrm_master: TADOQuery;
q_odrm_detail: TADOQuery;
ds_odrm_master: TDataSource;
ds_odrm_detail: TDataSource;
q_odrm_masterFACT_NO: TStringField;
q_odrm_masterODR_NO: TStringField;
q_odrm_masterCUST_NO: TStringField;
q_odrm_masterYYMM: TStringField;
q_odrm_masterARTIC_NO: TStringField;
q_odrm_masterODR_TYPE: TStringField;
q_odrm_masterCUST_ODR: TStringField;
q_odrm_masterPACK_MK: TStringField;
q_odrm_masterYS_NO: TStringField;
q_odrm_masterIN_BOX: TStringField;
q_odrm_masterETD_DATE: TStringField;
q_odrm_masterSHADE: TStringField;
q_odrm_masterODR_ID: TStringField;
q_odrm_masterTOTAL_QTY: TIntegerField;
q_odrm_masterART_MK: TStringField;
q_odrm_masterPURD_MK: TStringField;
q_odrm_masterCREATE_TM: TStringField;
q_odrm_masterUSER_NAME: TStringField;
q_odrm_masterODR_MEM: TStringField;
q_odrm_masterSPC_MEM1: TStringField;
q_odrm_masterSPC_MEM: TStringField;
q_odrm_masterSIZE_MEM: TStringField;
q_odrm_masterSHOE_MEM: TStringField;
q_odrm_masterNHTM_MEM: TStringField;
q_odrm_masterWXTM_MEM: TStringField;
q_odrm_masterPROC_MEM: TStringField;
q_odrm_masterSZTM_MEM: TStringField;
q_odrm_masterSYL_MEM: TStringField;
q_odrm_masterYYL_MEM: TStringField;
q_odrm_masterBOM_MEM: TStringField;
q_odrm_masterMT_MEM: TStringField;
q_odrm_masterRULE_MEM: TStringField;
q_odrm_masterPROC_MK: TStringField;
Label3: TLabel;
DBEdit1: TDBEdit;
Label4: TLabel;
DBEdit2: TDBEdit;
Label6: TLabel;
Label7: TLabel;
DBEdit5: TDBEdit;
Label5: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
DBEdit12: TDBEdit;
wwDBComboBox1: TwwDBComboBox;
wwDBComboBox2: TwwDBComboBox;
wwDBLookupCombo1: TwwDBLookupCombo;
wwDBComboBox3: TwwDBComboBox;
q_cust: TADOQuery;
wwDBLookupCombo3: TwwDBLookupCombo;
wwDBLookupCombo4: TwwDBLookupCombo;
wwDBComboBox4: TwwDBComboBox;
Label15: TLabel;
wwDBComboBox5: TwwDBComboBox;
Label16: TLabel;
DBEdit3: TDBEdit;
Label17: TLabel;
wwDBComboBox6: TwwDBComboBox;
Label18: TLabel;
wwDBComboBox7: TwwDBComboBox;
Label19: TLabel;
wwDBComboBox8: TwwDBComboBox;
Label20: TLabel;
wwDBComboBox9: TwwDBComboBox;
Label21: TLabel;
wwDBComboBox10: TwwDBComboBox;
Label22: TLabel;
wwDBComboBox11: TwwDBComboBox;
Label23: TLabel;
wwDBComboBox12: TwwDBComboBox;
Label24: TLabel;
wwDBComboBox13: TwwDBComboBox;
Label25: TLabel;
wwDBComboBox14: TwwDBComboBox;
Label26: TLabel;
wwDBComboBox15: TwwDBComboBox;
Label27: TLabel;
wwDBComboBox16: TwwDBComboBox;
Label28: TLabel;
wwDBComboBox17: TwwDBComboBox;
Label29: TLabel;
wwDBComboBox18: TwwDBComboBox;
Label30: TLabel;
wwDBComboBox19: TwwDBComboBox;
Label31: TLabel;
wwDBComboBox20: TwwDBComboBox;
Label32: TLabel;
DBEdit4: TDBEdit;
Label33: TLabel;
DBEdit6: TDBEdit;
Label34: TLabel;
DBEdit7: TDBEdit;
Label35: TLabel;
DBEdit8: TDBEdit;
Label36: TLabel;
DBEdit9: TDBEdit;
Label37: TLabel;
DBEdit10: TDBEdit;
q_odrm_detailFACT_NO: TStringField;
q_odrm_detailODR_NO: TStringField;
q_odrm_detailSIZE_NO: TStringField;
q_odrm_detailSIZE_PC: TStringField;
q_odrm_detailODR_NO_1: TStringField;
q_odrm_detailQTY: TIntegerField;
Label38: TLabel;
Label39: TLabel;
Label40: TLabel;
Label41: TLabel;
Label42: TLabel;
Label43: TLabel;
Label44: TLabel;
Label45: TLabel;
Label46: TLabel;
ImageList1: TImageList;
DBgridNoSc1: TDBgridNoSc;
dbsize1: TDBEdit;
dbsize2: TDBEdit;
dbqty: TDBEdit;
q_articm_detail: TADOQuery;
q_articm_detailBRANK_NO: TStringField;
q_articm_detailARTIC_NM: TStringField;
ds_articm_detail: TDataSource;
DBEdit15: TDBEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure q_odrm_masterAfterOpen(DataSet: TDataSet);
procedure DBEdit2Exit(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure q_odrm_masterBeforeClose(DataSet: TDataSet);
// procedure insert_detail;virtual;
// procedure delete_detail;virtual;
procedure DBEdit1Exit(Sender: TObject);
procedure DBEdit1Enter(Sender: TObject);
procedure wwDBLookupCombo1Change(Sender: TObject);
procedure DBEdit10Exit(Sender: TObject);
procedure wwDBLookupCombo3Enter(Sender: TObject);
procedure ue_delete_detail;virtual;
procedure ue_insert_detail;virtual;
procedure wwDBComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit10KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBgridNoSc1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dbqtyEnter(Sender: TObject);
procedure dbqtyExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ue_find;override;
procedure ue_insert;override;
procedure ue_edit;override;
procedure ue_delete;override;
procedure ue_save;override;
procedure ue_cancel;override;
end; var
fm_o_odrm: Tfm_o_odrm; implementation uses u_dm_g3yw, u_function, u_main; {$R *.dfm} procedure Tfm_o_odrm.FormCreate(Sender: TObject);
begin
inherited;
dm_g3yw.q_articm.Close;
dm_g3yw.q_articm.Parameters[0].Value := '%';
dm_g3yw.q_articm.Open;
q_odrm_master.Open;
end; procedure Tfm_o_odrm.Button1Click(Sender: TObject);
begin
shortdateformat := 'yyyymmdd';
edit2.Text := datetostr(date);
end; procedure Tfm_o_odrm.q_odrm_masterAfterOpen(DataSet: TDataSet);
begin
if q_cust.Active = false then
q_cust.Active := true;
if q_odrm_detail.Active = false then
q_odrm_detail.Active := true;
if q_articm_detail.Active = false then
q_articm_detail.Active := true;
end; procedure Tfm_o_odrm.DBEdit2Exit(Sender: TObject);
var
qry_odrm :Tadoquery;
node:Ttreenode;
days:tdatetime;
begin
if vstatus = find then
begin
qry_odrm :=Tadoquery.Create(self);
qry_odrm.Connection := dm_g3yw.cnnt_g3yw;
qry_odrm.SQL.Add('SELECT ODR_NO');
qry_odrm.SQL.Add(' FROM Y_ODRM');
qry_odrm.SQL.Add(' WHERE FACT_NO = ''337''');
qry_odrm.SQL.Add(' AND ODR_NO LIKE '+#39+dbedit1.Text+'%'+#39);
qry_odrm.SQL.Add(' AND YYMM LIKE '+#39+dbedit2.Field.Text+'%'+#39);
qry_odrm.Open;
node :=nil;
if qry_odrm.RecordCount >0 then
begin
treeview1.Items.BeginUpdate;
while not qry_odrm.Eof do
begin
node :=treeview1.Items.Add(node,qry_odrm.FieldValues['odr_no']);
node.ImageIndex := 0;
node.SelectedIndex := 1;
qry_odrm.Next;
end;
treeview1.Items.EndUpdate;
end
else
showmessage('查無此范圍資料!');
qry_odrm.Close;
qry_odrm.Free;
dbedit1.SetFocus;
end
else
begin
if checkyymm(dbedit2.Text) = false then
dbedit2.SetFocus;
end;
if vstatus = insert then
begin
try
shortdateformat := 'yyyymmdd';
days :=endofthemonth(strtodate(dbedit2.EditText+'/01'));
q_odrm_master.FieldByName('ETD_DATE').AsString := datetostr(days);
except
q_odrm_master.FieldByName('ETD_DATE').AsString := dbedit2.Text;
end;
end; end; procedure Tfm_o_odrm.ue_find;
begin
inherited;
treeview1.Items.Clear;
dbedit1.SetFocus;
end; procedure Tfm_o_odrm.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
q_odrm_master.Close;
q_odrm_master.Parameters[0].Value :=node.Text;
q_odrm_master.Open;
end; procedure Tfm_o_odrm.ue_insert;
begin
inherited;
if q_odrm_master.State = dsinsert then
q_odrm_master.Cancel;
q_odrm_master.Insert;
dbedit1.SetFocus;
end; procedure Tfm_o_odrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
q_odrm_master.Close;
inherited;
end; procedure Tfm_o_odrm.q_odrm_masterBeforeClose(DataSet: TDataSet);
begin
q_cust.Close;
q_articm_detail.Close;
q_odrm_detail.Close;
end; procedure Tfm_o_odrm.ue_cancel;
begin
inherited;
q_odrm_master.Cancel;
end; procedure Tfm_o_odrm.ue_delete;
var
qry_odrs:Tadoquery;
begin
inherited;
if q_odrm_master.RecordCount < 1 then
showmessage('沒有資料可刪除!')
else
if messagedlg('確定要刪除此張訂單嗎?',mtWarning,[mbyes,mbno],0)=mryes then
try
qry_odrs :=Tadoquery.Create(self);
qry_odrs.Connection := dm_g3yw.cnnt_g3yw;
qry_odrs.SQL.Add('DELETE Y_ODRMS');
qry_odrs.SQL.Add(' WHERE FACT_NO = '+#39+'337'+#39);
qry_odrs.SQL.Add(' AND ODR_NO = '+#39+DBEDIT1.Text+#39);
qry_odrs.ExecSQL;
q_odrm_master.Delete;
qry_odrs.free;
except
showmessage('刪除失敗!請洽詢程式員!');
end;
end; procedure Tfm_o_odrm.ue_edit;
begin
inherited;
dbedit1.SetFocus;
end; procedure Tfm_o_odrm.ue_save;
begin
inherited; end; procedure Tfm_o_odrm.DBEdit1Exit(Sender: TObject);
var
q_temp :Tadoquery;
yyyy,mm:string;
begin
if vstatus = insert then
begin
if trim(dbedit1.Text) = '' then
begin
showmessage('訂單代號不可為空!');
dbedit1.SetFocus;
end
else
begin
q_temp :=Tadoquery.Create(self);
q_temp.Connection := dm_g3yw.cnnt_g3yw;
q_temp.SQL.Add('SELECT ODR_NO');
q_temp.SQL.Add(' FROM Y_ODRM');
q_temp.SQL.Add(' WHERE FACT_NO = '+#39+'337'+#39);
q_temp.SQL.Add(' AND ODR_NO = '+#39+dbedit1.Text+#39);
q_temp.Open;
if q_temp.FieldByName('ODR_NO').AsString = dbedit1.Text then
begin
showmessage('訂單已存在,請勿重復!');
dbedit1.SetFocus;
end
else
begin
yyyy :='20'+copy(dbedit1.Text,3,2);
mm := copy(dbedit1.Text,5,2);
if mm > '12' then
mm := '12'
else if mm = '00' then
mm := '01';
q_odrm_master.FieldByName('YYMM').AsString := yyyy+mm;
end;
q_temp.Free;
end;
end;
end; procedure Tfm_o_odrm.DBEdit1Enter(Sender: TObject);
begin
if vstatus = insert then
begin
q_odrm_master.FieldByName('FACT_NO').AsString := vfact;
shortdateformat := 'yyyymmdd';
q_odrm_master.FieldByName('CREATE_TM').AsString :=datetostr(date);
q_odrm_master.FieldByName('USER_NAME').AsString := VUSER_NAME;
end;
end; procedure Tfm_o_odrm.wwDBLookupCombo1Change(Sender: TObject);
begin
q_articm_detail.Close;
q_articm_detail.Parameters[0].Value := wwdblookupcombo1.Text;
q_articm_detail.open;
end; procedure Tfm_o_odrm.DBEdit10Exit(Sender: TObject);
begin
if checkbool(dbedit10.Text) = false then
dbedit10.SetFocus
end; procedure Tfm_o_odrm.wwDBLookupCombo3Enter(Sender: TObject);
begin
if (vstatus = insert) and (wwdblookupcombo3.Text ='') then
wwdblookupcombo3.Text :='00';
end; procedure Tfm_o_odrm.ue_delete_detail;
begin
q_odrm_detail.Delete;
end; procedure Tfm_o_odrm.ue_insert_detail;
begin
q_odrm_detail.Insert;
dbsize1.SetFocus;
end; procedure Tfm_o_odrm.wwDBComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not (key in ['Y','N']) then
key :=#0;
end; procedure Tfm_o_odrm.DBEdit10KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then
begin
if vstatus = insert then
begin
if messagedlg('是否輸入SIZE明細?',mtinformation,[mbyes,mbno],0) = mryes then
ue_insert_detail;
end
else
dbsize1.SetFocus;
end;
end; procedure Tfm_o_odrm.DBgridNoSc1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_return then
key := vk_tab;
end;
procedure Tfm_o_odrm.dbqtyEnter(Sender: TObject);
begin
Tdbedit(sender).Color := clblue;
end; procedure Tfm_o_odrm.dbqtyExit(Sender: TObject);
begin
Tdbedit(sender).Color := clwhite;
end; end.
------以上是我的程式碼,下面是運行結果----- 發表人 - wlc_wang 於 2003/08/26 15:07:42
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
wlc_wang 兄:
如果您正确设置tdbedit的onEnter and onexit 是可以实现的您的功能的,不可能出现您〔图〕中所显示的样式。 可能是:
--------------
procedure Tfm_o_odrm.dbqtyEnter(Sender: TObject);
begin
Tdbedit(sender).Color := clblue;
end; procedure Tfm_o_odrm.dbqtyExit(Sender: TObject);
begin
Tdbedit(sender).Color := clwhite;
end;
---------------
您的那几个的tdbedit 的onEnter 都指向Tfm_o_odrm.dbqtyEnter,而没有都指向Tfm_o_odrm.dbqtyExit,请检查一下哦
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls; type
TTfm_o_odrm = class(TForm)
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
procedure myEnter(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end; var
Tfm_o_odrm: TTfm_o_odrm; implementation {$R *.dfm} procedure TTfm_o_odrm.myEnter(Sender: TObject);
var
i:integer;
begin
for i:=0 to Tfm_o_odrm.ComponentCount -1 do
if Tfm_o_odrm.Components[i] is Tdbedit then
begin
(Tfm_o_odrm.Components[i] as Tdbedit).OnEnter :=myEnter;
(Tfm_o_odrm.Components[i] as Tdbedit).Color :=clwhite;
end;
if Sender is Tdbedit then Tdbedit(sender).Color := clblue;
end; procedure TTfm_o_odrm.FormCreate(Sender: TObject);
begin
myEnter(sender);
end; end. 对不起,您的显示的这种效果我一直没有试验出现;我现在给你写个方法一定可以解决您的问题,注意红色部分〔要在FormCreate的时候调用一下,就可以了〕
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
wlc_wang
一般會員 發表:5 回覆:6 積分:2 註冊:2003-06-30 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |