AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Android: Werte-Übergabe von Form zu Form
Thema durchsuchen
Ansicht
Themen-Optionen

Android: Werte-Übergabe von Form zu Form

Ein Thema von Kai_in_HH · begonnen am 20. Apr 2024 · letzter Beitrag vom 24. Apr 2024
Antwort Antwort
Kai_in_HH

Registriert seit: 25. Jun 2008
Ort: Hamburg
59 Beiträge
 
Delphi 11 Alexandria
 
#1

Android: Werte-Übergabe von Form zu Form

  Alt 20. Apr 2024, 23:40
Hallo zusammen.

Lasst mich kurz ein wenig ausholen.
Seit TurboPascal für Windows (in der Tat war ich der erste Hotliner dafür bei Borland damals) programmiere ich immer wieder kleienre Tools und das ein oder andere größere Ding für Windows. Also TPWin, BorlandPascal, Delphi 1.....
Und ja, ich weiß, dass ich alt bin.
Aber nur "zum Spaß" und als Hobby.

Seit 2 Wochen ca versuche ich mich mit Delphi 11 CE an der geräteübergreifenden Entwicklung, also Windows und Android.

Ich möchte eine kleine App schreiben, die sowohl unter Windows als auch Android läuft und ein kleines Fahrtenbuch für meine Fahrradtouren enthält.
Warum? Weil ichs kann. Dachte ich zumindest.

Bisher Geschafft:
- Unter Windows läuft alles einwandfrei. Haken dran.
- DB mit SQLLite lesen und schreiben
- DB mit Android-apk verteilen
- DB-Daten in Grid auf Android darstellen.

Bisher gelernt:
Android ist doch brutal anders als Windows...
So gibt es z.B. kein ShowModal. Blöd.

Was geht nicht - nur Android
Ich habe ein Hauptfenster mit erwähnten Grid, welches die bisherigen Fahrten darstellt.

Klicke ich auf einen Button, öffne ich einen zweiten Form, in dem ich über ein paar Controls (DateEdit, Edit...) Werte eingebe. Wenn ich in diesem zweiten Form auf OK klicke, sollen die Werte an das Hauptfenster übergeben werden, wo sie in die DB geschrieben werden.
Tja, da es aber kein ShowModal gibt, sprich das Hauptfenster wartet nicht, kommen die Werte nicht an und es wird eine leere Zeile in die DB geschrieben.

Wie gesagt, unter Win kein Problem. Nur Android ärgert mich. Oder das Problem ist zwischen meinen Ohren.

Ich weiß nicht, wie viel ich schon auf docwiki, stackoverflow und auch hier gelesen habe...ich komme nicht drauf.

Also was zum Teufel muss ich machen, damit das, was ich will funktioniert.

Am allerliebsten wäre wir ein Beispielprojekt, aus dem ich abschreiben kann.
Als Sahnehäubchen den Form2 (der für die Eingabe) gerne als nicht-Fullscreen Popup.

Oh, und sorry, für den langen Text....
Kai
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#2

AW: Android: Werte-Übergabe von Form zu Form

  Alt 21. Apr 2024, 13:13
Hallo,

wie wäre's wenn du dem Hauptformular ein Event spendierst, welches
vom 2. Dialog aufgerufen werden kann (das du dem also übergibst).

Dieses ruft das 2. Formular auf, wenn es die Daten an das Hauptformular
übergeben soll. Das könnte nach Eingabe im 2. Formular sein oder
wenn es geschlossen wird usw...

Das Event bekommt die Daten als Parameter übergeben.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Kai_in_HH

Registriert seit: 25. Jun 2008
Ort: Hamburg
59 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Android: Werte-Übergabe von Form zu Form

  Alt 21. Apr 2024, 22:51
Moin TurboMagic,

vielen Dank, aber so ganz verstehe ich Deine Antwort (noch?) nicht.

An einen Event habe ich auch schon gedacht, aber - zu meiner Schande (oder Glück?) - noch nie mit eigenen Events gearbeitet.

Die Idee ist, wenn ichs richtig verstehe, dass mein Eingabeform (Form2 aus Unit2) den Event abfeuert und die eingegebenen Werte als Parameter mitgibt.

Wenn ich den Event in Unit1 definiere, damit Form1 in Unit1 das Feuerwerk auch erkennt, woher weiß denn dann Unit2 davon?
In Unit2 kann ich die Unit1 nicht mit Uses aufnehmen, da ich das ja schon andersrum fürs Form2.Show brauche.

Oder habe ich hier einen Denkfehler, sprich das Problem liegt zwischen meinen Ohren?

