Lannes, Du hast Recht und ich danke dir, auch wenn ich genau diese Lösung bereits vor deinem Post selbst eingebaut habe.
Wie Du in einem meiner ersten Post bereits zitiert hast,
"... Beim export nach excel will ich diese Abfrage nicht machen, sondern gleich sagen, "
wollte ich genau diese Lösung nicht, letztendlich, da sich das mit dem Flackern nicht lösen lies, habe ich es genau so eingebaut, mit abgewmdeltem Code da ich das ganze mit dem "X" in einem anderen StringGrid checke.
Es freut mich, dass ich doch langsam begreife warum was nicht geht, denn ich hatte bereits das gleiche vermutet, wie Du jetzt sagst:
"das muss flackern, denn durch das setzen von Objects wird das Neuzeichnen der Zelle = Ereignis OnDrawCell, ausgelöst."
Genau das habe ich schon bei anderer Gelegenheit festgestellt und sehe die Lösung für sowas genauso, keinen Code innerhalb der OnDrawCell der sozusagen OnDrawCell selbst immer wieder provoziert.
Mein Code sieht jetzt so aus:
Delphi-Quellcode:
Excel.Cells[i+6, j+1] := StringGrid1.Cells[j, i];
Excel.Cells[i+6, j+1].Select;
if (StringGrid1.Cells[j, i] <> '') and (StringGrid1.Cells[j, i] <> ' ') then
if StringGrid1.Cells[j, i] = StringGrid3.Cells[0, StrToInt(StringGrid1.Cells[j, i])] then
begin
if (StringGrid3.Cells[1, StrToInt(StringGrid1.Cells[j, i])] = 'x') or
(StringGrid3.Cells[1, StrToInt(StringGrid1.Cells [j, i])] = 'X') then
Excel.Selection.Interior.ColorIndex := 4; //grün machen
Excel.Selection.Interior.Pattern := xlSolid;
end;