2010-08-30 98 views
4

我正在尋找一個字符串網格,允許我在網格中的任何位置選擇多個單元格,而不需要它們彼此相鄰,例如按住CTRL並單擊網格上的各個單元格。或者如果有人知道如何用標準的Delphi TStringGrid做到這一點。如何選擇一個字符串網格的多個單獨的單元格?

任何指針都會被感激地收到。

回答

4

儘管這裏有很多能力更強的人,因爲你沒有得到任何答案,所以我想我會試試看。

我不知道有一種方法讓組件爲你做這件事。但是,當您按住Control鍵單擊一個單元格時,將調用事件OnSelectedCell。 (我剛剛測試過)。您可以將代碼放入事件處理程序中,該程序將單元格的行和列添加到您保留所選行和列的列表中。然後,在OnDrawCell事件中,突出顯示該單元格:

procedure TForm1.StringGrid1DrawCell( Sender: TObject; 
             ACol: Integer; 
             ARow: Integer; 
             Rect: TRect; 
             State: TGridDrawState); 
begin 
    if CellSelected(ARow, ACol) then // you write CellSelected() to refer to the list you're keeping 
    begin 
     StringGrid1.Canvas.Brush.Color := clYellow; 
     StringGrid1.Canvas.FillRect(Rect); 
     StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); 
    end; 
end; 
+0

嘿,這是一個工作解決方案,我不認爲有任何更容易實現。所以,雖然可能有人比你更有能力(你是不是世界上最好的程序員的人嗎?),你有一個工作解決方案和一個答案,而所有其他人仍然在思考它。 – dummzeuch 2010-08-31 15:56:32

相關問題