Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   FileView Komponenten im Register System (https://www.delphipraxis.net/38589-fileview-komponenten-im-register-system.html)

delphifan2004 21. Jan 2005 13:17


FileView Komponenten im Register System
 
Hallo!

Ich will mal die FileView Komponenten verwenden, die , wenn ich eine CLX Anwendung neu erstelle, auf dem Komponentenregister System zu finden sind. Mit einer DirectoryListView will ich das Verzeichnis auswählen, eine FileListView soll mir meine Dateien in diesem Verzeichnis anzeigen und eine dort ausgewählte Datei in FileEdit.Text übernehmen. Diesen Dateinamen will ich dann mit OK an die zukünftige Anwendung übergeben. Mein Problem:

Exception EAccessViolation: an Adresse 00469741

Hier der Quelltext:

{
FileListView.Location ::= DirectoryTreeView.Directory

FÜR FileHistoryComboBox.Files
type
PFileInfo = ^TFileInfo;
TFileInfo = record
SR: TSearchRec; Dateiinformation
ImageIndex: Integer; Index in Iconliste

Desc: string; Eine Beschreibung der aktuellen Datei (NICHT Name)
end;
Eigenschaft Items: TStrings auch gültig (ItemIndex)

}
unit QCLXDlg;

interface

uses
SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
QDialogs, QStdCtrls, QButtons, QComCtrls, QFileCtrls;

type
TQCLXDialog = class(TForm)
FileListView: TFileListView;
FileHistoryComboBox: TFileHistoryComboBox;
//In einer FileHistoryComboBox sollen später die im Verlauf einer Programmsitzung,evtl.
//auch über diese hinaus die ausgewählten Dateien als Liste für spätere schnellere Auswahl
//ohne Verzeichniswechsel gespeichert werden. Leider vermisse ich hier eine Eigenschaft
//Text, wie in der StandardComboBox. Wie kriege ich trotzdem die aktuelle Datei angezeigt?
//Und wie verbinde ich die FileHistoryComboBox mit der FileListView? Es gibt eine
//Eigenschaft Files, deren Handhabung mir aber zu umständlich ist. Funktioniert auch die
//Eigenschaft Items???

FilterComboBox: TFilterComboBox;

btnOk: TBitBtn;
btnCancel: TBitBtn;
btnHelp: TBitBtn;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
DirectoryTreeView: TDirectoryTreeView;
FileEdit: TFileEdit;
procedure FileIconViewDirectoryChange(Sender: TObject;
const NewDir: WideString);
procedure DirectoryTreeViewChange(Sender: TObject; Node: TTreeNode);
procedure FileListViewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
FDefaultExt: String; //*.ext
FFileName: String; //Der Dateiname
FFilter: String; //FileListView.FileMask
FFilterIndex: Integer;
FInitialDir: String; //FileListView.Directory.Location
FTitle: String; //Caption des Formulars

//Die folgenden setXXX und getXXX Methoden sollen später Eigenschaften setzen und lesen
//so dass ich diesen Dialog genauso verwenden kann, wie TOpen- und TSaveDialog.

procedure setDefaultExt(value: string);
procedure setFileName(value: string);
procedure setFilter(value: string);
procedure setFilterIndex(value: Integer);
procedure setInitialDir(value: string);
procedure setTitle(value: string);
function getDefaultExt: string;
function getFileName: string;
function getFilter: string;
function getFilterIndex: Integer;
function getInitialDir: string;
function getTitle: string;
public
{ Public-Deklarationen }

//Diese Eigenschften habe ich bewußt so benannt, wie die gleichnamigen in den
//Standarddialogen. Die haben auch diesebe Bedeutung

property DefaultExt: string read getDefaultExt write setDefaultExt;
property FileName: string read getFileName write setFileName;
property Filter: string read getFilter write setFilter;
property FilterIndex: Integer read getFilterIndex write setFilterIndex;
property InitialDir: string read getInitialDir write setInitialDir;
property Name; //Name der Komponente
property Title: string read getTitle write setTitle;
end;

var
QCLXDialog: TQCLXDialog;

implementation

{$R *.xfm}

procedure TQCLXDialog.setDefaultExt(value: string);
begin
//wird später implementiert
end;

procedure TQCLXDialog.setFileName(value: string);
begin
//wird später implementiert
end;

procedure TQCLXDialog.setFilter(value: string);
begin
//wird später implementiert
end;

procedure TQCLXDialog.setFilterIndex(value: Integer);
begin
//wird später implementiert
end;

procedure TQCLXDialog.setInitialDir(value: string);
begin
//wird später implementiert
end;

procedure TQCLXDialog.setTitle(value: string);
begin
//wird später implementiert
end;

function TQCLXDialog.getDefaultExt: string;
begin
//wird später implementiert
end;

function TQCLXDialog.getFileName: string;
begin
//wird später implementiert
end;

function TQCLXDialog.getFilter: string;
begin
//wird später implementiert
end;

function TQCLXDialog.getFilterIndex: Integer;
begin
//wird später implementiert
end;

function TQCLXDialog.getInitialDir: string;
begin
//wird später implementiert
end;

function TQCLXDialog.getTitle: string;
begin
//wird später implementiert
end;

//-------------------- die öffentlichen Methoden und Eigenschaften -------------

procedure TQCLXDialog.FileIconViewDirectoryChange(Sender: TObject;
const NewDir: WideString);
begin
Refresh;
end;

procedure TQCLXDialog.DirectoryTreeViewChange(Sender: TObject;
Node: TTreeNode);
begin
// DirectoryTreeView.Directory wird an
// von FileListView.Directory.Location übergeben
// Dann wird in FilListView.FileType -> ftDirectory
// ausgeschaltet. Directory kann dann nur noch mit
// der Directeóryliste ausgewählt werden. Es werden jetzt nur noch die reinen Dateinamen
// angezeigt. Wenn ich ftDirectory nicht ausschalte und in das übergeordnete Verzeichnis
// von FileListView aus wechseln will, funktioniert der Wechsel nicht. Deshalb habe ich
// ftDirectory auch deaktiviert
FileListView.Directory.Location := DirectoryTreeView.Directory;
end;

procedure TQCLXDialog.FileListViewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
//Das klappt leider noch nicht
//DirectoryTreeView.Directory := FileListView.Directory.Location;

FileEdit.Text := FileListView.Selections[0].SR.Name; //HIER entsteht die Exception
//Obige Anweisung löst Exception aus -> Warum???

//FFileName := FileEdit.Text;
end;

procedure TQCLXDialog.FormCreate(Sender: TObject);
begin
FileListView.Directory.FileMask := FilterComboBox.Mask;
//Dateifilter an Liste übergeben -> funktionirt so
end;

end.

Kann mir jejmand helfen? Wozu hab ich denn schließlich diese Komponenten?

Delphifan2004


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 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