![]() |
Neue Komponente / Properties speichern ?
Hi
Hab eine eigene Komponenten (Abgeleitet von TEdit), die ein zusätzliches Property onlyShow hat. Wenn onlyShow TRUE ist, dann wird
Delphi-Quellcode:
Alles funktioniert soweit, das einzige, was mich noch etwas stört, ist wenn ich im Designmodus onlyShow auf TRUE setze, dann wird bei der Komponente die Properites umgestellt, und AUCH im Form ABGESPEICHERT !
Cursor := crArrow;
Color := clBtnFace; Kann ich das verhindern (da die Infos nun ja doppelt sind) Cursor setzen, Farbe stzen und onlyShow setzt dann wiederum beide ! Gruss Hans |
Re: Neue Komponente / Properties speichern ?
Hi Hans,
ich weiß jetzt nicht genau warum du diese eigene Komponente hast, aber warum versuchst du nicht, ein TLabel o.ä. zu verwenden? Zu deinem Problem: warum stört es dich dass die Werte geändert werden? Vielleicht bring dich ja ![]() Greetz alcaeus |
Re: Neue Komponente / Properties speichern ?
Du könntest in der SetMethode deines Properties, den ComponentState abfragen und wenn der auf csDesigning befindet, die Werte nicht ändern:
Delphi-Quellcode:
procedure SetOnlyShow(const Value: Boolean);
begin if not (csDesigning in ComponentState) then begin Cursor := crArrow; Color := clBtnFace; end; end; |
Re: Neue Komponente / Properties speichern ?
Ich vermute mal, er will den Style eines Edit und dieses dann auf enabled := false setzen, also, daß er schon im OI festlegen kann, ob es standardmäßig editierbar ist.
Mehr gibt meine Glaskugel nicht her. 8) |
Re: Neue Komponente / Properties speichern ?
@Hansa, alcaeus
So ungefähr, im OnEnter hab ich noch nen Aufruf drinnen, der den Focus automatisch zum nächsten Control gibt. Ein Label wäre nicht ausreichend, da es optisch gleich sein sollte, und leicht umstellbar, wenn der User doch was eingeben soll. @Stevie: Werds gleich mal probieren, aber fürchte, das mit dieser Version ich im Designmodus nicht mehr erkennen welchen Status ich gesetzt habe ... (Da ja die Farbe gar nicht mehr geändert wird oder ?) Gruss Hans |
Re: Neue Komponente / Properties speichern ?
Zitat:
Ansonsten bleibt dir wohl nichts anderes übrig, als den Fehler zu akzeptieren ;) Greetz alcaeus |
Re: Neue Komponente / Properties speichern ?
eigene Komponenten sind einfach und schwierig zugleich. :lol: deshalb mal schön langsam : Was ist mit dem Feld "ShowOnly" ? Taucht das im OI auf ? Lassen sich die Werte korrekt auf true und false setzen ?
Läßt sich die Komponente wie ein normales Edit problemlos auf eine Form ziehen, oder kommen seltsame Fehlermeldungen ? [EDIT]@Alcaeus : wieso soll er Fehler akzeptiern ? Wo gibts denn so was ? :shock: |
Re: Neue Komponente / Properties speichern ?
@hansa:
Es gibt ja keine richtigen Fehler, es funktioniert alles wie es soll, das einzige, was mich persönlich stört, ist das die PRoperties, die ich in meiner Set Routine setze, im Formular abgespeichert werden, obwohl das ja ganz überflüssig ist (Farbe und Cursor wird ja dann eh von meiner Set procedure gesetzt !) ODer aber, mit der InDesign if Abfrage, dann sieht man zur Design Zeit nicht mehr so schön, ob das Edit Control OnlyShow true oder false ist (natürlcih sieht mans im OI, aber vorher sahs man gleich an der Farbe des Edit Feldes .....) Gruss Hans |
Re: Neue Komponente / Properties speichern ?
Auch wenn mich das nicht so stören würde, vermute ich, dass es eine Lösung gibt. (Habe es allerdings noch nicht probiert...)
Ich fange mal mit 'Color' an. In der VCL ist Color folgendermaßen deklariert: Zitat:
Die sieht so aus: Zitat:
Delphi-Quellcode:
wird Color nur noch gespeichert, falls OnlyShow auf False steht (und ParentColor natürlich auch).
Result := Not(ParentColor) And Not(OnlyShow);
Für das Cursor-Property kannst Du Dir das analog basteln, dafür gibt es allerdings noch keine IsCursorStored Funktion, die musst Du komplett neu machen und auch die stored-Direktive in die Property-Deklarartion übernehmen. Den Quelltext der VCl hast Du ja, ist alles in controls.pas. Übrigens würde ich die Farbe nicht stur auf clBtnFace setzen sondern auf (Parent as TWinControl).Color, falls das Form mal eine andere Farbe hat. Wie gesagt, da ganze ist nur eine Idee, habe es nicht probiert... Gruß, teebee |
Re: Neue Komponente / Properties speichern ?
@teebee
Interessante Idee, aber wie kann ich eine private methode überschreiben ? Ich will die Farbe nicht auf die Farbe des Forms setzen (könnte ja dann auch Parentcolor verwenden) sondern die Farbe wird aus einer andern Funktion berechnet ... wollte das Beispiel so einfach wie Möglich halten ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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