Компонент DriveComboBox
Підкажіть, будь ласка, як видати своє власне повідомлення про помилку, якщо користувач вибрав диск, який не доступний у списку компонента DriveComboBox: 1) наприклад, якщо в дисководі або сидирі немає диска, то як обробити подію при виборі відповідного диска в списку? 2) Цей компонент показує у своєму списку всі диски, які підключені до ОС. Якщо раптом у процесі роботи відключиться мережевий диск, як у цьому випадку цю подію перехопити? 3) Яка властивість визначає, що в списку компонента саме такі диски?
Можливо, треба обробити OnChange з подальшою самостійною перевіркою доступності диска.
Ось я не знаю як перевірити доступність диска?
не на все у світі є властивості.
Щоб дізнатися, треба звернутися до нього і далі в залежності від результату.
var tmpS:string; isError : boolean; begin tmpS:=GetCurrentDir; isError:=not SetCurrentDir("c:\"); SetCurrentDir(tmpS);
if isError then MessageDlg("Диск H: недоступний", mtError, [mbOk], 0); end;
Чи не могли б Ви (Dms) пояснити рядок isError:=not SetCurrentDir("c:\")?
Питання: якщо я заздалегідь не знаю, якими літерами диски називаються, то як тоді бути?
Ну що ж . isError:=not SetCurrentDir("h:\")? намагається змінити поточну директорію на h:\ і якщо все проходить вдало, то видаєtrue(isError, відповідно,false)
Все одно не працює!
Та біда, а чому ти думаєш, що не працює?
від нічого робити написав. все працює procedure TForm1.DriveComboBox1Change(Sender: TObject); var tmpS : string; tmpDisk : array [0..MAX_PATH-1] of char; isError : boolean; begin tmpS:=GetCurrentDir;
isError:=notSetCurrentDir((Sender as TDriveComboBox).Drive+":\"); SetCurrentDir(tmpS);
if isError then begin MessageDlg("Диск недоступний", mtError, [mbOk], 0); GetWindowsDirectory(@tmpDisk, MAX_PATH); (Sender as TDriveComboBox).Drive:=tmpDisk[0]; end; end;