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

speedbutton+datetimepicker显示为修改前的日期

答題得分者是:smallfox
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-06-13 18:40:50 IP:58.100.xxx.xxx 訂閱
各位大大好,我在用
speedbutton datetimepicker1时,
把日期用键盘修改后(注意:是用键盘修改日期),
然后:showmessage(datetostr(datetimepicker1.date));
显示为修改前的日期。
但用button就没问题
不知各位大大有没有碰到过这么奇怪的事
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-06-14 09:17:05 IP:59.120.xxx.xxx 未訂閱
請在on key press 中處理


===================引 用 luowy651 文 章===================
各位大大好,我在用
speedbutton datetimepicker1时,
把日期用键盘修改后(注意:是用键盘修改日期),
然后:showmessage(datetostr(datetimepicker1.date));
显示为修改前的日期。
但用button就没问题
不知各位大大有没有碰到过这么奇怪的事
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-06-14 15:01:47 IP:65.49.xxx.xxx 訂閱
还是不行





unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons;
type
TForm1 = class(TForm)
Date1: TDateTimePicker;
Edit1: TEdit;
Button1: TButton;
SpeedButton1: TSpeedButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Date1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:= FormatDateTime('YYYYmmdd',Date1.date);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
date1.date:=date;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
edit1.text:= FormatDateTime('YYYYmmdd',Date1.date);
end;
procedure TForm1.Date1KeyPress(Sender: TObject; var Key: Char);
begin
edit1.text:= FormatDateTime('YYYYmmdd',Date1.date);
end;
end.
編輯記錄
luowy651 重新編輯於 2010-06-14 15:03:23, 註解 無‧
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-06-14 16:11:29 IP:59.120.xxx.xxx 未訂閱
在on key press 中處理時,您當然還必須判斷是不是按了Enter鍵
假如按了Enter鍵才將數值給Edit
呀~



===================引 用 luowy651 文 章===================
还是不行





unit Unit1;
interface
uses
? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
? Dialogs, StdCtrls, ComCtrls, Buttons;
type
? TForm1 = class(TForm)
??? Date1: TDateTimePicker;
??? Edit1: TEdit;
??? Button1: TButton;
??? SpeedButton1: TSpeedButton;
??? procedure Button1Click(Sender: TObject);
??? procedure FormCreate(Sender: TObject);
??? procedure SpeedButton1Click(Sender: TObject);
??? procedure Date1KeyPress(Sender: TObject; var Key: Char);
? private
??? { Private declarations }
? public
??? { Public declarations }
? end;
var
? Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:= FormatDateTime('YYYYmmdd',Date1.date);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
date1.date:=date;
end;
?
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
?edit1.text:= FormatDateTime('YYYYmmdd',Date1.date);
end;
procedure TForm1.Date1KeyPress(Sender: TObject; var Key: Char);
begin
?edit1.text:= FormatDateTime('YYYYmmdd',Date1.date);
end;
end.
編輯記錄
老大仔 重新編輯於 2010-06-14 16:12:12, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-06-15 10:16:53 IP:65.49.xxx.xxx 訂閱
谢谢老大仔大大,但一般情况下,不会去按key,大部分情况下都是直接点mouse的




===================引 用 老大仔 文 章===================
在on key press 中處理時,您當然還必須判斷是不是按了Enter鍵
假如按了Enter鍵才將數值給Edit
呀~



老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-06-15 10:27:15 IP:59.120.xxx.xxx 未訂閱
所以照您這樣說~
一開始您說"用键盘修改日期" 所以才需要在on Key Press 中去操作的
而現在又說"大部分情况下都是直接点mouse的"
所以您到底是要哪種方法??



===================引 用 luowy651 文 章===================
谢谢老大仔大大,但一般情况下,不会去按key,大部分情况下都是直接点mouse的




===================引 用 老大仔 文 章===================
在on key press 中處理時,您當然還必須判斷是不是按了Enter鍵
假如按了Enter鍵才將數值給Edit
呀~



編輯記錄
老大仔 重新編輯於 2010-06-15 10:28:44, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-06-15 11:08:24 IP:125.121.xxx.xxx 訂閱
抱歉,是我没说清楚,我指的是先用键盘修改日期(在datetimepicker元件上可看到有蓝色的修改痕迹),然后再用mouse去点击speedbutton1

===================引 用 老大仔 文 章===================
所以照您這樣說~
一開始您說"用键盘修改日期" 所以才需要在on Key Press 中去操作的
而現在又說"大部分情况下都是直接点mouse的"
所以您到底是要哪種方法??



===================引 用 luowy651 文 章===================
谢谢老大仔大大,但一般情况下,不会去按key,大部分情况下都是直接点mouse的




===================引 用 老大仔 文 章===================
在on key press 中處理時,您當然還必須判斷是不是按了Enter鍵
假如按了Enter鍵才將數值給Edit
呀~



hpsonic
一般會員


發表:3
回覆:12
積分:3
註冊:2009-05-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-06-15 13:07:55 IP:60.249.xxx.xxx 訂閱
TForm1.DateTimePicker1Change 是否可以解決呢?一被修改就更改 但不建議用showmessage ,會一直提示,改秀在label或edit


===================引 用 luowy651 文 章===================
各位大大好,我在用
speedbutton datetimepicker1时,
把日期用键盘修改后(注意:是用键盘修改日期),
然后:showmessage(datetostr(datetimepicker1.date));
显示为修改前的日期。
但用button就没问题
不知各位大大有没有碰到过这么奇怪的事
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-06-17 15:45:32 IP:125.121.xxx.xxx 訂閱
谢谢关注,情况一样,可能是focus的问题,只要先在别的元件上focus一下,就可解决,只是我很奇怪为什么会这样


===================引 用 hpsonic 文 章===================
TForm1.DateTimePicker1Change 是否可以解決呢?一被修改就更改 但不建議用showmessage ,會一直提示,改秀在label或edit


===================引 用 luowy651 文 章===================
各位大大好,我在用
speedbutton datetimepicker1时,
把日期用键盘修改后(注意:是用键盘修改日期),
然后:showmessage(datetostr(datetimepicker1.date));
显示为修改前的日期。
但用button就没问题
不知各位大大有没有碰到过这么奇怪的事
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2010-06-17 17:48:46 IP:203.73.xxx.xxx 訂閱
因為 TSpeedButton 不會 Focused.
也就是當 TSpeedButton 被 Click 時, 游標並不會移到這個 TSpeedButton 物件上,
當然也就不會觸發 TEdit().OnExit 事件,
所以你在 TSpeedButton 的 OnClick 事件中去讀取 TEdit().Text 值時, 就會有問題.
不只是 TSpeedButton 不會 Focused, TToolButton 也是,
這是選用物件時要注意的地方.
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2010-06-17 17:52:04 IP:203.73.xxx.xxx 訂閱
不是TSpeedButton 的 forbidden 事件
是 TSpeedButton.OnClick 事件
(貼太快了)
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#12 引用回覆 回覆 發表時間:2010-06-17 17:53:58 IP:203.73.xxx.xxx 訂閱
版主:
T S p e e d B u t t o n . O n C l i c k 會變成 TSpeedButton.OnClick
系統時間:2024-05-02 0:55:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!