![]() |
FMX Komponente erstellen
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. |
AW: FMX Komponente erstellen
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. |
AW: FMX Komponente erstellen
Und wie ist das mit der Canvas gibts die noch
|
AW: FMX Komponente erstellen
Zitat:
Ja, gibt es, aber ist halt ein bissl anders, von den Methodennamen und Farbkonstanten her. |
AW: FMX Komponente erstellen
Ich habe jetzt eine Komponente erstellt die aber leider nicht läuft.
Delphi-Quellcode:
es zeigt sich nix also keine Linie oder eine Roter Kasten, waqs mach ich da falsch
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; |
AW: FMX Komponente erstellen
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 |
AW: FMX Komponente erstellen
Zitat:
|
AW: FMX Komponente erstellen
Auf jeden Fall musst Du noch ergänzen mit
Delphi-Quellcode:
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)
Delphi-Quellcode:
verwenden.
canvas.Fillrect (...);
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. |
AW: FMX Komponente erstellen
Danke Harry, ich hab es jetzt hin aber ein neues Problem-
Ich habe 2 Scroolbars in meiner Komponente erstellt
Delphi-Quellcode:
Jetzt werden die in der FMX Form gespeichert (was ich nicht möchte)
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; Weil die beim Start des Programm dann doppelt sind. Was kann ich da machen |
AW: FMX Komponente erstellen
Du musst
FS1.Stored := false; FS2.Stored := false; aufrufen um das speichern zu vermeiden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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