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.