2017-04-16 6 views
0

Désolé pour mon anglais. J'ai une table (à partir des vues datasource-> mssql server->), et j'ai besoin de supprimer/masquer/assigner la couleur du texte = blanc/toutes autres choses pour cellules cliquées dans DBGrid. Comme: j'ai cliqué sur cellules-> cellules font = blanc (ou cliqué sur .text: = ''/etc ..); enregistrer; cliquez sur les cellules suivantes; répéter. J'essaie de faire comme ceci:DBGrid enregistrer la couleur de la cellule après OnCellClick (delphi, lazarus)

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; 
    const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); 
begin 
if gdSelected in State 
    then begin 
    with DBGrid1.Canvas do 
    begin 
     Brush.Color:=clWhite; 
     Font.Color:=clWhite; 
     FillRect(Rect); 
    end; 
    end; 
end; 

Mais il fonctionne pour seulement 1 cellule: quand je clique sur les cellules suivant la couleur devient standart (comme dans une autre cellules DBGrid) pour la cellule précédente. Comment puis-je enregistrer la couleur des cellules pour toutes les cellules sur lesquelles j'ai cliqué? // Compliqué par le fait que je ne connais pas grand-chose à Delphi Merci!

+0

Pouvez-vous nous dire pourquoi vous voulez changer la couleur? et ce que vous voulez dire par «je dois supprimer/hide/assign' 'ce que vous voulez accomplir'? – Sami

+0

Je dois cacher les cellules qui ont été cliquées depuis DBGrid – PetyaVasechkin

+0

Vous voulez cacher une colonne ou simplement des cellules spécifiques – Sami

Répondre

0

Je crois que c'est parce que vous utilisez si gdselected dans l'état. Une seule cellule à la fois est sélectionnée, de sorte que seule cette cellule est dessinée à l'aide de votre code de suppression.

Vous devez définir une propriété lorsqu'une cellule est cliquée (par exemple set tag = 1, ou quelque chose comme ça), puis cochez cette balise sur les lignes de "if Sender.Tag> 0. Je crois que l'expéditeur est la cellule elle-même et donc quelque chose comme TControl (Sender) .tag ou un autre casting approprié vous obtiendra ce que vous voulez