Hallo DelphiFreaks!!
Ich programmiere jetzt seit genau 28 Tagen in Delphi rum und habe nun ein kleines Textverarbeitungs programm mit allen möglichen Feautures programmiert. z.B. einen best. Text mehrfach eifügen, memoText in word einfügen, MemoInhalt copieren, Feste begrüßungen zum einfügen, speicerhn, laden usw.
Das einzige, was jetzt noch fehlt, aber einfach nich klappen will ist, den Text auszudrucken. ich habe schon drei verschiedene Bücher consultiert, den Inhalt der DelphiHilfe direkt Übernommen, aber jedes mal kommt irgendwas von "Undeklared identifier".
eigentlich muss das noch ganz einfach gehen. Damit ihr noch mal besser gucken könnt íst hier der Quelltext der Hauptunit:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus;
type
TForm1 = class(TForm)
FontDialog1: TFontDialog;
ComboBox1: TComboBox;
MainMenu1: TMainMenu;
Datei1: TMenuItem;
Beenden1: TMenuItem;
Bearbeiten1: TMenuItem;
Schrift1: TMenuItem;
Memolschen1: TMenuItem;
SaveDialog1: TSaveDialog;
Speichern1: TMenuItem;
Bndigkeit1: TMenuItem;
WiederholenderText1: TMenuItem;
EigenerGru1: TMenuItem;
MemotoClipboard1: TMenuItem;
Memo1: TMemo;
Memocopieren1: TMenuItem;
Drucken1: TMenuItem;
PrintDialog1: TPrintDialog;
OpenDialog1: TOpenDialog;
Dateiffnen1: TMenuItem;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure Beenden1Click(Sender: TObject);
procedure Schrift1Click(Sender: TObject);
procedure Memolschen1Click(Sender: TObject);
procedure FileSaveAs(Sender: TObject);
procedure Bndigkeit1Click(Sender: TObject);
procedure WiederholenderText1Click(Sender: TObject);
procedure EigenerGru1Click(Sender: TObject);
procedure MemotoClipboard1Click(Sender: TObject);
procedure Copy(Sender: TObject);
procedure OpenFile(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, comobj;
var grus: array[1..5] of string = (\'Hallo\', \'Guten Tag!\',
\'Sehr geehrter Herr\',
\'Sehr geehrte Frau\',
\'Mit freundlichen Grüßen\');
word : variant;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
for i := 1 to High(grus) do ComboBox1.Items.Add(grus[i]);
Form1.Memo1.Clear;
ComboBox1.ItemIndex := 0;
end;
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
ComboBox1.BeginDrag(False);
end;
procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source is TComboBox then Accept := True;
end;
procedure TForm1.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
var i: Integer;
begin
i := (Source as TComboBox).ItemIndex;
Memo1.Lines.Add ((Source as TComboBox).Items[i]);
end;
procedure TForm1.Beenden1Click(Sender: TObject);
begin
Close
end;
procedure TForm1.Schrift1Click(Sender: TObject);
var Font: TFont;
Color: TColor;
Size: Integer;
Style: TFontStyle;
Char: TFontCharset;
begin
FontDialog1.Execute;
Font := FontDialog1.Font;
Color := FontDialog1.Font.Color;
Size := FontDialog1.Font.Size;
Char := FontDialog1.Font.Charset;
Memo1.Font := FontDialog1.Font;
Memo1.Font.Color := FontDialog1.Font.Color;
Memo1.Font.Size := FontDialog1.Font.Size;
Memo1.Font.Charset := FontDialog1.Font.Charset;
Memo1.Font.Style := FontDialog1.Font.Style;
end;
procedure TForm1.Memolschen1Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.FileSaveAs(Sender: TObject);
begin
If SaveDialog1.Execute then
begin
If FileExists(SaveDialog1.FileName) then
If MessageDlg(\'Die Datei\' +SaveDialog1.FileName
+ \'existiert bereits. Überschreiben?\',
mtConfirmation, [mbYes, mbNo], 0) mrYes then
Exit;
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
Memo1.Modified := False;
end;
end;
procedure TForm1.Bndigkeit1Click(Sender: TObject);
begin
Form2.Show
end;
procedure TForm1.WiederholenderText1Click(Sender: TObject);
begin
Form3.Show
end;
procedure TForm1.EigenerGru1Click(Sender: TObject);
begin
ComboBox1.Items.Add(InputBox(\'Gruß einfügen\',
\'Geben Sie den neuen Gruß ein!\', \'\'))
end;
procedure TForm1.MemotoClipboard1Click(Sender: TObject);
begin
try
word := CreateOleObject(\'Word.Application\');
except
ShowMessage(\'Word konnte nicht gestartet werden!\');
end;
word.Visible := True;
word.Visible := True;
word.Documents.Add;
If word.ActiveWindow.View.SplitSpecial 0 Then word.ActiveWindow.Panes[2].Close;
If (word.ActiveWindow.ActivePane.View.Type = 1) Or
(word.ActiveWindow.ActivePane.View.Type = 2) Or
(word.ActiveWindow.ActivePane.View.Type = 5) Then
word.ActiveWindow.ActivePane.View.Type := 3;
word.Selection.TypeText(Text:= Memo1.Text);
end;
procedure TForm1.Copy(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;
procedure TForm1.OpenFile(Sender: TObject);
begin
If OpenDialog1.Execute then
try
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
except
begin
MessageDlg(\'Datei konnte nicht geöffnet werden\',
mtInformation, [mbOK], 0);
end;
end;
end;
end.
Danke für alle Hilfe,
Thor Delta
Programmieren - alles kontrollieren 4.937 Themen, 20.647 Beiträge
Hallo Thor_Delta,
zum Drucken benötigst Du auf jeden Fall die Unit Printers.
Den Quelltext zum Drucken kann ich in Deinem Posting leider nicht finden. Ich kann also auch nach keinem Fehler suchen.
Hier noch Anmerkungen zum Programm:
var grus: array[1..5] of string = (\'Hallo\', \'Guten Tag!\',
\'Sehr geehrter Herr\',
\'Sehr geehrte Frau\',
\'Mit freundlichen Grüßen\');
[...]
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
for i := 1 to High(grus) do ComboBox1.Items.Add(grus[i]);
Form1.Memo1.Clear;
ComboBox1.ItemIndex := 0;
end;
Die Items einer ComboBox kannst Du wesentlich einfacher über die Eigenschaft Items im Objektinspektor zuweisen.
procedure TForm1.FileSaveAs(Sender: TObject);
begin
If SaveDialog1.Execute then
begin
If FileExists(SaveDialog1.FileName) then
If MessageDlg(\'Die Datei\' +SaveDialog1.FileName
+ \'existiert bereits. Überschreiben?\',
mtConfirmation, [mbYes, mbNo], 0) mrYes then
Exit;
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
Memo1.Modified := False;
end;
end;
Auch hier gehts Einfacher: Über den Objektinspektor in Options die Option ofOverwritePrompt auf TRUE setzen.
Übrigens wird der Quelltext durch Einrückungen wesentlich übersichtlicher:
">
procedure ...
begin
if ...
then ...
else begin
...
...
end;
end;
CU Borlander