Avatar billede Slettet bruger
30. december 2002 - 12:34 Der er 1 kommentar og
1 løsning

Hvilken WinControl ?

Hej, jeg har en kode hvor jeg i runtime creater en masse paneler, der alle har samme onMouseUp-procedure nemlig TMDIChild.Panel2MouseUp. Koden gør at nå der højreklikkes på et af de createde paneler, åbnes der "manuelt" en popupmenu. I proceduren, der åbner den, behandler den TWinControl(Sender), altså det komponent (et af de createde paneler) der har igangsat popup-proceduren:

procedure TMDIChild.Panel2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbRight) then
  Popup(TWinControl(Sender));
end;

Den henviser til denne procedure, som ændrer nogle variabler og udløser PopUpMenu2:


procedure TMDIChild.Popup(Sender: TObject);
var
  P : TPoint;

begin
  GetCursorPos(P);
  with P do
  PopupMenu2.Popup(X,Y);
  with TWincontrol(Sender) do
  begin
    MIndstillinger.varMCaption := Caption;
    MIndstillinger.varMLe := Height;
    MIndstillinger.varMBe := Width;
    showmessage(name);
  end;
end;


Nu er problemet bare at "Caption" ikke er Panelets (det panel, der har udløst proceduren) caption, men formen panelet ligger på's caption. Det sammen med "Name". Det mærkelige er, at Width og Heigth ER panelets. Hvordan kan jeg sikre at det er komponenten, der har igangsat popupproceduren, der også er TWincontrol? Eller har nogen et andet forslag til kode?
Avatar billede borrisholt Novice
30. december 2002 - 12:42 #1
Set er fordi Caption ikke ligger på TwinControl. Men der i mod på TPanel. Så når du bare skriver Caption referer du til Formens caption da det er den nærmeste.

Du skal i stedet gøre noget alla der her :


procedure TMDIChild.Popup(Sender: TObject);
var
  P : TPoint;
  SenderPanel : TPanel;
begin
  GetCursorPos(P);
  with P do
  PopupMenu2.Popup(X,Y);
 
  SenderPanel :=  (Sender as TPanel);

  with SenderPanel do
  begin
    MIndstillinger.varMCaption := Caption;
    MIndstillinger.varMLe := Height;
    MIndstillinger.varMBe := Width;
    showmessage(name);
  end;
end;
Avatar billede Slettet bruger
30. december 2002 - 17:24 #2
tak for hjælpen, det virker :-)
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