AGB  ·  Datenschutz  ·  Impressum  







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

Neue Komponente / Properties speichern ?

Ein Thema von Gruber_Hans_12345 · begonnen am 23. Sep 2004 · letzter Beitrag vom 24. Sep 2004
Antwort Antwort
Seite 1 von 3  1 23      
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 15:39
Hi

Hab eine eigene Komponenten (Abgeleitet von TEdit), die ein zusätzliches Property onlyShow hat.
Wenn onlyShow TRUE ist, dann wird
Delphi-Quellcode:
Cursor := crArrow;
Color := clBtnFace;
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 !

Kann ich das verhindern (da die Infos nun ja doppelt sind) Cursor setzen, Farbe stzen und onlyShow setzt dann wiederum beide !

Gruss
Hans
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 15:43
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 dieser Tipp weiter.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 15:47
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;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 16:11
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)
Gruß
Hansa
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 16:16
@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
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 16:20
Zitat von Gruber_Hans_12345:
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 ?)
Aber ShowOnly wird noch geändert, und anhand dessen kannst du wissen, in welchem Status du bist.
Ansonsten bleibt dir wohl nichts anderes übrig, als den Fehler zu akzeptieren

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 16:30
eigene Komponenten sind einfach und schwierig zugleich. 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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 17:16
@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
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#9

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 18:19
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 von VCL:
property Color: TColor read FColor write SetColor stored IsColorStored default clWindow;
D.h. die Eigenschaft wird nur gespeichert, wenn die Funktion IsColorStored True zurückliefert.
Die sieht so aus:
Zitat von VCL:
function TControl.IsColorStored: Boolean;
begin
Result := not ParentColor;
end;
Wenn Du in Deiner Editklasse diese Methode so überschreibstResult := Not(ParentColor) And Not(OnlyShow); wird Color nur noch gespeichert, falls OnlyShow auf False steht (und ParentColor natürlich auch).

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
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Neue Komponente / Properties speichern ?

  Alt 23. Sep 2004, 18:43
@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 ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:11 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