Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   [FMX] UITextView zur Laufzeit erstellen (https://www.delphipraxis.net/163730-%5Bfmx%5D-uitextview-zur-laufzeit-erstellen.html)

Darlo 13. Okt 2011 15:31

[FMX] UITextView zur Laufzeit erstellen
 
Hallo,

ich bin schon den ganzen Tag am versuchen ein UITextfield zur Laufzeit zu erstellen.

Die einzigen Zeilen die in meinen Augen richtig sind hänge ich mal an (viel ist es nicht gerade...)

Code:
unit Unit1
{$modeswitch objectivec1}
Code:
var
  textfield1: UITextfield;
begin
   textfield1 := UITextfield.alloc.init;
   textfield1.setDelegate(?);
   //hier fehlt jetzt alles

   textfield1.release;
end;
Vielleicht kann ja einer von Euch mir weiterhelfen.

Gruß
Darlo

Union 13. Okt 2011 15:37

AW: [FMX] UITextView zur Laufzeit erstellen
 
Warum benutzt Du dafür nicht FMX (wie im Titel) ;) Das ist ja jetzt reines Objective-C.

Das init braucht ein Rectangle, und delegate sollte schon mal self sein.

Darlo 13. Okt 2011 15:45

AW: [FMX] UITextView zur Laufzeit erstellen
 
weil edit.keyboardtype nicht funktioniert.
Also dachte ich mir schreibe ich mir doch was, dass alle meine TEdits unter iOS durch entsprechende UITextfields ersetzt.

Union 13. Okt 2011 15:47

AW: [FMX] UITextView zur Laufzeit erstellen
 
Liegen die nicht darunter? So dass Du dann z.b. keyBoardType := UIKeyboardTypeEmailAddress zuweisen kannst?

Darlo 13. Okt 2011 15:50

AW: [FMX] UITextView zur Laufzeit erstellen
 
genau textfield.keyboardType := UIKeyboardTypeEmailAddress;

Nur dafür muss es halt ein UITextField sein und kein TEdit. Bekomme es aber nicht hin ein UITextField zur Laufzeit zu erstellen :wall:

Union 13. Okt 2011 16:04

AW: [FMX] UITextView zur Laufzeit erstellen
 
Ich denke der richtige Weg wäre herauszufinden, wie man sich in der FMX Klassenhierarchie an das Cocoaobjekt ranhangelt. Denn es muss ja da sein. Mit dem XCode-Debugger komme ich da auch nicht wirklich weiter :(

Union 14. Okt 2011 18:23

AW: [FMX] UITextView zur Laufzeit erstellen
 
So nach 24 Stunden habe ich doch einige Erkenntnisse gewonnen.

Die internen Objekte der jewiligen OS werden von FMI (unvollständig) emuliert. Es gibt also kein UITextView dessen keyboardtype man setzen könnte.

Durch das Abarbeiten der internen Viewstruktur kann man Zugriff auf das Keyboard-Fenster erhalten. Das wird ja im DoOnEnter angezeigt. Leider nach dem Aufruf des OnEnter-Events. Bedeutet, wenn man es im Event finden will, dann schlägt das fehl weil noch nicht aktiviert.

Toll, dann eben mit einem Timer oder Thread der auf das Keyboardfenster wartet. Das geht, man erhält dann einen View "UIKeyboardAutomatic". Aber was mache ich dann damit? Und wenn es überhaupt möglich sein sollte dieses zur Laufzeit zu verändern, sieht das dann nicht häßlich aus und flimmert?

Ich stelle mir eher vor, dass theoretisch beim Start alle benötigten Keyboardtypfenster erzeugt und dann bei Bedarf aktiviert werden. Nur eben leider nicht im FMI Framework. Es wird immer nur genau eines aktiviert - wo das erzeugt wird konnte ich bisher nicht ermitteln.

Passendes, frustrierendes Zitat
Zitat:

Zitat von Phil Hess
While cross-platform UI frameworks can provide a way to use Cocoa indirectly, they often bury Cocoa beneath thick layers of intermediate code where bugs, odd behavior, performance problems, code bloat, and non-standard look and feel can be introduced. When you use Cocoa directly with Objective C or Objective Pascal, nothing comes between your code and the Cocoa framework. Typically this results in smaller, better-looking programs that are easier to maintain and more pleasing to your users.


Darlo 14. Okt 2011 23:18

AW: [FMX] UITextView zur Laufzeit erstellen
 
Wäre es denn dann nicht das einfachste sich einen Code zu schreiben der unter iOS alle tedits in uitextviews umwandelt. Dann hätte man einmal Arbeit und die wichtigen Funktionen unter iOS. Oder verstehe ich das falsch?

Union 14. Okt 2011 23:58

AW: [FMX] UITextView zur Laufzeit erstellen
 
Klar, das würde gehen - aber dann braucht man keinen FM mehr. Meine FM Programme lassen sich unter Windows zwar kompilieren, aber da die eigentliche iOS Funktionalität zwischen {$ifdef} versteckt werden muss, kann ich sie nicht mal mehr ansatzweise mit der IDE testen. Dazu noch die Macken des Designers... Dann verkommt die Delphi-IDE zum Resource-Workshop. Keine Syntaxhilfe, keine Codevervollständigung ausser bei den Dingen die man sowieso aus dem ff kennt.

Ich (als bekennender Mac-Hasser) arbeite inwzischen lieber mit XCode (und FP, wenn ich nicht hunderte eckiger Klammern tippen will). Was sind dann noch die Vorteile von FM? Aja, die "Plattformunabhängigkeit" und das 3D. Also wenn ich ein Projekt explizit für Ixxx erstelle, was nützt mir Multiplatform - es sei denn, Android wird mal unterstützt. D.h. dann noch mehr {$ifdef}. Der einzige Vorteil der wirklich übrig bleibt ist dann 3D. Das allerdings ist auf den momentanen Zielgeräten (ausser dem 4S) nicht wirklich angenehm schnell, Antialiasing wird nicht unterstützt, die Fonts werden schrecklich gerendert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz