Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

Список дисков равен списку пунктов меню.   Найти похожие ветки 

 
Bomberman   (2002-10-30 16:52) [0]

Привет. Если кто-нибудь знает как в меню добавить список дисков, помогите. Нужно, чтобы в одном пункте меню был первый диск, в другом - следующий и т.д. Я знаю, что есть функции 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;


 
Calm ©   (2002-10-30 17:07) [1]

Что-то я не понял проблемы.
Под вечер туго с головой :(
Итак, получаем очередной диск, добавляем его в меню. Все Ok.
Или не ясно сколько дисков?
API-функции на этот случай я не знаю.
Видел на сайте компонент, который получал сведения о системе и о дисках в частности. Там можно глянуть.


 
Arcus ©   (2002-10-30 17:07) [2]

А Menu - что это?
Потому как InsertMenu/AppendMenu - API-шные функции и нужен хендл меню + уникальная комманда на каждый пункт.
Если Menu - VCL-ный контрол, то проще создавть новый TMenuItem и вставлять его в Menu.Items


 
Bomberman   (2002-10-30 17:36) [3]

Menu - не VCL. Это дескриптор меню hMenu.


 
Calm ©   (2002-10-30 17:37) [4]

Я так полагаю, суть не в том, куда добавлять, а что добавлять. Так?


 
Bomberman   (2002-10-30 17:48) [5]

Да!


 
Arcus ©   (2002-10-30 18:07) [6]

Тогда попробуй добавить флаг MF_STRING.


 
Bomberman   (2002-10-30 18:29) [7]

Причем тут MF_STRING?

Мне нужно добавить все имеющиеся диски как пункты меню. Если я добавляю так

InsertMenu(Menu, 0, mf_ByPosition, 10, Pchar(DrvLetter));

то добавляется только последний диск из списка.



 
TTCustomDelphiMaster ©   (2002-10-30 20:00) [8]

F1 - GetDriveType


 
Bomberman   (2002-10-30 21:03) [9]


> F1 - GetDriveType


Остроумно. Зачем мне хелп по GetDriveType, если я уже получил список дисков (см начало моего топика).


 
TTCustomDelphiMaster ©   (2002-10-30 21:48) [10]

Bomberman
Извеняюсь не заметил :)
if GetDriveType(PChar(DrvLetter+":\"))=DRIVE_FIXED then
begin
Form1.ComboBox1.Items.Add(DrvLetter);
InsertMenu(Menu, 0, mf_ByPosition, 10, Pchar(DrvLetter));
end;


 
TTCustomDelphiMaster ©   (2002-10-30 22:02) [11]

Вы неправильно работаете с данными полученными фанкцией GetLogicalDrives


 
Bomberman   (2002-10-30 22:39) [12]

Пожалуйста, направьте на путь истынный, а то башка уже расскалываеться.


 
PKT   (2002-10-31 04:46) [13]

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;



Страницы: 1 вся ветка

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-33928
Алексей Коптенков
2002-10-31 13:33
2002.11.11
Подскажите как отловаить исключение


4-34308
sveralex
2002-09-29 19:15
2002.11.11
RAS API


4-34320
Nikolas ShmuS
2002-09-27 00:31
2002.11.11
какая функция минимизирует окошко? )


3-33865
Well
2002-10-18 16:46
2002.11.11
Агрегатные функции


1-34076
MegaVolt
2002-10-30 17:26
2002.11.11
Как извлекать форму из репозитария и где хранятся её исходники?