![]() |
AW: Firemonkey Workarounds
Zitat:
Würde aber dennoch gerne verstehen, welche Vorteile Du mit dem Factory-Ansatz siehst. Wird das dann nicht wieder mehr Schreiberei, oder wie ungefähr müsste man sich die Implementation vorstellen? |
AW: Firemonkey Workarounds
Zitat:
Du vermutest ja die TMS-Komponenten. Aber kann das sein, wenn ich in der Beispielform ja gar keine solchen Komponenten drin habe? Kann das alleinige Vorhanden sein des TMS-Packages auf dem PC so etwas verursachen? |
AW: Firemonkey Workarounds
Versuch erst mal das Beispiel in einem neuen Verzeichnis zu entpacken und dort zu reproduzieren - so habe ich das ja auch gemacht. Dann kannst Du immer noch ein "frisches" XE5 aufsetzen mit allen Updates und Hotfixes.
|
AW: Firemonkey Workarounds
Zitat:
|
AW: Firemonkey Workarounds
Zitat:
Stell dir einmal dieses Interface vor
Delphi-Quellcode:
dann kannst du das Erzeugen der Items in eigenen Routinen auslagern, ohne dort wissen zu müssen auf welche konkrete Instanz sich das auswirkt.
IHeaderBuilder = interface
function AddItem( const ATitle : string ) : IHeaderBuilder; overload; function AddItem( const ATitle : string; AWidth : Integer ) : IHeaderBuilder; overload; function AddItem( const ATitle : string; AWidth : Integer; AClickHandler : TNotifyEvent ) : IHeaderBuilder; overload; // ... kann beliebig fortgesetzt werden end;
Delphi-Quellcode:
Und wie wir sehen ist es nicht ersichtlich ob das jetzt für FMX oder VCL sein soll ... eben, das hängt einfach nur von der Implementierung ab. Die kann man jetzt gemütlich für
procedure TForm1.PrepareCustomersHeader( AHeader : IHeaderBuilder );
begin AHeader .AddItem( 'Name' ) .AddItem( 'Phone', 40 ) .AddItem( 'email', 80, SendMailOnClick ); end;
Delphi-Quellcode:
,
TListView
Delphi-Quellcode:
oder welche Listenkomponente auch immer implementieren und trotzdem kann der Anwendungs-Code gleich bleiben.
TStringGrid
|
AW: Firemonkey Workarounds
Ah ja, wirklich interessant!
Allerdings doch deutlich mehr Arbeit, als eben nur mal diesen kleinen WorkAround zu schreiben. Insofern bleibe ich doch erst mal bei meiner Lösung... [edit: die ich ja jetzt auch nicht mehr brauche, da ich letztlich doch das Problem aufklären konnte und jetzt wieder ganz normal die Komponente verwenden kann, siehe Eintrag #19 unten] |
AW: Firemonkey Workarounds
Zu dem Problem mit der beschädigten FMX-Datei:
Habe XE5 frisch installiert. Danach FMX-TMS-Komponenten, kein Problem, alles geht. Einige Sachen, die ich installiert habe, kann man nur einmal installieren, kann ich also nicht ein zweites Mal in die andere Umgebung installieren. Wie findet man das jetzt nur raus, wo das dran liegen könnte? |
AW: Firemonkey Workarounds
Du könntest Versuchen, Delphi mit Delphi zu debuggen (Mit Prozess verbinden). Also zuerst den Debuggee starten, im Taskmanager die Prozeß-ID merken und dann Delphi nochmals als Debugger starten (aus der Kommandozeile mit Parameter /np) und mit der BDS.exe mit der zuvor gemerkten ID verbinden. Dann in die erste Instanz wechseln und Fehler verursachen, in die zweite Instanz umschalten und schauen, ob Du was siehst (z.B. BPL-Namen).
Mist, merke gerade das geht mit XE nicht mehr, ausser man startet bei mit /np. |
AW: Firemonkey Workarounds
Und wieder mal ein Mysterium gelöst...
Union, Deine Vermutung, es lag an den TMS-Komponenten, stimmte!! Allerdings lag es nicht an den TMS-FMX-Komponenten, sondern an den TMS-VCL-Komponenten. Als ich die defekte FMX speicherte und wieder lud, fiel mir auf, dass plötzlich folgende Einträge in der Form.pas-Datei drin waren: GDIPCustomItem, GDIPTextItem, GDIPSectionItem, GDIPImageSectionItem, GDIPHeaderItem; Die gehören zu den TMS-VCL Komponenten und in der Unit GDIPHeaderItem ist auch eine Klasse "THeaderItem" drin. So kam es zu einem Konflikt. Wie das letztlich möglich sein kann, ist mir zwar ein Rätsel, aber gut. Nachdem ich also die Packages der TMS-VCL-Komponenten deaktiviert hatte, konnte ich die Datei ganz normal laden. So, jetzt muss ich das noch EMBA und TMS-Software erzählen... (na toll :pale:) Wie war das eigentlich noch mal: Kann man Delphi nicht so einstellen, dass für bestimmte Projekte nur bestimmte Packages geladen werden? Dann könnte man das Problem vielleicht umgehen? |
AW: Firemonkey Workarounds
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 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