So, hier ist dann wie versprochen die Lösung des Problems:
Delphi-Quellcode:
procedure TForm1.XYZTest(P1x, P1y, P2x, P2y: integer);
var
Steigung: double;
i: integer;
Counter: integer;
FrequenzProZeitpunkt: double;
begin
Steigung := (P2y - P1y) / (P2x - P1x);
Counter := 0;
FrequenzProZeitpunkt := 1;
for i := P1x to P2x do
begin
Inc(Counter);
if Counter = FrequenzProZeitpunkt then
begin
FrequenzProZeitpunkt := Round(Steigung * i + P1y);
JvStringGrid2.Cells[1, Tabellenzeiger] := IntToStr(i);
if Aus then
JvStringGrid2.Cells[0, Tabellenzeiger] := 'Aus'
else
JvStringGrid2.Cells[0, Tabellenzeiger] := 'An';
JvStringGrid2.InsertRow(JvStringGrid2.RowCount + 1);
Aus := not Aus;
Inc(Tabellenzeiger);
Counter := 0;
end;
end;
// Tabelle Umsetzen
JvStringGrid2.RemoveRow(JvStringGrid2.RowCount - 1);
for i := 1 to JvStringGrid2.RowCount do
begin
PaintBox1.Canvas.Brush.Color := clblack;
PaintBox1.Canvas.Brush.Style := bssolid;
if JvStringGrid2.Cells[0, i] = 'An' then
PaintBox1.Canvas.Rectangle(StrToInt(JvStringGrid2.Cells[1, i - 1]), 0,
StrToInt(JvStringGrid2.Cells[1, i]), PaintBox1.Height);
end;
end; // XYZ (TForm1)
Wie das Ganze dann am Ende aussehen könnte ist im Anhang zu finden.
Grüße
Six