Entwickler-Ecke

Entwicklung für mobile Endgeräte - TReactangle übernimmt weder Bilder noch Farben


Xearox - Fr 23.05.14 00:10
Titel: TReactangle übernimmt weder Bilder noch Farben
Hallo,

da bisher noch nichts hier gepostet wurde, hoffe ich, das hier der ein oder andere doch weiß, wo hier das Problem liegt.

Und zwar wollte ich eine relativ kleine TestApp für Android herstellen, allerdings scheitert es bereits am Anfang :/

Ich möchte, bei Programm aufruf, ein Bestimmtes Bild anzeigen lassen.

Die mache ich mit

Delphi-Quelltext
1:
Rectangle1.Fill.Bitmap.Bitmap.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'bild.jpg');                    


Das klappt allerdings nicht so, als Win32 Anwendungs funktioniert es allerdings.

Darauf hin habe ich mal im Netz geschaut und habe heraus gefunden, das man zum einen mit dem Bereitstellungs-Manager arbeiten sollte, wenn man Bilder während der Laufzeit hinzufügen möchte. Dies habe ich auch getan und das Bild dort eingefügt. Außerdem soll man

Delphi-Quelltext
1:
assets\internal\                    

vor den Dateinamen machen.

So, allerdings klappt das auch nicht. Also hab ich das mit dem Bild erstmal sein gelassen und stattdessen

Delphi-Quelltext
1:
Rectangle1.Fill.Color := TAlphaColors.Blueviolet;                    


genommen, doch auch das funktioniert nicht. Und das nun weder in Win32 noch auf Android.

Und jetzt weiß ich nicht mehr weiter.
Wenn ich z.b. auf der Form direkt die Komponente in eine andere Farbe ändere, wird auch das nicht direkt übernommen, da passiert ehrlich gesagt, garnichts.

Wenn ich das ganze nun statt Mobile FireMonkey direkt als VCL Anwendung mache, funktioniert alles Einwandfrei, soweit ich es bisher getestet hab.

Hier der Gesamte Code


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects,
  FMX.StdCtrls;

type
  TForm1 = class(TForm)
    GeldLable: TLabel;
    GeldAnzahl: TLabel;
    Timer1: TTimer;
    Rectangle1: TRectangle;
    Rectangle2: TRectangle;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Rectangle1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    procedure BildDarstellen;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
var
  GeldGesamt, GeldProClick : double;
{$R *.fmx}

procedure TForm1.BildDarstellen;
begin
  Rectangle1.Width := 150;
  Rectangle1.Height := 150;
  Rectangle1.Stroke.Kind := TBrushKind.bkSolid;
  Rectangle1.Fill.Color := TAlphaColors.Blueviolet;
  //Rectangle1.Fill.Bitmap.Bitmap.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'bild.jpg'); Erstmal weglassen, kann nicht geladen werden
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BildDarstellen;
  Geldgesamt := 0;
  GeldProClick := 1;
end;

procedure TForm1.Rectangle1Click(Sender: TObject);
begin
  GeldGesamt := GeldProClick + GeldGesamt;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  GeldAnzahl.Text := Floattostr(GeldGesamt);
end;

end.


Weiß hier jemand evtl. wieso das in einer VCL Anwendung funktioniert allerdings nicht in einer Mobile FireMonkey Anwendung?

Danke =)

Edit: Das mit den Farben konnte ich bereits Lösen, allerdings funktioniert das mit dem Bild immer noch nicht.


Xearox - Sa 31.05.14 15:33

Moin moin,

jetzt nach über einer Woche, habe ich es leider immer noch nicht hinbekommen, ein Bild auf einem Android Gerät dazustellen.

Ich weiß einfach nicht, woran es liegt. Ich habe das Bild in Diverse Ordner kopiert, allerdings hat alles nichts gebracht.

Hat hier wirklich keine eine Idee?


Xion - Sa 31.05.14 15:47

Guck mal da:
http://qc.embarcadero.com/wc/qcmain.aspx/qcmain.aspx?d=118050

Scheinbar klappt das mit ParamStr(0) unter Android nicht.


cbspeda - So 13.07.14 16:20

Bei Android oder IOS werden oder dürfen die Dateien nichts Programmverzeichnis:

IN Android oder IOS oder Windows:

System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'datei.jpg');

Man muss die Datein über die Bereitstellungsfunktion mit Transferieren dann läuft dies ohne Probleme auch unter Windows