Visualizzazione dei risultati da 1 a 5 su 5

Discussione: mousedown delphi

  1. #1

    mousedown delphi

    ciao a tutti!!! volevi chiedervi se esiste un modo per "allegare" direttamente una form e il panel su essa posizionato... mi spiego meglio... ho su una form alcuni pannelli e vorrei che vengano eseguite alcune istruzioni usando l'evento Tform1.formmousedown(...) , ma quando chiamo questa procedura i parametri x e y appartenenti al metodo sono completamente riferiti alla form e non ho trovato il modo di far riferire ai due parametri anche le proprietà left e height dei pannelli... posto il codice cosi capite forse meglio...

    codice:
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
         if (Button= mbLeft) then
         begin
              if ((x>=50) and (x<=100) and (y>=50) and (y<=100)) then
                   modificapannello(panel1, parola[i], label1);
         end;
    end;
    in questa form sono presenti appunto alcuni pannelli che sono sopra essa... (io ho fatto l esempio con un pannello che è quello nell if)... tra le coordinate 50 e 100 sia della x sia della y c è un pannello, e quando ci clicco sopra viene chiamata la procedura... (che non ho postato per non complicare e incasinare la cosa... siccome quello non è il problema...) ma questa non funziona come dovrebbe perche se clicco sul pannello nell 'esecuzione la procedura non viene chiamata proprio perche nelle coordinate non è la form ma il pannello e basta... in sintesi: C è UN MODO PER FAR INTERAGIRE LA FORM CON UN PANNELLO COME SE QUEST ULTIMO APPARTENESSE COMPLETAMENTE E FOSSE INTEGRATO A QUESTA??... O DEVO CHIAMARE PER OGNI PANNELLO LA SUA PROCEDURA MOUSEDOWN??

  2. #2
    Non mi è tanto chiara la problematica, dunque forse dico una cavolata, ma non ti basta definire un evento mousedown comune a tutti i pannelli e poi con i parametri chiamare il mouse down della form, qualcosa del tipo:

    codice:
    // evento mouse down della form
    procedure TForm26.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if (Button= mbLeft) then
      begin
        showmessage(sender.ClassName);
      end;
    end;
    
    // evento mousedown comune a tutti i pannelli
    procedure TForm26.panelmousedown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      FormMouseDown(sender, button,shift,x,y);
    end;
    una volta dentro il FormMouseDown in base a chi ti chiama riesci a distinguere se sei il panel A,B o C oppure la form

    N.

  3. #3
    prima di tutto grazie mille della risposta e devo dirti che è anche un ottima idea, pero il problema non è proprio questo provo a spiegartelo meglio...( ho iniziato da poco a programmare in delphi e quindi sono ancora un po disorientato..)
    io ho alcuni pannelli posizionati su una form e vorrei che quando tengo premuto il il tasto sinistro del mouse su un pannello, si eseguissero alcune istruzioni... e avrei voluto chiamare un solo metodo( Tform.mousedown(...) ) e mettere un if che dipendeva dalle coordinate del punto che il mouse indicava... nel senso che :
    if x>50 and x<100 and y>50 and y<100 then //che sarebbero le coordinate del pannello
    ...

    pero è come se il pannello sovrastasse la form e quindi le coordinate si riferiscono interamente alla form e il pannello non viene neanche considerato... si puo fare in modo che alla form appartengano anche i pannello cosicché chiamo una sola procedura... e non ognuna er i pannelli...

    grazie ancora

  4. #4
    Non so se ravanando con qualche funzione RTTI riesci a capire la posizione del panel sopra la form, tecnicamente credo di si, ma al momento non saprei come.
    Cmq invece che una sola procedura dove cerchi le coordinate x-y ne hai 2 e cerchi la classe non credo che vada male anche perchè il flusso del programma è abbastanza logico, il mousedown sul panel richiama il mousedown sul form il quale in base al sender capisce se è un panel (e quale) oppure la form

  5. #5
    sisi infatti come ho detto la ritengo un ottima idea!!!... RTTI??? cos è?? comunqe adesso provo a usare il metodo che mi hai proposto te ... e poi vedo se ce la faccio!!
    ti ringrazio enormemente!!! ciao!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.