Einzelnen Beitrag anzeigen

Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#11

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 15:44
Hi,
neue Info:

Mein Programm malt auf Image1.Canvas. Beim Vergrößern von MainForm wird die Größe von Image1 tatsächlich angepasst, aber Canvas scheint dies nicht mitzumachen.
Laut Delphi-Hilfe gibt es ein Canvas.Width. Im Programm jedoch gibt es einen Compilerfehler 'undeklarierter Bezeichner: Width', wenn ich den Wert ausgeben lassen möchte, z.B. in Edit2:
(ohne "+'Canvas.Width='+IntToStr(Image1.Canvas.Width )" klappt die Ausgabe)
Code:
procedure TMainForm.DrawAxes(start_date, ndays: int32);
var
  nhours: int32;
  countl, counts, px, py, pxl, rptxt: int32;
  dstr: string;
  DateUnit: TDateUnits; // Zeitskale der x-Achse, TS: Tage/Std., MT: Monate/Tage
  minTcDist: int32;
  hd_perMinTick: int32;  // kleinste Unterteilung der x-Achse in Anzahl Stunden/Tage
  timespan_stick: int32; // Dauer der kurzen Ticks in Minuten
  timespan_ltick: int32; // Dauer der langen Ticks in Minuten
  PlotWidth: uint32;
  Jahr0, Jahr1, Monat0, Monat1, dayOffs: uint16;
  act_ts, ts_ltick, nextts_ltick: uint32;  // time stamps
  minVal, maxVal, actVal, rval: int16;
begin
  nhours:=ndays*24;

  Edit2.Text:='Form: W='+IntToStr(Width)+' Image1: W='+IntToStr(Image1.Width)+
                ' ClientWidth='+IntToStr(ClientWidth)+'Canvas.Width='+IntToStr(Image1.Canvas.Width);

  with Image1 do
  begin
...
// x-Achse malen:
    py:=Height-border_bottom;
    Canvas.Moveto(Width-border_right,py);
    Canvas.LineTo(border_left,py);
...
jetzt kommen die Ticks auf der x-Achse
// y-Achse links:
    Canvas.MoveTo(border_left, Height-border_bottom);
    Canvas.LineTo(border_left, border_top);
...
jetzt die Ticks auf der y-Achse
// y-Achse rechts:
    px:=Width-border_right;
    Canvas.MoveTo(px, border_top);
    Canvas.LineTo(px, Height-border_bottom);
...
und noch die Ticks auf der rechten y-Achse
...
  end
Im Code sind die Teile, die die Achsen des Plots malen, enthalten. Die Achsen werden relativ zur Größe von Image1 gezeichnet. Nach Vergrößerung von MainForm verschwindet die rechte Achse und der rechte Teil des Plots, was mir ein Rätsel ist.
Wo ist da mein Fehler?

Der rechte Rand des Plots ist in den anliegenden beiden Bildern dargestellt, im Originalzustand und nach Verbreiterung von MainForm.
Angehängte Dateien
Dateityp: zip BilderfuerForum.zip (10,4 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat