2013-07-09 18 views
2

我使用的是PowerBuilder 10.5,我的窗口上有兩個單行編輯(SLE)字段 - sle_date1sle_date2設置開始時的單行編輯日期

我需要的是一旦我打開我的程序,就可以填充這兩個字段。 sle_date2必須具有今天的值(例如 - 09.07.13),並且sle_date1必須具有(sle_date2 -30天)的值(示例09.06.13)。

因此,正如我所說,一旦我打開我的程序,這兩個字段將立即填入今天的日期和一個月前的日期的值。

我該怎麼做?任何建議只是爲了讓我去?

回答

1
  • 您可以添加一些代碼來填充編輯在給定的日期open()事件的窗口
  • 的,可以是today(),你可以計算一個新的日期加/減天數與RelativeDate()

下面的代碼只是回答您的問題(雖然它可能會更好,而不是使用singlelineedit一些editmask控制,因爲這將減輕用戶的輸入的手柄):

date ld_now, ld_previousmonth 
string ls_datefmt 

ls_datefmt = "dd.mm.yy" 
ld_now = today() 
sle_1.text = string(ld_now, ls_datefmt) 
ld_previousmonth= RelativeDate(ld_now, -30) 
sle_2.text = string(ld_previousmonth, ls_datefmt) 

此時顯示09.07.1309.06.13

+0

這爲我做,非常感謝你! –

+0

嗨。我需要再問一個問題 - 兩個sle字段是可寫的,所以客戶可以編寫其他默認日期。如何設置date1和date2之間的差異最大爲一年或365天的條件? –

+1

通常有多種方法可以在計算中做出事情...我會在窗口中添加一個函數來計算日期差異,並在差異太高時顯示消息。調用函數將一個事件映射到您調用函數的sle字段的'pbm_enchange'事件。如果您想對每個鍵入的字符做出反應,您還可以映射'pbm_enmodified'事件。 – Seki

1

首先你需要打開你的窗口。你可以將它與把這段代碼在你的應用程序中打開的事件(讓我們假設你的窗口w_main):

open(w_main) 

之後,在把這個代碼在窗口的open事件:

sle_date1.text = string(today()) 
sle_date2.text = string(RelativeDate(Today(), -30)) 

我認爲這解決了你的問題。下面是RelativeDate有點幫助:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.pocketbuilder_2.0.pkpsref/html/pkpsref/pkpsref662.htm

問候 的Gabor

+1

」string()'中沒有臨時變量,直接使用函數調用會使代碼更難追蹤。此外,你可以調用'today()'兩次,這會*導致得到2個不同的日期。當然,它可能不會出現在'today()'中,但如果用'now()'使用日期時間或時間,可能會導致奇怪的結果... – Seki

+0

你是對的。我的解決方案相當快,然後變得複雜! – DARKinVADER

相關問題