Autor Beitrag
Barzi
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 21:41 
Hallo,
ich habe ein Problem was mich fast zum Wahnsinn treibt ...

Und zwar habe ein TMetaFilePrinter (PreviewGenerator), der eine Druckvorschau enthält.
Nun möchte ich diese Vorschau in einem TImage (PreviewBox), welches sich in einer ScrollBox befindet anzeigen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
SetMapMode(MainForm.PreviewBox.Canvas.Handle, MM_ANISOTROPIC);
SetWindowExtEx(MainForm.PreviewBox.Canvas.Handle, PreviewGenerator.PaperWidth, PreviewGenerator.PaperHeight, nil);
SetViewportExtEx(MainForm.PreviewBox.Canvas.Handle, MainForm.PreviewBox.Width, MainForm.PreviewBox.Height, nil);
SetWindowOrgEx(MainForm.PreviewBox.Canvas.Handle, -PreviewGenerator.OffsetX, -PreviewGenerator.OffsetY, nil);

MainForm.PreviewBox.Canvas.Draw(0,0,PreviewGenerator.MetaFiles[MainForm.CurrentPage]);


Das funktioniert auch eigentlich wunderbar, nur das nur der Ausschnitt des TImage
gezeichnet wird, der beim Ausführen der Prozedur in der ScrollBox sichtbar ist.

Nun hatte ich mir zunächst überlegt TImage durch TPaintBox auszutauschen, ohne Erfolg.
Dann versucht nach Scrollen in der ScrollBox die Prozedur erneut aufzurufen und bemerkt,
dass die ScrollBox gar kein Event wie OnScroll besitzt. Also wollte ich TScrollBar nutzen, wobei sich aber immer der Max-Wert vom dem der ScrollBox unterschied ...

MSDN half mir auch nicht recht weiter ...

Im Moment weiß ich wirklich nicht wie ich weiter verfahren soll und fange an den Entwickler zu hassen, der kein OnScroll-Ereigniss der ScrollBox hinzufügte :D

Hat jemand von euch eine Idee, wie man das Problem lösen kann ohne gleich eine neue Komponente von TScrollBox mit OnScroll-Event abzuleiten?