Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.014 c
7-34274
Keplin Sergey
2002-09-07 22:13
2002.11.11
Background file copy...


1-34092
Zergling
2002-10-31 07:24
2002.11.11
Инспектор объектов как IDE Delphi


8-34132
Маратка
2002-07-17 16:13
2002.11.11
Вхождение части фигуры в прямоугольник


1-34019
MCFire
2002-11-02 16:17
2002.11.11
Как узнать создана ли форма?


14-34235
Skier
2002-10-23 13:49
2002.11.11
У меня Explorer отказывается вводить русские буквы. Как лечить ?




   Наверх