Mdichild i popupmenu

Odpowiedz Nowy wątek
2011-10-12 17:41
Ins
0

Witam
Problem jest nastepujacy...
Po kazdorazowym kliknieciu butona jest tworzony mdichild. Zawiera on Image, popupmenu przypisany do tego image i inne kontrolki.
Gdy mam 2 okna mdichild -jedno jest aktywne. Gdy klikam prawym klawiszem myszy na aktywnym mdichild rozwija sie popupmenu. Gdy klikam na drugim - nieaktywnym mdichild tez rozwija sie popupmenu ale nie staje się aktywny.
Jak zaprogramowac popupmenu czy mdichilda czy co innego aby po wcisnieciu prawego klawisza myszy(po pokazaniu popupmenu) nieaktywny mdichild stał się aktywny?

Pozostało 580 znaków

2011-10-13 19:18
MartinEagle
0

Jak najprościej...

PS. Wypadałoby na początku zastanowić się nad tym, co trzeba samemu zrobić, aby przejść na nieaktywne okno, po to żeby te uaktywnić, a przy tym, żeby pojawił się PopUpMenu. A w dodatku żeby się to odbywało przy naciśnięciu LMB. No, ale Ty o tym zapewne wiesz...

Pozostało 580 znaków

2011-10-13 19:25
0

a mozesz mi powiedziec co to mdchild bo ja nie mam tego w delphi...

Pozostało 580 znaków

2011-10-14 13:12
0
eloszek napisał(a)

a mozesz mi powiedziec co to mdchild bo ja nie mam tego w delphi...

Sic, nie przyznawaj się.

Co do tematu(bez środowiska piszę). Ownerem lub Parentem popupMenu powinno być MDIChild. I po prostu wywołujesz Activate lub Show. Rozumiesz?

Pozostało 580 znaków

2011-10-14 15:17
Ins
0

no i chyba jest, bo reaguje np klikne w ktoryms nieaktywnym mdichild popupmenu to w procedurze PopupMenu1Popup po komendzie label1.Caption:=PopupMenu1.PopupComponent.Name w nieaktywnym oknie w labelu wyświetla poprawnie nazwe.
Każdy Mdichild ma swoj numer np mdichildren[nr] probowalam z poleceniami .activemdichild .show .activate - nie działa, jedyne co to po komendzie .bringtofont jest reakcja ale nie po wywołaniu popupmenu, tylko kliknięciu buttona na glownej formie. probowalam za pomoca petli


 for i:=0 to mdichildcount-1 do 
  if label1.Caption:=PopupMenu1.PopupComponent.Name then
     mdichildren[i].bringtofont; 
  • ale nie działa.

Pozostało 580 znaków

2011-10-14 15:20
Ins
0

nie działa z

for i:=0 to mdichildcount-1 do 
  if label1.Caption:=PopupMenu1.PopupComponent.Name then
     mdichildren[i].bringtofront;  

Po wieeeluuu trudach cel osiagniety :)

procedure TMDIChild.PopupMenu1Popup(Sender: TObject);
var i:integer;
begin
for i:=1 to mainform.mdichildcount -1 do
  if PopupMenu1.PopupComponent.Name='Image1' then  begin
   if PopupMenu1.PopupComponent.Owner = MainForm.MDIChildren[i] then
    MainForm.MDIChildren[i].BringToFront;
 end;
end; 

A moze ktos ma inny pomysl na rozwiazanie tego problemu lub jakies inne pomocne wskazowki?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0