Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit TMainMenu (https://www.delphipraxis.net/13849-problem-mit-tmainmenu.html)

silentAMD 27. Dez 2003 23:19


Problem mit TMainMenu
 
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 :spin2: : warum muss ich
Delphi-Quellcode:
c := TMenuItem(Sender).Caption[2];
eingeben, dass ich den richtigen laufwerksbuchstaben vom menü herausbekomme? :coder:



WIE KANN ICH ALLE LAUFWERKE IM MENÜ ANZEIGEN LASSEN?


PLEASE HELP!!! :gruebel:

silentAMD 27. Dez 2003 23:21

Re: Problem mit TMainMenu
 
mir ist ein fehler unterlaufen: es sind zwölf laufwerke, aber das macht ja nichts zur sache... :hi:


PLEASE HELP!!!

Sharky 28. Dez 2003 07:41

Re: Problem mit TMainMenu
 
Hai silentAMD,

Zitat:

Zitat von silentAMD
....
Delphi-Quellcode:
... end;
 finally
  NewItem.Free;
 end;
end;

Du gibst hier ja immer deinen zuletzt erzeugten Menüeintrag wieder frei. Und damit ist er auch wieder weg.

Zitat:

Zitat von silentAMD
....
Delphi-Quellcode:
c := TMenuItem(Sender).Caption[2];
eingeben, dass ich den richtigen laufwerksbuchstaben vom menü herausbekomme?

Ich nehme an das Du in deinem MainMenü die Eigenschaft AutoHotkeys auf maAutomatic stehen hast.
In diesem Fall setzt Delphi vor jeden Menüeintrag ein & (Kaufmanns und). Dies wird für den Zugriff auf die Menüpunkt mit ALT verwendet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz