AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [FMX] Eigene Komponente: Canvas im Create noch nil
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX] Eigene Komponente: Canvas im Create noch nil

Ein Thema von Medium · begonnen am 5. Apr 2018 · letzter Beitrag vom 5. Apr 2018
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: [FMX] Eigene Komponente: Canvas im Create noch nil

  Alt 5. Apr 2018, 13:44
k.A. wie genau das FMX macht, aber vermutlich ähnlich.

In der VCL haben solche Komponenten (TShape, TPaintBox, TImage, ...) keinen eigenen Canvas, sondern malen auf die Oberfläche ihres Parents.
und der Parent ist im Constructor noch nicht zugewiesen, weswegen es da Probleme geben muß.


Weiß grade nicht was beim "Draufziehen" (neu Erstellen) ist, aber beim Laden der DFM gibt es die procedure Loaded; , welche nach Zuweisen aller Eigenschaften aufgerufen wird.
Ansonsten machen sich viele "bösartig" einen "wurdegeladen"-Boolean, welchen sie im OnPaint prüfen und anschließend auf True setzen. (if not wurdegeladen then machdeninitializationsschrott; wurdegeladen := True; )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Apr 2018 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: [FMX] Eigene Komponente: Canvas im Create noch nil

  Alt 5. Apr 2018, 14:37
Alles richtig. Uwe hat aber schon genau getroffen. TShape hat nämlich zwar keinen eigenen Canvas, aber sehr wohl einen eigenen Stroke den ich auch im Create beschreiben kann.

Das mit dem "Erstlauf" hatte ich auch überlegt, bringt nur in diesem Fall nur etwas zur Designtime. Zur Runtime würde ich mir damit immer gleich bei Programmstart alle Komponenten auf den Default-Wert setzen, egal was im OI mal eingestellt wurde.

Ich setze jetzt die Werte im Stroke des TShapes direkt, und das klappt (wie erwartet) 1a.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: [FMX] Eigene Komponente: Canvas im Create noch nil

  Alt 5. Apr 2018, 18:38
ABER, wenn du Komponenten ableitest und Default-Werte änderst, dann solltest du auch unbedingt die Property auf stored false oder bei denen den "richtigen"/neuen Default-Wert definieren.

Sonst macht das Speichern und Ändern unheimlich Spaß und auch in der DFM werden unnötige Daten gespeichert.

Beispiel: Boolean ändern
* in der DFM steht dann immer dein neuer Default aus dem Constructor
* und du kannst den auch im OI ändern, aber dann stimmt er mit dem ursprünglichen Default überein, wird nicht gespeichert und beim Neuladen der DFM ist es wieder weg (und das aus deinem Constructor ist wieder da, da der nichtgespeicherte gänderte Wert ja auch nicht aus der DFM geladen wird.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Apr 2018 um 18:40 Uhr)
  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 21:29 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