Newsgroup: it.comp.lang.delphi
Titolo: D2007 Classe  con funzione

l'intenzione e' di avere una funzione che restituisce il valore
di un form (es: Attivo fino a quando non viene chiamato
l'evento Onlose)
quindi ho un Form che al click su un Button crea un altro Form
al click sul TButton devo scrivere tramite ScriviStato...
quindi il Form1 contiene uses Unit3
il problema e' che non vedo ScriviStatoe LeggiStato
(neppure se le metto public anzhiche private)
unit3.Oggetto1. (nell'elenco dei metodi non
compaiono ScriviStato,LeggiStato)
se scrivo
procedure TForm1.Button1Click(Sender: TObject);
var sStato:String;
begin
  sStato:=Unit3.Oggetto1.StatoForm;
ottengo Propertu StatoForm inaccessible here
mi sfugge qualcosa .., Maurizio
^^^^^^
unit Unit3;
interface
uses
  Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;
type
  Oggetto1 = class
  private
    Stato:String;
    function LeggiStato:String;
    procedure ScriviStato(Stato:String);
  Published
    property StatoForm : String read LeggiStato write ScriviStato;
  end;
implementation
function Oggetto1.LeggiStato:String;
begin
  //
end;
procedure Oggetto1.ScriviStato(Stato:String);
begin
  //
end;
end.

l'evento Onlose)
Fammi indovinare: ti hanno passato del codice Delphi da modificare, ma
tu non sei un programmatore Delphi e stai cercando di capire, bene o
male, come funzionano le cose :-)
Ti mancano un po' di basi: con "type TMyClass = class", in Delphi, si
definisce una classe, un tipo e non un'istanza di una classe.
Non puoi accedere ad un oggetto (i.e. istanza di una classe) se prima
non lo allochi:
var
  Oggetto1: TMyClass;
...
Oggetto1 := TMyClass.Create;
try
  .... tuo codice...
finally
  Oggetto1.Free;
end;
Delphi (purtroppo) consente solo istanze dinamiche delle classi, al
contrario di altri linguaggi (un po' più seri, a dire il vero).
Ricordati che i nomi delle classi, in Delphi, hanno per convenzione
una T iniziale.
L'errore che riscontri è dovuto al fatto che stai cercando di accedere
a un membro statico di una classe. A quel livello sono visibili solo
le "class functions", che non sono legate a una particolare istanza
della classe.
Ad esempio, potresti avere;
type
  TCalculator = class
  public
    class function Sum(A, B: Integer): Integer;
  end;
...
class function Sum(A, B: Integer): Integer;
begin
  Result := A+B;
end;
Essendo Sum() una class function, puoi scrivere:
C := TCalculator.Sum(A, B);
Ma Sum() non può accedere a nulla che sia membro interno di
TCalculator, in quanto significherebbe avere un'istanza di una classe
a disposizione (il Self, per intenderci), cosa ovviamente non
possibile per un metodo statico.
Ti consiglio di informarti, in giro, sulle basi di Delphi.
 

 male, come funzionano le cose :-)
Mmm... io pensavo inizialmente che si trattasse di un altro caso, ma non 
voglio sbilanciarmi... :-)
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

voglio sbilanciarmi... :-)
Intendi dire il troll? hmmm... è talmente codardo che non posterebbe
da un luogo non anonimo ;-)


e' quello che faro' , qualche testo valido ? Cantu' a parte , mi pare sia
trattata in modo approfondito.
stesso per un articolo visto su 
programmazione.it
 relativo a Delphi.
un paio di giorni e tornero' a chiedere ancora lumi :)
per il troll nessun interesse a diventarlo
ciao Maurizio

 un paio di giorni e tornero' a chiedere ancora lumi :)
Cerca però di informarti e sperimentare sulle basi. E' un consiglio che ti
dò, perché non tutti accettano con piacere domande su argomenti davvero
basilari e rischieresti di venire ignorato.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Che palle sto diplomato è proprio da flebo...
--- posted by geoForum on 
http://www.delphiedintorni.it

Non ascoltarli, sono diplomati sbruffoni che conoscono qualcosa di 
Delphi e devono dimostrare che un ingegnere aereodinamico è un pirla..
Non sanno nemmeno cosa significhi avere una mentalità scientifica.
Li becchi subito dai modi arroganti e scortesi ma non hanno mai fatto o 
finito l'università.
Vogliono avere ragione a tutti i costi senza porre gli obiettivi del 
lavoro al primo posto e danno dei Troll a tutti.
Magari si erano iscritti a ingegneria e hanno dato solo geometria....
FECCIA !


Andrea LaForgia e Marco Breveglieri sono due assistenti portaborse di 
Marco Cantů...
Devi vedere come leccavano alla presentazione di D2007. 
Ovviamente Marco Cantů č di ben altra pasta e i due marmocchi non se li 
guarda neanche...
Ha un po' di simpatia e tenerezza e basta !
