Results 1 to 5 of 5

Thread: Hoe kan ik mijn memo van form printen???

  1. #1

    Hoe kan ik mijn memo van form printen???

    ben beginner en wil de memo uit mijn form printen..Kan iemand me in stappen vertellen hoe ik de printdialog moet instellen hiervoor???

    Code:
    unit plantrecord;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Menus;
    
    type
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Memo1: TMemo;
        Buttonvorigerecord: TButton;
        Buttonvolgenderecord: TButton;
        Buttonopslaanrecord: TButton;
        Buttonwisrecord: TButton;
        Buttonnewrecord: TButton;
        MainMenu1: TMainMenu;
        file1: TMenuItem;
        opslaanfile1: TMenuItem;
        N1: TMenuItem;
        afsluitenprogramma1: TMenuItem;
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        oplaanfile1: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure ButtonvolgenderecordClick(Sender: TObject);
        procedure ButtonvorigerecordClick(Sender: TObject);
        procedure ButtonopslaanrecordClick(Sender: TObject);
        procedure ButtonwisrecordClick(Sender: TObject);
        procedure afsluitenprogramma1Click(Sender: TObject);
        procedure opslaanfile1Click(Sender: TObject);
        procedure ButtonnewrecordClick(Sender: TObject);
        procedure oplaanfile1Click(Sender: TObject);
      private
        { Private declarations }
      RecordNummer: integer;
      BestandNaam: string;
      procedure VulMemoMetArray;
      procedure WisDeEdits;
      procedure ToonInhoudVanRecord;
      procedure VulRecordMetInhoudEdits;
      procedure MaakReserveKopie(const BestandNaam: string);
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    { een type mag ook in de implementatie worden gedefinieerd }
    type
      TPlant = record  // met drie velden welke gevuld worden met de edits op het form
        PlantNaam: string[40];
        PlantHoogte: integer;
        PlantKleur: String[40];
      end;
    type
      TPlantenBestand = file of TPlant;
    
    var
      { declareer hier variabelen van eerder gedeclareede typen om ermee te kunnen werken }
      Planten: array of TPlant; // in deze array staan de records
      PlantenBestand: TPlantenBestand; // Deze file kan worden opgeslagen en weer ingelezen
    
    
    
    
    procedure TForm1.afsluitenprogramma1Click(Sender: TObject);
    begin
      Application.Terminate;
    end;
    
    
    procedure TForm1.ButtonnewrecordClick(Sender: TObject);
    var
      ComponentNummer: integer;
    begin
      if (Edit1.Text = '') AND
         (Edit2.Text = '') AND
         (Edit3.Text = '') then
      ShowMessage('Nieuw record is gereed.')
      else
      { Wis de edits }
      for ComponentNummer := 0 to ComponentCount - 1 do
        if Components[ComponentNummer] is TEdit then
          with Components[ComponentNummer] as TEdit do
            Text := '';
    end;
    
    
    procedure TForm1.ButtonopslaanrecordClick(Sender: TObject);
    begin
      { Controleer invoer }
      if (Edit1.Text = '') AND
         (Edit2.Text = '') AND
         (Edit3.Text = '') then
      begin
        ShowMessage('Geen gegevens ingevoerd');
        Exit;
      end;
      { PlantHoogte moet van type integer zijn }
     TRY
      StrToInt(Edit2.Text);
     EXCEPT
      on EConvertError do
      begin
        ShowMessage('Planthoogte moet een geheel getal zijn!');
        Exit;
      end;
     END;
      { Record mag worden opgeslagen }
      SetLength(Planten, Length(Planten) + 1); // Breidt de array met 1 record uit.
      RecordNummer := High(Planten); // nieuw record altijd achteraan toevoegen
      { Vul Records Met Inhoud Edits }
      with Planten[RecordNummer] do
      begin
        PlantNaam := Edit1.Text;
        PlantHoogte := StrToInt(Edit2.Text);
        PlantKleur := Edit3.Text;
      end;
      Inc(RecordNummer);
      ShowMessage('Record is opgeslagen.');
      VulMemoMetArray;
    end;
    
    
    
    procedure TForm1.ButtonvolgenderecordClick(Sender: TObject);
    begin
      if Recordnummer < High(Planten) then
      begin
        Inc(RecordNummer);
    
     { toon inhoud van record }
     with Planten[RecordNummer] do
      begin
        Edit1.Text := PlantNaam;
        Edit2.Text := IntToStr(PlantHoogte);
        Edit3.Text := Plantkleur;
      end;
    
      end
      else
      ShowMessage('Geen verdere records meer');
      VulMemoMetArray;
    end;
    
    
    procedure TForm1.ButtonvorigerecordClick(Sender: TObject);
    begin
      if RecordNummer > 0 then   // record bestaat
      begin
        Dec(RecordNummer);
        if RecordNummer >= 0 then
    
     { toon inhoud van record }
     with Planten[RecordNummer] do
      begin
        Edit1.Text := PlantNaam;
        Edit2.Text := IntToStr(PlantHoogte);
        Edit3.Text := Plantkleur;
      end;
    
      end
      else // record bestaat niet
      ShowMessage('Er is geen vorig record meer.');
      VulMemoMetArray;
    end;
    
    
    
    procedure TForm1.ButtonwisrecordClick(Sender: TObject);
    var
      ComponentNummer: integer;
    begin
      { Het verwijderen van het laatste record }
      if Length(Planten) > 1 then  // zolang dit zo is kunnen er records gewist worden
      begin
        SetLength(Planten,Length(Planten) - 1); // maakt de array 1 record kleiner
        RecordNummer := High(Planten);
     
       { Toon InHoud Van Record }
       with Planten[RecordNummer] do
        begin
          Edit1.Text := PlantNaam;
          Edit2.Text := IntToStr(PlantHoogte);
          Edit3.Text := Plantkleur;
        end;
    
      end
    
      else
    
      begin
      if (Length(Planten) = 1) AND
         (Edit1.Text <> '') then // laatste record is al gewist
      begin
        RecordNummer := 0;
        with Planten[RecordNummer] do
        begin
          Planten[RecordNummer].PlantNaam := '';
          Planten[RecordNummer].PlantHoogte := 0;
          Planten[RecordNummer].Plantkleur := '';
        end;
         { Wis de edits }
        for ComponentNummer := 0 to ComponentCount - 1 do
          if Components[ComponentNummer] is TEdit then
            with Components[ComponentNummer] as TEdit do
              Text := '';
      end
    
      else
    
        ShowMessage('Geen record meer.');
      end;
    
      VulMemoMetArray;
    end;
    
    
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
        ComponentNummer: integer;
    begin
      { Zet het eerste recordnummer op 0 }
      RecordNummer := 0;
      { Zet nu de lengte van de dynamische array op 1 met SetLength
        en reserveer zo tevens geheugenruimte voor het eerste record, dat leeg is.
        Plaats de cursor ergens in SetLength en druk F1 voor meer uitleg over deze procedure. }   
      SetLength(Planten,0); 
      { Maak nu de editvakjes leeg met gebruik van RTTI: }
      for ComponentNummer := 0 to ComponentCount - 1 do  
        if Components[ComponentNummer] is TEdit then
          with Components[ComponentNummer] as TEdit do
            Text := '';
      { Toon de inhoud van de plantenArray in de memo } 
      VulMemoMetArray;
    end;
    
    
    procedure TForm1.MaakReserveKopie(const BestandNaam: string);
    var
      KopieBestand: string;
    begin
      KopieBestand := ChangeFileExt(BestandNaam,'.LAW');
      DeleteFile(KopieBestand);
      RenameFile(BestandNaam,KopieBestand);
    end;
    
    
    procedure TForm1.oplaanfile1Click(Sender: TObject);
    var
      TeBewarenRecord: integer;
      BestandNaam: string;
    begin
      if SaveDialog1.Execute then
      begin
        BestandNaam := SaveDialog1.FileName;
       TRY
        AssignFile(PlantenBestand, BestandNaam);
        Rewrite(PlantenBestand);
        for TeBewarenRecord := 0 to High(Planten) do
        begin
          Write(PlantenBestand, Planten[TeBewarenRecord]);
        end;
        CloseFile(PlantenBestand);
       EXCEPT
        ShowMessage('Fout bij bewaren van de file.');
       END;
      end;
    end;
    
    procedure TForm1.opslaanfile1Click(Sender: TObject);
     var
      OpTeHalenRecord: Integer;
      BestandNaam: string;
    begin
      if OpenDialog1.Execute then
      begin
        BestandNaam := OpenDialog1.FileName;
       TRY
        AssignFile(PlantenBestand, BestandNaam);
        Reset(PlantenBestand);
        OpTeHalenRecord := 0;
        SetLength(Planten,1);
        while not EOF(PlantenBestand) do
        begin
          Read(PlantenBestand,Planten[OpTeHalenRecord]);
          Inc(OpTeHalenRecord);
          SetLength(Planten, OpTeHalenRecord + 1); // creeert een leeg record als laatste !!!
        end;
        CloseFile(PlantenBestand);
    
        SetLength(Planten, Length(Planten) - 1); // corrigeer voor laatste lege record !!!
    
        if OpTeHalenRecord > 0 then
        begin
          RecordNummer := OpTeHalenRecord - 1;
    
     { toon inhoud van record }
     with Planten[RecordNummer] do
      begin
        Edit1.Text := PlantNaam;
        Edit2.Text := IntToStr(PlantHoogte);
        Edit3.Text := Plantkleur;
      end;
    
        end;
       EXCEPT
        ShowMessage('Fout bij het ophalen van de file.');
       END;
      end;
      VulMemoMetArray;
    end;
    
    procedure TForm1.ToonInhoudVanRecord;
    begin
      with Planten[RecordNummer] do
      begin
        Edit1.Text := PlantNaam;
        Edit2.Text := IntToStr(PlantHoogte);
        Edit3.Text := Plantkleur;
      end;
    end;
    
    
    procedure TForm1.VulMemoMetArray;
    var
      i: integer;
    begin
      Memo1.Lines.Clear;
      for i := Low(Planten) to High(Planten) do
      Memo1.Lines.Add(Planten[i].PlantNaam + ' ' + IntToStr(Planten[i].PlantHoogte) + ' ' + Planten[i].PlantKleur);
    end;
    
    
    procedure TForm1.VulRecordMetInhoudEdits;
    begin
      with Planten[RecordNummer] do
      begin
        PlantNaam := Edit1.Text;
        PlantHoogte := StrToInt(Edit2.Text);
        PlantKleur := Edit3.Text;
      end;
    end;
    
    
    procedure TForm1.WisDeEdits;
    var
      ComponentNummer: integer;
    begin
      for ComponentNummer := 0 to ComponentCount - 1 do
        if Components[ComponentNummer] is TEdit then
          with Components[ComponentNummer] as TEdit do
            Text := '';
    end;
    
    
    end.

  2. #2
    Senior Member Henk Schreij's Avatar
    Join Date
    Sep 2002
    Location
    Heino (Raalte)
    Posts
    1,465
    Je zou een RichEdit kunnen gebruiken ipv een Memo. Als je PlainText op True zet, dan is het net een Memo.
    Je kunt het Printen met bv

    Code:
    if PrinterSetupDialog1.Execute then
      RichEdit1.Print(Caption);

  3. #3
    Quote Originally Posted by Henk Schreij View Post
    Je zou een RichEdit kunnen gebruiken ipv een Memo. Als je PlainText op True zet, dan is het net een Memo.
    Je kunt het Printen met bv

    Code:
    if PrinterSetupDialog1.Execute then
      RichEdit1.Print(Caption);
    het is gelukt maar heb je code om marges, texttype, tekstkleur, lettergrootte, etc..instellen??

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
         if PrinterSetupDialog1.Execute then
      dbRichEdit1.Print(Caption);
    end;
    Last edited by anthony68; 02-Jun-08 at 14:25.

  4. #4
    Marges weet ik niet, maar tekstkleur, grootte en alles kun je natuurlijk in die richedit instellen door PlainText weer op false te zetten. Voor precieze info over hoe dat werkt kun je wel even zoeken. Er zijn ook op dit forum al diverse topics over SelStart en SelEnd, SelAttributes en andere properties en methods van een RichEdit.
    1+1=b

  5. #5
    Senior Member Henk Schreij's Avatar
    Join Date
    Sep 2002
    Location
    Heino (Raalte)
    Posts
    1,465
    De RichEdit kent een aantal properties waarmee je de "standaard letter" kunt instellen.
    Denk aan Font.Name, Font.Size, Font.Style.

    Als je met Lines.Add() werkt heb je een aantal beperkingen.
    Bijv. dan kun je niet het Font wijzigen. Daarvoor moet je via SelText werken.

    Marges instellen kun je pas doen nadat je de Printer hebt gekozen. Want dat doe je voor elke printer anders, afhankelijk van de resolutie.
    Wat wel heel gemakkelijk werkt is bovenaan een paar lege regels toevoegen.
    En vooraan een #9, voor een tab.

    Ik ga een lezing houden over dit onderwerp (doelgroep beginners).
    Met name over fonts, tabs, inspringen, marges, preview en printen.
    In Apeldoorn (in juni) en IJsselstein (september).
    Hieruit wat code.
    Op het scherm staat een radiogroup met 8, 10, 12.
    Daaronder nog een RadioGroup met Tahoma en Courier New.
    Daaronder CheckBoxes voor Bold, Italic, Underline en StrikeOut.
    Daaronder een RadioGroup met Zwart, Rood, Grijs.
    Tenslotte een knop en een Edit waarin je wat kunt typen.
    En een RichEdit, natuurlijk

    Code:
     with RichEdit1 do begin
        SelStart:= GetTextLen;
        //Font:
        SelAttributes.Size:=
          (RadioGroupFontSize.ItemIndex * 2) + 8;
        case RadioGroupFontName.ItemIndex of
          0: SelAttributes.Name:= 'Tahoma';
        else SelAttributes.Name:= 'Courier New';
        end;
        //stijl:
        SelAttributes.Style:= [];
        if CheckBoxB.Checked then
          SelAttributes.Style:=
          SelAttributes.Style + [fsBold];
        if CheckBoxI.Checked then
          SelAttributes.Style:=
          SelAttributes.Style + [fsItalic];
        if CheckBoxU.Checked then
          SelAttributes.Style:=
          SelAttributes.Style + [fsUnderline];
        if CheckBoxS.Checked then
          SelAttributes.Style:=
          SelAttributes.Style + [fsStrikeOut];
        //kleur:
        case RadioGroupKleur.ItemIndex of
          0: SelAttributes.Color:= clWindowText;
          1: SelAttributes.Color:= clRed;
        else SelAttributes.Color:= clGray;
        end;
        SelText:= Edit1.Text;
      end;

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •