![]() |
Eingaben im Objektinspektor prüfen
Moin,
ich bastle mir gerade die TFormResizer-Kompo von kalmi01 für meine Zwecke zurecht, dabei habe ich eine Menge Zeit verschenkt, weil ich im Objektinspektor einen unsinnigen Wert eingegeben hatte. Wie kann ich die Werte bei der Eingabe prüfen? Grüße, Messie |
Re: Eingaben im Objektinspektor prüfen
In der Setter-Methode der Property bzw. im passenden PropertyEditor
|
Re: Eingaben im Objektinspektor prüfen
Zitat:
Grüße, Messie |
Re: Eingaben im Objektinspektor prüfen
...ich würde das gerne noch verstehen. Hat noch jemand ein Beispiel oder ein paar warme Worte?
Grüße, Messie |
Re: Eingaben im Objektinspektor prüfen
Delphi-Quellcode:
TPerson = class
private FGeburttag: TDate; public procedure setGeburttag( Value: TDate); function getAlter: Byte; published property Geburtstag: Tdate read FGeburttag write setGeburtstag; property Alter: Byte read getAlter; end; procedure TPerson.setGeburttag( Value: TDate); begin if Value < date() then begin FGeburttag := Value; end else begin //Fehlerausgabe end; end; function TPerson.getAlter: Byte; var d,m,y: Word; begin Decodedate( Date()-FGeburttag, y, m, d); result := y; end; |
Re: Eingaben im Objektinspektor prüfen
noch mal zur Sicherheit, bevor ich es nochmal ausprobiere (beim ersten Mal hat es nicht geklappt):
die "normalen" Prozeduren zum Setzen der property werden nach einem Register auch zur Entwurfszeit ausgeführt? Grüße, Messie |
Re: Eingaben im Objektinspektor prüfen
Ja.
|
AW: Eingaben im Objektinspektor prüfen
Zitat:
Zitat:
Ich bin dabei, eine eigene Komponente von TEdit abzuleiten. Die soll (ähnlich wie TLabelledEdit) auch eine Caption bekommen, und das funktioniert im Design-Mode überhaupt nicht. Ich habe jetzt im Setter eine Kontrollmeldung ausgegeben, und auch die wird nur zur Laufzeit beim Formcreate angezeigt, aber nicht, wenn ich die Eigenschaft im Object-Inspector ändere. Was ist da falsch?
Delphi-Quellcode:
Wenn ich das Programm starte, wird Showmessage ausgeführt, und das Editfeld samt des Caption-Labels richtig angezeigt.
TLabelPosition = (ptAbove, ptLeft, ptRight, ptBelow);
TfdEdit = Class(TEdit,IfdComponent) private FCaption: String; FCaptionPosition: TLabelPosition; FCaptionFont: TFont; FCaptionDistance: Integer; ... procedure SetLabelProperties; procedure SetLabelCaption(const value: string); procedure SetLabelFont(value: TFont); procedure SetLabelDistance(value: integer); ... published property Caption: string read FCaption write SetLabelCaption; property CaptionFont: TFont read FCaptionFont write SetLabelFont; property CaptionDistance: integer read FCaptionDistance write SetLabelDistance; End; procedure TfdEdit.SetLabelProperties; begin if not assigned(FLabel) then exit; Flabel.Caption:=FCaption; if assigned(FCaptionFont) then FLabel.Font:=FCaptionfont; case FCaptionPosition of ptAbove: begin FLabel.Left:=Left; FLabel.Top:=Top-FLabel.Height-FCaptionDistance end; ptLeft: begin FLabel.Left:=Left-FCaptionDistance-FLabel.Width; Flabel.Top:=Top+(Height-Flabel.Height) div 2 end; ptRight: begin FLabel.Left:=Left+FCaptionDistance+Width; Flabel.Top:=Top+(Height-Flabel.Height) div 2 end; ptBelow: begin FLabel.Left:=Left; FLabel.Top:=Top+Height+FCaptionDistance end; end (* case *); end; procedure TfdEdit.SetLabelCaption(const value: string); begin FCaption:=value; Showmessage('Label: '+Value); if value='' then begin if assigned(FLabel) then FLabel.Free; exit end; if not assigned(FLabel) then begin FLabel:=TLabel.Create(Self); FLabel.Parent:=Parent end; SetLabelProperties; end; Aber wenn ich im OI die Eigenschaft Caption ändere, hat das keine sichtbare Auswirkung, es wird weder das Showmessage noch der Label angezeigt. Das Setzen der CaptionFont im OI ist übrigens auch nicht möglich. Die Property wird im OI angezeigt, aber wenn ich die drei Punkte anklicke, kommt die Fehlermeldung: Zitat:
|
AW: Eingaben im Objektinspektor prüfen
Bevor sich jemand mit den Details befasst: Installierst Du das Package auch neu?
Sonst wird zur Laufzeit die neue Version genutzt, die IDE nutzt aber noch die alte (die vielleicht noch nicht auf die Änderungen reagiert). |
AW: Eingaben im Objektinspektor prüfen
AAAhhhh!
Das heisst, dass ich nach jeder Komponentenänderung das Package neu installieren muss, damit die Änderungen sichtbar sind? Das macht aber die Entwicklung von Komponenten zu einem leicht getrübten Vergnügen :) Werde das Package jetzt neu installieren und dann berichten, ob das geholfen hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 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 by Thomas Breitkreuz