![]() |
AW: FireMonkey Sammelthread
Deshalb kann so ein Mischprogramm nur auf Windows funktionieren!
|
AW: FireMonkey Sammelthread
Zitat:
Aber mal ehrlich, wieso jetzt jeder meint, man würd FireMonkey nur nutzen, um Platform unabhängig zu sein, erschließt sich mir nicht. Nur, weil es das neue UI Framework für cross platform ist, heißt ja nicht, dass man nicht weiter nur für Windows entwickeln darf. |
AW: FireMonkey Sammelthread
Zitat:
|
AW: FireMonkey Sammelthread
Zitat:
Viele VCL_Anwendungen laufen mit Wine/Crossover auf Linux/OSX, je mehr Hacks aber dazukommen, umso größer die Chance, dass es nciht mehr geht. (Was natürlich keine Ausrede sein soll, keine native OSX-App zu bauen. Aber das ist eine ganz andere Geschichte...) |
AW: FireMonkey Sammelthread
Zitat:
Von Zwischenlösungen für einen Mischbetrieb oder sogar Tricks um FireMonkey Elemente auf ein VCL-Formular zu bringen, halte ich persönlich gar nichts. Deshalb habe ich das auch nie probiert und daher zu dem Thema auch nichts geschrieben. ;-) |
AW: FireMonkey Sammelthread
Zitat:
Außerdem zahlen die Kunden bestimmt für die Zeit um den gleichen Stand auf ner anderen Oberfläche hinzubekommen, was erstmal null Mehrwert darstellt. |
AW: FireMonkey Sammelthread
Zitat:
Zitat:
|
AW: FireMonkey Sammelthread
Zitat:
Da kann ich absolut nix mehr hinzufügen ;-) |
AW: FireMonkey Sammelthread
Zitat:
Was mir da an Komponenten fehlt, das entwickele ich eben oder schaue, ob ich so etwas bald irgendwo bekommen kann. Aber dann lasse ich diese Funktionalität eben aus der FireMonkey Version bis dahin heraus oder löse das anders. Aber ich setze mich jetzt bestimmt nicht wochenlang hin um eine sinnvolle Mischlösung zu basteln. Die Zeit kann ich auch gleich für eine komplette FireMonkey-Lösung verwenden, auch wenn die dann eben nicht ganz so schnell da sein mag... 3rd-Party brauche ich persönlich glücklicherweise so gut wie gar nicht, und wenn, dann habe ich ausschließlich Lösungen im Quelltext, die ich dementsprechend selbst anpassen kann. Lösungen ohne Quelltext würde ich niemals kaufen und nutzen. Ein Beispiel war die TVirtualTreeView, die war eine der ersten, die ich für 64-Bit angepasst hatte, weil ich die relativ häufig nutze. |
AW: FireMonkey Sammelthread
Wie sieht es eigentlich mit der Unterstützung von SOAP aus? Ich kann das zwar wunderbar in eine Firemonkey IOS-App einbauen und unter Windows funzt das auch. Sobald man dies nach xCode schiebt ist es jedoch nicht kompilierbar. IdHttp funktioniert dementsprechend auch nicht.
Hat jemand schon erfolgreich einen Webservice an eine iOS-App angebunden? Gruß |
AW: FireMonkey Sammelthread
Ist nicht IP*Works als separater Download für XE2 Kunden dabei:
![]() ?? Grß, Marc Zitat:
|
AW: FireMonkey Sammelthread
Zitat:
Ein weiteres offenes Problem ist für mich die Persistenz (XML, SQLLite etc.), wenn man - wie ich gerade - die Freiheit hat zu wählen und sich bei einem Neuprojekt nicht die Cross-Plattform-Möglichkeit von vornherein verbauen will. Hier können ja dann durchaus auch Übergangslösungen helfen. |
AW: FireMonkey Sammelthread
Zitat:
|
AW: FireMonkey Sammelthread
Zitat:
ich habe leider den Beitrag erst jetzt gesehen, deswegen nachträglich noch mein Senf dazu: Wir haben auch das "Lifetime-All-In-One-Wonder" Paket von KSDEV im September gekauft, vier Monate später war die Firma geschlossen. Das Paket war wegen der Skalierung nahezu perfekt für uns. (Anm: Wir entwickeln seit 2007 industrielle Touchapplikationen und waren grade dabei, eine skalierbare Oberfläche abgeleitet von graphics32.org Komponenten aufzubauen, fanden dann aber KSDEV). Wir sahen, dass die Firma seit mindestens 2002 aktiv war, der Programmierer und Inhaber Eugene machte insgesamt einen guten Job, und half zumeist auch schnell mit Bugfixes aus, wenn wir User im Forum auf einen Bug hinwiesen. So waren wir der Ansicht, dass wir dieser doch länger im Business befindlichen Firma die Komponenten mit Source abkaufen können. "Leider" wurde die Firma EMB (zurecht) empfohlen. Was wir nicht gut finden ist, dass Eugene eben 2 Monate vor dem Verkauf dann die "Lifetime Upgrades" angeboten hat, anschließend wochenlang nicht erreichbar war und wir in der ersten Jännerwoche von der IP Übernahme seitens EMB gelesen haben. EMB hat lediglich das Intellectual Property übernommen und Eugene, den KSDEV Inhaber angestellt. Dadurch gibt es keinen direkten Rechtsnachfolger, im Schadensfalle gibt es lediglich die Möglichkeit, sich an den Exinhaber via Zivilrechtsklage zu wenden. Die Firma sitzt oder saß in Russland. Das ist doch nicht nett, oder? Dass es verschämt im Frühjahr eine Andeutung im Forum gab, einen Ausgleich für die KSDEV User via "Gratisprodukt" (etwa Delphi Pro oder so) zu schaffen, und dann den Mantel des Schweigens darüber auszubreiten, das KSDEV-Forum zu locken, war auch nicht gerade die feine englische Art. Ich versuche seit März eine Stellungnahme seitens EMB zu erhalten, bin in Kontakt mit der Niederlassung Maidenhead in UK. Nun das Positive an der Sache: Wir haben dann wochenlang ab Januar intern intensives Bugfixing in VGScene betrieben, Komponenten zerlegt und wieder aufgebaut. So haben wir viel gelernt. Das ist ja auch was wert. VGScene haben wir mittlerweile verworfen, den Designer nutzen wir schon unter VGScene nicht, wir haben fast alle unsere Controls nun von TControl anstatt von TStyleControl abgeleitet, Brushes, Colors, Fonts, etc. lassen sich damit ja ähnlich wie früher unter der VCL verwenden, das Grundgerüst der Skalierengine reicht für unsere Zwecke völlig. Letztendlich ist FMX nun ganz passabel integriert, das Produkt muss halt noch etwas reifen, erinnert ein wenig an TP for Windows nach Delphi 1.0, mal sehen was die nächsten Bugfixes bringen, wünschenswert aus unserer Sicht wäre eine korrekte Refreshroutine (statt .Repaint muss man zwischendurch Application.HandleMessages aufrufen...) Gruß, Peter |
AW: FireMonkey Sammelthread
Zitat:
Ja, IP* muss man sich extra von der "Meine registrierten Downloads" herunterladen... |
AW: FireMonkey Sammelthread
Mich würde mal interessieren, ob ihr VCL oder FMX für reine Windows-Anwendungsentwicklung bevorzugt.
Ist die VCL überhaupt noch zukunftsfähig / fliegt sie nicht in naher Zukunft raus? |
AW: FireMonkey Sammelthread
Zitat:
Überlege mal, wieviele Millionen von zu pflegenden Altprojekte es da draußen gibt. |
AW: FireMonkey Sammelthread
Stimmt. Man sägt nicht den Ast ab, auf dem man sitzt.
|
AW: FireMonkey Sammelthread
FMX an sich ist eine gute Sache. Es besteht aber noch viel Nachholbedarf dass diese Bibliothek ein Ersatz für die VCL werden kann
|
AW: FireMonkey Sammelthread
Es gibt momentan noch so gut wie keine Komponenten für FMX und "nativ" sieht die Sache auch nicht aus.
Zitat:
|
AW: FireMonkey Sammelthread
Es gibt bestimmt die Möglichkeit mit einem Skin ein "nativ" wirkendes Aussehen nachzuahmen, aber "nativ" wird es dennoch nicht
und wenn der User sich dann noch einen eigenen Style im Windows eingerichtet hat, dann war's das sowieso. |
AW: FireMonkey Sammelthread
So wird es ja gelöst. Allerdings wird auch der Unterschiede zwischen den verschiedenen Controls der verschiedenen Betriebssysteme etwas angeglichen. Deshalb sieht es nur bedingt "nativ" aus.
|
AW: FireMonkey Sammelthread
Nativ oder nicht nativ. Das hatten wir schon mal. Da kann man sich drüber streiten.
Ich kann gerne auf Nativ verzichten, wenn ich auf ein paar optische Effekte zurückgreifen kann, die mir Nativ nicht bieten kann. Damit wirkt die Applikation etwas frischer. Es gibt einige Applikationen, die nicht auf den Windows-Styles aufsetzen. (Lightroom etc.) Kenne keinen, der sich beschwert hat. Kann nur immer wieder sagen. Daumen hoch für Firemonkey. Der richtige Ansatz. Müssten nur noch ein paar Bugs entfernt werden, damit es wirklich produktiv eingesetzt werden kann. |
AW: FireMonkey Sammelthread
Welche Einschätzung habt Ihr inzwischen zu FM(2)?
Wer hat schon real damit gearbeitet und für welche Projekte und Plattformen? |
AW: FireMonkey Sammelthread
Ich hab schon real damit gearbeitet. Einen Tetris clone für Windows und iOS und noch ein paar kleinere Apps. Wir wollten damit eine 3D-Visualisierung und BYOD Apps für unsere Logistiksuite erstellen, sind aber auf so viele Probleme, Fehler und Begrenzungen gestossen, dass FM in die Tonne wanderte und VCL + GLScene eingesetzt wird.
|
AW: FireMonkey Sammelthread
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
wir haben hier auch einige Prototypen in Firemonkey entwickelt. Neben diversen kleineren Spielen (z.B. einem ![]() Der zweite Screenshot zeigt einen weiteren Prototypen (Test-OSD-Engine). Das ganze ist auch in Punkto Geschwindigkeit nicht wirklich zu gebrauchen. Die gleiche Engine werkelt übrigens in unserer OEM Version vom DVBViewer direkt unter DirectX und produziert da keine messbare Last. Christian |
AW: FireMonkey Sammelthread
Das gilt für FireMonkey von XE2 oder für das neue von XE3? Denn die Geschwindigkeit ist ja bei XE3 um Größenordnungen besser...
Gerade dein Beispiel mit einer ListBox erinnert mich an XE2, denn da gibt es unter XE3 diese Probleme nicht mehr. |
AW: FireMonkey Sammelthread
Wir werden den Teufel tun und nochmal Zeit verbraten nachdem die Probleme hundertfach in QC eingegeben waren und sich ein Jahr lang nichts getan hat.
|
AW: FireMonkey Sammelthread
Wir haben ebenfalls einige Projekte realisiert und sind mit FM1 schnell an die Grenzen unter MacOS gestoßen. Es war schlichtweg nicht möglich, eine halbwegs akzeptable Geschwindigkeit (gemessen an einem aktuellen MacBook) zu erreichen. Die Bugs waren einfach nur katastrophal, mehr kann man dazu nicht sagen; es war/ist weniger als eine Alpha Version. Und wir haben uns blutige Nasen beim Kunden geholt!
Mit FM2 wurde das besser: Die Geschwindigkeit wurde akzeptabel, die Bugs weniger und sogar Drag&Drop funktionierte unter Mac. Man bedenke, Mac ist ein System, auf dem sehr oft mit D&D gearbeitet wird und eine Software ohne D&D ist quasi ein No-Go. In FM2 sind aber immer noch einige Hauer drin. Wieso es keine Hint's gibt ist mir ein Rätsel, die Anchors funktionieren in der Praxis nicht wirklich sauber, LiveBindings braucht kein Mensch (funktionieren eh nicht), die Menügeschichte (TMainMenu? MenuBar? Systemmenu irgendwas?) total blödsinnig und die Styles sind nicht durchdacht. Ich muss z.B. für ein Listview den Style verändern, allerdings darf ich ihn anschließend nicht mehr wechseln, sonst sind auch meine Listview Einträge mit weg. Wer hat sich sowas bitte das ausgedacht? Die Liste der FM Dritthersteller ist übersichtlich, eigentlich befindet sich nur TMS auf der Liste. Die FM Komponenten von denen sind zwar nett, aber Schnickschnack. Wir brauchen wirklich coole Komponenten, nicht nur neue tolle Buttons. Mehr gibt es aber nicht. Nach anfänglicher Euphorie gibt es kleinere Projekte, aber größeres werden wir nicht realisieren, dafür ist es einfach zu Buggy. Da sich mit XE3 der Status vielleicht zwischen Alpha und Beta befindet, ist es mir einfach zu heikel, darauf zu setzen. Zumal iOS aus der ersten FM Version wieder rausgeflogen ist, also wird demnächst wieder ein iOS kommen und wird dann sicherlich als die Wiedergeburt gefeiert; zu einem ordentlichen Preis. Dass Android immer noch nicht drin ist ... Nun ja, peinlich würde ich sagen. Alles in allem: Ich hatte wirklich große Hoffnung in XE/XE2/XE3 und dem Wechseln zu Embar gesteckt, aber das Ergebnis ist enttäuschend. Und das wird sich mit Sicherheit auch nicht in den nächsten Monaten, 1-2 Jahren ändern! |
AW: FireMonkey Sammelthread
Bei der Ankündigung von XE2 wurde ich auch hellhörig ob der potentiellen Unterstützung von iOS und MacOS. :-D
Aufgrund dieser für Delphi völlig neuen Welt wollte ich aber noch abwarten, wie sich die Lage entwickelt. :shock: Wie sich inzwischen rausgestellt hat und vielfach beschrieben wurde, leider zurecht. :pale: So gerne ich in Richtung Apple OS gehen würde, so gefährlich (und sogar fahrlässig) wäre das zumindest noch zur Zeit mit FireMonkey. :? Ich neige inzwischen deutlich zu RemObjects Oxygene und der bald neu erscheinenden Unterstützung in Form von "Nougat". :P Bin sehr gespannt wie sich das anfühlen wird... Zudem gibts da derzeit ein Einführungsangebot: 499$ für alle drei Oxygene Plattformen (.net, Java/Android und eben bald iOS/MacOS). Scheint mir zumindest Stand heute der bessere Weg zu sein. |
AW: FireMonkey Sammelthread
Ich will man temporär eine Statusbar einblenden (nicht meckern, es ist eine Spielerei) und ein Label für einen Zähler nutzen.
Die Aktualisierung des Formulars erfolgt erst nach der Prozedur. Wie kann man zwisdchendurch refreshen? Ich dachte, FM wäre da direkter als die VCL...
Delphi-Quellcode:
procedure TFormPersonsGrid.Insert10000;
var I: Integer; DS: TSQLDataSet; Id: Integer; FieldName: string; begin beep; StatusBar.Visible := True; StatusBar.Repaint; // Self.Update; ??? for I := 0 to 1000 - 1 do begin LabelStatus.Text := Format('%d', [I]); BlaBlaBla; end; // StatusBar.Visible := False; beep; FillGridData; end; |
AW: FireMonkey Sammelthread
Ich spiele gerade mal an einem kleinen DataBinding-Framework herum.
Ich kann u.a. schon mit einer Checkbox Edit1.Enabled umschalten. Das funktioniert "funktional" auch wie erwartet, aber die Controls werden nicht neu gezeichnet bzw. erst wenn ich das Formular minimiere und wieder herstelle. Ein ausdrückliches Repaint hilft auch nicht weiter.
Delphi-Quellcode:
Weiß jemand auf Anhieb, wo es mangelt? Vermutlich muss noch das Formular den Auftrag erhalten, sich neu zu zeichnen.
procedure TssfCtrl.set_PropText(const Value: string);
begin if Assigned(BindObject) then begin SetPropValue(BindObject, PropName, Value); // if (BindObject is TControl) then // (BindObject as TControl).Repaint; // hilft nicht end; end; Invalidate - wie in der VCL - gibt es ja nicht. |
AW: FireMonkey Sammelthread
Ein etwas älteres aber interessantes Beispiel für eine GUI unter FMX:
![]() Attraktiv ist das schon und man sollte FMX nicht zu früh verteufeln... |
AW: FireMonkey Sammelthread
Haben unsere erste Software unter FM2 fertig, diese läuft ganz nett. Habe als "Styles - Lernvorlage" die FM TMS Komponenten genommen,
(Unter KSDEV/FM hab ich Styles von Hause aus vermieden) dann größtenteils unsere eigenen Komponenten mit dementsprechender Komplexität (Dynamische Subkomponenten, etc) entwickelt. Die Software läuft unter Windows 7 /8, wir verwenden seit 2007 Touchsysteme im industriellen Umfeld. Die Styles waren anfangs etwas tricky, neue zu erstellen ist mittlerweile sehr simpel.(Nehme dazu Notepad) Halte aber fest: Unsere XE3 Frontend Anwendungen laufen zur Zeit ausschließlich unter Windows 7/8, wechseln keine Styles. Auch nicht zu vergessen: Wer keine Styles mag, und schon Komponenten unter VCL entwickelt hat, der kann nach wie in der VCl Brushes/Farben, etc publishen, auch wenn das manchmal ein Stilbruch sein mag. Besser aber, als immer wieder die Ereignis-OnPaint Methoden für jedes Teil umschreiben zu müssen. Wenn man aber ein gewisses Maß an SI (CI für SW) erreichen will, dann ist es immer nett, Styles zu verwenden. Ich halte jedoch bei manchen Komponenten nicht dogmatisch an den Styles fest ... |
AW: FireMonkey Sammelthread
Kann man mal was sehen (Screenshots/ Demovideo o.ä.)?
Wie bringst Du Daten in die GUI? Bindung über FindStyleRessource (oder wie das hieß)? Für was steht: SI (CI für SW) ? |
AW: FireMonkey Sammelthread
CI = Corporate Identity
SI = Software Identity ;) |
AW: FireMonkey Sammelthread
Zitat:
In der Anleitung sind einige Screenshots drinnen... Screenshots meiner bereits fertigen FM2 Programme in den Manuals ![]() ![]() Zu den Daten: Habe meine eigene Stream Datenversorgung, Properties werden direkt beschickt und kommen ohnen Bindings aus. (Viele Komponenten werden erst zur Laufzeit bei Bedarf erzeugt) FindStyleResources ist innerhalb meiner Komponenten gekapselt und wird nur zum Subcomponent-Fetchen verwendet
Delphi-Quellcode:
Ja, SI und CI sind schon erklärt :)
(******************************************************************************)
function TSTBFMXBasePanel.GetRadioButton (Value : String) : TSTBFMXRadioButton; var fmxobj : TFMXObject; begin fmxobj := FindStyleResource(Value); if assigned(fmxobj) then if fmxobj is TSTBFMXRadioButton then Result := fmxobj as TSTBFMXRadioButton else Result := nil; end; (******************************************************************************) Grüße, Peter |
AW: FireMonkey Sammelthread
Zitat:
Oder verwende mal BeginUpdate/Dein Code/EndUpdate ... |
AW: FireMonkey Sammelthread
Ich habe noch ein wenig probiert und noch ein paar Punkte herausbekommen - aber keine Lösung gefunden.
Wenn ich aus meinem Framework heraus ein Control neu zeichnen lasse wird bis zum Formular hoch das entsprechende Rect als ungültig deklariert. Allerdings erreiche ich eine wirkliche Neuzeichnung des Formulars erst durch eine Größenänderung des Formulars. Im Formular reicht ein Timer, der ein Invalidate ausführt.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin Invalidate; end; In meinem Framework ermittle ich das korrekte Form, kann aber kein Neuzeichnen veranlassen. Mit EndUpdate und ReCreate klappt das aber das Formular wird kurz ausgeblendet und neu gezeichnet.
Delphi-Quellcode:
Das Zeichnen meines eigentlichen Controls kann ich an der Stelle sogar weg lassen (wird schon durch die Eigenschaftsänderung veranlasst).
procedure TssfCtrl.RefreshControl(Control: TControl);
var P: TFmxObject; begin if not Assigned(Control) then Exit; // Control.BeginUpdate; // Control.Repaint; // Control.EndUpdate; // Exit; P := Control.Parent; while Assigned(P.Parent) do P := P.Parent; if (P is TForm) then begin // public Methoden: // (P as TForm).Invalidate; // nix // // (P as TForm).BeginUpdate; // (P as TForm).EndUpdate; // flackert // // protected Methoden: // TCrackForm(P).Realign; // nix // TCrackForm(P).Resize; // nix // TCrackForm(P).Recreate; // flackert // TCrackForm(P).Updating; // nix // TCrackForm(P).Updated; // nix // TCrackForm(P).UpdateStyle; // nix // TCrackForm(P).ResizeHandle; // nix end; end; Offenbar kriegt der Mainthread wohl irgendwie von der Änderung nichts mit (obwohl ich gar nicht wirklich sagen kann in welchem Prozess die Änderung gezeichnet wird). In dem Zusammenhang stellt sich natürlich auch noch die Frage, wie das mit dem Repaint dann unter Mac bzw. auf den mobilen Plattformen laufen würde. Falls jemand mit meinem Baustellenprojekt (XE3) mal herumspielen will könnte ich das mal per Mail schicken. |
AW: FireMonkey Sammelthread
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm, ich komme an der Stelle nicht wirklich weiter. Sehr rätselhaft...
Also ich bastle ein Databinding-Framework (mal sehen, was draus wird, erst mal ist es auf jeden Fall interessant). Wenn ich aus einem Edit eine Änderung an die Datenschicht schicke wird die GUI danach über die Änderung informiert und die GUI-Controls werden veranlasst, sich mit den neuen Daten zu zeichnen. Das funktioniert auch - nur wird die Änderung nicht sichtbar bis ich die Formulargrößere ändere oder z.B. in einem Timer Invalidate für das Formular ausführe. Der richtige Wert liegt aber dann "nachweislich" ja in den Controls schon vor. Das komische: Wenn ich aus einem Timer heraus z.B. TimeToStr(Now) in die Datenschicht schicke (anstatt bei einer Texteingabe im Edit) werden die an das Feld gebundenen Controls immer korrekt gezeichnet (bzw. der entsprechende Bereich auf dem Formular). Die anderen Controls aber wiederum nicht. Wenn bei überschneidenen Controls das andere Control neu gezeichnet wird (z.B. wenn ein Edit focusiert wird), sieht man von dem nicht aktualisierten Control einige Pixel, die jetzt aktualisiert wurden. Also wurde die Änderung auf dem Screen noch nicht aktualisiert, im Puffer sind die aber schon vorhanden. Wenn jemand sich in dem Bereich mal beschäftigt, dann wäre ich für einen Tipp dankbar. (Kann auch gern den aktuellen Stand schicken.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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