Thema: Delphi Problem mit TMainMenu

Einzelnen Beitrag anzeigen

silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit TMainMenu

  Alt 27. Dez 2003, 23:19
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!!!
  Mit Zitat antworten Zitat