PDA

Visualizza la versione completa : [DELPHI] Disabilitare tasto destro del mouse per zoom


vicky
20-12-2005, 17:37
:ciauz:
Ho già scritto tutto nel titolo: siccome eseguo su un'immagine uno zoom cliccandoci sopra con il tasto ds del mouse volevo chiedere come è possibile disabilitare questa funzionalità del mouse (mi serve per limitare lo zoom ). Grazie!

alka
20-12-2005, 17:40
Immagino che lo zoom sia implementato facendo materialmente "qualcosa" (da leggere come "eseguire codice") quando viene premuto il pulsante del mouse, quindi basterebbe semplicemente evitare di farlo quando non vi sono le condizioni. :stordita:

vicky
20-12-2005, 17:48
Si, ma le persone che usano il mouse non sanno che io non voglio che ingrandiscano troppo l'immagine (o la rimpiccioliscano troppo) quindi è necessario che io, dopo il raggiungimento di una certa dimensione dell'immagine trovi il modo di bloccarne l'ulteriore ingrandimento o riduzione. Forse vuoi dirmi che dovrei agire su qualche altro oggetto o controllo?

vicky
20-12-2005, 18:00
Scrivere in questo forum è per me un'ottima fonte di ispirazione! Ho risolto il problema così (altro che disabilitare il mouse):


procedure TForm.ImageMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
var
zoom:double;
begin
Image.AutoSize := False;
Image.ScaleMode := smStretch;
case Button of
mbLeft:
begin
if (image.width >1600) then
zoom:=1
else zoom:=0.8;
Image.Width := Trunc(Image.Width / zoom);
Image.Height := Trunc(Image.Height / zoom);

end;
mbRight:
begin
if (image.width <1200) then
zoom:=1
else zoom:=0.8;
Image.Width := Trunc(Image.Width * zoom);
Image.Height := Trunc(Image.Height * zoom);
end;
end;
end;

:ciauz:

alka
20-12-2005, 18:41
Quello che volevo dire è che se tu hai una procedura di evento simile alla seguente:


procedure MouseClick;
begin
// Esegui operazione di zoom
end;

e desideri non gestirlo più, è facile scrivere:


procedure MouseClick;
begin
if EPossibileEffettuareLoZoom then
begin
// Esegui operazione di zoom
end;
end;

Si tratta solamente di definire l'espressione di controllo che determina se, a fronte del clic, è necessario procedere con lo zoom oppure no.

Ciao! :ciauz:

Loading