Einzelnen Beitrag anzeigen

Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#2

Ergänzung

  Alt 7. Aug 2013, 15:49
ich habe das Verhalten in einem einfachen Programm nachgestellt und bilde es hier ab.
Durch Mausklick irgendwo in die Zeichenfläche wird die Größe verändert. Ist die darstellung bereits gescrollt, beginnt das neue Zeichnen nicht oben im Dokument, sondern oben im gerade gezeigten Ausschnitt.

Delphi-Quellcode:
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Randomize();
  fSize.cx := RandomRange(400, 5000);
  fSize.cy := RandomRange(400, 5000);
  szChanged := true;
  PaintPaintBox(PaintBox1);
  Invalidate();
end;

procedure TForm1.PaintPaintBox(Sender: TObject);
var
  x, y: Integer;
  s:String;
  pt: TPoint;
begin
  PaintBox1.canvas.Font.Height := 14;
  if szchanged then begin
    PaintBox1.SetBounds(0, 0, fSize.cx, fSize.cy);
    szChanged := false;
  end;
  pt.X := 0; pt.Y := 0;
  pt := ScrollBox1.ParentToClient(pt, nil);
  pt.X := 0; pt.Y := 0;
  pt := ScrollBox1.ClientToParent(pt, nil);
  y := 0;
  while y < fSize.cy do begin
    x := 0;
    while x < fSize.cx do begin
      s := Format('(%d, %d)', [x, y]);
      pt.x := x;
      pt.Y := y;
      pt := PaintBox1.ClientToParent(pt);
      PaintBox1.canvas.TextOut(pt.x, pt.y, s);
      x := x + 200;
    end;
    y := y + 100;
  end;
end;
Ich hoffe, irgendjemand mag sich das mal anschauen.

Geändert von mkinzler ( 7. Aug 2013 um 16:50 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat