用PB寫程式程式:
我有一個資料視窗,單擊滑鼠選擇一行,如果按下CTRL鍵后單擊滑鼠則選擇多行,如何撰寫程式?
uj5u.com熱心網友回復:
If KeyDown ( keycontrol! ) ThenIf This.IsSelected(row) Then
This.SelectRow(row,False)
Else
This.SelectRow(row,True)
End If
Else
This.SelectRow(0,False)
This.SelectRow(row,True)
This.SetRow(row)
End If
uj5u.com熱心網友回復:
你可以參看PB自帶的例子,各種功能都有介紹和原始碼uj5u.com熱心網友回復:
PB自帶實體中有多選去華軟網上有例子可以下載
uj5u.com熱心網友回復:
資料視窗中多行選中程式
首先定義視窗實體變數:
long Il_LastRow = 1 //最后一次點擊的行。
然后開始撰寫多行選中程式。程式演算法描述如下:
1、如果按下了Control鍵
如果是在選中行上,取消該行
否則,選中該行
記錄當前到視窗實體變數中
2、如果按下了Shift鍵
取消所有選中行
選中上次點擊行和當前行之間的所有資料行
記錄當前到視窗實體變數中
3、如果沒有按鍵
如果點擊行為選中行,不執行任何操作
否則,取消所有選中行,選中當前行
記錄當前到視窗實體變數中
比如,我們在視窗dw_1的Clicked事件中撰寫該腳本,程式如下:
LONG Ll_CurrentRow , Ll_Circle
IF row <= 0 THEN RETURN
Ll_CurrentRow = row //當前激活的行
IF keydown(keyshift!) THEN
IF Il_LastRow = 0 THEN
THIS.SelectRow(Ll_CurrentRow , True)//高亮當前行
Il_LastRow = Ll_CurrentRow
ELSE
THIS.SelectRow(0 , False)
IF Ll_CurrentRow > Il_LastRow THEN
FOR Ll_Circle = Il_LastRow TO Ll_CurrentRow
THIS.SelectRow(Ll_Circle , TRUE)
NEXT
ELSE
FOR Ll_Circle = Il_LastRow TO ll_CurrentRow STEP -1
THIS.SelectRow(Ll_Circle , TRUE)
NEXT
END IF
END IF
ELSE
Il_LastRow = Ll_CurrentRow
IF keydown(keycontrol!) THEN
THIS.SelectRow(Ll_CurrentRow , Not THIS.IsSelected(Ll_CurrentRow))
ELSE//單選情況
IF THIS.IsSelected(Ll_CurrentRow) = TRUE THEN //如果本身選中
Il_LastRow = Ll_CurrentRow
ELSE//如果沒有選中,則選中該行,其他行不選中
THIS.SelectRow(0 , FALSE)
THIS.SelectRow(Ll_CurrentRow , TRUE)
Il_LastRow = Ll_CurrentRow
END IF
END IF
END IF
在DoubleClicked中,寫如下代碼取消所有已經選擇的行:
THIS.SelectRow(0 , FALSE)
Il_LastRow = 0
注意:在PB9中,選中Mouse Selection選項即可。
uj5u.com熱心網友回復:
學習來了。uj5u.com熱心網友回復:
up 不錯
uj5u.com熱心網友回復:
學習uj5u.com熱心網友回復:
皇族的不錯.uj5u.com熱心網友回復:
支持5樓!uj5u.com熱心網友回復:
一樓的可以用uj5u.com熱心網友回復:
把這行代碼拷過去就能用了。
uj5u.com熱心網友回復:
學習來了! LZuj5u.com熱心網友回復:
看看uj5u.com熱心網友回復:
PFCuj5u.com熱心網友回復:
學習uj5u.com熱心網友回復:
pfc中有整套的uj5u.com熱心網友回復:
學習uj5u.com熱心網友回復:
學習uj5u.com熱心網友回復:
好
uj5u.com熱心網友回復:
看看uj5u.com熱心網友回復:
我剛好也想做~~不錯~學習uj5u.com熱心網友回復:
我來看看,接分uj5u.com熱心網友回復:
受教uj5u.com熱心網友回復:
每天回帖即可獲得10分可用分!lz這么多人幫你了 我們就不用了
uj5u.com熱心網友回復:
學習uj5u.com熱心網友回復:
支持五樓uj5u.com熱心網友回復:
樓主,看看就加分的怎么現在都沒有分啊uj5u.com熱心網友回復:
強頂PFC。為什么不用PFC呢。這么好的框架,直接用啊。還可以擴展
uj5u.com熱心網友回復:
一樓的正解,如果樓主只是要實作所說的功能的話,一樓是目前最佳的辦法;
如果樓主還是實作Shift鍵控制的功能,五樓是最全的辦法;
樓主該結貼了~~
uj5u.com熱心網友回復:
我是為了分來的。。。uj5u.com熱心網友回復:
什么時間的帖子都翻出來了uj5u.com熱心網友回復:
接分uj5u.com熱心網友回復:
upuj5u.com熱心網友回復:
upuj5u.com熱心網友回復:
If KeyDown ( keycontrol! ) ThenIf This.IsSelected(row) Then
This.SelectRow(row,False)
Else
This.SelectRow(row,True)
End If
Else
This.SelectRow(0,False)
This.SelectRow(row,True)
This.SetRow(row)
End If
uj5u.com熱心網友回復:
首先,我看了,沒分加第二,這題對我來說一點都不簡單。。嗚嗚嗚嗚
第三,他們說書上有例子,具體那本書呀
uj5u.com熱心網友回復:
那么如果是按住SHIFT鍵選擇呢
uj5u.com熱心網友回復:
integer li_2 , i
//按住shift鍵,選擇要選擇的行(在dw的click事件中寫)
this.selectrow(0,false)
this.selectrow(row,true)
this.setrow(row)
if this.isselected(row) and not keydown(keyshift!) then
ii_1 = row //ii_1為實體變數
else
return
end if
if this.isselected(row) then
if keydown(keyshift!) then
li_2 = row
for i = li_1 to li_2
this.selectrow(i,true)
next
end if
end if
uj5u.com熱心網友回復:
自己的代碼都發錯。。。
uj5u.com熱心網友回復:
3Q!uj5u.com熱心網友回復:
markuj5u.com熱心網友回復:
dinguj5u.com熱心網友回復:
學習+接分uj5u.com熱心網友回復:
每天接分 以示存在···uj5u.com熱心網友回復:
看了好多遍了。uj5u.com熱心網友回復:
我是為‘結婚’來的。uj5u.com熱心網友回復:
學習...uj5u.com熱心網友回復:
定義實體變數 long ll_currentrow ll_cricle ll_lastrow在datawindow控制元件的clicked事件中
if row <= 0 or isnull(row) then return
if keydown(keyshift!) then
ll_currentrow = row
if ll_lastrow = 0 then
this.selectrow(0,false)
this.selectrow(ll_currentrow,true)
ll_lastrow = ll_currentrow
else
this.selectrow(0,false)
if ll_currentrow > ll_lastrow then
for ll_cricle = ll_lastrow to ll_currentrow
this.selectrow(ll_cricle,true)
next
else
for ll_cricle = ll_lastrow to ll_currentrow step -1
this.selectrow(ll_cricle,true)
next
end if
//ll_lastrow = ll_currentrow
end if
else
if keydown(keycontrol!) then
ll_currentrow = row
ll_lastrow = ll_currentrow
this.selectrow(ll_currentrow,true)
else
this.selectrow(0,false)
ll_currentrow = 0
ll_cricle = 0
ll_lastrow = 0
end if
end if
uj5u.com熱心網友回復:
上面是我寫的多行選擇的,類似于windows的選擇方式,按shit鍵多選,按ctrl鍵連選。單行的就不寫了,太簡單了。
uj5u.com熱心網友回復:
學習....試驗一下uj5u.com熱心網友回復:
學習 .uj5u.com熱心網友回復:
回答的人這么多了我就不用湊熱鬧了
頂你。。起來。。
uj5u.com熱心網友回復:
#5 樓分析的不錯!uj5u.com熱心網友回復:
我是來湊熱鬧的回復內容太短了!
uj5u.com熱心網友回復:
我是來幫頂的回復內容太短了!
uj5u.com熱心網友回復:
來學習,順便掙十分。這里是一個很好的學習環境。uj5u.com熱心網友回復:
頂!!!!!!!!!!1轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/87809.html
標籤:腳本語言
上一篇:pb6.5呼叫問題
下一篇:關于獲取資料庫中表的問題
