* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Maggio 01, 2024, 08:39:41 am

Inserisci il nome utente, la password e la durata della sessione.

253 Visitatori, 0 Utenti

Autore Topic: Trinomio Eclipse-Pascal-Android  (Letto 8543 volte)

Microges2000

  • Global Moderator
  • Full Member
  • *****
  • Post: 130
  • Karma: +1/-0
    • Power of Nature
Trinomio Eclipse-Pascal-Android
« il: Dicembre 18, 2012, 09:10:27 am »
Ciao ragazzi...

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
Il possibile lo abbiamo già fatto, l'impossibile lo stiamo facendo, per i miracoli ci stiamo attrezzando

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2871
  • Karma: +20/-4
Re:Trinomio Eclipse-Pascal-Android
« Risposta #1 il: Dicembre 18, 2012, 09:40:10 am »
io non ci ho ancora messo mano ma penso proprio che a breve dovrò provare anche questa soluzione
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Trinomio Eclipse-Pascal-Android
« Risposta #2 il: Dicembre 18, 2012, 10:47:58 am »
diteci di piu' al riguardo  :)
Ieri è passato, domani è futuro, oggi è un dono...

Microges2000

  • Global Moderator
  • Full Member
  • *****
  • Post: 130
  • Karma: +1/-0
    • Power of Nature
Re:Trinomio Eclipse-Pascal-Android
« Risposta #3 il: Dicembre 18, 2012, 11:42:11 am »
diteci di piu' al riguardo  :)
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

Codice: [Seleziona]
package com.example.test;

import com.prove.Test.R;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@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;
}

}

verrà trasformato in

Codice: [Seleziona]
unit MainActivity;

{$mode delphi}
{$modeswitch unicodestrings}
{$namespace primo.Test}

interface

uses androidr14, Rjava;

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.

Più semplice per noi no?  ;)
Il possibile lo abbiamo già fatto, l'impossibile lo stiamo facendo, per i miracoli ci stiamo attrezzando

Microges2000

  • Global Moderator
  • Full Member
  • *****
  • Post: 130
  • Karma: +1/-0
    • Power of Nature
Re:Trinomio Eclipse-Pascal-Android
« Risposta #4 il: Dicembre 20, 2012, 02:06:04 pm »
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: [Seleziona]
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;

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

Codice: [Seleziona]
InnerOnClickListener = interface external 'android.view' name 'OnClickListener' 
  procedure onClick(para1: AVView); overload;
end;

qundi ho dichiarato, all'interno dell'oggetto MainActivity un tipo derivante da InneronClickListner

Codice: [Seleziona]
TClicca = class (AVView.InnerOnClickListener)
public
    Procedure onClick(para1: AVView); Overload;
end;

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.

Il codice completo è
Codice: [Seleziona]
unit MainActivity;

{$mode delphi}
{$modeswitch unicodestrings}
{$namespace com.example.test}

interface

uses androidr14, Rjava;

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);
 
  Bottone := AWButton(findViewById(R.id.button1));
  Bottone.Settext(R.Strings.id_rilasciato);
   
  Bottone.setOnClickListener(Clicca);
end;

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.

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


Il possibile lo abbiamo già fatto, l'impossibile lo stiamo facendo, per i miracoli ci stiamo attrezzando

acquario73

  • Newbie
  • *
  • Post: 1
  • Karma: +0/-0
Re:Trinomio Eclipse-Pascal-Android
« Risposta #5 il: Dicembre 29, 2012, 09:01:29 am »
Wow! Ho trovato un altro avventore del famigerato compilatore pascal/java!!
L'ho scoperto anch'io da due giorni, e da due giorni mi sta facendo diventare matto.
Anch'io ho seguito tutto l'iter per la compilazione fpc-jvm, anch'io ho effettuato qualche modifica al pba, ecc
Premetto: ho scaricato i sorgenti dell'ultimo fpc e seguito le indicazioni per compilare l'ultimo grido del compilatore java, la build non va a buon fine, non compila nemmeno System.
Allora ho utilizzato i precompilati (da http://wiki.freepascal.org/FPC_JVM). Sembra funzionare qualcosa ma poi alla prima definizione di interfaccia (OnClickListener) per catturare un click va in crash.
Per trovare qualcosa che funziona son dovuto ricorrere al progetto di un tizio cinese (Pascal4Android) che ha impacchettato il tutto in una minimale ma funzionale IDE. Utilizza una versione di ppcjvm.exe precedente che però pare funzionare molto meglio.
La definizione corretta di un evento è questa se vuoi agganciarla all'attività corrente:
Codice: [Seleziona]
  MyActivity = class(AAActivity, AVView.InnerOnClickListener)
    ...
    procedure onClick(V: AVView); 
    ...
  end;

  Button1.setOnClickListener(Self);

oppure più in generale...

Codice: [Seleziona]
  TMyObject = class(JLObject, AVView.InnerOnClickListener)
    ...
    procedure onClick(V: AVView); 
    ...
  end;

  Button1.setOnClickListener(TMyObject.Create);

Microges2000

  • Global Moderator
  • Full Member
  • *****
  • Post: 130
  • Karma: +1/-0
    • Power of Nature
Re:Trinomio Eclipse-Pascal-Android
« Risposta #6 il: Gennaio 03, 2013, 02:36:56 pm »
Ho capito cosa non funzionava.

Il problema era tra le opzioni di compilazione impostate nel precompilatore pascal pba.pas

Se date un'occhiata al codice noterete (circa alla fine) che tra le varie opzioni che passa a freepascal c'e' -XP basta cambiarlo in -Xd, ricompilare pba.pas  e tutto funziona a meraviglia.... ora comincio a divertirmi ;)

Il possibile lo abbiamo già fatto, l'impossibile lo stiamo facendo, per i miracoli ci stiamo attrezzando

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2871
  • Karma: +20/-4
Re:Trinomio Eclipse-Pascal-Android
« Risposta #7 il: Gennaio 03, 2013, 02:54:39 pm »
la cosa si fa veramente interessante :)

che ne diresti di postare un articolo sull'installazione ed un progettino da compilare?

Edit:
tienici comunque aggiornati
Imagination is more important than knowledge (A.Einstein)

Microges2000

  • Global Moderator
  • Full Member
  • *****
  • Post: 130
  • Karma: +1/-0
    • Power of Nature
Re:Trinomio Eclipse-Pascal-Android
« Risposta #8 il: Gennaio 03, 2013, 04:43:40 pm »
Vabbè si puo fare ma sto' ancora studiando. Comunque è da tenere d'occhio anche pascal4android (vedi mio post in questa sezione) che stà evolvendo molto bene... manca ancora l'UI Designer e poi un bel l'help e sarà perfetto
Il possibile lo abbiamo già fatto, l'impossibile lo stiamo facendo, per i miracoli ci stiamo attrezzando

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18784
  • Topic in totale: 2236
  • Online Today: 465
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 253
Total: 253

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.