Hi leute,
ich hab da, wie schon erwähnt, ein prob mit der komponente tmainmenu:
mein programm soll alle laufwerke in das tmainmenu einlesen, doch
meine laufwerke (a, c-m), also elf einträge, doch auf jedem betriebssystem (windows 98 se, xp)
auf dem ich das ausprobiert habe, zeigte er nur a und c-k (also nur 10) an.
kann das an der begränzung der auslesbaren laufwerke liegen (mit meinem prog kann ich auf win98
mehr laufwerke auslesen als das betriebssystem), aber auf xp findet er ja alle.
hier mein quelltext:
Delphi-Quellcode:
procedure TForm1.HD;
function DriveType(DriveByte: Byte): String;
begin
case GetDriveType(PChar(Chr(DriveByte + Ord('A')) + ':\')) of
DRIVE_REMOVABLE: Result := 'Diskette';
DRIVE_FIXED: Result := 'Festplatte';
DRIVE_CDROM: Result := 'CD-ROM/DVD';
else
Result := '?';
end;
end;
var i: Integer; NewItem: TMenuItem;
begin
try
for i := 0 to 25 do
if GetLogicalDrives and (1 shl i) <> 0 then
begin
NewItem := TMenuItem.Create(Menu);
NewItem.Caption := Chr(i + Ord('A'))+#9+'('+DriveType(i)+')';
if NewItem.Caption[1] = c then NewItem.Checked := True;
NewItem.RadioItem := True;
NewItem.AutoCheck := True;
NewItem.OnClick := DriveChange;
Menu.Items[1].Insert(Menu.Items[1].Count, NewItem);
end;
finally
NewItem.Free;
end;
end;
procedure TForm1.DriveChange;
begin
TMenuItem(Sender).Checked := True;
c := TMenuItem(Sender).Caption[2];
end;
variable c ist das laufwerk.
nur so nebenbei
: warum muss ich
c := TMenuItem(Sender).Caption[2];
eingeben, dass ich den richtigen laufwerksbuchstaben vom menü herausbekomme?
WIE KANN ICH ALLE LAUFWERKE IM MENÜ ANZEIGEN LASSEN?
PLEASE HELP!!!