点击DBgrid其中一行 如何使cells下值相同的其他行 一起被选中? |
答題得分者是:Fishman
|
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
在 DBGrid 的 On_Cell_Click 事件,但有一點點小BUG待自行修正
<textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm1.DBGrid1CellClick(Column: TColumn); var Saveplace : TBookMark; CurrentID: Integer; begin DBGrid1.SelectedRows.Clear; with DBGrid1.DataSource.DataSet do begin if Active then begin CurrentID := FieldByName('id').AsInteger; DisableControls; Saveplace := GetBookmark; try First; while not eof do begin if FieldByName('id').AsInteger = CurrentID then begin DBGrid1.SelectedRows.CurrentRowSelected := True; Application.ProcessMessages; end; Next; end; GotoBookmark(SavePlace); finally FreeBookmark(SavePlace); EnableControls; end; end; end; end; </textarea>
------
Fishman |
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
多谢Fishman回复
代码执行无问题 但仍然只能高亮其中一行 即不能实现 点击时 班级相同的行 一起高亮显示 我想关键是不是在这里 if FieldByName('id').AsInteger = CurrentID then begin DBGrid1.SelectedRows.CurrentRowSelected := True; //这里?还是dbgrid默认每次循环时高亮只显示一行 当再次循环时 先前高亮的一行就被后来高亮的一行代替了? Application.ProcessMessages; end; 这里 是不是 始终和查找行相比较 自己和自己比较 是否是这样的原因 不知如何调整 感谢 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |