AGB  ·  Datenschutz  ·  Impressum  







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

FireMonkey Sammelthread

Ein Thema von mquadrat · begonnen am 1. Sep 2011 · letzter Beitrag vom 27. Jul 2013
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: FireMonkey Sammelthread

  Alt 9. Jan 2013, 17:37
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) ?
Screenshots muss ich erst machen, anbei aber der Link zu den Anleitungen
In der Anleitung sind einige Screenshots drinnen...

Screenshots meiner bereits fertigen FM2 Programme in den Manuals

SG6 Manual 'Draft'
SCD Usermanual

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:
(******************************************************************************)
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;
(******************************************************************************)
Ja, SI und CI sind schon erklärt


Grüße,

Peter
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.

Geändert von bytecook ( 9. Jan 2013 um 18:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FireMonkey Sammelthread

  Alt 24. Jan 2013, 22:58
Wie war das? Eine Ableitung erbt alle Eigenschaften seines jeweiligen Vorgängers???

Mein Projekt hat mich zur Verzweiflung gebracht. Die zweite spezialisierte Ableitung eines Edits (die erste implementiert ein Databinding und die zweite soll in ein Gitter eingepasst werden) wurde einfach nicht angezeigt. !!!???
Zwar wurden Eingaben in die Datenschicht geschickt aber auf dem Bildschirm nichts angezeigt.

Dann habe ich das Problem immer weiter vereinfacht und festgestellt, dass der zweiten Ableitung keine StyleRessource mehr zugewiesen ist.

Delphi-Quellcode:
procedure TCustomEdit.ApplyStyle;
var
  T: TFmxObject;
begin
  inherited ApplyStyle;
  if FInputSupport then
    Cursor := crIBeam
  else
    Cursor := crDefault;
  T := FindStyleResource('content'); // <--- StyleRessource verwenden
  if Assigned(T) and (T is TControl) then
  begin
    FContent := TControl(T);
    FContent.OnPaint := DoContentPaint;
  end;
  T := FindStyleResource('selection');
  if Assigned(T) and (T is TBrushObject) then
  begin
    FSelectionFill.Assign(TBrushObject(T).Brush);
  end;
  { from style }
  T := FindStyleResource('foreground');
  // apply the font fill style only if the user hasn't changed the font fill anteriorly
  if (not FFontColorBeforeStyle) and Assigned(T) and (T is TBrushObject) then
    FFontColor := TBrushObject(T).Brush.Color;
  T := FindStyleResource('font');
  if (not FFontBeforeStyle) and Assigned(T) and Supports(T, IFontObject) and not Font.IsSizeStored then
    FFont.Assign((T as IFontObject).Font);
  { Container for store buttons}
  T := FindStyleResource('buttons');
  if Assigned(T) and (T is TControl) then
  begin
    FButtonsLayout := T as TControl;
    RealignButtonsContainer;
  end;

  // now we are sure that if the user changed the font fill before style application,
  // the correct information will be reflected; change the switches so that from now on
  // we have the normal flow of style application
  FStyleApplied := True;
  FFontBeforeStyle := False;
  FFontColorBeforeStyle := False;
end;

function TStyledControl.FindStyleResource(const AStyleLookup: string): TFmxObject;
begin
  Result := nil;
  if Assigned(FResourceLink) then // <-- ist bei TEdit und TEditA zugewiesen aber bei TEditB=NIL !!!???
    Result := FResourceLink.FindStyleResource(AStyleLookup);
  if Not Assigned(Result) then
    Result := inherited FindStyleResource(AStyleLookup);
end;
Anbei ein kleines Demoprojekt für XE3 und hier mal der Quelltext:
Delphi-Quellcode:
unit fRessourceTest;

interface

uses
  System.SysUtils, System.Types, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Edit;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Panel2: TPanel;
    Button3: TButton;
    Panel3: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
  System.UITypes;

type

  TEditA = class(TEdit)
  end;

  TEditB = class(TEditA)
  end;

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  TEdit.Create(Self).Parent := Panel1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TEditA.Create(Self).Parent := Panel2;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  TEditB.Create(Self).Parent := Panel3;
end;

end.

Hat jemand eine Erklärung?
Kann jemand helfen?
Wie kann ich die "originale" Style-Ressource zuordnen?

So langsam wird mir FMX wirklich suspekt, wobei ich zwischendurch auch schon ein paar nette Dinge realisieren konnte (und auf dem Weg weiter voran kommen wollte).

Zwischenfazit:
- LiveBindings sind Schrott
- Styles sind für den Komponentenbau unzweckmäßig (für Füllmuster u.ä. ok aber nicht für funktionelle Bestandteile)
- sonst ist das Konzept (Win-Unabhängigkeit und freie Scalierbarkeit) aber schon vielversprechend
Angehängte Grafiken
Dateityp: jpg RessourceTest.jpg (29,4 KB, 50x aufgerufen)
Angehängte Dateien
Dateityp: zip RessourceTest.zip (87,2 KB, 6x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FireMonkey Sammelthread

  Alt 26. Jan 2013, 15:55
Das Verhalten der Scrollbar ist ungünstig:
Wenn man in den Scrollbereich klickt wird der Positionszeiger beim MouseUp an die Klickposition gesetzt.

Besser wäre wenn die Scrollbar beim MouseDown "seitenweise" in Richtung und bis zur Klickposition springen würde (bzw. bis man loslässt).
So ist das ja auch in der VCL.

Alternativ sollte die Scrollbar wenigstens schon beim MouseDown zur Klickposition springen.


Die böse Stelle habe ich gefunden, aber nachträgliche Korrekturen sind vermutlich aufwändig (zumal die Funktionalität in ein Subcontrol verlagert ist), weshalb ich das erst mal aufschiebe.
(Mit einem schnellen Update ist wohl nicht zu rechnen ;-( )

Delphi-Quellcode:
procedure TCustomTrack.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
var
  LValue: single;
begin
  LValue := Value;
  inherited MouseUp(Button, Shift, X, Y);
  DoMouseUp(Button, Shift, X, Y, LValue); // <---
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FireMonkey Sammelthread

  Alt 15. Feb 2013, 22:51
Gibt es eine Möglichkeit, den Fortschritt einer Progressbar ohne Application.ProcessMessages darzustellen???
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: FireMonkey Sammelthread

  Alt 15. Feb 2013, 23:14
Wenn es nicht um FM ginge...
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FireMonkey Sammelthread

  Alt 17. Mär 2013, 02:49
FMX hat noch Licht und Schatten, der beigefügte Schatten fällt aber unter Licht! (Ja, ja, es ist spät. )

Mit dem Hinzufügen eines einzigen Effektes kann man die GUI optisch ganz schön aufpeppen, was m.E. die Übersichtlichkeit extrem verbessert.
Die Umsetzung in den Bildern ergab sich eher zufällig, ich finde das aber richtig genial so.

Natürlich darf man die Effekte nicht übertreiben aber sie können ein sehr nützliches Mittel sein.

Gefällt Euch das auch?
Angehängte Grafiken
Dateityp: jpg SchattenOhne.jpg (202,5 KB, 72x aufgerufen)
Dateityp: jpg SchattenMit.jpg (161,7 KB, 65x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.558 Beiträge
 
Delphi 12 Athens
 
#7

AW: FireMonkey Sammelthread

  Alt 17. Mär 2013, 11:59
Also mir gefällt es auch.

Man wird für die Komponenten selber zwar nur wenige der Effekte verwenden können, ich denke die meisten der Effekte sind eher für Bildbearbeitung gedacht.

Aber die Effekte, die man für Komponenten nutzen kann, wie etwa der TShadoweffekt, sind nützlich. Was z.B. auch geht, ist der TGlowEffekt, mit Trigger MouseOver, dann kann man z.B. hier in bestimmten Situationen den Fokus der Eingabeelemente (z.B. TEdit) noch stärker betonen.

Die ganzen Effekte kann man sich in dem mitgelieferten FireMonkey-Demo "ShaderFilters" einmal ansehen, ziemlich beeindruckend finde ich.
Harry Stahl
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FireMonkey Sammelthread

  Alt 17. Mär 2013, 12:09
Ja, leider ist die genannte Demo eher auf Grafiken bezogen.
Ich finde interessanter, eine GUI mit sinnvollen Effekten zu optimieren.
Wer Beispiele hat, immer her damit
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Merkur

Registriert seit: 17. Feb 2004
7 Beiträge
 
Delphi 2010 Professional
 
#9

AW: FireMonkey Sammelthread

  Alt 18. Mär 2013, 12:27
Hallo,

ich habe mir im Dezember noch XE3 Prof. zum Aktionspreis zugelegt. Hintergrund u.A.: ich muss ein Programm auf einem Windows Tablet laufen lassen. Mit Umstieg auf Windows 8 (Windows 7 ist meiner Meinung nach nicht wirklich auf Tablets nutzbar) muss ich eben diese App bzw. die Oberfläche für das Tablet portieren.
Das wollte ich zum Anlass nehmen, Delphi XE3 mit Firemonkey und Metro UI erstmalig zu nutzen.

Was mir zunächst aufgefallen ist: Man muss sich wohl mit Styles beschäftigen, die irgendwie nicht intuitiv zu erfassen sind.
Aber mit Padding kommt man schon ziemlich weit...

Allerdings stehe ich nun vor einem Problem, für das ich dringend Hilfe benötige:
Ich muss Daten in ein TEdit eingeben und habe keine Tastatur auf dem Tablet zur Verfügung. Delphi 2010 hatte ja noch ein Touch-Keyboard das funktionierte. Firemonkey wohl nicht.
Demos habe ich bislang keine gefunden, aber es sollte doch wohl eine Lösung geben. Ich bin sicher nicht der Erste mit der Abforderung etwas in ein TEdit einzugeben.

Danke schon einmal im Voraus.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#10

AW: FireMonkey Sammelthread

  Alt 18. Mär 2013, 12:32
Das wollte ich zum Anlass nehmen, Delphi XE3 mit Firemonkey und Metro UI erstmalig zu nutzen.
Vielleicht habe ich da etwas verpasst - aber Metro UI (mittlerweile heisst es "Modern UI") wird von Delphi nicht unterstützt.
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 11:25 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