AGB  ·  Datenschutz  ·  Impressum  







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

FMX Komponente erstellen

Ein Thema von franktron · begonnen am 14. Feb 2018 · letzter Beitrag vom 22. Feb 2018
Antwort Antwort
Seite 1 von 2  1 2      
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

FMX Komponente erstellen

  Alt 14. Feb 2018, 10:03
Ich habe mir jetzt auch Tokyo 10.2 zugelegt und möchte jetzt ein Projekt von VCL auf FMX umstellen,
dazu brauche ich eine Komponente die ich geschrieben habe (die Kompo malt eigentlich nur ein Bild)
wie kann ich das mit FMX machen.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX Komponente erstellen

  Alt 14. Feb 2018, 10:57
Ganauso wie bei der VCL?

Nur statt der Vorfahrenkomponente aus den Vcl.xyz-Units mußt du eben die aus den Fmx.xyz-Units verwenden.
Und dann den Code anpassen, da sich TCanvas und Co. im FMX so Einiges anders gemacht wird.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: FMX Komponente erstellen

  Alt 14. Feb 2018, 10:57
Und wie ist das mit der Canvas gibts die noch
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: FMX Komponente erstellen

  Alt 14. Feb 2018, 11:00
Und dann den Code anpassen, da sich TCanvas und Co. im FMX so Einiges anders gemacht wird.
Hatte vorhin noch schnell einen Satz angehängt.

Ja, gibt es, aber ist halt ein bissl anders, von den Methodennamen und Farbkonstanten her.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: FMX Komponente erstellen

  Alt 16. Feb 2018, 16:21
Ich habe jetzt eine Komponente erstellt die aber leider nicht läuft.


Delphi-Quellcode:
TONLUrlaubsplaner = class(TControl)
.
.
procedure Paint; override;
.

procedure paint;
Begin
Canvas.BeginScene();
  Canvas.Stroke.Dash:=TStrokeDash.Solid;
  Canvas.Stroke.Color:=TAlphaColorRec.Black;
  Canvas.Fill.Color:=TAlphaColorRec.Red;
  Canvas.Fill.Kind:=TBrushKind.Solid;
  Canvas.Stroke.Thickness := 1;

  Canvas.DrawRect(RectF(0,0,Self.Width,Self.Height),0,0,
    AllCorners,1);

  Canvas.Fill.Color:=TAlphaColorRec.Null;

  Canvas.DrawRect(RectF(0,0,FUserWidth,ZH),0,0,
    AllCorners,1);

  Canvas.DrawLine(PointF(0,0),PointF(100,100),1);
  Canvas.EndScene;
end;
es zeigt sich nix also keine Linie oder eine Roter Kasten, waqs mach ich da falsch
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
jziersch

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

AW: FMX Komponente erstellen

  Alt 20. Feb 2018, 09:25
Das sollte schon zeichnen.

Wie erstellt Du denn die Komponente?

So gehts:

c := TONLUrlaubsplaner.Create(Self);
c.SetBounds(100,100,300,300);
c.Parent := Self;

Übrigens - wenn Du von einer speziellen Komponente ableitest, z.b. ScrollBox musst Du

function GetDefaultStyleLookupName: string; override;

verwenden um den style Namen auszuwählen, z.b.

function TWPMyControl.GetDefaultStyleLookupName: string;
begin
Result := 'scrollboxstyle';
end;

sonst ist die scrollbox keine.

Grüsse,
Julian
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: FMX Komponente erstellen

  Alt 21. Feb 2018, 10:41
Das sollte schon zeichnen.

Wie erstellt Du denn die Komponente?

Grüsse,
Julian
Ich schiebe es auf die Form, also im Designer nicht mit Create
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: FMX Komponente erstellen

  Alt 21. Feb 2018, 21:55
Auf jeden Fall musst Du noch ergänzen mit

Canvas.Stroke.Kind := TBrushKind.Solid;

da Canvas.Stroke.Kind = "None" per Default ist (wurde irgendwann nach XE7 mal geändert, warum weiß ich nicht)

Davon abgesehen zeichnet Drawrect tatsächlich nur die Ränder.

Willst Du auch die Fläche mit Farbe füllen, musst Du (zusätzlich)

canvas.Fillrect (...); verwenden.

Ich habe leider von Komponenten-Entwicklung keine Ahnung und kenne hier die konkrete Aufgabenstellung nicht, daher weiß ich nicht, warum es hier unbedingt eine eigene Komponente sein muss. Prinzipiell könntest Du hier eine schon vorhandene Komponente, z.B. die TPaintbox verwenden und im Onpainting-Event Deine Grafik zeichnen.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: FMX Komponente erstellen

  Alt 22. Feb 2018, 09:32
Danke Harry, ich hab es jetzt hin aber ein neues Problem-
Ich habe 2 Scroolbars in meiner Komponente erstellt

Delphi-Quellcode:
xxx = class(TRectangle)
private
  FS1,FS2: TScrollBar;
  ...

create
  FS1:=TScrollBar.Create(Self);
  FS2:=TScrollBar.Create(Self);
  FS1.Align:=TAlignLayout.Bottom;
  FS1.Orientation:=TOrientation.Horizontal;
  FS2.Align:=TAlignLayout.Right;
  FS2.Orientation:=TOrientation.Vertical;
  FS1.Parent:=Self;
  FS2.Parent:=Self;
Jetzt werden die in der FMX Form gespeichert (was ich nicht möchte)
Weil die beim Start des Programm dann doppelt sind.
Was kann ich da machen
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
jziersch

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

AW: FMX Komponente erstellen

  Alt 22. Feb 2018, 11:36
Du musst

FS1.Stored := false;
FS2.Stored := false;

aufrufen um das speichern zu vermeiden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:46 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