Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2015, 13:01   #1
Hissin
 
Аватар для Hissin
 
Регистрация: 17.12.2015
Сообщений: 7
Вопрос Ошибки с ShellTreeView

Delphi 7
Доброго всем настроения! Пожалуйста, помогите разобраться с ShellTreeView-проблема в следующем: при переименовании и при добавлении (но в определенных случаях) При переименовании папки выводит на "ошибку" в конец кода .end во вкладке Project1, а в ошибке 'FileCtrl' is specific to platform. При переименовании, а иногда и без него выдает ошибку о несуществуещем разделе или недоступности, хотя файл сам существует. При добавлении папки, а затем после ее переименования, когда я хочу добавить еще одну новую папку выдает ошибку. Ошибки разные, то недоступность данной папки, то просто "абаркадабра" Error1091498234-такого рода.

Ниже привожу код:
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, StdCtrls, FileCtrl, ShellCtrls, Grids,
  Outline, DirOutln, CheckLst, DBGrids, dblookup, OoMisc, AdMdm, OleServer,
  CmAdmCtl;
 
type
  TForm1 = class(TForm)
    Panel2: TPanel;
    Panel4: TPanel;
    Edit1: TEdit;
    FilterComboBox1: TFilterComboBox;
    Panel6: TPanel;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PrintDialog1: TPrintDialog;
    FindDialog1: TFindDialog;
    ShellComboBox1: TShellComboBox;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    ShellListView1: TShellListView;
    COMAdminCatalog1: TCOMAdminCatalog;
    AdModemStatus1: TAdModemStatus;
    Panel8: TPanel;
    Splitter1: TSplitter;
    Panel9: TPanel;
    Panel3: TPanel;
    GroupBox2: TGroupBox;
    ShellTreeView1: TShellTreeView;
    Splitter3: TSplitter;
    GroupBox4: TGroupBox;
    Memo1: TMemo;
    Edit2: TEdit;
    Button1: TButton;
    Panel5: TPanel;
    GroupBox5: TGroupBox;
    Splitter2: TSplitter;
    ComboBox1: TComboBox;
    DateTimePicker1: TDateTimePicker;
    procedure ShellListView1Click(Sender: TObject);
    procedure ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure Button1Click(Sender: TObject);
 
 
  
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm1.ShellListView1Click(Sender: TObject);
 
 
var
SelectedFolder:TShellFolder;
FileName:string;
 
begin
 
SelectedFolder:=ShellListView1.SelectedFolder;
if Assigned(SelectedFolder)
then begin
FileName:=SelectedFolder.PathName;
if FileExists(FileName) and (ExtractFileExt(FileName)='.txt')
then Memo1.Lines.LoadFromFile(FileName);
end;
end;
 
procedure TForm1.ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
  
begin
Form1.Edit2.Text := Form1.ShellTreeView1.Path
 
end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject); // нажимаем на кнопку-"создать папку"
begin
mkdir(ShellTreeView1.SelectedFolder.PathName + '/новая папка'); // сам код, создания папки
self.ShellTreeView1.Selected.Expanded:=false;
self.ShellTreeView1.Selected.SelectedIndex:=self.ShellTreeView1.Selected.SelectedIndex;
self.ShellTreeView1.Selected.Expanded:=true;
end;
 
 
end.
В принципе все работает, но с ошибками! Ну почти работает... При создании папки все хорошо, затем я ее переименовываю, в ней создаю еще папку, в вот с третьей папкой проблема-выдает ошибку


з.ы. На другом форуме ничего не смогли (или не захотели) посоветовать

Последний раз редактировалось Hissin; 17.12.2015 в 13:50. Причина: Уточнение языка
Hissin вне форума Ответить с цитированием
Старый 17.12.2015, 17:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Непонятно... Скрины ошибок в студию. И где у тебя код переименовывания? Или ты это делаешь при работе в самом этом компоненте?
И не надо делать кросспосты! Накажу!!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2015, 12:54   #3
Hissin
 
Аватар для Hissin
 
Регистрация: 17.12.2015
Сообщений: 7
Вопрос Скриншоты к ответу:

