Toon posts:

[Delphi] Van Canvas naar Canvas

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede tweakers,
ik heb 2 vragen.
1. In mijn programma worden een aantal vragen gesteld. Die worden daarna op een (printer)canvas gezet en daarna uitgeprint.
Ik druk die resultaten ook af op het scherm. Maar nu dacht ik, ik kan dat canvas ook op beeld tonen. Maar hoe??
De vraag is dus eigenlijk: Ik zet mijn resultaten op een printer.Canvas en nu wil ik ze op het beeld zetten. Kan dat en hoe ??

2. Er wordt geprint in 2 kolommen. Dus controlleer ik of een string niet groter is al de breedte. Maar als dat zo is, wil ik de string in korten en er ... achter zetten.
Ik heb al geprobeerd om chr(0) vanaf achteraan toe te voegen totdat ie kleiner is. Maar dat werkte niet (op mijn manier).
Ook heb ik een tijdelijke string gebruike waar ik alle character tot de laaste inzette. Maar dat werkte ook niet.
Weet iemand hier een goede oplossing daarvoor?

alvast bedankt

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

In plaats van printer.canvas gebruik je EenOfAnderForm.canvas. (Let op dat je printer.canvas doorgaans veel meer pixels in de breedte en hoogte heeft dan een scherm-canvas).
code:
1
2
3
4
5
6
7
string="veeeeeeelstelangestring";
if pastniet(string,vakje) then begin
   while pastniet(string+'...',vakje) do begin
    string:=Delete(string,length(string)-1,1);
   end;
   string:=string+'...';
end;

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
Ok bedankt
zal het dadelijk ff proberen.

ik had zelf al iets gevonden voor dat canvas gedoe.
maar werkt nog niet helemaal.
(de canvas van de tImage)

Verwijderd

met
code:
1
canvas.textwidth(string_die_je_wilt_testen);

krijg je een pixelnauwkeurig breedte van de string op het font wat je op data moment hebt ingesteld.

bovendien bevat een TCanvas ook de CopyRect functie.

Dus het beste is naar mijn idee een print functie te schrijven die je hele formulier tekent op een canvas.

Die canvas kan je naar een TImage canvas copieren en ook naar de TPrinter canvas copieren.

Verwijderd

Topicstarter
Kan ik dus gewoon
code:
1
tImage1.Canvas := Printer.Canvas;

Doen??

maar heb ik dan wel gewoon het formaat of iets ?
want die tImage heeft zijn hoogte en breedte (dus zijn canvas ook) en de Printer heeft zijn Canvas met een hoogte en breedte.

Heeft iemand dit eens geprobeerd ?

Verwijderd

bovendien bevat een TCanvas ook de CopyRect functie.
met deze inderdaad weinig verhelderende woorden probeerde ik te vertellen dat je dit met de TCanvas.copyRect functie kunt doen. In de delphi help zou je de details moeten kunnen vinden.

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

antwoord op vraag 2: kun je DrawText() voor gebruiken. geef o.a. dan de flag DT_END_ELLIPSIS mee. Als je dan de juiste rect meegeeft, zal hij automagisch de string zo tekenen dat het precies past.

日本!🎌

Pagina: 1