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.
Bookmarks