Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 01.05.05 10:35 
Hallo,
ich möchte gerne zur laufzeit mehre PopupMenus auf verschied komponenten teieln z.b.
TSpeedButton, TJvCaptionPanel: Popupmenu3;
alle andren komponenten PopupMenu4;
dazu habe ich mir folgende procedure geschrieben. die auch soweit funktioniert nur derr letzte else block der ist noch nicht so wie ich ihn haben möchte.....
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.ChangeToDesinger;
var
  i:Integer;
  Component: TComponent;
begin
  if DesingerModus1.Checked = True then begin
    for i:=0 to ComponentCount-1 do begin
      if Components[i].ClassType = TJvCaptionPanel then
        TJvCaptionPanel(FindComponent(Components[i].Name)).PopUpMenu:=PopupMenu3
      else
        if Components[i].ClassType = TSpeedButton then
          TSpeedButton(FindComponent(Components[i].Name)).PopUpMenu:=PopupMenu3
        else begin
          Component := Components[i];
          if (Component is TControl) then begin
            Assert(Assigned(Component));
            if IsPublishedProp(Component, 'PopUpMenu') then
              TPopupMenu(GetObjectProp(Component, 'PopUpMenu', TPopupMenu)) PopupMenu4;
          end;
        end;
    end;
  end
  else begin
  end;

end;

ich habe schon in der hilfe nach geschaut welche komponenten ein PopupMenu haben das sind die die von TControl kommen. Aber viel kann ich damit nicht anfangen. Habe schon einiges versucht und geteste aber nix geht...

_________________
MFG
Michael Springwald, "kann kein englisch...."
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 01.05.05 18:43 
Zitat:

derr letzte else block der ist noch nicht so wie ich ihn haben möchte.....

super Mimi, weiter so.
der letzte else block ist der hier:
Zitat:

else begin
end;

der sieht doch ganz gut aus :roll:

Zitat:

if Components[i].ClassType = TSpeedButton then
TSpeedButton(FindComponent(Components[i].Name)).PopUpMenu:=PopupMenu3

classtype-> siehe OH, man sollte is und as verwenden. außerdem weiß ich nicht, warum das findcomponent gut sein soll, das ist doch mit Verwendung von Component doppelt.
ausblenden Delphi-Quelltext
1:
2:
       if Components[i] is TSpeedButton then  
          TSpeedButton(Components[i]).PopUpMenu:=PopupMenu3


und für den Rest: popupmenu ist bei Tcontrol nur protected, das mußt du erst sichtbar machen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  THackControl=class(Tcontrol)
    protected
      property Popupmenu;
  end;
...

.... THackControl(Components[i]).PopupMenu := ...


Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 07.05.05 20:32 
die habe ich ganze vegessen, ich meite eigentlich den vor lezten *G*
-> THackControl(Components[i]).PopupMenu
so dachte ich es mir auch,
vielen dank.

_________________
MFG
Michael Springwald, "kann kein englisch...."