AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey Workarounds

Ein Thema von greenmile · begonnen am 13. Jul 2012 · letzter Beitrag vom 6. Apr 2014
 
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#1

Firemonkey Workarounds

  Alt 13. Jul 2012, 10:10
Hallo,

da ich während meiner Entwicklung unter Firemonkey über einige Bugs gestolpert bin, die man teilweise recht einfach umgehend kann, möchte ich hier immer mal wieder einige Workarounds reinschreiben. Vielleicht klinkt sich ja der eine oder andere an. Und vielleicht geschieht ja ein Wunder und jemand von Embar liest mit ... Betrifft alles XE2, aktuell Hotfix 4

- OpenDialog ist unter Windows nicht Modal

Delphi-Quellcode:
Uses {$IFDEF MSWINDOWS}Winapi.Windows, FMX.Platform.Win,{$ENDIF}

{$IFDEF MSWINDOWS} Try EnableWindow(FmxHandleToHWND(Self.Handle), False); Except End; {$ENDIF}
Try
  OpenDialog.Execute;
  ....
Finally
  {$IFDEF MSWINDOWS}
  SetActiveWindow(FmxHandleToHWND(Self.Handle));
  EnableWindow(FmxHandleToHWND(Self.Handle), True);
  {$ENDIF}
End;
- TTreeview: "Accept" in OnDragOver wird ignoriert
FMX.TreeView.pas und FMX.Defines.inc ins Projektverzeichnis kopieren, damit das Projekt immer die lokale verwendet. FMX.TreeView.pas öffnen und zu TCustomTreeView.DragOver springen. Dort den Anfang wie folgt auswechseln:
Delphi-Quellcode:
procedure TCustomTreeView.DragOver(const Data: TDragObject; const Point: TPointF;
  var Accept: Boolean);
var
  Obj: TTreeViewItem;
begin
  // Änderungen
  // inherited;
  inherited DragOver(Data, Point, Accept);
  if assigned(OnDragOver) then exit;
  // ...
- TListbox: "Accept" in OnDragOver wird ignoriert, D&D funktioniert nicht
FMX.Listbox.pas und FMX.Defines.inc ins Projektverzeichnis kopieren, damit das Projekt immer die lokale verwendet. FMX.Listbox.pas öffnen und zu TCustomListBox.DragOver springen. Dort den Anfang wie folgt auswechseln:
Delphi-Quellcode:
procedure TCustomListBox.DragOver(const Data: TDragObject; const Point: TPointF; var Accept: Boolean);
var
  Obj: TListBoxItem;
begin
  // Änderungen
  // inherited;
  inherited DragOver(Data, Point, Accept);
  if assigned(OnDragOver) then exit;
  // ...
- Open-/Savedialog: Der Dialog wird unter Mac OS nicht geöffnet, Execute liefert false zurück
Unter MacOS muss der Filter leer sein. Den Dialog daher wie folgt öffnen
Delphi-Quellcode:
{$IFDEF MACOS} Try OpenDlg.Filter := ''; Except End; {$ENDIF} // Geht unter Mac nicht
OpenDlg.Execute;
...
- TDropTarget: "Accept" wird in OnDragOver nicht akzeptiert
FMX.ExtCtrls und FMX.Defines.inc ins Projektverzeichnis kopieren, damit das Projekt immer die lokale verwendet. FMX.ExtCtrls öffnen und zu TDropTarget.DragOver springen. Dort den Anfang wie folgt auswechseln:
Delphi-Quellcode:
procedure TDropTarget.DragOver(const Data: TDragObject; const Point: TPointF;
  var Accept: Boolean);
begin
  // Änderungen
  // inherited;
  inherited DragOver(Data, Point, Accept);
  // ...
- THeader: Werden HeaderItems hinzugefügt, ist die .FMX Datei anschließend defekt
Beim laden der Datei kam es zum Meldung "Ungültige Eigenschaft Headeritem1.Width, außerdem sind plötzlich andere Komponenten auf der Form verschwunden.
Einzig mir bekannter Workaround: THeaderItem dynamisch erzeugen:
Delphi-Quellcode:
TMainForm = class(TForm)
...
privat
    HeaderItem1: THeaderItem;
    HeaderItem2: THeaderItem;
    ...
public
...
In OnCreate dann:
Delphi-Quellcode:
    HeaderItem1 := THeaderItem.Create(nil);
    HeaderItem1.Parent := Header1;
    HeaderItem1.Width := 50;
    HeaderItem1.Text :='HeaderItem1';
    Header1.AddObject(HeaderItem1);

    HeaderItem2 := THeaderItem.Create(nil);
    HeaderItem2.Parent := Header1;
    HeaderItem2.Width := 50;
    HeaderItem2.Text :='HeaderItem2';
    Header1.AddObject(HeaderItem1);

Geändert von fkerber ( 1. Apr 2014 um 22:10 Uhr) Grund: Code-Formatierung ergänzt.
  Mit Zitat antworten Zitat
 


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 08:01 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