Allora ho provato ad usare il plug-in freepascal per eclipse come spiegato qui http://www.tuicool.com/articles/vqQfq2 ma, dato che uso l'ultima versione di Eclipse ho dovuto modificare leggermente il parser pba.exe in maniera da generare i file esatti (lo potete trovare qui www.biotecnicainstruments.com/File/Temp/(Pascal builder).zip è sia in sorgente che precompilato). Comunque la generazione del file va bene ma non capisco come accedere ai controlli inseriti con il designer (sia che siano bottoni che altro). Qualcuno ci vuole provare e, magari, darmi qualche dritta? Credo che questo binomio (Eclipse-FreePascal) sia il migliore fin'ora
nomorelogic:
io non ci ho ancora messo mano ma penso proprio che a breve dovrò provare anche questa soluzione
xinyiman:
diteci di piu' al riguardo :)
Microges2000:
--- Citazione da: xinyiman - Dicembre 18, 2012, 10:47:58 am ---diteci di piu' al riguardo :)
--- Termina citazione --- Praticamente è un plug-in per Eclipse che permette di scrivere codice pascal invece del Java classico. Se lo attivi (e lo metti in testa ai compilatori) verdrai che sarà presente una directory supplementare nel progetto chiamata pas e contenente i sorgenti pascal del progetto stesso. Praticamente il sorgente classico Java
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; }
type MainActivity = class(AAActivity) procedure onCreate(savedInstanceState: AOBundle); override; function onCreateOptionsMenu(menu: AVMenu): jboolean; override; end;
implementation
procedure MainActivity.onCreate(savedInstanceState: AOBundle); begin inherited onCreate(savedInstanceState); setContentView(R.layout.me); end;
function MainActivity.onCreateOptionsMenu(menu: AVMenu): jboolean; begin getMenuInflater().inflate(R.menu.me, menu); Result := True; end;
end.
--- Termina codice ---
Più semplice per noi no? ;)
Microges2000:
Allora sto' andando avanti negli "studi" (cavolo senza documentazione è un casino). Comunque sono arrivato a poter adoperare i componenti messi sulla form principale (pardon attività principale in android)
Praticamente ho messo un bottone sulla form principale chiamato button1 ed ho inserito 3 stringhe (sempre in maniera visuale) chiamate:
titolo_main -> 'Questo è il titolo della finestra principale' id_premuto -> 'Bottone premuto' id_rilasciato -> 'Bottone rilasciato'
vabbè comunque onCreate dell'attività principale diventa
--- Codice: --- procedure MainActivity.onCreate(savedInstanceState: AOBundle); begin inherited onCreate(savedInstanceState); setContentView(R.layout.activity_main);
// Metto il titolo alla finestra SetTitle(R.Strings.titolo_main);
// Prendo il bottone chiamato button1 Bottone := AWButton(findViewById(R.id.button1));
// Cambio il caption del bottone Bottone.Settext(R.Strings.id_rilasciato); end; --- Termina codice ---
dove Button1 è una variabile della classe MainActivity di tipo AWButton (qui' aiuta il file android14.inc).
Quindi riesco tranquillamente a modificare i vari controlli
Ora ho la necessità di risponere all'evento onclick e qui' iniziano i casini.... sulla documentazione android una risposta si ha generando una procedura chiamata onClick sull'evento OnClickListener, girovagando sul file android14.inc ho trovato questa dichiarazione inglobata nella classe AVView che è la classe genitore di tutti i controlli visuali
qundi ho dichiarato, all'interno dell'oggetto MainActivity un tipo derivante da InneronClickListner
--- Codice: --- TClicca = class (AVView.InnerOnClickListener) public Procedure onClick(para1: AVView); Overload; end;
--- Termina codice ---
ho scritto la procedura OnClick in maniera da cambiare il testo al bottone, hoi dichiarato una variabile di tipo TClicca ed ho settato 'OnClickListener del bottone al mio ogggetto ma non succede nulla sul click.
type MainActivity = class(AAActivity) Type TClicca = class (AVView.InnerOnClickListener) public Procedure onClick(para1: AVView); Overload; end; Var Clicca : TClicca; Bottone : AWButton; public procedure onCreate(savedInstanceState: AOBundle); Override; function onCreateOptionsMenu(menu: AVMenu): boolean; Override; end;
implementation
procedure MainActivity.onCreate(savedInstanceState: AOBundle); begin inherited onCreate(savedInstanceState); setContentView(R.layout.activity_main); SetTitle(R.Strings.titolo_main);
function MainActivity.onCreateOptionsMenu(menu: AVMenu): boolean; begin getMenuInflater().inflate(R.menu.activity_main, menu); Result := True; end;
procedure MainActivity.TClicca.OnClick(para1: AVView); Begin Bottone.SetText(R.Strings.id_premuto); End;
end.
--- Termina codice ---
sinceramente non capisco dove possa essere l'errore dato che la compilazione va a buon fine e l'esecuzione non si incasina con errori vari.
Quanche anima pia mi puo' aiutare? Dai su che se si risolve questo il trinomio Eclipse-FreePascal-Android è praticamente fatto e saremmo i primi a scrivere qualcosa a riguardo