Einzelnen Beitrag anzeigen

stefankr

Registriert seit: 9. Mai 2010
24 Beiträge
 
#1

Fragen zum Färben einer Stringgrid-Zeile

  Alt 20. Apr 2015, 17:51
Hallo liebe Experten!

Ich möchte ein kleines Programm erstellen, bei dem Daten in einem Stringgrid angezeigt werden. Wenn ich auf eine Zeile des Stringgrids doppelklicke, öffnet sich an der Stelle ein PopUp-Menü mit verschiedenen Optionen, z.B. die Daten in der angeklickten Stringgrid-Zeile an einer anderen Stelle des Programms öffnen, um sie bearbeiten zu können.

Nach dem Doppelklick auf die Zeile soll diese eingefärbt werden, damit man sofort sieht, welche Zeile gerade in Verwendung ist. Das habe ich mit folgendem Code in etwa erreicht:

Delphi-Quellcode:
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
  Form1.StringGrid1.OnDrawCell := StringGrid1DrawCell;
  GridColorCell := true;
  StringGrid1.Repaint;
  PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
  Form1.StringGrid1.OnDrawCell := nil;
end;


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i: Integer;
begin
  if GridColorCell then
    begin
    Form1.StringGrid1.Canvas.Brush.Color:=clGreen;

    If aRow = Form1.StringGrid1.Row then
      with Form1.StringGrid1 do
      begin
        for i := (ColCount-5) to (ColCount) do
        begin
          Canvas.FillRect(Rect);
          Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+5, Cells[ACol, ARow]);
        end;
      end;
    end;
end;
Wenn ich das ausführe, sieht es nach dem Doppelklick auf eine Zeile aus wie in der angehängten Bilddatei. Jetzt meine Fragen:

- Wenn ich dann einen Einzelklick auf irgendeine weiße Zelle ausführe, wird diese mit dem gepunkteten Rahmen angezeigt, und eine der grünen Zellen wird auch weiß, wie im zweiten angehängten Bild. Wie kann ich das verhindern? Ich möchte am liebsten, dass bei Einzeklicks nichts selektiert wird.
- Wie erreiche ich es, dass die weißen Zwischenräume zwischen den grünen Zellen verschwinden? Die angewählte Zeile soll durchgängig farbig sein.

Vielen Dank im Voraus für Eure Hilfe!
Miniaturansicht angehängter Grafiken
stringgrid.jpg   stringgrid2.jpg  
  Mit Zitat antworten Zitat