Er mag unten zwar spaltenweise ausgegeben werden,
aber vorher wird ja Zeile für Zeile diese "spaltenweise" Ausgabe in einer Schleife durchgeführt
Delphi-Quellcode:
for CurItem := 0 to listview1.Items.Count - 1 do
begin
if (CurLine > LinesOnPage) or (CurLine = 0) then
und (zumindest in diesem Code)
könntest du hier
Delphi-Quellcode:
for CurCol := -1 to iColumnCount - 2 do
begin
CurRect.Left := aCols[CurCol + 1] + Round(0.1 * h);
CurRect.Right := aCols[CurCol + 2] - Round(0.1 * h);
try
if CurCol = -1 then
CurStr := listview1.Items[CurItem].Caption
else
CurStr := listview1.Items[CurItem].SubItems[CurCol]
except
CurStr := ' ';
end;
CurLeft := CurRect.Left; // align left side
// write string in TextRect
if (CurLine mod 2 = 0) //Abhängig davon, ob Curline gerade oder ungerade
brush.color = clWhite else //ist, die brush.color des Canvas setzen
brush.color = clGray;
FillRect(CurRect); //Dann einfach mal ein gefülltes Rechteck Zeichnen
//ggf. könnten noch Linien für die Zeilentrennung oder
//Spaltentrennung gezeichnet werden
TextRect(CurRect, CurLeft, CurRect.Top, CurStr);
end;
Macht den Code zwar nicht besser, aber so würd's gehen.
Aber ich muss allen Anderen hier zustimmen. Teil dir den Code erst mal in Procedure und Funktionen auf, damit er lesbar wird.
Mach dir ne Klasse dafür, dann kannst du die Variablen besser überschauen, weil Sie dann zu der Klasse gehören.
Der Vorteil, nach dem du das in eine Klasse gepackt hast, oder das in Funktionen oder Proceduren aufgeteilt hast, ist, dass du auch genau weißt was du tust und warum, und dir die Frage nach der Position einer solchen Änderung ganz allein beantworten kannst. Abgesehen davon, dass du sie auch leichter wiederfindest
Denn was ich daran sehr zu schätzen gelernt habe, ist die Tatsache, dass man bei späteren Änderungen mit [CTRL]+[linke Maustaste] dann recht schnell in eine verwendete Funktion, eine verwendete Procedure und deren Deklarationen springen kann. Ein Vorteil, der einem nicht nur das Suchen erspart, sondern auch Unmengen an Zeit.