Текущий архив: 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.47 MB
Время: 0.007 c