Avatar billede jesnymark Nybegynder
22. december 2004 - 11:15 Der er 11 kommentarer og
2 løsninger

Problem med flere Tpanels og en menu på hver.

Jeg har en panel (Panel1) på denne er der placeret 60 stk andre panels (Panel2 -> 61 med .Tag 1 -> 60), jeg har så lavet en popupmenu til hver af disse panels, MEN.... når jeg så vælger et punkt i menuen hvordan kan jeg så vide hvilken af disse panels man har trykket på??
Avatar billede martinlind Nybegynder
22. december 2004 - 11:20 #1
if (Sender as TPanel).Name = 'Panel2' then ShowMessage('Du har trykket på Panel2');
Avatar billede jesnymark Nybegynder
22. december 2004 - 11:59 #2
Det virker ikke.. jeg får en 'Invalid Class Typecast'


Denne procedure vælger jeg fra et punkt i en popupmenu :
...
procedure TForm1.Rediger1Click(Sender: TObject);
begin
  if TForm1(Sender as TPanel).Name = 'Panel2' then
    label1.Caption := '2';
...
Jeg vil bruge det til at rediger noget tekst som står et andet sted på skærmen.
Avatar billede martinlind Nybegynder
22. december 2004 - 12:05 #3
Det er rigtig det var mig der lige var for hurtig, den sender du får med er en TPopupMenu, du kan evt. bruge tag på din popupmenu eller

if TForm1(Sender as TPopupmenu).Name = 'Popupmenu2' then
    label1.Caption := '2';

har du så 60 popupmenu'er eller hvad, og hvad skal du bruge alle de panels til, det lyder som om der måske var en smartere måde
Avatar billede jesnymark Nybegynder
22. december 2004 - 12:46 #4
Nej, jeg har ikke 60 popup'er men jeg har 60 panels (hjemmelavet) som er flytbare, de skal bruges til en elektronisk opslagstavle.
Man kan sige at alle panels er et stykke papir med en magnet bag på, på Caption af hver panel vil jeg så skrive en besked, jeg vil så ved at højreklikke på en 'magnet' få en menu op og der vil kunne vælge f.eks. 'Slet oplysninger' 'skriv oplysninger'.
Problemet er så at når jeg vælger 'skriv oplysning' så vil jeg skrive til caption på den panel jeg højreklikker og vælger i menuen på....
Avatar billede martinlind Nybegynder
22. december 2004 - 12:50 #5
Hvad med at putte din popupmenu med på dit hjemmelavede panel, så kører det jo sammen og så ved du hvilken panel det er, eller skal du kører FindControl(x,y) tror jeg nok den hedder, den kan fortælle hvilken control der er under musen
Avatar billede stoney Nybegynder
22. december 2004 - 14:07 #6
Fik du dette til at virke http://www.eksperten.dk/spm/527549

Hvis det er et standard Tpanel og standard Tpopupmenu
kan jeg maile dig et eks.

Stoney
Avatar billede jesnymark Nybegynder
22. december 2004 - 14:15 #7
Hej Stoney

Ups... undskyld, jeg har fulstændig glemt at give point....
De er tildelt nu...
Avatar billede martinlind Nybegynder
22. december 2004 - 14:15 #8
du kan evt. også slå autopopup fra på din menu, og lave en onMouseUp event på dit panel, så ved du hvilket panel det er for så er sender lig det panel, så kan du selv poppe menuen op med popupmenu1.popup(Mouse.x,mouse.y);
Avatar billede jesnymark Nybegynder
22. december 2004 - 14:17 #9
Til stoney

Det eksempel du nævner, kan du ikke vis et udsnit her???
Avatar billede stoney Nybegynder
22. december 2004 - 14:22 #10
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    PopupMenu1: TPopupMenu;
    Slet1: TMenuItem;
    Skriv1: TMenuItem;
    procedure Slet1Click(Sender: TObject);
    procedure Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Skriv1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  compnavn : String;

implementation

{$R *.dfm}

procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
compnavn := ((sender as Tcomponent).Name);
end;

procedure TForm1.Slet1Click(Sender: TObject);
begin
showmessage('Indhold i ' + compnavn + ' slettes');
end;



procedure TForm1.Skriv1Click(Sender: TObject);
begin
showmessage('Nu kan du skrive i ' + compnavn);
end;

end.

Panel2MouseMove assigner du til alle de panels det måtte gælde

Stoney
Avatar billede jesnymark Nybegynder
22. december 2004 - 14:30 #11
Hej Stoney

DET VIRKE..... tak skal du have.
Avatar billede jesnymark Nybegynder
22. december 2004 - 14:31 #12
Øhhh, hvordan giver man dig point??, det er kun Martin der står der...
Jeg vil nok fordele mellem din og martin.
Avatar billede stoney Nybegynder
22. december 2004 - 14:33 #13
:-)

Stoney
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