Ich komme halt noch aus der "alten Zeit" mit Win-API-Spaghetti-Code-Programmierung, wo man sogar die Fensterdefinitionen noch selber getippt hat. Inklusive aller anderen Angaben, wo ein Button wie groß im Fenster erscheinen soll...
Damals gabs noch keinen Visual Gui Designer....
Kai
  Mit Zitat antworten Zitat
Kai_in_HH

Registriert seit: 25. Jun 2008
Ort: Hamburg
59 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Android: Werte-Übergabe von Form zu Form

  Alt 21. Apr 2024, 23:53
Ok, ich habe jetzt mal eine kleine Demoanwendung mit minimalistischer Gui etc. gebaut, in der mit einem Event gearbeitet wird. Sourcen anbei.

Unter Windows geht es, außer dass der Eingabeform natürlich nicht modal ist und durch einen Klick auf das Hauptform überlagert werden kann. I don't care.

Aber für Android bekomme ich es noch nicht mal kompiliert. Allerdings kann ich mit den ganzen Java-Fehlermeldungen nichts anfangen....auch anbei.

Äh ja ... und nu?
Angehängte Dateien
Dateityp: zip 1st Device indipendend App.zip (91,3 KB, 6x aufgerufen)
Dateityp: txt Error-Messages.txt (15,3 KB, 6x aufgerufen)
Kai
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Android: Werte-Übergabe von Form zu Form

  Alt 22. Apr 2024, 09:43
Du hast das Projekt mit Delphi 10.4 erstellt und versuchst es nun mit Delphi 11 zu kompilieren? Schau mal in die Project1.dproj, suche die Zeilen mit EnabledSysJars und ersetze jeweils die ganze Zeile durch:
Code:
        <EnabledSysJars>activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>
Oder du erstellst ein neues Projekt und fügst die Units Unit1 und Unit2 wieder hinzu.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Kai_in_HH

Registriert seit: 25. Jun 2008
Ort: Hamburg
59 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Android: Werte-Übergabe von Form zu Form

  Alt 22. Apr 2024, 11:50
Moin Jaenicke.

Eigentlich nicht...aber für kleine Test-Tiere verwende ich als Speicherort immer das allgemeine Projektverzeichnis C:\Users\xyz\Documents\Embarcadero\Studio\Projekte . Vielleicht hat sich hier eine ältere Leiche reingeschmuggelt.

Wie auch immer: neues Projekt, Units hinzugefügt und ... verdammte Axt, jetzt gehts!

Vielen vielen Dank, jetzt kann ich die Erkenntnisse (auf die ich nie im Leben gekommen wäre) in meinem eigentlichen Projekt anwenden.
Die "richtigen" Tools und Apps bekommen nämlich immer ein eigenes Heim in meiner Private Cloud.

Herzliche Grüße aus Hamburg.

Kai
Kai
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#7

AW: Android: Werte-Übergabe von Form zu Form

  Alt 24. Apr 2024, 17:46
Hallo,

hier noch etwas Futter zum eigentlichen problem:

Delphi-Quellcode:
Unit Hauptform;

interface

uses
  InputForm;

type
  TMainForm = class(TForm)
  public
    procedure OnValuesChanged(Sender: TObject; const Value1: string; Value2: Integer);
    procedure CallForm2;
  end;

implementation

procedure TMainForm.CallForm2;
var
  InputForm: TInputForm;
begin
  InputForm := TInputForm.Create(self, OnValuesChanged);
  InputForm.Show;
end;

end.

Unit ImputForm;

interface

type
  TOnValuesChanged = procedure(Sender: TObject; const Value1: string; Value2: Integer) of object;

  TInputForm = class(TForm)
    Edit: TEdit;
    Trackbar: TTrackbar;
    procedure OnChanged(Sender: TObject);
  private
    FOnValuesChanged : TOnValuesChanged;
  public
    constructor Create(AOwner : TComponent; OnValuesChanged: TOnValuesChanged); reintroduce;
  end;

implementation

constructor TInputForm.Create(AOwner : TComponent; OnValuesChanged: TOnValuesChanged);
begin
  inherited Create(AOwner);

  FOnValuesChanged : OnValuesChanged;
end;

procedure TInputForm.OnChanged(Sender: TObject);
begin
  // Statt im OnChanged kann man das sicher auch im OnFormClose aufrufen
  if Assigned(FOnValuesChanged)
    FOnValuesChanged(self, Edit.Text, Trackbar.Value);
end;

end.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Kai_in_HH

Registriert seit: 25. Jun 2008
Ort: Hamburg
59 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Android: Werte-Übergabe von Form zu Form

  Alt 24. Apr 2024, 18:15
Moin TurboMagic,

Wie bereits geschrieben, habe ich es ja am 22. gelöst.
Nicht unähnlich zu Deinem Vorschlag, siehe die Zip-Datei in meinem Posting vom Sonntag.

Aber vielen Dank trotzdem!

Gruß
Kai
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz