AGB  ·  Datenschutz  ·  Impressum  







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

FMX - eigene Componente + Styling

Ein Thema von sintronic86 · begonnen am 7. Feb 2022 · letzter Beitrag vom 9. Feb 2022
Antwort Antwort
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

FMX - eigene Componente + Styling

  Alt 7. Feb 2022, 09:15
Hallo zusammen ,

und wieder stoße ich mit FMX an meine Grenzen. Ich habe eine neue Komponente in meinem Package erstellt
Code:
TMyCalendar = class(TCalendar)
Diese soll bereits selbst einen anderen Style verwenden, welchen ich auch selbst erstelle.

Ich habe zum designen ein neues Projekt erstellt, ein StyleBook draufgezogen und damit die Standard-Klasse TCalendar designt. Das funktioniert auch super! Diesen Style dann aber direkt der Komponente in ihrem Package zuzuweisen klappt einfach nicht.
Bisher hab ich mit folgendem Ansatz gearbeitet:
Code:
function TMyCalendar.GetStyleObject(const Clone: Boolean): TFmxObject;
const
  LStyle = 'MyCalendarStyle';
begin
  if (StyleLookup = '') then begin
    Result := TControl(TStyleStreaming.LoadFromResource(HInstance, LStyle, RT_RCDATA));
    Exit;
  end;
  Result := inherited GetStyleObject;
end;
Der größte Unterschied zur Variante mit TStyleBook ist, dass hier das Root-Element bereits der Style für die Klasse sein muss, während in der Stylebook-Variante das Root-Element "nur" eine Art Container ist, der alle Style-Elemente enthält.
Ich hoffe ihr versteht was ich meine!?
Nun basiert mein Style aber viel auf einem PNG, welches die einzelnen Design-Elemente enthält. Ich weiß aber beim besten Willen nicht, wie ich das in diesem Scenario einbauen soll!

Ich bin für jegliche Hilfsansätze dankbar!
Björn
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.822 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX - eigene Componente + Styling

  Alt 7. Feb 2022, 20:59
Wenn sich hier keiner meldet, evtl. Ray Konopka aus USA ausgraben. Der kennt sich gut mit VCL und FMX Komponentenentwicklung aus.
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: FMX - eigene Componente + Styling

  Alt 8. Feb 2022, 08:30
Ja, ich hab mir gerade erst folgendes Video von ihm angesehen:
https://www.youtube.com/watch?v=V8FsoQfuNnM

Aber auch hier werden nur die Grundlagen erzählt, die sich immer darauf beziehen, dass das Design innerhalb eines Objects definiert wird. Das Image, welches ich für die TStyleObjects benötige, wäre ja ein weiteres Objekt.
Björn
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX - eigene Componente + Styling

  Alt 8. Feb 2022, 15:29
Ich kenne mich mit Komponenten-Entwicklung leider nicht aus, daher kann ich Dir dazu oder dazu speziell in Bezug auf FMX nichts sagen.

Bei den Styles könnte ich mir aber vorstellen, dass Du so zum Ziel kommen solltest: Auf einer leeren Form legst Du ein Stylebook, da klickst Du einmal doppelt drauf. In dem Stildesigner hast Du dann nur die Auswahl "Default". Nun fängst Du an, Deinen Stil zu bauen, also beginnend mit einem TLayout und weiteren Elementen aus dem Toolpaletten-Breich "Styles" oder auch anderen normalen Elementen.

Die "Styled" objekte haben einen Bitmap-Link, da kannst Du z.B. festlegen, wie Deine Komponente im Normalzustand, gedrückt, Hot, usw. aussehen soll. Da klickst Du drauf und es öffnet sich der Bitmap-Links editor. Dort ist nun kein Bitmap enthalten. Hier fügst Du einfach Deine PNG-Datei hinzu und setzt die entsprechenden Zustände für die jeweiligen Style-Objekte. Bestätigst mit OK.

Wenn Dein Stil fertig ist, kannst Du ihn im Style-Designer auf Platte speichern (hat eine lesbare Form, wie die FMX-Form-Dateien aufgebaut).
Falls Du da das Root-Element (TStyleContainer) entfernen musst, kannst Da das ja tun, es ist eine einfache Textdatei (musst aber wohl auf die Einrückungen achten).

Diese Datei solltest Du dann als Ressource in Deine Package einbinden und zur Laufzeit laden können.
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
240 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FMX - eigene Componente + Styling

  Alt 8. Feb 2022, 18:58
Soweit ich das beobachtet habe wird für ein style objekt aus der Beschreibung im style neue Objekte erzeugt die dann die Kinder des jeweiligen Objektes sind. Man kann die dann über den Namen finden und verändern.

Ich denke daher Du kannst die nicht so einfach aus einem Stream laden.

Du könntest doch für Deine Komponente dann Stil in ein dynamisch stylebook laden und dieses dann anbinden.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: FMX - eigene Componente + Styling

  Alt 9. Feb 2022, 12:33
@Harry Stahl

Genau das bräuchte ich ja, bzw. bei meinem Design habe ich viel mit StyleObject etc., also mit den BitmapLinks gearbeitet!
Wenn ich es aber auf diesem Wege mache, wird ein TImage auf derselben Ebene wie meine Komponente angelegt. Genau das funktioniert aber am Ende nicht, da nur das erste Root-Element für den Style geladen wird. D.h. das TImage kommt gar nicht erst mit.


@jziersch
Genau das möchte ich ja vermeiden. Denn das würde ja bedeuten, dass ich für jedes Projekt, in dem ich diese Komponente verwenden möchte, auch immer die Anbindung über ein Stylebook in den Code bringen muss!



Ich habe jetzt ausweichend meinen Style mit einzelnen Images designed. Funktioniert auch, aber ich würde lieber alle "Bilder" in einem TImage bündeln und dann über die BitmapLinks gehen.
Björn
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: FMX - eigene Componente + Styling

  Alt 9. Feb 2022, 18:27
Also, dass Du mit TControl, statt mit TFMXObject castest, daran sollte es eigentlich nicht liegen können, aber anpassen solltest Du das so oder so.

Hast Du mal mit dem Debugger verfolgt, was da passiert?
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.822 Beiträge
 
Delphi 12 Athens
 
#8

AW: FMX - eigene Componente + Styling

  Alt 9. Feb 2022, 20:55
Wenn der Frager eine aktive Subscription sein eigen nennen sollte, kann er auch mal einen offiziellen Suportfall (also nicht QP!) bei EMBT aufmachen, dann meldet sich zeitnah jemand von denen. Manchmal kommen da sogar Lösungen raus. Ich hatte schon mal eine auf genau meine spezifischen Bedürfnisse zugeschnittene Erweiterung einer FMX Komponente bekommen...
  Mit Zitat antworten Zitat
Antwort Antwort


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