Цитата:
Непонятно... Скрины ошибок в студию. И где у тебя код переименовывания? Или ты это делаешь при работе в самом этом компоненте?
И не надо делать кросспосты! Накажу!!
Больше не буду! Переименовываю прямо в ShellTreeView!, там небыло только меню- "добавить папку",- код я и добавил. Ситуация все время меняется, как мне кажется нужно делать в коде какие то проверки, которые будут исключать такое. Вот 5 картинок от которых можно сломать голову:

p.s. не нашел как тут "заспойлерить" под плюсик картинки
Изображения
Тип файла: jpg 1.jpg (116.4 Кб, 132 просмотров)
Тип файла: jpg 2.jpg (118.9 Кб, 129 просмотров)
Тип файла: jpg 3.jpg (118.2 Кб, 125 просмотров)
Тип файла: jpg 4.jpg (124.6 Кб, 134 просмотров)
Тип файла: jpg 5.jpg (122.3 Кб, 130 просмотров)

Последний раз редактировалось Hissin; 18.12.2015 в 13:19. Причина: ошибочки )
Hissin вне форума Ответить с цитированием
Старый 18.12.2015, 13:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Угу, я сталкивался раньше с такой проблемой. Тебе после переименования нужно обновлять дерево. Как? Ну попробуй метод Refresh... Из-за подобной ошибки я от этого компонента отказался.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2015, 15:09   #5
Hissin
 
Аватар для Hissin
 
Регистрация: 17.12.2015
Сообщений: 7
Вопрос Метод Refresh

Цитата:
Сообщение от Stilet Посмотреть сообщение
Угу, я сталкивался раньше с такой проблемой. Тебе после переименования нужно обновлять дерево. Как? Ну попробуй метод Refresh... Из-за подобной ошибки я от этого компонента отказался.
ГМ... ну вот, теже грабли... Намучился с этим компонентом, несмотря на то, что видел что люди мучаются и бросают...Принципиально решил не бросать... Буду копать дальше, а Вам спасибо за ответ!
p.s. кстати- Refresh включен, как программно так и в свойствах, -пробовал только програмно/только в свойствах и два варианта оставлять включенными -почти одинаково себя ведет... Куда копать?... Если найду ответ, обещаю отписаться!

Последний раз редактировалось Hissin; 18.12.2015 в 15:11. Причина: Дополнение
Hissin вне форума Ответить с цитированием
Старый 20.01.2016, 09:35   #6
Hissin
 
Аватар для Hissin
 
Регистрация: 17.12.2015
Сообщений: 7
Радость как и обещал отписаться

Цитата:
Сообщение от Hissin Посмотреть сообщение
ГМ... ну вот, теже грабли... Намучился с этим компонентом, несмотря на то, что видел что люди мучаются и бросают...Принципиально решил не бросать... Буду копать дальше, а Вам спасибо за ответ!
p.s. кстати- Refresh включен, как программно так и в свойствах, -пробовал только програмно/только в свойствах и два варианта оставлять включенными -почти одинаково себя ведет... Куда копать?... Если найду ответ, обещаю отписаться!
как и обещал отписаться-отписываюсь, решил проблему, но частично, добавил popupmunu и в свойствах shellTreeView назначил ему, -получилось только режим для чтения, ошибок на удивление стало гораздо меньше, тоесть почти не стал замечать, ошибки у меня ссылались в основном на shellListView, всему есть альтернатива, перейти на Delphi xe, там эти компоненты рабочие и проблем не наблюдается, (пишу на 7ой), и еще одна альтернатива-использовать предков, но кода соответственно больше...
Hissin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListView и ShellTreeView kholoshchak Общие вопросы Delphi 2 16.10.2013 17:33
Shelltreeview и DBGrid Stian БД в Delphi 1 04.03.2011 00:12
ShellComboBox и ShellTreeView!!! $T@LKER Общие вопросы Delphi 1 17.05.2009 17:25
Порблема с SHelltreeview VenMaster Компоненты Delphi 6 29.05.2008 16:21
вопрос по shelltreeview VenMaster Компоненты Delphi 4 26.05.2008 16:23