AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TMenuItem wird nicht angezeigt unter componentes?
Thema durchsuchen
Ansicht
Themen-Optionen

TMenuItem wird nicht angezeigt unter componentes?

Ein Thema von mimi · begonnen am 4. Dez 2005 · letzter Beitrag vom 11. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

TMenuItem wird nicht angezeigt unter componentes?

  Alt 4. Dez 2005, 17:01
Hallo,
warum wird bei folgenden code Tmenuitem übersprungen:
Delphi-Quellcode:
 for i:=0 to ComponentCount-1 do begin
      c:=Components[i];
      if (c is TControl) or (c is TMenuItem) then begin
ich möchte gerne alle komponenten durchlaufen die bestimmte eigenschaften aufweisen und Tmenuitem zählt dazu.... es gehörht zu TMainmenu *G*
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 4. Dez 2005, 17:04
Hi,

vielleicht befindet es sich ja im Delphi-Referenz durchsuchenControls array-property des Forms... Schau mal nach.
Ansonsten musst Du bei einem TMainMenu (falls Du ein solches bei Controls[] kriegst) dieses manuell absuchen.
Was willst Du denn genau machen?

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 10. Dez 2005, 18:44
ich brauche es für eine farbänderung:
d.h. der user soll das ausehen der Komponenten verändern können(aber nur Schriftfarbe und TFont) und das klappt auch schon ganz gut bei allen andren komponenten nur die TMenuItems spielen da nicht mit.

ich wollte die möglichkeiten anbieten mein Programm in mehren sprachen zu benuzten mit Sprachdateien....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 10. Dez 2005, 19:08
Hallo,

ab TmainMenu (in Components enthalten) musst Du mit .Items weitersuchen.
Der folgende Code durchläuft rekursiv alle Items incl. Subitems
und baut sie In ein treeView ein.
Ich glaube das der Code ganz gut an Deine Anforderungen angepasst werden kann.
Delphi-Quellcode:
procedure XForm.GetMenuItems(aMenuItem: TMenuItem;aNode2: TTreeNode);
var z : Integer;
    aItem : TMenuItem;
    aNode : TTreeNode;
    s : string;
begin
  for z := 0 to aMenuItem.Count-1 do
    begin
    aItem := aMenuItem.Items[z];
    aNode := ANode2;
    s := aItem.Name;
    aNode := TVFormTree.items.Addchild(aNode,s);
    if aItem.Count > 0 then
      GetMenuItems(aItem,aNode);//rekursiv
    end;//Ende for z
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 10. Dez 2005, 19:20
@Lannes
das währe auch eine idee. Vielen dank.

Wenn ich dein code richtig verstehe durchläuft er das menu und speichert es in eine TTreeView, richtig ?

Zitat:
Ich glaube das der Code ganz gut an Deine Anforderungen angepasst werden kann.
ich wüste jetzt nicht genau wie
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 10. Dez 2005, 19:24
Hallo,

geh doch einfach rekursiv alle Komponenten Deiner Form durch:
Delphi-Quellcode:
procedure TForm1.AlleKomponentendurchlaufen;

  procedure Walk(aComponent: TComponent);
  var
    C: Integer;
  begin
    if (aComponent is TControl) or (aComponent is TMenuItem) then
    begin
      // hier Dein Code
    end;
    for C := 0 to aComponent.ComponentCount - 1 do
      Walk(aComponent.Components[C]);
  end;

begin
  Walk(Self);
end;
Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 10. Dez 2005, 22:04
Hallo,
@xaromz:
die Menü-Items sind nicht in Components enthalten, ich wiederhol mich mal
Zitat von Lannes:
...ab TmainMenu (in Components enthalten) musst Du mit .Items weitersuchen.
@mimi:

hab es mal etwas umgebaut, jede caption wird jetzt um '...' erweitert:
Delphi-Quellcode:
procedure SetMenuItemsPPP(aMenuItem: TMenuItem);
var z : Integer;
    aItem : TMenuItem;
begin
  for z := 0 to aMenuItem.Count-1 do
    begin
    aItem := aMenuItem.Items[z];
    aItem.Caption := aItem.Caption+' ...';
    if aItem.Count > 0 then
      SetMenuItemsPPP(aItem);//rekursiv
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,z : Integer;
    c : TComponent;
begin
  for i:=0 to ComponentCount-1 do
    begin
    c:=Components[i];
    if c.ClassParent = TMenu then //alle PopUp- und MainMenüs
    //if c is TMainMenu then
    //if c is TPopUpMenu then
      for z := 0 to TMenu(c).Items.Count-1 do
        begin
        TMenu(c).Items[z].Caption := TMenu(c).Items[z].Caption+' ...';
        SetMenuItemsPPP(TMenu(c).Items[z]);
        end;
    end;
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 10. Dez 2005, 22:09
Hallo,
Zitat von Lannes:
Hallo,
@xaromz:
die Menü-Items sind nicht in Components enthalten, ich wiederhol mich mal
Zitat von Lannes:
...ab TmainMenu (in Components enthalten) musst Du mit .Items weitersuchen.
Schöne Vermutung, nur warum funktioniert mein Code dann?

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 11. Dez 2005, 00:08
Hallo,

sorry, hast recht, ist doch enthalten
Mein Code ist schon etwas älter,
glaube wegen fehlendem Parent habe ich mich damals auf das Auslesen der Items verlegt.
Aber ist doch schön, das mehrere Wege zum Ziel führen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: TMenuItem wird nicht angezeigt unter componentes?

  Alt 11. Dez 2005, 07:54
@xaromz
genau das habe ich schon versucht:
if (aComponent is TControl) or (aComponent is TMenuItem) then begin aber leider ohne erfolg.

@Lannes
das mit if c.ClassParent kann ich mal versuchen vielen dank.

aber ich verstehe nicht warum das TMenuitem nicht bei einem normalen komponenten durchlauf gefunden wird . Weil TMenuItem ist doch auch von TControl oder etwa nicht ???
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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