AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Properties innerhalb eigener Komponente nicht im DFM
Thema durchsuchen
Ansicht
Themen-Optionen

Properties innerhalb eigener Komponente nicht im DFM

Ein Thema von Assertor · begonnen am 14. Mai 2008 · letzter Beitrag vom 21. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 17:02
Hallo,

ich brauch mal kurz Hilfe: Ich möchte innerhalb einer Panelkomponente zwei Images unterbringen. Leider speichert Delphi mir die Properties der TImages jedoch nicht mehr.

Die TImages werden im OI automatisch auch unter "Linkage" gezeigt, die meisten Eigenschaften sind grün hinterlegt.

Delphi lädt in der IDE und bei Ausführung brav vorhandene Properties. Gehe ich jedoch einmal auf DFM-Textansicht und zurück, sind die Properties der HeaderGlyphs weg.

Delphi-Quellcode:
THeaderGlyph = class(TImage)
  private
    FCenterToGradient: Boolean;
    FShowOnlyIfHelpAssigned: Boolean;
    FAutoFadeGlyph: Boolean;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property AutoSize default True;
    property Transparent default True;
    property HelpContext;
    property CenterToGradient: Boolean read FCenterToGradient write FCenterToGradient default False;
    property ShowOnlyIfHelpAssigned: Boolean read FShowOnlyIfHelpAssigned write FShowOnlyIfHelpAssigned default False;
    property AutoFadeGlyph: Boolean read FAutoFadeGlyph write FAutoFadeGlyph default False;
  end;
Und in der Panel Komponente:
Delphi-Quellcode:
THeaderPanel = class(TCustomControl)
  private
    FGlyphLeft: THeaderGlyph;
    FGlyphRight: THeaderGlyph;
    ...
  published
    ...
    property GlyphLeft: THeaderGlyph read FGlyphLeft write FGlyphLeft;
    property GlyphRight: THeaderGlyph read FGlyphRight write FGlyphRight;
  end;
Ich hatte es auch mit Getter/Settern probiert, aber es geht nicht mehr... Wahrscheinlich nur ein Denkfehler.

Gruß Assertor

Edit: Besserer Titel, da es primär ja nicht nur im TImage geht.
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit TImage innerhalb eigener Komponente

  Alt 14. Mai 2008, 17:04
Wird keine Eigenschaft mehr gespeichert oder nur bestimmte? Möglicherweise haben die Eigenschaften den angegebenen Default-Wert, dann werden sie nämlich nicht gespeichert.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

Re: Problem mit TImage innerhalb eigener Komponente

  Alt 14. Mai 2008, 17:07
Hi Robby,

Nein es geht z.B. um eingefügte Bilder (in der DFM Textansicht wäre das z.B. GlyphLeft.Picture.Data)...

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 17:42
Oder die Eigenschaft ist not stored
Markus Kinzler
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 17:46
Hallo,

nein, es ist kein Default und kein Stored Problem. Hab auch schon die Sourcepfade geprüft, Extensions deaktiviert, die BPL gelöscht und neuerstellt...

Diese "Linkage" gefällt mir nicht, denn die Objektinstanz ist ja im lokalen Scope der Panel-Klasse, also nicht zu anderen Objekten gelinkt...

Vor allen Dinge: Vorhandene Picture.Data werden geladen, aber nach Visual/Text-DFM Switch verschwinden diese auch.

Ich vermute ein Problem darin, dass ich das ganze TImage-Derivat per Read/Write als published property verfügbar mache. Vor allen Dingen, warum sind alle Properties im OI grün

Komische IDE...

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 17:58
Hi,

du sagst, dass sie nur verschwinden, wenn du per IDE dir die Textansicht anzeigen lässt? Hast du dir die DFM schon mal so angesehen, ohne IDE? Möglicherweise ist das ein IDE-Bug, denn ansonsten wären sie ja auch zur Laufzeit weg bzw. nach speichern und neu laden des Projekts. Du sagst aber, dass sie zur Laufzeit angezeigt werden.

Verwende doch TPicture und zeichne die Bilder per Hand auf das Panel.

[edit] Und warum als write-property? Dein passt nicht zu dem, was ich mir jetzt vorstelle, was du eigentlich willst. Eventuell liegts auch daran, dann ist es as designed - Verhinderung der Doppeltspeicherung der Daten. Mach lieber ein read-only draus, ich glaube, das willst du.[/edit]

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#7

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 18:02
Ja, die Anzeige klappt, solange die Property im DFM liegt.

Die DFMs hab ich mir schon im Editor (Notepad++) angesehen, alles ok soweit...

Wenn ich jetzt aber ein neues Form nehme, die Panel-Komponente draufschmeiß und ein Bild hinzufüge, ist es nur solange da, bis ich zu Text-DFM wechsel bzw. die IDE schliesse.

Hier ist dann kein Glyph.Picture.Data im DFM gespeichert...

Ich probier das jetzt mal mit TPicture, wobei ich ja Gründe hatte TImage mit Write zu wählen - die Images sollen nachträglich veränderbar sein...

Ich teste das mal kurz.

Gruß Assertor

P.S.: Freu mich weiter über Ideen bzgl. Linkage und grünen Properties
P.P.S.: Roter Kasten
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 18:06
kannst du mal Quelltext zeigen? Und hab ich es richtig verstanden das dein TImage Property Read und Write Methoden hat?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 18:08
Hi,

bist du sicher, dass du die Images austauschen willst? Oder nur Image.Picture ändern willst? Bei letzterem solltest du es als read-only machen. Die Instanzen erzeugst du dann natürlich im Konstruktor deines Panels.

Probier einfach mal, das write wegzunehmen. Wenn du Glück hast, läuft dann alles wie gewünscht. Ansonsten müsste es ja auch bei TLabelledEdit Probleme geben.

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Properties innerhalb eigener Komponente nicht im DFM

  Alt 14. Mai 2008, 18:11
solange du bei dem Property Write definiert hast wird nicht der inhalt des Properties gespeichert sondern nur das Property selbst (also ein anderes Image wenn du eins zuweist)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 22:05 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