AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TImage überschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

TImage überschreiben

Ein Thema von ksh · begonnen am 4. Jul 2006 · letzter Beitrag vom 5. Jul 2006
Antwort Antwort
ksh
(Gast)

n/a Beiträge
 
#1

Re: TImage überschreiben

  Alt 5. Jul 2006, 08:08
ist ein kleineres Projekt

sorry, war etwas neben der Kappe gestern!

also:
1. Formular MainWindow mit TImage und Menü - darunter eben auch der Menüpunkt ändern, der folgenden Quellcode enthält:
Delphi-Quellcode:
procedure TMainWindow.AendernClick(Sender: TObject);
begin
  if Eingabe.ShowModal = mrOK then
  begin
    // Detailansicht verfügbar machen
    BildGroesse(3);
    if TJubilaeum then
      PAusgabe(1, main.MainWindow.Bild.Canvas, 'B', 'J')
    else if TTeilwert then
      PAusgabe(1, main.MainWindow.Bild.Canvas, 'B', 'T')
    else if TIAS then
      PAusgabe(1, main.MainWindow.Bild.Canvas, 'B', 'I');
    // Menüeinträge verfügbar machen
    Bearbeiten.Enabled:=True;
    Drucken.Enabled:=True;
  end;
end;
2. Forumal Eingabe - hier werden Daten eingegeben, die dann berechnet werden (in ziemlich vielen anderen Units, aber das ist ja nicht das Problem)
3. Die Grafiken werden wie schon gesagt in der Unit Ausgabe initialisiert. Hier mal der gekürzte Quellcode:
Delphi-Quellcode:
{******************************************************************************}
{ PROCEDURE : BildGroesse                                                      }
{                                                                              }
{ AUFGABE: legt die Höhe des Bild.Canvas auf die angegebene Anzahl Seiten fest }
{******************************************************************************}
procedure BildGroesse(Seitenzahl: Integer);
begin
  with Mainwindow do
  begin
    bild.visible := true;
    bild.Align := alclient;
    bild.align:= alnone;
    bild.Left := 20;
    bild.width := 2*round(bild.Height*0.7);
    bild.height := 2 * Seitenzahl*bild.Height;
    myprint.pagex := mainwindow.Bild.Width;
    myprint.pagey := mainwindow.Bild.Height div Seitenzahl;
    diff := 0;
  end;
end;

{********************************************************}
{ PROCEDURE : PAusgabe                                   }
{                                                        }
{ AUFGABE: erzeugt die Bildschirmausgabe sowie den Druck }
{********************************************************}
procedure PAusgabe( copies: integer; // Anzahl Ausdrucke
                    target:tcanvas; // target : entweder bild.canvas
                                        // oder printer.canvas
                    targetStr: Char; // targetstr : entweder 'B' für Bildschirmausgabe
                                        // oder 'D' für Drucker
                    Ausgabe: char); // Ausgabe : entweder T für Teilwertausgabe
                                        // oder J für Jubiläumsausgabe
label LTeilwert, LEnde, LJubilaeum1, LJubilaeum2, LJubilaeum3, LJubilaeum4,
      LJubilaeum5, LJubilaeum6, LJubilaeum7, LIAS;
var copycount,i,p,pmax,ep : Integer;
    lf : logfont;
begin
    with mainwindow do
    begin
      for copycount := 1 to Copies do
      begin
        myprint.target:=target;
        if targetstr = 'Dthen
        begin
          Printer.Title := 'Teilwert v. 4.0';
          myprint.pagex := printer.pagewidth;
          myprint.pagey := printer.pageheight;
          Diff := 0;
          p:=0;
          // 83 ist Druckendalter!
          pmax:=trunc((83-AngDaten.PersDaten.PersX-p*22) / 22);
          if (83-AngDaten.PersDaten.PersX-p*22) mod 22 > 0 then pmax:=pmax+1;
          printer.BeginDoc;
        end; // if targetstr = 'D' then

      lf.lfCharSet := DEFAULT_CHARSET;
      lf.lfFaceName := 'Arial';
      target.Font.Handle := CreateFontIndirect(lf);
      target.Font.Color := clblack;
      if targetstr <> 'Dthen BildGroesse(2);

      if Ausgabe = 'Tthen
        GoTo LTeilwert
//....
{*********************** Beginn LTeilwert ***********************}
      LTeilwert:

        target.Font.Style:= [];
        lf.lfFaceName := 'Arial Narrow';
        target.Font.Handle := CreateFontIndirect(lf);
        // entsprechend zu druckende Zeilen
        if pmax > p+1 then ep := 22
        else ep := 83-AngDaten.PersDaten.PersX-p*22-1;
        p:=p+1;

        // Überschrift Dokument
        target.Font.Style:= [fsBold,fsUnderline];
        setfont(16);
        prntext(3,1.5,'VERSICHERUNGSMATHEMATISCHE BERECHNUNGEN',0,0);
        target.Font.Style:= [fsBold];
        setfont(11);
        prntext(5,2.3,'Richttafeln 2005 von Dr. Klaus Heubeck',0,0);

        with AngDaten.EinDaten do
        begin
          setfont(10);
          prntext(3,3,'Firma:',0,0);
          prntext(6,3,EinFirma,0,0);
          prntext(3,3.5,'Personalnummer:',0,0);
          prntext(6,3.5,EinPersNr,0,0);
//...
        // beim Ausdrucken Datum sowie Seitenzahlen angeben
        if targetstr = 'Dthen
        begin
          target.font.Pitch := fpDefault;
          //prnline(0,28,maxx,28);
          SetFont(12);
          prntext(0,28.5,datetostr(date),0,0);
          prntext(18,28.5,'Seite '+inttostr(p)+'/'+inttostr(pmax),0,0);
          // neue Seite ausdrucken wenn notwendig
          if p < pmax then
          begin
            Printer.NewPage;
            goto LTeilwert;
          end; // if p < pmax then
        end; // if targetstr = 'D' then

        Goto LEnde;
{************************* Beginn LEnde *************************}

      LEnde:
        if targetstr = 'Dthen if printer.Printing = true then printer.enddoc;
        if Ausgabe = 'Jthen
          if targetstr <> 'Bthen BildGroesse(7);
    end;
  end;
end;
Ich weiß, vielleicht würde es über einen Report besser/leichter gehen, aber ich musste den Quellcode von meinem Vorgänger übernehmen...
jetzt klarer?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz