Newsgroup: it.comp.lang.delphi
Titolo: Prove con D2005

>>  if e.Button = MouseButtons  then
   PictureBox1.DoDragDrop(PictureBox1.Image,DragDropEffects.Copy);
 Except
  exit;
 end;
end;
nel esempio c# la condizione era if (e.Buttons=MouseButtons.Left){....}
se io scrivo in D2005 lo stesso if non mi compila dicendomi:
Record, object or class type required
Cosa debbo fare??
--- posted by geoForum on 
http://www.delphiedintorni.it

Dopo ulteriori prove sono riuscito a farlo funzionare:
  if e.Button = System.Windows.Forms.MouseButtons.Left  then
Perchè devo scrivere cosi... boh mistero della fede .NET


 Perchè devo scrivere cosi... boh mistero della fede .NET
Forse perché è la stessa cosa scritta nel codice C# ?


Grazie... la domanda implicita è... che differenza c'è?


 Cosa debbo fare??
Credo che il problema sia dovuto ad un'ambiguità: sia la classe 
*Control* (da cui eredita il WinForm) sia il namespace 
*System.Windows.Forms* contengono l'identificatore /MouseButtons/ che 
identifica nel primo una proprietà, nel secondo un tipo enumerativo.
Suppongo che il problema sia dovuto al fatto che C# è probabilmente più 
tollerante consentendoti di comparare il valore di /e.Button/ con la 
costante statica /Left/ della proprietà /Buttons/, mentre Delphi 
richiede espressamente l'indicazione di un tipo enumerativo seguito dal 
punto e dal valore del tipo stesso che si desidera selezionare (oppure 
solo il nome della costante associata al valore desiderato del tipo 
enumerativo, che in questo caso però genera ugualmente confusione con la 
proprietà /Left/ del form).
Per rimuovere l'ambiguità, quindi, devi usare il namespace davanti al 
tipo /MouseButtons/ in modo che Delphi non tenti di fare riferimento 
alla proprietà omonima del form generando quindi l'errore in fase di 
compilazione.
Prendi tutto come si dice "con le molle" in quanto non ho verificato a 
fondo il problema, ma mi sono imbattuto in qualcosa di simile in passato.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

Credo di aver capito avendo una piccola conoscenza di c# e di java 
inizio a capirci qualcosa.
Comunque non vedo l'ora che mi arrivi il libro di Marco Cantů perchč 
sono ancora in fase di buio.


 sono ancora in fase di buio.
Io lo sto leggendo in questi giorni. C'è un paragrafo particolarmente 
ampio e interessante dedicato alle caratteristiche duali del linguaggio 
(Win32 e .NET).
Secondo la mia opinione, il percorso ideale per chi vuole utilizzare 
.NET con Delphi è procurarsi un libro dedicato all'architettura della 
piattaforma che la descriva in modo dettagliato, a prescindere dal 
linguaggio di programmazione; poi, siccome esempi di codice sono 
presenti anche in questo tipo di documentazione, si dovrebbe riprodurre 
in linguaggio Delphi.NET l'elemento che viene descritto nel paragrafo 
che si sta affrontando, prendendo spunto dalla sintassi C# e 
VB.NET
 
eventualmente stampata, ma codificando comunque in Delphi.
Laddove si affrontino elementi dell'architettura che sono "nuovi" in 
Delphi, è possibile dare una sbirciata nella Guida in linea per vedere 
come Borland ha deciso di supportare tali elementi nel linguaggio 
Delphi.NET, mentre per tutto ciò che era ed è concettualmente già 
presente nel linguaggio sin da Win32 può essere codificato allo stesso modo.
