Tekst kan skrives ud med textout.. men det kan ikke bruges til at skrive en richedit ud med. Grafik kan godt printes ud. Du skal bare bruges printer.canvas.draw(x,y,image1.picture.graphic)
fejlmeldinger for [fsbold],textout(20,20,'test'),fontstyle:=[bsbold]
det ovenstående eksempel for udprintning af grafik, printer grafikken ud på et fastlagt koordinat, er det ikke muligt at printer selv finder ud af koordinatet, såsom hvis brugeren flytter grafikken.
Lav et panel af den størrelse som RichEdit'en skal have. Placer RichEditen på panel'et og anchor den til alle siderne. Du placerer så image't ovenpå panel'et også, så skulle det ikke være muligt at flytte image't udenfor.
For at printe det vil jeg så bruge panel'ets PainTo metode til at skrive til printeren device context. Dvs. noget lignende det her:
i bjk's svar: Fejl1: Du kan selv lave et tjek på om billede kan flyttes.. I det sted du flytter billed kan du sætte noget ligende dette ind: If image1.top>richedit1.top then image1.top:=richedit1.top Det skal tilpasses men hvis du forstår hvad jeg mener burde det ikke være et problem..
Fejl2: Prøv: Panel1.PaintTo(Printer.canvas, ... istedet for Panel1.PaintTo(Printer, ...
koden til flytning af grafik: {$R *.DFM} const Traekker:Boolean=False; var Sidste_x, Sidste_y:Integer; procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var mx,my:Integer; begin if (traekker)and( ssleft in shift) then begin mx:=Panel2.Left; Panel2.Left:=Panel2.Left-(sidste_x-x); mx:=Panel2.Left-mx; my:=Panel2.Top; Panel2.top:=Panel2.top-(Sidste_y-y); my:=Panel2.Top-my; sidste_y:=Y-my; sidste_x:=x-mx; end else traekker:= false; end;
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (SSleft in shift) then begin Traekker:= True; Sidste_x:=x; Sidste_y:=y; end; end;
-- Trække tingen: Jeg er ikke helt sikker på hvad det er den skal holde sig indefor, jeg gætte på panel1. Hvis det ikke passer skal du bare ændre de steder der stå panel1 til det den skal holde sig indefor.
lige efter linien "Panel2.Left:=Panel2.Left-(sidste_x-x);" //holder panel2 inden for panel1 venster kant If panel2.left>panel1.left then panel2.left:=panel1.left; //holder panel2 inden for panel1 højre kant //(giver dog problemmer hvis panel2.width>panel1.width) If panel2.left+panel2.width>panel1.left+panel1.width then panel2.left:=Panel1.left-panel2.width;
Det samme laves efter linien "Panel2.top:=Panel2.top-(Sidste_y-y);" Her skal "left" byttes ud med "top", og "width" byttes ud med "height".
Er det ikke lettere at lave drag & drop ved at sætte dragmode til automatic på image't og så lave event handlers for OnStartDrag på image't og for OnDragOver og OnDragDrop på den/de controls som man kan droppe den i? Det gør ihvertfald at det er let at styre hvor man kan trække den hen. OnDragDrop handleren skal så sætte koordinaterne på image't til det sted hvor man dropper det.
Så kan man vel ikke se billedet bliver flyttet mens man trækker..?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.