Avatar billede jgthb Nybegynder
25. juli 2006 - 21:31 Der er 7 kommentarer og
1 løsning

menuitem create

Hej

Nu har jeg prøvet den sidste time på at lave et menuitem mens mit program kører. men uden held:

procedure TForm1.N11Click(Sender: TObject);
begin
men:=tmenuitem.Create(self);
men.Parent:=self;
men.Name:='hej';
men.Caption:='hej';
end;

n11 er overmenuen. hvordan skal det gøres?
Avatar billede hrc Mester
25. juli 2006 - 21:59 #1
Hvis du har en TMenuItem som du gerne vil hægte en nyt på, eksempelvis den sædvanlige "Files", så kan du gøre det således:

procedure TForm1.Button1Click(Sender: TObject);
var
  MenuItem : TMenuItem;
begin
  // Så håndterer den også sletning. Hvis du angiver nil, så skal du selv sørge
  // for at frigive den igen.
  MenuItem := TMenuItem.Create(MainMenu1);
  MenuItem.Caption := 'Hello World';
  miFiles.Add(MenuItem);
end;
Avatar billede martinlind Nybegynder
25. juli 2006 - 22:01 #2
procedure TForm1.N11Click(Sender: TObject);
var
  men : tmenuitem;

begin
men:=tmenuitem.Create(self);
men.Parent:=self;
men.Name:='hej';
men.Caption:='hej';
mainmenu.additem(men); // mainmenu.items.add(men);
// kan ikke lige huske hvor den ligger
// eller skulle du også kunne bruge Owner
// men.Owner := mainmenu;
// Owner sætter din menuitem comp. ind i mainmenuen's liste
// Parent søger for at du får en Paint, altså at din menuitem
// bliver tegnet rigtig på skærmen.
// Så ved du det :)
end;
Avatar billede martinlind Nybegynder
25. juli 2006 - 22:02 #3
hrc >> Hmmm :(
Avatar billede hrc Mester
25. juli 2006 - 22:04 #4
Min kommentar vedrører hvad du skriver i TMenuItems.Create(). Hold i øvrigt op med at bruge de globale variable når de ikke er nødvendige. Din "men" er en forkert måde at lave det på.

Hvis du vil have noget semi-globalt så lav' det som en "private member" og sæt et "f" foran da det er en de-facto standard at man gør det ved de private medlemmer:

  TForm1 = class(TForm)
  private
    fMenuItem : TMenuItem; // osv, osv
  public
  end;

Endelig bør du lave længere og mere forklarende navne. Din men kan nemt forveksles med mem og det er noget helt andet. Store bogstaver er også en god idé, men for mange ødelægger overskueligheden.
En god tommelfingerregel er at hvis klassen hedder TMenuItem og du har brug for en variabel så skal den hedde MenuItem.
Avatar billede hrc Mester
25. juli 2006 - 22:05 #5
martinlind: Er der noget galt?
Avatar billede jgthb Nybegynder
25. juli 2006 - 22:32 #6
prøver tingene af. ind til videre har jeg nogle problemer med dit, hrc. hvad er 'mifiles' (sidste linje)?
martinlind, dit virker.

der går nok et stykke tid før jeg er færdig, fordi faktisk, skal jeg lave flere menuitems med en for-løkke, som hver skal have en onclick-procedure. og det skal jeg jo lige have løst.
Avatar billede jgthb Nybegynder
25. juli 2006 - 22:42 #7
nå. jeg laver et nyt spørgsmål om onclickprocedure
Avatar billede martinlind Nybegynder
26. juli 2006 - 09:05 #8
hrc >>> ikke noget, du kom bare lige lidt før mig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB