Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
2. Apr 2007
Ich habe das mal probiert, unabhängig von der Druckerauflösung zu drucken:
bmp := TBitmap.Create;
bmp.Height := SG.Height;
bmp.Width := SG.Width;
SG.PaintTo(bmp.Canvas,0,0);
rect.TopLeft.X := x;
rect.TopLeft.Y := y;
rect.BottomRight.X := x + GetPrintSize(dpihor,SG.Width);//Anpassung an mmHiMetric
rect.BottomRight.Y := y + GetPrintSize(dpihor,SG.Height);
...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
30. Mär 2007
form := TTntForm.Create(Application);
form.Width := 200; //nur damit das Grid nicht beschnitten wird. Denn auch dann
form.Height := 300;//wird das OnDrawCell für nicht sichtbare Zellen übersprungen.
SG := TTntStringGrid.Create(form);
SG.Parent := form;
SG.Align := alClient;
SG.Font.Size := 8;
//Zuweisung der Events - entspricht den Ondrawcell was auch im Form stehen könnte
...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
30. Mär 2007
Nee, dann wird OnDraw wieder nicht aufgerufen. Die Message scheint nur zu kommen, wenn die Canvas des Forms in den Grafikspeicher geschrieben wird.
Grüße, Messie
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
30. Mär 2007
Das Grid soll danach auf einen Printer geschickt werden, deshalb soll es komplett im Hintergrund sein.
Das Grid wird schon mit Daten gefüllt, dabei durchläuft es aber eben nicht die OnDrawCell-Routine. Erst wenn ich es einem Form zuweise und das anzeige, werden die Routinen ausgelöst.
Es reicht schon, Visible auf false zu setzen und OnDraw wird nicht durchlaufen.
Grüße, Messie
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
30. Mär 2007
Moin,
ich erstelle zur Druckvorbereitung zur Laufzeit ein Stringgrid. Ich habe eine Routine OndrawCell zur Formatierung der Zellen beim Füllen. Die wird ja nur aufgerufen, wenn ich das Grid auch anzeige, was ich nicht will.
Wie kann ich die OnDraw-Message senden, ohne das Form mit dem Stringgrid anzeigen?
Danke, Messie