AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AV beim Schliessen von Form mit ShellListview

Ein Thema von Luckie · begonnen am 19. Apr 2007 · letzter Beitrag vom 20. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 14:31
Ich habe mir gerade einen eigenen SaveDialog gebastelt mit der ShellComboBox und dem ShellListview. Nur immer, wenn ich ihn schliessen will, bekomme ich eine AV:
Delphi-Quellcode:
procedure TfrmSaveTemplate.btnOKClick(Sender: TObject);
begin
  FAuthor := edtAuthor.Text;
  FDescription := memDescription.Text;
  FFilename := edtFile.Text;
  if ShellListview1.SelectedFolder.IsFolder then
    FFilename := ShellListview1.SelectedFolder.PathName + '\' + edtFile.Text
  else
    FFilename := ShellListview1.SelectedFolder.PathName;
end;

procedure TfrmSaveTemplate.edtFileChange(Sender: TObject);
begin
  btnOK.Enabled := edtFile.Text <> '';
end;

function TfrmSaveTemplate.Execute: Boolean;
begin
  Result := Self.ShowModal = mrOK;
end;

procedure TfrmSaveTemplate.ShellListView1Click(Sender: TObject);
var
  Filename : WideString;
begin
  if ShellListView1.ItemIndex > -1 then
  begin
    Filename := ShellListview1.SelectedFolder.PathName + ShellListview1.Items[ShellListview1.ItemIndex].Caption;
    if not ShellListview1.SelectedFolder.IsFolder then
      edtFile.Text := ExtractFilenameW(Filename);
  end;
end;
Und Aufruf:
Delphi-Quellcode:
var
  TemplateFile : TTemplateIO;
begin
  if frmSaveTemplate.Execute then
  begin
    ShowMessage(frmSaveTemplate.Filename + ', ' + frmSaveTemplate.Author + ', ' + frmSaveTemplate.Description);
    TemplateFile := TTemplateIO.Create(False);
    TemplateFile.FreeOnTerminate := True;
    TemplateFile.Author := frmSaveTemplate.Author;
    TemplateFile.Description := frmSaveTemplate.Description;
    TemplateFile.Page := ImageEnVect;
    TemplateFile.SaveToFile(frmSaveTemplate.Filename);
  end;
Was mache ich da falsch?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 14:49
Hi,

gehe ich richtig in der Annahme, dass du das SaveTemplateForm bereits erzeugt hast und im Speicher behältst, also kein Action := caFree evtll. vererbst?

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:00
Die Form wird schon beim Start der Anwendung erzeugt. Wenn ich das debuggen will und in Zeile 6 einen Breakpoint setze, will er von mir an der Stelle den Pfad zur ShellCtrl.pas wissen. Kommentiere ich alle ab Zeile 6 aus, geht es ohne Probleme. Es muss also was mit dem ShellListview zu tun haben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:03
Hi,

das Einzige, was mir auffällt:

ShellListview1.SelectedFolder kann nil sein!
In diesem Fall crasht es bei:
if ShellListview1.SelectedFolder.IsFolder then Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:13
Wann könnte es denn nil sein? Und wie vermeide ich das?

OK, es ist nil. Aber warum? Ich habe doch den Listview benutzt, um in den Ordner zu navigieren.

Oder gibt es eine andere, bessere Möglichkeit mein Ziel zu erreichen und einen Dateinamen mit Pfad zurückzugeben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#6

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:20
Mal genz abgesehen von konkreten Problem: Wenn ich dir einen Rat geben darf, dann meide ShellListView & Co. Die sind a) lahm und b) total verbuggt. Bastel dir was eigenes, dann weist du, woran du bist... Ich hab diese Komponenten vor einiger Zeit des öfteren benutzt, und würde sie aufgrund der Probleme, die ich mit ihnen hatte, nur noch mit der Beißzange anfassen...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:22
Ich habe aber keine Zeit was eigenes zum implementieren. Desweiteren will ich ja nichts aussergewöhnliches. Nur im Ordnersystem navigieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:28
Dann schau Dir mal die VirtualShellTools an
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:31
Hi Luckie,

was spricht gegen die Verwendung von TOpenDialog?

Frank
Frank Reim
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#10

Re: AV beim Schliessen von Form mit ShellListview

  Alt 19. Apr 2007, 15:32
Dann nur mal 2 Beispiele, wie toll diese Komponenten sind:
- ich hatte - damals noch unter Win98 und D6PE- massivste Ressourcenprobleme. ==> Etwa in 50% aller Fälle(ich konnte es nicht wirklich reproduzieren) - stieg der Ressourcenverbrauch innerhalb einer gewissen Zeit(ne halbe Stunde vielelicht) auf 100%, was zum Systemstillstand geführt hat(Win98 eben). Dabei reichte es n ShellListView auf dem Formular zu haben.
- grad heute is wieder n Bugreport aufgetaucht: http://forum.dsdt.info/viewtopic.php?t=33072
- ...

Wie gesagt man kann diese Komponenten benutzen. Es geht. Irgendwie. Wenn ich heute aber sowas bräuchte, würde ich mir entweder ne entsprechende OpenSource-Komponente suchen oder selber basteln. Was du machst ist deine Sache. Wollte dich nur warnen...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz