
本來是上圖這樣,點擊左邊這個全選,可以選擇按鈕全部全選
現在比如按照省編碼分組之后,在捕捉到點擊+號,點擊下圖
全選按鈕,把+號下面的選擇框全選
請教dephi大神,給個思路該怎么做,或者給下代碼,3QQQQQQQQ

uj5u.com熱心網友回復:
用的是tcxGrid 控制元件uj5u.com熱心網友回復:
第一個全選是整個table遍歷并選中下級.第二個全選先定位到選中的分組, 然后選中下級.
uj5u.com熱心網友回復:
對dephi不是很懂,大神能否簡單寫下代碼給我參考一下


uj5u.com熱心網友回復:
我第一個全選按鈕是這么做的
procedure TfrmFymxsh.cb_select_allPropertiesEditValueChanged(
Sender: TObject);
begin
inherited;
if cds_mxlb.RecordCount = 0 then
cb_select_all.Checked := false;
cds_mxlb.DisableControls;
if cb_select_all.Checked then //全選
begin
cds_mxlb.First;
while not cds_mxlb.Eof do
begin
cds_mxlb.Edit;
cds_mxlb.FieldByName('select').AsBoolean := true;
cds_mxlb.Post;
cds_mxlb.Next;
end;
end
else //全不選
begin
cds_mxlb.First;
while not cds_mxlb.Eof do
begin
cds_mxlb.Edit;
cds_mxlb.FieldByName('select').AsBoolean := false;
cds_mxlb.Post;
cds_mxlb.Next;
end;
end;
cds_mxlb.EnableControls;
cds_mxlb.First;
end;
uj5u.com熱心網友回復:
大俠們幫幫忙啊uj5u.com熱心網友回復:
做個判斷就可以, 下邊是示意代碼procedure TfrmFymxsh.cb_select_allPropertiesEditValueChanged(
Sender: TObject);
begin
inherited;
if cds_mxlb.RecordCount = 0 then
cb_select_all.Checked := false;
cds_mxlb.DisableControls;
if cb_select_all.Checked then //全選
begin
cds_mxlb.First;
while not cds_mxlb.Eof do
begin
cds_mxlb.Edit;
cds_mxlb.FieldByName('select').AsBoolean := true;
cds_mxlb.Post;
cds_mxlb.Next;
end;
end
else
if cb_select_Curr.Checked then //選中當前
begin
cds_mxlb.First;
while not cds_mxlb.Eof do
begin
//如果明顯表中的地區編碼等于當前選中的分組編碼, 則選中
if cds_mxlb.FieldByName('dqbm').AsString = 'aaa' then
begin
cds_mxlb.Edit;
cds_mxlb.FieldByName('select').AsBoolean := true;
cds_mxlb.Post;
end;
cds_mxlb.Next;
end;
end
else //全不選
begin
cds_mxlb.First;
while not cds_mxlb.Eof do
begin
cds_mxlb.Edit;
cds_mxlb.FieldByName('select').AsBoolean := false;
cds_mxlb.Post;
cds_mxlb.Next;
end;
end;
cds_mxlb.EnableControls;
cds_mxlb.First;
end;
uj5u.com熱心網友回復:
我的想法是:點擊全選按鈕,先取消所有選擇,再遍歷展開的組,最后選擇展開組的資料行uj5u.com熱心網友回復:
if cds_mxlb.FieldByName('dqbm').AsString = 'aaa' then 這段是什么意思啊,aaa 是什么
uj5u.com熱心網友回復:
procedure TfrmFymxsh.cxchckbx1PropertiesEditValueChanged(
Sender: TObject);
var
i: Integer;
begin
inherited;
if cxchckbx1.Checked then //全選
begin
for i := 0 to Grd_mxlbDBTV.ViewData.RowCount-1 do begin
if Grd_mxlbDBTV.ViewData.Rows[i].IsData then
Grd_mxlbDBTV.ViewData.Rows[i].Values[0]:=true;
end;
end
else //反選
begin
for i := 0 to Grd_mxlbDBTV.ViewData.RowCount-1 do begin
if Grd_mxlbDBTV.ViewData.Rows[i].IsData then
Grd_mxlbDBTV.ViewData.Rows[i].Values[0]:=false;
end;
end;
end;
我現在就寫成這樣了,能選中展開分組下的選擇框。但是有個bug,就是對選中的選擇框進行操作的時候,提示沒有選擇 選擇框!
uj5u.com熱心網友回復:
換個控制元件cxTreeList轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/111604.html
標籤:語言基礎/算法/系統設計
上一篇:判斷字串是否被包含
下一篇:FastReport問題
