Dziwne zachowanie TSdfDataSet i właściwości FileName

0

Mam na formie komponent TShellListView, który wyświetla mi listę plików. Program obsługuje zdarzenie klik komponentu i powinien odczytać z komponentu nazwę wybranego pliku i tą nazwę przekazać do komponentu TShellListView, właściwość FileName. I co się dzieje, jak zrobię tak jak napisałem to lipa, system wyświetla okienko że nie może otworzyć pliku o podanej nazwie. Więc dorzuciłem do formy OpenDialog, jego właściwość FileName przypisałem do tej samej zmiennej co zmienna z TShellListView i uruchomiłem program. I wszystko chodzi super, co jest i tu jest String(OpenDialog.FileName) i z komponent TShellListView też pobieram Stringa, ale z TShellListView nie działa. Oczywiście robię to wszystko w Lazarusie

Procedura pobierająca z TShellListView (nie działa)

procedure TfrImport.plikiClick(Sender: TObject);
var
   plik : String;
begin
  plik := ExtractFilePath(Application.ExeName);
  if pliki.SelCount > 0 then plik:=plik + pliki.LastSelected.Caption;
  sb.Panels[1].Text := plik;
  dm.dsCSV.FileName:=plik;
  dm.dsCSV.Active:=True;
end;

Procedura z OpenDialog - działa

procedure TfrImport.plikiClick(Sender: TObject);
var
   plik : String;
begin
  plik := ExtractFilePath(Application.ExeName);
  if pliki.SelCount > 0 then plik:=pliki.LastSelected.Caption;
  sb.Panels[1].Text := plik;
  OpenDialog1.Execute;
  plik := OpenDialog1.FileName;
  dm.dsCSV.FileName:=plik;
  dm.dsCSV.Active:=True;
end;
0
plik := ExtractFilePath(Application.ExeName);

Ten kod wcale nie musi zwracać takiej ścieżki, jaką oczekujesz że zawsze zwróci;

Dorzuć jakiś projekt, żeby można było sprawdzić u siebie; Poza tym opisz problem sensownie, bo już więcej byłbym w stanie wywróżyć z fusów, niż z opisu "nie działa"; Poza tym podaj wersję Lazarusa i nazwę systemu, na którym testujesz ten kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1