ich habe heute begonnen mich mit der Programmierung mit Hilfe von Lazarus zu beschäftigen. Ich möchte in einer eignen Klasse ein Ereignis erzeugen das ich in der MainForm nutzen möchte.
Meine Klasse:
Code: Alles auswählen
type
TOnFindFile = procedure(Filename: string) of object;
TOnDirectoryFind = procedure(Directory: string) of object;
TFindFiles = class(TObject)
private
FSubfolders: Boolean;
FMask: string;
FOnFindFile: TOnFindFile;
FOnFindDirectory: TOnDirectoryFind;
public
constructor Create;
procedure Find(RootFolder: string);
property SubFolders: Boolean read FSubFolders write FSubFolders;
property Mask: string read FMask write FMask;
property OnFileFind: TOnFindFile read FOnFindFile write FOnFindFile;
property OnDirectoryFind: TOnDirectoryFind read FOnFindDirectory write FOnFindDirectory;
end;
In der Mainform habe ich den Code:
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
StdCtrls, ExtCtrls, FindFilesCls;
type
{ TTestForm }
TTestForm = class(TForm)
Datei: TMenuItem;
Image1: TImage;
Beenden: TMenuItem;
Memo1: TMemo;
OeffnenItem: TMenuItem;
TestOpenDialog1: TOpenDialog;
TestMenu: TMainMenu;
procedure BeendenClick(Sender: TObject);
procedure DateiClick(Sender: TObject);
procedure OeffnenItemClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
procedure MyOnFindDirecetory(Directory: string);
procedure MyOnFindFile(Filename: string);
end;
var
TestForm: TTestForm;
implementation
{$R *.lfm}
{ TTestForm }
procedure TTestForm.DateiClick(Sender: TObject);
begin
end;
procedure TTestForm.BeendenClick(Sender: TObject);
begin
TestForm.Close;
end;
procedure TTestForm.OeffnenItemClick(Sender: TObject);
var
FindFiles: TFindFiles;
begin
if TestOpenDialog1.Execute then
begin
FindFiles := TFindFiles.Create;
try
FindFiles.SubFolders := True;
FindFiles.Mask := '*.jpg';
FindFiles.OnFileFind := MyOnFindFile;
FindFiles.OnDirectoryFind := MyOnFindDirecetory;
// FindFiles.Find(Edit1.Text);
finally
FindFiles.Free;
end;
Image1.Picture.LoadFromFile(TestOpenDialog1.FileName);
end;
end;
procedure TTestForm.MyOnFindDirecetory(Directory: string);
begin
Memo1.Lines.Add(Directory);
Application.ProcessMessages;
end;
procedure TTestForm.MyOnFindFile(Filename: string);
begin
Memo1.Lines.Add(Filename);
Application.ProcessMessages;
end;
end.
Schon mal Danke für Eure Hilfe
Dieter