|
Antwort |
Registriert seit: 26. Nov 2004 Ort: Dresden 274 Beiträge Delphi 10.3 Rio |
#1
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 |
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |