![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Список дисков равен списку пунктов меню.
Bomberman © (2002-10-30 16:52:00)Привет. Если кто-нибудь знает как в меню добавить список дисков, помогите. Нужно, чтобы в одном пункте меню был первый диск, в другом - следующий и т.д. Я знаю, что есть функции InsertMenu и AppendMenu. Но мне нужно, чтобы пункты меню добавлялись в соответствии с колличеством дисков. Помогите!!! Вот так я заполняю ComboBox:
procedure GetDrives;
var
I: integer;
LogDrives: set of 0..25;
DrvLetter: Char;
begin
Integer(LogDrives):=GetLogicalDrives;
for I := 0 to 25 do
if (I in LogDrives) then begin
DrvLetter:=Chr(I + 65);
if GetDriveType(PChar(DrvLetter+":\"))=DRIVE_FIXED then
Form1.ComboBox1.Items.Add(DrvLetter);
// InsertMenu(Menu, 0, mf_ByPosition, 10, Pchar(DrvLetter));
end;
end;
PKT (2002-10-31 04:46:00) [1]to: Bomberman
Может быть лучше воспользоваться GetLogicalDriveStrings ?
var
P: PChar;
I: Integer;
begin
GetMem(P, 100);
FillChar(P^, 100, #0);
GetLogicalDriveStrings(100, P);
for I := 0 to 99 do
if (P[I] = #0) and (P[I+1] <> #0) then P[I] := #13;
ComboBox1.Items.Text := P;
FreeMem(P, 100);
end;
Bomberman (2002-10-30 22:39:00) [2]Пожалуйста, направьте на путь истынный, а то башка уже расскалываеться.
TTCustomDelphiMaster (2002-10-30 22:02:00) [3]Вы неправильно работаете с данными полученными фанкцией GetLogicalDrives
TTCustomDelphiMaster (2002-10-30 21:48:00) [4]Bomberman
Извеняюсь не заметил :)
if GetDriveType(PChar(DrvLetter+":\"))=DRIVE_FIXED then
begin
Form1.ComboBox1.Items.Add(DrvLetter);
InsertMenu(Menu, 0, mf_ByPosition, 10, Pchar(DrvLetter));
end;
Bomberman (2002-10-30 21:03:00) [5]
> F1 - GetDriveType
Остроумно. Зачем мне хелп по GetDriveType, если я уже получил список дисков (см начало моего топика).
TTCustomDelphiMaster (2002-10-30 20:00:00) [6]F1 - GetDriveType
Bomberman (2002-10-30 18:29:00) [7]Причем тут MF_STRING?
Мне нужно добавить все имеющиеся диски как пункты меню. Если я добавляю так
InsertMenu(Menu, 0, mf_ByPosition, 10, Pchar(DrvLetter));
то добавляется только последний диск из списка.
Arcus (2002-10-30 18:07:00) [8]Тогда попробуй добавить флаг MF_STRING.
Bomberman (2002-10-30 17:48:00) [9]Да!
Calm (2002-10-30 17:37:00) [10]Я так полагаю, суть не в том, кудадобавлять, а чтодобавлять. Так?
Bomberman (2002-10-30 17:36:00) [11]Menu - не VCL. Это дескриптор меню hMenu.
Calm (2002-10-30 17:07:00) [12]Что-то я не понял проблемы.
Под вечер туго с головой :(
Итак, получаем очередной диск, добавляем его в меню. Все Ok.
Или не ясно сколько дисков?
API-функции на этот случай я не знаю.
Видел на сайте компонент, который получал сведения о системе и о дисках в частности. Там можно глянуть.
Arcus (2002-10-30 17:07:00) [13]А
Menu- что это?
Потому какInsertMenu/AppendMenu- API-шные функции и нужен хендл меню + уникальная комманда на каждый пункт.
Если Menu - VCL-ный контрол, то проще создавть новый TMenuItem и вставлять его вMenu.Items